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.

Reply via email to