From: Ian Horrocks ([email protected])
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