W3C home > Mailing lists > Public > www-rdf-interest@w3.org > October 2001

Re: a new way of thinking about RDF and RDF Schema

From: Brian McBride <bwm@hplb.hpl.hp.com>
Date: Sun, 21 Oct 2001 13:46:03 +0100
Message-ID: <3BD2C38B.8060508@hplb.hpl.hp.com>
To: "Peter F. Patel-Schneider" <pfps@research.bell-labs.com>
CC: www-rdf-interest@w3.org, simeon@research.bell-labs.com
Peter,

I've spent this morning trying to understand this, and to the extent that my 
poor non-mathematical brain has grasped what this does, I find it very exciting.

If I have understood it at all, what you are doing is to define a style of model 
theory that can be applied to arbritary XML documents, and defining an RDF Model 
theory in that style.  The resulting RDF model theory is necessarily more 
complicated than one for a graph or triple based syntax, since in effect, the 
model theory has an RDF parser built into it.  :(

First step is to check that it actually works for RDF, so a couple of detailed 
comments:

[...]


> 
> 4/ Models and Entailment
> 
> An interpretation I = < IR, IEXT, ICEXT, IS> is a model for a data set N 
> if there are mappings
>       M : N -> IR u DV
>       MA : N' -> DV, where N' is the attribute nodes in N
> such that
> 
>      1.	for each n in N an element node, 
> 	    M(n) in IR  and  M(n) in ICEXT(U(name(n)))
> 	    if n has an attribute with name rdf:ID and string-value u
> 	       then M(n) = IS(U'(u))
> 	    if n has an attribute with name rdf:about and string-value u
> 	       then M(n) = IS(U'(u))
> 	    if n has an attribute with name rdf:resource and string-value u
> 	       < M(n), IS(U'(u)) > in IEXT


Your ML compiler should have issued a warning here.  This does not cover all the 
cases; bnodes are not handled, i.e. what do you do about nodes with no ID, about 
or resource attribute.  And as I write I realise how elegantly that will work 
out - since both a b-node and a property element will generate a new member of 
IR.  For this case:

   M(n) = G() where G generates a unique new member of IR each time it is called.

My second comment was I thought going to be more troublesome, but now I don't 
think it is, at least for RDF.  How would the following be handled:

   <a:b>
     <a:b>
       <a:b/>
     </a:b>
   </a:b>

which is currently legal RDF, though if I remember correctly, RDFCore has an 
issue to consider making properties and classes disjoint.  I thought there might 
be trouble with striping here, but I think the generator handles it fine.

For other languages however, I'm concerned that the style you have adopted 
requires a sort of context-free language.

   <a:b>
     <a:b>
     ...

always generates the same thing, so must always mean the same thing.

So let me add a third.  I don't see where you are handling typed nodes; e.g. the 
first element above should add:

    g = G()
   <G(), g>
   <rdf:type, g>
   <g, a:b>

to IEXT.  But one can't add these for all <a:b> elements, only those that are 
typed nodes in the grammar.  This is a case where striping must be handled.

And just for fun:

   <a:b/>

and

   <rdf:Description rdf:type="a:b"/>        <-- ok qnames aren't
                                               allowed as attrib values -->

should be equivalent.

I suspect building a parser into the model theory will be rather a pain.  Would 
it not be better to transform RDF to some canonical form first, and then define 
a model theory for that.  Which, is exactly what Pat is doing with n-triples and 
the graph syntax

Brian
Received on Sunday, 21 October 2001 08:51:05 GMT

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