- From: Brian McBride <bwm@hplb.hpl.hp.com>
- Date: Sun, 21 Oct 2001 13:46:03 +0100
- 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 UTC