Some basic semantics for collections in RDF

Francesco Cannistra's message about typed RDF containers inspired me 
to type up some notes I had made a while ago about typing RDF 
collections (the rdf:List construct). My goal was to provide a way 
for schema authors to say things like "the value of this property 
must be a well-formed list containing members of class X". Other 
features include the ability to specify maximum and minimum sizes for 
these values and the ability to say whether these values should be 
treated as lists or sets.

I've posted the notes at 
<http://www.eyrie.org/~zednenem/2003/rdfcollection/>. I'm sure there 
are some holes and mistakes, but I think it's a start towards 
something that could prove useful.

As an example, if there were a FOAF property foaf:children, which 
indicated the set of foaf:Persons who are the children of another 
foaf:Person, we could indicate that foaf:children takes an unordered 
list of foaf:Persons like so:

<rdf:Property rdf:resource="http://xmlns.com/foaf/0.1/children">
   <rdfs:range>
     <c:SetClass>
       <c:allMembersFrom rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
     </c:SetClass>
   </rdfs:range>
</rdf:Propety>

Or, in N3-Lite:

foaf:children rdfs:range _:a .
_:a rdf:type c:SetClass .
_:a c:allMembersFrom foaf:Person .

Here, the anonymous resource "a" is the class of collections which 
behave like sets and whose members have the type foaf:Person.

Given some instance data,

[1]  _:x foaf:children ( _:y _:z ).
[2]  _:x foaf:children ( _:z _:y ).

A processor which understood this vocabulary could use the above 
schema to determine that statements 1 and 2 are equivalent and that 
_:y and _:z have the type foaf:Person.
-- 
Dave Menendez - zednenem@psualum.com - http://www.eyrie.org/~zednenem/

Received on Thursday, 8 May 2003 16:18:44 UTC