RE: Containers

Brian,
> >
> > <rdf:Seq rdf:ID="foo">
> > 	<rdfx:member>bar</rdfx:member>
> > 	<rdfx:member>baz</rdfx:member>
> > </rdf:Seq>
> >
> > can be addressed as:
> >
> > 	#foo/1
> > 	#foo/2
>
> If there was an RDF graph representation of the above,
> e.g. in statement form:
>
>   { (foo, rdf:type,    rdf:Seq),
>     (foo, rdfx:member, "bar"),
>     (foo, rdfx:member, "baz")
>   }
>
> an application which wanted to convert this to RDF XML
> wouldn't know in which order to write the
> members.  Something more is needed to capture the
> ordering in the graph.
>

Right. First assume that rdfx:member is a synonym for rdf:li, then the
statements produced are:

	[foo rdf:type rdf:Seq]
	[foo rdf:_1 "bar"]
	[foo rdf:_2 "baz"]

or as a child sequence:

	[foo /1 "bar"]
	[foo /2 "baz"]

there are other possibilities to generate XPaths (where full XPointer is a
superset of XPath) e.g.

	[foo rdfx:member[1] "bar"]
	[foo rdfx:member[2] "baz"]

one might then encode the fact that XXX xpointer isa rdf:member by
statements such as

	[foo/1 rdf:type rdfx:member]
	[foo/2 rdf:type rdfx:member]

or even

	[foo/rdfx:member[1] rdf:type rdfx:member]
	[foo/rdfx:member[2] rdf:type rdfx:member]

the point being that through use of an XPointer as the fragment id part of a
URI, collections can be implemented. Another reason to introduce XPointer
into RDF is that any so-called anonymous node can be named as a child
sequence or full xpointer.

Furthmore the concept of a range allows an entire sequence to be expressed
as

	foo/0 ... foo/A

Jonathan Borden
The Open Healthcare Group
http://www.openhealth.org

Received on Sunday, 4 February 2001 10:09:56 UTC