Thanks for the introduction. Speaking of people randomly wandering to opencog and going WTF... I figured my current understanding of things might reveal some, let's say, common pitfalls. Which might lead to better documentation, ... so here goes.
Today I was trying to wrap my head around what the atomspace is, what it actually does and what it does not. My current hypotheses: - The meaning of the atoms is determined through cog-execute! and cog-evaluate! (or something else in other-language-bindings). Without them, the atoms do not carry any meaning of their own, they would merely be data structures. The result of an evaluation is a truth value that is then attached to the link being evaluated, the result of execution could theoretically be anything (based on link type) -- it simply does something with the atomspace. - Atoms are something which "is of some interest" to the user---evaluatable atoms which return bools can be thought of as the "things which (do not) hold in this axiomatic system". But this does not hold for non-evaluatable atoms: indeed, if there is (GreaterThan (Variable "$x") (Number 42)) in the atomspace, it does not mean that all X are greater than 42. The aforementioned link could have been part of something greater, such as (Get (<aforementioned>)). So, the meaning of all atoms is determined by the user and the way he uses them...? Or is there something deeper (such as in prolog, where things which are "in the system" are considered "true")? - Some links seem to either be missing (PartOfLink, ...) or their behaviour is not as expected (AbsentLink and PresentLink cannot be cog-evaluated, why?). Maybe something needs to be imported? If so, what? It would be nice to list it in the documentation (wiki). - SatisfyingSetLink: wiki states that EvaluationLink PredicateNode "breathe" ListLink ConceptNode "animals" ConceptNode "air" is equivalent to this: MemberLink ListLink ConceptNode "animals" ConceptNode "air" SatisfyingSetLink PredicateNode "breathe" So I would assume that with either of them, the query (Get (Evaluation (Predicate "breathe") (List (Variable "$x") (Concept "air")))) would return a set containing (Concept "animals"). But in the latter case, it does not. So... the two ways of representing "animals breathe air" are equivalent, but incompatible? Is it the user's job to use one or the other, or to somehow integrate them if he wants to use them in tandem? And other documentation-oriented stuff: - Scheme interface: cog-bind, cog-satisfy, cog-satisfying-set are either not documented, or obsolete. But they are still mentioned here and there on the wiki. I suppose the up-to-date way to do these is to do (cog-execute! (Bind ...)), (cog-evaluate! (Satisfaction ...)) and (cog-execute! (Get ...)). Also, many scheme functions were recently removed (such as cog-tv->alist), but they are still in the wiki. I can try clean up what I find. That's it for now. -- You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to opencog+unsubscr...@googlegroups.com. To post to this group, send email to opencog@googlegroups.com. Visit this group at https://groups.google.com/group/opencog. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/76d8800d-aca6-428c-a199-a2696bf75c2c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.