Re: more thoughts on daml+oil.daml

From: Ian Horrocks (horrocks@cs.man.ac.uk)
Date: 10/09/01


On October 3, Peter F. Patel-Schneider writes:
> It occurs to me that we could include more of the ``semantics'' of DAML+OIL
> in daml+oil.daml.  For example, we could do more with lists, perhaps
> something like:

I was under the impression that we had decided NOT to do this kind of
thing, because it suggests some meaning that is not supported by the
semantics. For example, in the case of lists, the restrictions are
meaningless unless "rest" is a daml:ObjectProperty. Even if rest were
a daml:ObjectProperty, then specifying a list with multiple "rest"
lists would not (necessarily) lead to an inconsistency, but to the
inference that all these lists are "equivalent" (their elements are to
be interpreted as the same resources).

What we really want to say is that lists should have a certain
structure, and that anything else is just an error. I don't think we
should be fostering the common misconception that this is what is
expressed by a DAML+OIL restriction.

Ian


> 
> <!-- List terminology. -->
> 
> <rdfs:Class rdf:ID="List">
>   <rdfs:subClassOf>
>     <#Restriction>
>       <#onProperty rdf:resource="#rest">
>       <#toClass rdf:resource="#List">
>     </#Restriction>
>   </rdfs:subClassOf>
>   <rdfs:subClassOf>
>     <#Restriction #maxCardinality="1">
>       <#onProperty rdf:resource="#rest">
>     </#Restriction>
>   </rdfs:subClassOf>
>   <rdfs:subClassOf>
>     <#Restriction #maxCardinality="1">
>       <#onProperty rdf:resource="#first">
>     </#Restriction>
>   </rdfs:subClassOf>
> </rdfs:Class>
> 
> <rdfs:Class rdf:ID="Empty">
>   <rdfs:subClassOf rdf:resource="List">
>   <rdfs:subClassOf>
>     <#Restriction #cardinality="0">
>       <#onProperty rdf:resource="#rest">
>     </#Restriction>
>   </rdfs:subClassOf>
>   <rdfs:subClassOf>
>     <#Restriction #cardinality="0">
>       <#onProperty rdf:resource="#first">
>     </#Restriction>
>   </rdfs:subClassOf>
> </rdfs:Class>
> 
> <Empty rdf:ID="nil">
> </Empty>
> 
> We could also define typed lists for things like unionOf.
> 
> <daml:Class rdf:ID="ClassList">
>   <rdfs:subClassOf rdf:resource="#List">
>   <daml:intersectionOf>
>     <daml:List>
>       <daml:first>
>         <daml:Restriction>
> 	  <daml:onProperty rdf:resource="#first">
> 	  <daml:toClass rdf:resource="#Class">
> 	</daml:Restriction>
>       </daml:first>
>       <daml:rest>
>         <daml:List>
> 	  <daml:first>
> 	    <daml:Restriction>
> 	      <daml:onProperty rdf:resource="#rest">
> 	      <daml:toClass rdf:resource="#ClassList">
>             </daml:Restriction>
>           </daml:first>
>           <daml:rest rdf:resource="#nil">
>         </daml:List>
>       </daml:rest>
>     </daml:List>
>   </daml:intersectionOf>
> </daml:Class>
> 
> <rdf:Property rdf:ID="unionOf">
>   <rdfs:domain rdf:resource="#Class"/>
>   <rdfs:range rdf:resource="#ClassList"/>
> </rdf:Property>
> 
> 
> Comments?
> 
> peter


This archive was generated by hypermail 2.1.4 : 04/02/02 EST