- From: Sandro Hawke <sandro@w3.org>
- Date: Fri, 13 Jul 2007 11:36:15 -0400
- To: Dave Reynolds <der@hplb.hpl.hp.com>
- Cc: public-rif-wg@w3.org
Dave Reynolds <der@hplb.hpl.hp.com> writes: > In most cases I hope Consts will be IRIs not strings in which case > presumably they would be: > > <Const rdf:about="http://example.com/myrules#book" /> > > Adopting RDF/XML style does mean we can't use qname/curie notation for > shortening IRIs. We can only use relative IRIs so the above could be: > > <Const rdf:about="#book" /> > > in a document with xml:base of "http://example.com/myrules". ... > All IRI Const nodes are likely to be serialized multiple times. > > I don't understand why that might be a problem. If it really is a > problem then there are a couple of solutions which preserve RDF/XML > compatibility. > > (i) Serialize each Const once (e.g. at first occurrence) then all > references to the same Const would use rdf:resource: > > ... > <Const rdf:about="#book" /> > ... > <Uniterm> > <op rdf:resource="#book"> > <arg rdf:parsetype="Collection"> > <Var rif:name="Author" /> > <Const rif:name="LeRif" /> > </arg> > </Uniterm> > > (ii) Serialize Consts as blank nodes with a property giving their IRI > > <Const rif:iri="#book" /> > There are several issues about Consts that I hope we can separate. 1. One parse-graph node for each Const? (suggested: yes) If the same constant occurs several times in a ruleset, are the occurances collected in the abstract parse graph? Does the "Const" element represent a constant or an occurance-in-the-parse-stream of a constant? I had some discussion with Gary and Hassan about this, in Innsbruck, and I think our conclusion was the former, they should be collected, as in your version (i) above. In NodeID terms (so this can work without URIs), we say: <Uniterm> <op ... /> <arg rdf:parseType="Collection"> <Const rdf:nodeID="n32"><name>book</name></Const> ... I had been thinking that on subsequent occurances one would use a nodeID reference on a property (syntactically like like rdf:resource), but I see now that wont work because parseType=Collection doesn't allow it, so subsequence occurances will have to be like this: <Uniterm> <op ... /> <arg rdf:parseType="Collection"> <Const rdf:nodeID="n32" /> ... which should be fine, too. (I don't like the fact that it's not immediately obvious whether this is a first-occurance of a Const with no properties or a later occurance of the same Const, but a program can tell.) In my mind, the "name" property has no formal semantics; it's just for roundtripping. 2. Semantic for IRIs for Consts? (suggestion: just syntax) If, intead of a nodeID, we used an IRI for a Const, ... what would it mean, in the Semantic Web / RDF sense? For example, here's an n3 rule that says that everyone I know is a geek: { <http://www.w3.org/People/Sandro/data#SandroHawke> foaf:knows ?x } => { ?x rdf:type stereotypes:Geek } Now, that first term is an IRI for a person, me. How would we translate this to RIF? NOT this: <Const rdf:about="http://www.w3.org/People/Sandro/data#SandroHawke"> because that Const is a syntactic element, not a person. (I am not a logical constant -- I am a person.) Instead, I *think* Consts need another property to tie them to the Semantic Web. Something like: <Const> <href>http://www.w3.org/People/Sandro/data#SandroHawke</href> </Const> Alternatives to "href" include "denotation", "standsFor", "link", "referent". I'd be included to consult with Pat Hayes, at least, before settling on a name for it. An alternative, to steer RIF clear of the Semantic Web, I suppose would be to just use "name". But I don't think that's a great idea. Okay, it turned out to be just two issues. :-) -- Sandro
Received on Friday, 13 July 2007 15:37:26 UTC