RE: can any resource have items?

> Dear all,
>        As to the RDF/XML syntax,any resource or bnode can have li
> items. But in RDF M&S

Strictly nothing really has li items, rdf:li is just a convenient
(sometimes) way of encoding rdf:_1, rdf:_2 etc.

> only Bag,Alt and Seq are explicitly allowed to have items. (There
> is no rules
> explicitly forbiding resources other than the three types of
> containers to have items,either.)
>      If any rdf node (other than literal) can have items, then
> the speciality of Bag, Alt
> and Seq is that the relations between their items are explicitly
> defined but not that they
> can contain items.

It is unclear to me whether anything that is not a Bag, Seq or Alt can have
items. However even if only those three classes can have items this doesn't
mean that rdf:Bag etc. must necessarily appear in the document. After all
the fact that something is a rdf:Bag is explicitly defined by the triple:

<http://www.example.net/whatever> <rdf:type> <rdf:Bag> .

And its relationship with its first item by the triple:

<http://www.example.net/whatever> <rdf:_1>
<http://www.example.net/whateverItem> .

And we can't insist that those two triples won't be separated.

Hence blank nodes can certainly have items. Further typed nodes of other
types can have items in two different ways.

The first is a resource that is a subclass of a container. Consider a class
xx:Committee.

If <xx:Committee> <rdfs:subClassOf> <rdf:Bag> .

Then for any resource Y where:

<Y> <rdf:type> <xx:Committee> .
entails <Y> <rdf:type> <rdf:Bag> . (RDFS closure rule rdfs9).

Hence the following RDF/XML should be perfectly allowable:

<xx:Committee rdf:about="Y">
	<rdf:li rdf:resource="X"/>
</xx:Committee>

An application may decide to interpret this as if "xx:Committee" where
replaced with "rdf:Bag" if appropriate to its tasks, after all the closure
of the above RDF/XML could also be serialised to RDF/XML as:

<rdf:Bag rdf:about="Y">
	<rdf:type rdf:resource="{xx's URI}Committee"/>
	<rdf:li rdf:resource="X"/>
</rdf:Bag>

The second case is a resource of the given type which is also a container,
where there is no direct relationship between these two types. Consider an
application which has a class of xx:DecisionMaker to represent some entity
with a degree of authority on a matter. If the xx:DecisionMaker is also a
xx:Director (that is a single human being) it cannot also be a Bag, but if
it is also an xx:Committee it can also be a bag.

Hence:

<xx:DecisionMaker rdf:about="Y">
	<rdf:li rdf:resource="X">
</xx:DecisionMaker>

Should also allowed.

(Note that if we know [from DAML or OWL perhaps] that the only types of
decision makers are <xx:Director>s or <xx:Committee>s and we know that
<xx:Directors> cannot be a subclass of any of the RDF container types then
we also know that Y is an xx:Committee.)

Received on Thursday, 14 November 2002 07:24:03 UTC