I converted this email to a brand-new intro for the wiki page

https://wiki.opencog.org/w/AtomSpace#Overview

-- linas

On Thu, May 30, 2019 at 3:01 PM Linas Vepstas <[email protected]>
wrote:

> Hi Jack,
>
> Wow! I welcome the effort, its nice to have projects influence one-another.
>
> I would like to point out something: to **understand** the atomspace,
> reading the source code is probably the hardest, most confusing, and
> misleading way of doing it (as in there lurks bugs and occasional bad
> design).
>
> To understand the atomspace, its best to either run through the examples,
> and/or read through the wiki.  That would be a much easier path.
>
> Here's a thumbnail sketch.  So -- the atomspace is first a graph database
> (and so, to recreate it in java, it might be easiest to start with some
> existing graph database)
>
> Next, its a bunch of predefined types.  Some of these are relations: for
> example, InheritanceLink is the classic "is-a" relation -- x is-a y.  For
> the so-called "semantic triples", we use EvaluationLink -- x R y  for R
> some arbitrary named relation. We call R a PredicateNode, so for example,
> for "Jack owns a computer", x=Jack, R=owns y=computer so (Evaluation
> (Predicate "owns) (List (Concept "Jack") (Concept "computer")))  In
> first-order logic, one writes P(x,y) instead of x R y, whence the name
> predicate.
>
> Next, a conceptual leap: one is not limited to just P(x,y), but one can
> have arbitrary numbers of arguments.  These arguments can be other atoms,
> which is what makes it a "graph database". And finally, there is no
> force-fit schema, which is why it's not SQL. (so, for example, "triple
> stores" have a force-fit schema: everything must be a triple, of the form x
> R y. In other words, a table with 3 columns. For the atomspace, "anything
> goes". Otherwise, it would be just SQL: since SQL is-a kind-of graph
> database, it just forces you to pre-declare your schema, i.e. to use
> tables.)
>
> Next, each predicate (more generally, each atom) has a truth-value.
> Classically, this is true/false (e.g. "it is true that Jack owns a
> computer"). The next conceptual leap is this: crisp true/false ->
> probability -> probability+confidence -> list-of-floats -> arbitrary json
> struct -> arbitrary key-value-db ->arbitrary key-value-db with
> time-dependent values.
>
> So, in this example, "Jack owns a computer" has an associated key-value DB
> on it. One of the keys might hold the truthiness of this statement. Another
> key might hold its probability. Another key might hold the time-varying
> value of the physical distance between Jack and the computer, or maybe the
> pixel-values on the screen at this instant in time.  These are called
> "Values"
>
> So, you can imagine the AtomSpace as holding graphs -- those graphs re
> like pipes, plumbing. The Values are the water that flows through the
> pipes.  Performance-wise, its fairly hard/slow to change the graphs, but
> the values can change constantly. The pipes have a query language. The
> values do not (because key-value databases don't have a query language, by
> definition.)
>
> Finally, there are three or four more magic ingredients:
> -- Some atoms are executable. For example, PlusLink knows how to actually
> add numbers together.  PlusLink is backed by a C++ class that performs
> addition.
> -- Queries from the query language are graphs themselves. So queries can
> be stored in the Atomsapce (this is very unlike SQL, where you cannot store
> a query in the database itself. I think this is also very unlike any
> typical graph DB.)
> -- A relation P(x,y), together with it's truth-value, can be thought of as
> a matrix. So there is an API to access P(x,y) as if it was an actual
> matrix, doing typical matrix-math stuff to it.
>
> Well, there are a few more tricks up it's sleeve, but this email is too
> long already.
>
> I'm hoping that this gives you a flavor for what to shoot for.  Grokking
> this email is surely easier than reading the source code :-)
>
> -- Linas
>
>
> On Thu, May 30, 2019 at 11:41 AM Jack Park <[email protected]>
> wrote:
>
>> Since I have limited experience with c/c++, but some ability to
>> transliterate other programs to Java, I decided to build a Java version of
>> AtomSpace solely to better understand how AtomSpace is supposed to work.
>> The project is far from functional but already is helping me understand
>> this platform. The code is at
>> https://github.com/KnowledgeGarden/krr-explorer
>>
>> My ambition might be similar to that of the OpenCog community, but I'll
>> explain a few bits.
>> The project is now named OpenSherlock (started life as SolrSherlock but
>> migrated away from Solr in other directions). Fundamentally, the object
>> which is AtomSpace in OpenSherlock is a topic map; working on a PhD
>> project, I asked the question; could a topic map learn to and by reading?
>> After defending the thesis proposal, I crafted a topic map simulator which,
>> in fact, performed far better than expected, so that grew up to be
>> OpenSherlock.
>>
>> An emerging explanation of that project is taking shape in this early
>> draft manuscript:
>>
>> https://docs.google.com/document/d/1kj9fe96srHhA5GOscYglR5XDLy8jEIHdWCZVNGMSXeI/edit?usp=sharing
>>
>> I chose to explore AtomSpace because OpenSherlock was first inspired by
>> LinkGrammar; it is called *anticipatory* for a reason.
>> AtomSpace, for me, is like Disneyland; so much to explore, so little time.
>>
>> Cheers,
>> -Jack
>>
>> --
>> 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/cfd6efd1-ee13-42e3-ab31-e718abddeb79%40googlegroups.com
>> <https://groups.google.com/d/msgid/opencog/cfd6efd1-ee13-42e3-ab31-e718abddeb79%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
> cassette tapes - analog TV - film cameras - you
>


-- 
cassette tapes - analog TV - film cameras - you

-- 
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/CAHrUA35_XqC4ZdtZze0%3DPzhe-xghRKueCQbm8YJoCorZ7xqQrA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to