- From: Lee Jonas <lee.jonas@cakehouse.co.uk>
- Date: Tue, 24 Apr 2001 14:02:17 +0100
- To: "'www-rdf-interest@w3.org'" <www-rdf-interest@w3.org>
I know that there has been significant debate over RDF triples vs quadruples, and the uses and merits of reification. I don't want to start another religious battle over triples vs quadruples. However, I would like to bring to people's attention the stuff being done by TimBL with N3 w.r.t. reification. It seems to me that the goal of reification is to make further statements about statements - i.e. make statements the subject or object of other statements. As such, it is very important for the Logic aspects of RDF. Now, N3 has a very neat way of doing this via 'contexts': A context is a resource that contains statements. You can make other statements about the context, and these simply apply to the statements the context contains. It's almost like a "composite" in OO Design terms. Furthermore, statements are always translated into quadruples: the current (p,s,o) triple plus the uri of the containing context - i.e. (c,p,s,o); contexts can be nested and there is an implicit "top level" context representing the document (I would change this to represent the "RDFGraph" (or "RDFModel") resource - i.e. 'graph' is a more abstract concept and orthogonal to physical files, though a single RDFGraph will often be represented by a single network accessible document). Hence a statement that is not part of an explicitly specified context is automatically part of the implicit context of the RDFGraph it belongs to. The beauty of this approach is that: 1) It provides a simple recursive way of dividing graphs into sub graphs. 2) making higher-level statements about (sub) graphs (i.e. Reification) becomes really straightforward. 3) You reify groups of statements at a time, not individual statements - hence it is far more expressive with far less tuples. 4) Direct representation of "RDFGraph" (or "RDFModel") resource in the RDF Model - another on the issues list - RDFGraph becomes just another kind of context. E.g. for RDF Schema (in N3): ... :Context a :Class; :subClassOf :Resource. :Graph a :Class; :subClassOf :Context. ... 5) Reification is a thorny issue in RDF currently. Contexts help because: * statements no longer explode 4 fold into 4 triples per statement * the problem of incomplete reification (i.e. where only 3 or less of the necessary triples are present) goes away * features such as rdf:bagID on rdf:Description are redundant - the problems of whether to reify statements within a rdf:Description or not and creation of the complex "bag of reified statements" sub-graph both go away. (Reification seems far too unwieldy to me the way it is currently in RDF for these reasons). 6) Most importantly: the difference between whether a statement is considered fact or merely a reification shifts from being specified in the RDF syntax, as determined by the statement producer agent (i.e. person or software), to the consumer agent (person or software). The consumer agent can make their own determinations of whether to treat them as facts based upon context validity 'rules' (as in N3) e.g. other statements about the context that are evaluated to either true or false - these can be Logic statements, or just ordinary statements that can be checked, e.g. a date range, etc. Hence a change to RDF along these lines, although fairly radical, would address at least 5 RDF issues in one fell swoop, and IMHO make for a far better RDF. I would like the RDFCore Working Group to consider these issues and suggestions for RDF 2.0. Perhaps this mail could be another reference under the the appropriate issues, especially the "rdfms-contexts: Suggestion that the concept of context is missing from RDF" issue. regards Lee
Received on Tuesday, 24 April 2001 09:02:37 UTC