- From: Henry Story <henry.story@bblfish.net>
- Date: Thu, 13 Jan 2005 03:02:01 +0100
- To: www-rdf-interest@w3.org
- Cc: atom-owl@googlegroups.com
Tim Bray, Roy Fielding and other have recently made some interesting comments on the atom list saying that xml's tree structure has an implicit semantics. This has led me to the following thought. Perhaps there is a default mapping from xml to triple space that encodes xml such as <feed atom:version="draft-ietf-atompub-format-03: do not deploy" xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-03"> <head> <title>Example Feed</title> <link href="http://example.org/"/> <updated>2003-12-13T18:30:02Z</updated> <author> <name>John Doe</atom:name> </author> </head> <entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> <id>vemmi://example.org/2003/32397</id> <versionid>vemmi://example.org/2003/32397/v1</versionid> <updated>2003-12-13T18:30:02Z</updated> </entry> </feed> this way: _f --feed--->_f1 |---head--->_h1 | |---title-->"example Feed" | |---link--->_l1 | | |--href----> <http://example.org/> | |--updated->"2003-12-13T18:30:02Z" | |--author-->_a1 | |---name--->"John Doe" | |---mbox--->"john@doe.com" |--entry-->_e1 |--title-->"Atom Powered Robots Run Amok" |--link--->_l1 | |--href-----> <http://example.org/2003/12/13/atom03> |--id-------> <vemmi://example.org/2003/12/13/atom03> |-versionid-> <vemmi://example.org/2003/12/13/atom03/v1> |--updated-->"2003-12-13T18:30:02Z" The method of producing the mapping is very simple. Every element has a blank element as subject and a blank element as a node, unless the child of the node is a simple string. Every attribute on an element is an attribute on the blank node that that element points to, and has as object the interpretation of the string required for that attribute. So in the example above the subject of the "head" element is the blank node _f1 and the object is the blank node _h1. Take the "link" element <link href="http://example.org/"/> it has a blank node _h1 as subject and a blank node _l1 as object. The attribute atom:href has the blank node _l1 as subject and the interpretation of "http://example.org" that it requires as object. Good so how do we know what that interpretation is? Well we have to look to the ontology of the atom:href attribute. Perhaps we have a file at hand that gives us this. This file says the object of href is a resource. So we cast that to a resource, and we get what we were asking for above. Interestingly enough the triple model I get from parsing the above xml that way is (nearly) exactly the same as the triple model I get from parsing the closest rdf/xml I could get that resembles the xml above: <?xml version="1.0" encoding="utf-8"?> <atom:feed atom:version="draft-ietf-atompub-format-03: do not deploy" xmlns:atom="http://purl.org/atom/ns#draft-ietf-atompub-format-03" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <atom:head rdf:parseType="Resource"> <atom:title>Example Feed</atom:title> <atom:link atom:href="http://example.org/"/> <atom:updated>2003-12-13T18:30:02Z</atom:updated> <atom:author rdf:parseType="Resource"> <atom:name>John Doe</atom:name> </atom:author> </atom:head> <atom:entry rdf:parseType="Resource"> <atom:title>Atom-Powered Robots Run Amok</atom:title> <atom:link atom:href="http://example.org/2003/12/13/atom03"/> <atom:id>vemmi://example.org/2003/32397</atom:id> <atom:versionid>vemmi://example.org/2003/32397</atom:versionid> <atom:updated>2003-12-13T18:30:02Z</atom:updated> </atom:entry> </atom:feed> So that would tend to indicate that we are close to the intuitions of the original developers of rdf/xml. Now how do we ever get to fill in the blank nodes that are so plentifully spread around? Well again with the help of the ontology, and especially properties that are both functional, inverse functional, symmetric and transitive: ie: identity properties. So if for example the versionid property were such an identity property then we could deduce from the above graph the following graph: _f --feed--->_f1 |---head--->_h1 | |---title-->"example Feed" | |---link--->_l1 | | |--href----> <http://example.org/> | |--updated->"2003-12-13T18:30:02Z" | |--author-->_a1 | |---name--->"John Doe" | |---mbox--->"john@doe.com" |--entry--> <vemmi://example.org/2003/12/13/atom03/v1> |--title-->"Atom Powered Robots Run Amok" |--link--->_l1 | |--href-----> <http://example.org/2003/12/13/atom03> |--id-------> <vemmi://example.org/2003/12/13/atom03> |--updated-->"2003-12-13T18:30:02Z" This oddly enough still leaves a problem with xml like the following <entry> <generator uri="https://bloged.dev.java.net/" version="0.5">BlogEd</generator> </entry> which is exactly the same type of xml that does not seem to be parsable in rdf-xml perhaps that should be _e1 |------generator---->_g ---rdf:text-->"BlogEd" |----uri---> <https://bloged.dev.java.net/> |--version-> "0.5"
Received on Thursday, 13 January 2005 02:02:05 UTC