- From: Seth Russell <seth@robustai.net>
- Date: Tue, 07 Jan 2003 13:46:53 -0800
- 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. http://robustai.net/mentography/or_not.gif 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 http://radio.weblogs.com/0113759/
Received on Tuesday, 7 January 2003 16:47:27 UTC