more thoughts on daml+oil.daml

From: Peter F. Patel-Schneider (pfps@research.bell-labs.com)
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