From: Peter F. Patel-Schneider ([email protected])
Date: 10/03/01
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:
<!-- 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