ontolog-forum
[Top] [All Lists]

Re: [ontolog-forum] Data & Relations

To: <ontolog-forum@xxxxxxxxxxxxxxxx>
From: jmcclure@xxxxxxxxxxxxxx
Date: Thu, 30 May 2013 09:00:11 -0700
Message-id: <fa89e89dd159acafb2cc6273e73f07b4@xxxxxxxxxxxxxx>

John Sowa's link is fascinating, as it uses prepositions as predicates (almost exclusively), as well as the noun<space>name format of which I am so fond.

Beyond that, I think for the comparison, it's important to note that relational systems by and large accurately capture that ""Cat X (is) on a mat", but generally fail to capture both "A cat (is) on a mat" and that "Cats (can be) on mats". In other words, the comparison might effectively contrast kinds of statements generally found in each type of repository.

Again, thanks for the link, John.

-john

On 30.05.2013 04:04, John F Sowa wrote:

Kingsley,

I like the idea.  I believe you can do it with a minimum of jargon.

KI
to build a comparison (for moderately technical and attention challenged audience) between relational tables oriented RDBMS systems and relational (property/predicate) graph oriented RDBMS systems: 1. Relationship Representation 2. Relation Representation 3. Identifiers Types 4. Data Value Types (aka. Datatypes) 5. Entity Relationship Semantics Granularity.
All those terms should be mentioned, but *not* at the beginning of
a tutorial for the audience you mention.

Instead, I suggest that you start with something that is much easier
to introduce:  *spreadsheets* -- and the difference between the column
headings of the spreadsheet and the identifiers of values in the rows.
That gives you tables that can represent anything in any RDBMS.

For graphs, I do *not* recommend that you use RDF or even N3 or Turtle.
Instead, I suggest E-R diagrams for the entity types and relations.

Then convert E-R diagrams to *instance graphs* just by combining
identifiers and type labels.  For example, change entity type Person
to the *typed instance* Person:Kingsley or Person:"Kingsley Idehen".

After you do that, you can show how to map the info from a table
(spreadsheet) to and from instance graphs.

For the blank nodes in RDF (which represent existential quantifiers),
you could write Person:∃ -- that's a bit of jargony notation, but it's
only one easy to remember symbol.  And it's *much* easier to say that
∃ means "there exists something of the given type" than to explain
what blank nodes mean in RDF.

After you get the reader from E-R diagrams to instance diagrams
with ∃ for blank nodes, you have full RDF.  To move to full first
order logic, you only need one more feature:  a notation for
negating any graph or subgraph.  Fortunately, Peirce invented that.

See my intro to Common Logic for that option:

    http://www.jfsowa.com/talks/clintro.pdf

You could do something along the lines of slides 7 to 10, but with
the notation of instance graphs (and shaded ovals for negation)
instead of Peirce's original notation.

For an advanced exercise (optional for the novices), you can show how
to map an SQL WHERE-clause (which supports full FOL) to instance graphs
with negation and blank nodes marked with ∃.  For the nodes that
correspond to the desired answers, replace "∃" with "?"

With this approach you can cover all the items on your list by
starting with nothing more than spreadsheets and a subset of
E-R diagrams:

  1. Use the same type labels in E-R and the headings of spreadsheets.

  2. Use the same strings in the boxes of the spreadsheets and
     after the ":" in the instance graphs.

  3. For query graphs, the nodes marked with "?" represent the
     answers listed in the SELECT clause that precedes the WHERE.

  4. Then show how queries in the notation of instance graphs
     can be mapped to SQL -- or SPARQL.

That gives you a tutorial with almost no jargon and a useful notation
that the readers could begin using immediately.  In fact, you could
implement a translator from that notation to RDF, SQL, and SPARQL
that would eliminate the need for them to learn any other notation.

John
 
_________________________________________________________________
Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/  
Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/  
Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
Shared Files: http://ontolog.cim3.net/file/
Community Wiki: http://ontolog.cim3.net/wiki/ 
To join: http://ontolog.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid1J
 
 

_________________________________________________________________
Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/  
Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/  
Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
Shared Files: http://ontolog.cim3.net/file/
Community Wiki: http://ontolog.cim3.net/wiki/ 
To join: http://ontolog.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid1J    (01)

<Prev in Thread] Current Thread [Next in Thread>