- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Tue, 21 Nov 2006 14:24:45 +0000
- To: Sandro Hawke <sandro@w3.org>
- CC: public-rif-wg@w3.org
Sandro Hawke wrote:
>> I agree we can, though asn06 has the virtue of compactness. In
>> particular expressing "list of" is a pain in OWL full (and worse in OWL DL).
>
> Can you summarize or send me a pointer to the best way or ways of saying
> "list of"? That's kind of where I got bogged down, not sure of the
> correct way to do it here.
One (OWL/full) idiom is:
:R a owl:Class .
:RList a owl:Class;
rdfs:subClassOf rdf:List,
[ a owl:Restriction; owl:onProperty rdf:first;
owl:allValuesFrom :R],
[ a owl:Restriction; owl:onProperty rdf:rest;
owl:allValuesFrom :RList ] .
rdf:nil a :RList .
Some people don't like having the empty list as a member of typed lists
and use something more like:
:R a owl:Class .
:RList a owl:Class;
rdfs:subClassOf rdf:List,
[ a owl:Restriction; owl:onProperty rdf:first;
owl:allValuesFrom :R],
[ a owl:Restriction; owl:onProperty rdf:rest;
owl:allValuesFrom
[a owl:class owl:unionOf (rdf:nil :RList)] ]] .
also OWL/full.
To do something like this in OWL/DL you are not allowed to reuse the
rdf:List vocabulary and so have to invent a new base level
List/first/rest/nil vocabulary terms.
All of which is largely irrelevant to the purpose at hand and best
hidden behind a mapping to a simpler notation.
Dave
Received on Tuesday, 21 November 2006 14:25:17 UTC