W3C home > Mailing lists > Public > www-rdf-interest@w3.org > January 2003

Re: Use cases for Reification in RDF Triple stores

From: Seth Russell <seth@robustai.net>
Date: Tue, 07 Jan 2003 13:46:53 -0800
Message-ID: <3E1B4ACD.9060805@robustai.net>
To: Bob MacGregor <macgregor@ISI.EDU>
CC: Dave Reynolds <der@hplb.hpl.hp.com>, www-rdf-interest@w3.org, jena-dev <jena-dev@yahoogroups.com>

Bob MacGregor wrote:

> What Jena calls a "shortcut" we consider to be the right way to reify 
> (except that
> technically, its not reification at all, its just allowing statements 
> to be arguments).
> Logic-based KR systems (MRS, Epikit, Epilog, Cyc, PowerLoom, SNePS, 
> etc) have
> been using the "shortcut" style of reification for a very long time. 
> Its not a curiosity;
> its part of the fabric. For example, to represent a disjunction of two 
> triples, you create
> a triple that nests two (or more) other triples:
> <<a,b,c>, OR, <d,e,f>>
> Note that with this kind of usage, its critical that the nested 
> triples not be considered
> as asserted in the model.

Yes this is substantually the way I do it with Quads.  I've capatilized 
"Quads" because it does not refer to the four triples used by RDF, but 
rather to arrows that have 4 attributes.  The  four attributes are 
(graph, subject, property, object).  Below is a mentographs that show 
this usage.  We put arrows in Venn diagram  like circles to show in 
which graph (model) they reside. The arrow heads on the circles are an 
artifact of the tool I use and do not signify an arrows.  


Every arrow in that diagram is a Quad.  There are graphs  (or Jena 
models if you like) involved in representing the text: "Some image 
depicts Sally or John".  One graph (_:a) in which some:image depicts 
Sally and one graph (_:b) in which some:image depicts  John, and one 
graph (_:d) that contains the rule that "nests" _:a and _:b such that 
one or the other graph is true.   That sounds like a lot , but there are 
really only 4 records in the data base.  I've written them in Quads 
formt (subject, property, object, graph) below:

some:image depicts Sally _:a
some:image depicts John _:b
_:c or _:a  _:d
_:c or _:b  _:d

The reason that I am touting Quads, is that they translate directly into 
RDF triples and can represent just about anything *just as long as* we 
have some way to identify graphs (Jena type Models) as first class 
resources.   Not allowing ourselves that privledge is to hopelessly 
complicate our RDF based APIs  just when things become interesting.  

> One final comment on quads vs. the  'getIt'/'setIt' that I am 
> advocating.  They
> are not equivalent.  With quads, we can assert a triple twice, with 
> two different
> fourth arguments:
>     <a, b, c, d1>
>     <a, b, c, d2>
> Here, there is no explicit means for detecting that 'd1' and 'd2' are 
> annotating
> the same 'triple', since the notion of triple has now evaporated. 

Huh?  I don't know about Jena, but detecting that the graphs named 'd1' 
and 'd2' above contain the same triple <a,b,c> is childs's play .. what 
are you talking about?

> I'm advocating
> that we keep 'triples' as the are, while adding a means for 
> efficiently attaching
> meta-information to a triple (short-cut reification provides a less 
> efficient means
> for attaching meta-information to a triple -- that is what we will use 
> for now, but
> we take a performance hit doing so (as exemplified by the 'deleteResource'
> example in my previous message)).

The most efficient way is just to use Quads ... no performance hit 
whatsoever.  But I am talking in general, I dont know anything about the 
Jena in particular.    

Seth Russell
Received on Tuesday, 7 January 2003 16:47:27 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:07:44 UTC