- From: David Menendez <zednenem@psualum.com>
- Date: Thu, 8 May 2003 16:19:23 -0400
- To: www-rdf-interest@w3.org
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