Re: RDF(S) triples, statements, and resource

Chris--

Some comments below.

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

snip

> 
> 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]:

Many people may believe that "triples" cannot have a URI, but they're 
wrong.  Surely I can create a URI to name anything I please, including a 
triple (that's what a URI is, a name)?  How is anyone going to stop me?

Just because the specs don't explicitly say that a triple is a resource 
doesn't mean it isn't one (or can't be one).  If the only things that 
can be resources are things explicitly named as resources in the RDF 
specs, the Semantic Web is in big trouble!

I think the basic problem here has to do with mixing up two issues:

1.  whether or not something is a resource

2.  whether or not there is a means built into RDF for creating URIs for 
(or assigning URIs to) those resources.

There is no built-in means for assiging URIs to statements (triples), as 
noted in the Primer quotation just below, but there is no built-in means 
for assigning URIs to practically anything else we want to treat as 
resources in RDF either.

> 
> "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...".

I think this "triple vs. statement" business is something of a separate 
issue (although it does add to the confusion).  The original RDF M&S 
used "statement" to mean a subject-predicate-object triple, and tended 
to use "statement" more than "triple" to refer to those 
subject-predicate-object thingies.  I don't recall an explicit decision 
to change the terminology.  I think they're synonomous.

> 
> 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.

As noted above, just because RDF syntax doesn't provide a way to give a 
URI to a triple doesn't mean it's intended that triples not be 
resources.  RDF syntax doesn't provide a way to give URIs to wine 
varieties, kinds of automobiles, or much of anything else.  The 
assignment of URIs to resources is not something RDF does (except for a 
few bits of the RDF language itself).

> 
> 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. 

Yes, we need to get the word that triples are resources.  However, this 
doesn't solve the problem of non-interoperable, non-standard references 
to triples, because, as I've noted above, a standard way of assigning 
URIs to triples isn't currently part of the RDF mechanism.

> 
> 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.

Perhaps.

> 
> 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?

No opinion.

> 
> -Chris
> 

--Frank

Received on Tuesday, 23 August 2005 18:06:58 UTC