- From: Alberto Reggiori <alberto@asemantics.com>
- Date: Wed, 25 Feb 2004 01:25:49 +0100
- To: Graham Klyne <gk@ninebynine.org>
- Cc: RDF Interest <www-rdf-interest@w3.org>
hello Graham On Feb 24, 2004, at 11:06 AM, Graham Klyne wrote: > > This reminds me of one of those simple ideas that's been kicking > around my head for a while, but I don't think I ever expressed... > > Notation3 (as I understand it) has a simple way of creating named > graphs within a document; the idiom I use is: > > uri :- { <formula> } > > It would be a small extension, I think, to do something similar with > RDF/XML: > > <rdf:RDF rdf:ID="foo"> > : > (RDF statements) > : > </rdf:RDF> > > or > > <rdf:RDF rdf:about="uri"> > : > (RDF statements) > : > </rdf:RDF> > > Thus, an RDF element might be treated as a syntax construct for a node > that happens to be a graph. > > Is this conceptually broken in any way I haven't noticed? not breaking as far I can understand the RDF machinery - but I am sure people here will disagree - even though, things like that will be on the top of our wish-list for next version of the RDF/XML syntax :) but the main problem I would see with such a syntactic sugar is that it would make croaking existing RDF/XML parsers and tools out there (e.g. "Syntax error when processing attribute rdf:about. Cannot have attribute rdf:about in this context..." even if some tools a more lenient still) - i.e. it would not be backward compatible - and it would not easily allow to merge different named-graphs (provenance info) into the same RDF chunk/piece unless the rdf:RDF element is being nested, repeated or tweaked somehow. But even so definitively useful to attach to plain triples expressed in current RDF/XML some naming, provenance information or whatever that other 4th component means to you - infinitively useful indeed. Along these lines, we have have been experimenting (and implementing) a simple RDF/XML syntax compatible (compliant) extension which allows to "inline" graph names and treat (describe) them as normal resources. For example see my FOAF profile http://foaf.asemantics.com/alberto which uses extra/special rdfstore:context properties to flag each description block (not the whole rdf:RDF block though) with its provenance information described in the top of the file (or somewhere else) - such property is much more like an rdf:about, but for naming, and referring to a valid URI which represents the "space" (context/name/domain) of the triples being asserted - in the general case, such triples would be asserted as true as far as I am concerned. We have also got a bNode equivalent property called rdfstore:contextnodeID which is being used to distinguish between "real" URI qualified "names" and anonymous "spaces" i.e. resembling the rdf:nodeID but for naming. Such properties can be used anywhere in the graph and being attached to descriptions accordingly - and like rdf:about, rdfstore:context is subject to xml:base sensitive processing and so on - more, unless we use special collection/constructs we have not been able yet to nicely "distribute" such contextual information to a whole serialized graph, like it would be possible with your rdf:about attached to rdf:RDF XML nodes. Attributes like rdf:about, rdf:ID, rdf:resource or rdf:nodeID can then refer "back" to those "spaces" accordingly using plain/normal RDF description i.e. all in one nicely together :) Each RDF parser/processor aware of such a special properties/extensions could then generates "quads" or keep track of naming of triples accordingly - instead, any other standard compliant RDF/XML parser could simply "ignore" them and generate just some "spurious" triples, which would also be using special properties/namespace (i.e. I do not care of those vs. I need to understand everything) Try yourself and see the different output generated for the above FOAF using W3C (ARP) standard validator [1] and our extended parser [2] which generates "quads" accordingly (no clue for me our "graphically" such naming would be represented though). Now - what are we doing with such special properties? well in our experiments, we mainly keep track of triples, bookkeeping them, filter them, update/delete parts of the graph selectively and allow easier "smushing" of different RDF/XML pieces - and using RDQL queries like select ?item, ?description where (?name <rdf:type> <rdfstore:Context>) (?name <dc:date> "2004-02-25") (?name <dc:source> <http://www.trustedrss10resource.com>) (?item <rss:description> ?description, ?name) using ..... and then serialize back RDF-stored-triples into RDF/XML with full naming and provenance information described in it. And so on... but yes - this is still just another hack :) but definitively RDF/XML "friendly" (as far as we have have experimented) and easy to use on ANY RDF/XML piece out there without too much work really. RSS feeds, to blog comments, to annotations and so on... In fact, we are using such extensions for some of our pilots/demonstrators [3] - used also in combination with some URN extended resolution mechanism which returns metadata with full "provenance" information to the client - allowing really overlapping RDF to happen cheaply and easily. But perhaps this is already going too far from the subject of the original thread here.... all the best Alberto [1] http://www.w3.org/RDF/Validator/ [2] http://demo.asemantics.com/rdfstore/parser/ [3] http://demo.asemantics.com/biz/nb2/
Received on Tuesday, 24 February 2004 19:25:45 UTC