RDF(S) triples, statements, and resource

This came up in the context of the ODM work to develop what is basically a 
UML data model for RDF, RDFS, and OWL.

The issue was a simple modeling one: there is a class intended to 
represent rdfs:Resource, which is defined to be "everything", we need a 
class of "Statements" or "triples", whose instances would be individual 
statements or triples in some RDF graph.  The question is, should the 
latter class be a subclass of the former, implying that all triples are 
resources?

The issue generated a lot of discussion and revealed some widespread 
misconceptions.  Here's a quick summary:

Many people believe that "triples" are NOT rdfs:Resources because they 
cannot have a URI.  Pat Hayes, however, argued quite strongly that there 
is nowhere in the RDF specs that say this, and that the intention is that 
a triple is a rdfs:Resource.  Pat is certainly correct, as far as we can 
tell, that the spec doesn't say that a triple isn't an rdfs:Resource, but 
it doesn't say it is, either.  In fact, it is vague on the subject.  The 
closest documentation we coudl find is in the RDF Primer 
[http://www.w3.org/TR/2004/REC-rdf-primer-20040210/#reification]:

"The lack of a built-in means for assigning URIrefs to statements does not 
mean that "provenance" information of this kind cannot be expressed in 
RDF, just that it cannot be done using only the meaning RDF associates 
with the reification vocabulary. For example, if an RDF document (say, a 
Web page) has a URI, statements could be made about the resource 
identified by that URI and, based on some application-dependent 
understanding of how those statements should be interpreted, an 
application could act as if those statements "distribute" over (apply 
equally to) all the statements in the document. Also, if some mechanism 
exists (outside of RDF) to assign URIs to individual RDF statements, then 
statements could certainly be made about those individual statements, 
using their URIs to identify them. However, in these cases, it would also 
not be strictly necessary to use the reification vocabulary in the 
conventional way."

The Jena documentation is a little less vauge. In 
[http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/graph/Triple.html] we 
see that a Triple is not a Resource (or a node), and in 
[http://jena.sourceforge.net/javadoc/com/hp/hpl/jena/rdf/model/Statement.html] 
it specifically says "A Statement is not a Resource".  While Dave Reynolds 
corrected us on interpreting the Jena class/interface names as being 
formal representations of their namesakes in the RDF specs, such a caveat 
will not prevent people from doing so, as Jena is very widley used by 
people writing RDF software, and it has become a defacto standard.   In 
fact, before copying Dave, this documentation was used as evidence to 
support the position that triples are not resources.  I doubt it is the 
first or last time that will happen.

After some more research, here are some further points:

triples and statements: The terms "triple" and "statement" are used almost 
interchangeably in several of the RDF documents, but not in the RDF 
semantics.  With only one or two exceptions that may have been oversights, 
the RDF semantics talks about triples exclusively.  The RDF Concepts 
document defines triples to be a S, P, O that "hold".  The RDF semantics 
adopts this definition.   Statements are only used in the context of the 
reification vocabulary.  The RDF semantics give an INFORMATIVE description 
of that that vocabulary is intended to mean, but leaves it open "to 
accomodate variations in existing RDF usage...".

Further, the semantics for reification 
[http://www.w3.org/TR/rdf-mt/#ReifAndCont] use a blank node to represent 
the "reified triple" that is considered "to be a particular token or 
instance of a triple in a (real or notional) RDF document, rather than an 
'abstract' triple considered as a grammatical form."

The non-normative status of this section may have led to its oversight, 
but it is a little more direct wrt the intention that triples be int he 
domain, and thus that they are rdfs:Resources, 

Resources and URIs:  It is an often heard belief that an rdfs:Resource is 
antyhing that can have a URI.  Since the RDF syntax did not provide a way 
to give a URI to a triple, many people (myself included) have concluded 
that triples are not rdfs:Resources.

So, here are the issues:

1) The belief that triples are not resources is widespread.  If the 
intention is indeed that triples are resources, we need to get the word 
out somehow.  Software is being written today that will fail to 
interoperate with other RDF software, as each implementation appears to 
use a different out-of-standard way of referring to triples. 

2) There is still no defined or recommended "mechanism" for assigning a 
triple a URI.  Despite this, the specs seem to be telling us they are 
intended to be resources. Perhaps it is time to at least recommend 
something.

3) I believe the correct data model here is to make the ODM "RDF Triple" 
class a subclass of "RDFS Resource".  Does anyone see a problem with that?

-Chris

Dr. Christopher A. Welty, Knowledge Structures Group
IBM Watson Research Center, 19 Skyline Dr., Hawthorne, NY  10532
Voice: +1 914.784.7055,  IBM T/L: 863.7055, Fax: +1 914.784.7455
Email: welty@watson.ibm.com
Web: http://www.research.ibm.com/people/w/welty/

Received on Monday, 22 August 2005 19:15:15 UTC