Still the animal ontology, here we add some restictions on the classes.

<rdf:RDF>
  xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:daml="http://www.daml.org/2000/10/daml-ont#"
  xmlns:xsd ="http://www.w3.org/2000/10/XMLSchema#"
  xmlns:dex ="http://www.daml.org/2001/03/daml+oil-ex#"
  xmlns:exd ="http://www.daml.org/2001/03/daml+oil-ex-dt#"
  xmlns     ="http://www.daml.org/2001/03/daml+oil-ex#"
>

<daml:Ontology rdf:about="">
  <daml:versionInfo>$Id: daml+oil-ex.daml,v 1.9 2001/05/03 16:38:38 mdean Exp $</daml:versionInfo>
  <rdfs:comment>
    An example ontology, with data types taken from XML Schema
  </rdfs:comment>
  <daml:imports rdf:resource="http://www.daml.org/2000/10/daml-ont"/>
</daml:Ontology>

"Animal" can have only one value for "hasMother",PDDL fact and two values for "hasParent".PDDL fact

<daml:Class rdf:ID="Animal">
   <daml:subClassOf>
      <daml:Restriction>
         <daml:onProperty rdf:resource="#hasMother"/>
         <daml:cardinality>1</daml:cardinality>
      </daml:Restriction>
   </daml:subClassOf>
   <daml:subClassOf>
      <daml:Restriction cardinality="2">
         <daml:onProperty rdf:resource="#hasParent"/>
      </daml:Restriction>
   </daml:subClassOf>
</daml:Class>

"Person" can have at most one value for "hasSpouse"PDDL fact

<daml:Class rdf:ID="Person">
  <rdfs:subClassOf rdf:resource="#Animal"/>
  <daml:subclassOf>
      <daml:Restriction maxCardinality="1">
         <daml:onProperty rdf:resource="#hasSpouse"/>
      </daml:Restriction>
   </daml:subclassOf>
</daml:Class>

"Person" can have at most one value of Class "FullTimeOccupation" for Property "hasOccupation"PDDL fact

<daml:Class rdf:about="#Person">
  <daml:subClassOf>
      <daml:Restriction maxCardinalityQ="1">
         <daml:onProperty rdf:resource="#hasOccupation"/>
         <daml:hasClassQ rdf:resource="#FullTimeOccupation"/>
      </daml:Restriction>
   </daml:subClassOf>
</daml:Class>

<daml:Class rdf:ID="Male">
  <rdfs:subClassOf rdf:resource="#Animal"/>
</daml:Class>

<daml:Class rdf:ID="Female">
  <rdfs:subClassOf rdf:resource="#Animal"/>
</daml:Class>

<daml:Class rdf:ID="Man">
  <rdfs:subClassOf rdf:resource="#Male"/>
</daml:Class>

<daml:Class rdf:ID="Woman">
  <rdfs:subClassOf rdf:resource="#Female"/>
</daml:Class>

<daml:Class rdf:ID="FullTimeOccupation">
</daml:Class>

<daml:ObjectProperty rdf:ID="hasParent">
  <rdfs:domain rdf:resource="#Animal"/>
  <rdfs:range rdf:resource="#Animal"/>
</daml:ObjectProperty>

<daml:UniqueProperty rdf:ID="hasMother">
  <rdfs:subPropertyOf rdf:resource="hasParent"/>
  <rdfs:domain rdf:resource="#Animal"/>
  <rdfs:range rdf:resource="#Female"/>
</daml:UniqueProperty>

<daml:ObjectProperty rdf:ID="hasSpouse">
  <rdfs:domain rdf:resource="#Animal"/>
  <rdfs:range rdf:resource="#Animal"/>
</daml:ObjectProperty>

<daml:ObjectProperty rdf:ID="hasOccupation">
  <rdfs:domain rdf:resource="#Person"/>
</daml:ObjectProperty>

</rdf:RDF>


Translated PDDL version of the above DAML ontology

(define (domain animal-ont)

(:types
Animal - object
Person - Animal
Male - Animal
Female - Animal
Man - Male
Woman - Female
FullTimeOccupation - object

(:predicates
(hasParent ?an1 - Animal ?an2 - Animal)
(hasMother ?an1 - Animal ?fe2 - Female)
(hasOccupation ?pe1 - Person ?ob2 - object)
(hasSpouse ?an1 - Animal ?an2 - Animal)
)

(:facts
(forall (x - object)
(if (is Animal x)
(exists (y1 - object)
(and (hasMother x y1)
(forall (y2 - object)
(if (hasMother x y2) (= y1 y2))))))) daml:cardinality="1"

(forall (x - object)
(if (is Animal x)
(exists (y1 - object y2 - object)
(and (hasParent x y1)
(hasParent x y2)
(not (= y1 y2))
(forall (y3 - object)
(if (hasParent x y3) (or (= y1 y3) (= y2 y3))))))))
daml:cardinality="2"

(forall (x - object)
(if (is Person x)
(forall (y1 - object y2 - object)
(if (and (hasSpouse x y1) (hasSpouse x y2)) (= y1 y2)))))
daml:maxCardinality="1"

(forall (x - object)
(if (is Person x)
(forall (y1 - object y2 - object)
(if (and (hasOccupation x y1)
(is FullTimeOccupation y1)
(hasOccupation x y2)
(is FullTimeOccupation y2))
(= y1 y2)))))
daml:maxCardinalityQ="1"

)
)