- From: Sandro Hawke <sandro@w3.org>
- Date: Wed, 12 Nov 2003 02:27:46 -0500
- To: David Menendez <zednenem@psualum.com>
- Cc: www-rdf-interest@w3.org
> 2. Adding a statement to a graph containing a well-formed collection > cannot change that collection *and* leave it well-formed. Um, sure it can, it just implies some equalities. But your basic point is essentially right, yes. > { A rdf:_1 B. } <-> { A rdf:first B. } > { A rdf:_2 B. } <-> exists X. { A rdf:rest X. X rdf:first B. } ...> > { A rdf:_3 B. } <-> exists X. { A rdf:rest X. X rdf:_2 B. } Yes, very nicely put. > { S rdf:first A; > rdf:rest [ > rdf:first B; > rdf:rest [ rdf:first C; rdf:rest rdf:nil ] > ] > } -> { S rdf:_1 A; rdf:_2 B; rdf:_3 C } > > *but* > > { S rdf:_1 A; rdf:_2 B; rdf:_3 C } -> > { S rdf:first A; > rdf:rest [ rdf:first B ], [ rdf:rest [ rdf:first C ]] }. > > Even if S is known to be a well-formed list (in which case rdf:first and > rdf:rest are functional), we still can't infer the rdf:nil. The essential difference could be made up by S rdf:length "3"^^xsd:int. That may look ugly to RDF eyes, but any OWL reasoner has to handle integer values like that, so it'll get nicer (in our heads or our computers; I don't know which :-). I'm pretty sure I could then write the general <-> formula, given a predicate linking rdf:_<n> to rdf:_<n+1>. Alas, this is probably too late to make it into this current unnamed version of RDF. (RDF Core seemed unwilling to consider the seemingly obvious fact that {<a> rdf:_1 <b>. <a> rdf:_1 <c>.} implies {<b> owl:sameAs <c>.} and I never got around to trying to understand why.) > Perhaps this idea is already obvious to the community, but I hadn't seen > it in any of the literature, and it seemed neat, so here you go. If it's been spelled out so clearly before (which is totally possible), I missed it, too. -- sandro
Received on Wednesday, 12 November 2003 02:25:16 UTC