- 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