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 [email protected].
To post to this group, send email to [email protected].
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.