W3C home > Mailing lists > Public > www-rdf-interest@w3.org > November 2000

Re: tracing statement origin (was Re: I have a trouble with The RDF Model)

From: Gabe Beged-Dov <begeddov@jfinity.com>
Date: Mon, 27 Nov 2000 21:28:10 -0800
Message-ID: <3A23426A.1B007E60@jfinity.com>
CC: "www-rdf-interest@w3.org" <www-rdf-interest@w3.org>, Wraf development <rdf@uxn.nu>
Jonas Liljegren wrote:
 
> But we can't use the outmost Description bag as the model. 

What do you mean by the outmost Description bag? My understanding is
that reification of rdf:Descriptions will occur to all syntactic
instances irrespective of whether they are top-level in the syntax or
nested. Below is an explicitly labelled example and the resulting
statements that are obtained by applying the StatementBag and
Statement reification algorithm. I've included a typedNode shorthand
on the first top-level resource for variety. 

==============================================

http://somedoc.rdf:

<typedNode rdf:ID="res1" rdf:bagID="stat_bag1">
  <prop1 rdf:ID="stat1">
    <rdf:Description rdf:ID="res2" rdf:bagID="stat_bag2">
       <prop2 rdf:ID="stat2">a value</prop2>
    </rdf:Description>
  </prop1>
</typedNode>

<rdf:Description rdf:ID="res3">
  <prop2 rdf:ID="stat3">another value</prop3>
</rdf:Description>

==============================================

Ground statements:

  [http://somedoc.rdf#res1, prop1, http://somedoc.rdf#res2]
  [http://somedoc.rdf#res1, rdf:type, typedNodeURI]
  [http://somedoc.rdf#res2, prop2, "a value"]
  [http://somedoc.rdf#res3, prop2, "another value"]

Reified Statement resources:

  [http://somedoc.rdf#stat1, rdf:type, rdf:Statement]
  [http://somedoc.rdf#stat1, rdf:subject, http://somedoc.rdf#res1]
  [http://somedoc.rdf#stat1, rdf:predicate, prop1]
  [http://somedoc.rdf#stat1, rdf:object, http://somedoc.rdf#res2]

  I couldn't explicitly label the next statement with a statement ID 
  since it occurred indirectly in the source document. The processor
has 
  generated an ID for it, in this case "genid1".

  [http://somedoc.rdf#genid1, rdf:type, rdf:Statement]
  [http://somedoc.rdf#genid1, rdf:subject, http://somedoc.rdf#res1]
  [http://somedoc.rdf#genid1, rdf:predicate, rdf:type]
  [http://somedoc.rdf#genid1, rdf:object, uriForTypeNode]

  [ reification for stat2 ]

  [ reification for stat3 ]

Bags representing the Descriptions in the source:

  [http://somedoc.rdf#stat_bag1, rdf:type, rdf:Bag]
  [http://somedoc.rdf#stat_bag1, rdf:_1, http://somedoc.rdf#genid1]
  [http://somedoc.rdf#stat_bag1, rdf:_2, http://somedoc.rdf#stat1 ]

  [http://somedoc.rdf#stat_bag2, rdf:type, rdf:Bag]
  [http://somedoc.rdf#stat_bag2, rdf:_1, http://somedoc.rdf#stat2 ]

  [http://somedoc.rdf#stat_bag3, rdf:type, rdf:Bag]
  [http://somedoc.rdf#stat_bag3, rdf:_1, http://somedoc.rdf#stat3 ]

=======================================================

> The uri of
> the model will be the uri of the document.  It will have metadata
> stating things about it's encoding, namespaces used, time of
> retrieval, authority, and more.

I've been thinking about this a little. I'm wondering whether we might
want another level of indirection between the base URI of the document
and the resource from which we hang both  metadata (like that which
you've described) and the document contents themselves. This
indirection allows multiple versions of the document to exist and
indicate that we have a representation of the source document that is
based on a particular access pattern (kind of like the info that an
HTTP proxy maintains). 

Below is an attempt to capture this in rdf syntax for the example
above. The statementBags property would chain the statement Bags to
the Model instance. The Bags in turn chain the reified statement
resources. We then have a complete tracing from a particular access to
a source document down to the statements that occurred in that
document. If we didn't have this complete tracing then we wouldn't be
able to trace statements and statement bags contained in a document
varying over time since the statements and statement bags have the
document URI as thier identifer and different versions can't be
distinguished without the chaining from the unique resource that
represents the particular access to the document.

<ModelAccess>
  <uri rdf:resource="http://somedoc.rdf">
  <last_mod>timestamp</last_mode>
  <last_access>timestamp</last_access>
  <cache_until>timestamp</cache_until>
  <authority>...</authority>
  ...
  <statementBags>
    <rdf:Bag>
      <rdf:li rdf:resource="http://somedoc.rdf#stat_bag1"/>
      <rdf:li rdf:resource="http://somedoc.rdf#stat_bag2"/>
      <rdf:li rdf:resource="http://somedoc.rdf#stat_bag3"/>
   </rdf:Bag>
  </statementBags>
<ModelAccess>
  
ModelAccess is outside of anything that the M&S has touched on but I
think it is very important for getting the next level of context
needed for manipulating RDF on the web where context is everything. We
seem to be converging on an interpretation of the spec that provides
for statement and description tracing. This is the next level that
threads the statements and descriptions to a specific document access. 

Gabe

-- 
--------------------------- 
http://www.jfinity.com/gabe
Received on Monday, 27 November 2000 23:28:11 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:51:47 GMT