<?xml version="1.0"?>

<!DOCTYPE tp SYSTEM "http://nb.vse.cz/~svabo/patomat/tp/tp.dtd" [
    <!ENTITY ar "http://www.ontologydesignpatterns.org/cp/owl/agentrole.owl#" >
    <!ENTITY or "http://www.ontologydesignpatterns.org/cp/owl/objectrole.owl#" >    
]>

<tp xmlns="http://nb.vse.cz/~svabo/patomat/tp/tp-schema.xsd">
  <op1>
    <entity_declarations>              
      <placeholder type="Class">?A</placeholder>
      <placeholder type="Class">?C</placeholder>
      <placeholder type="ObjectProperty">?r</placeholder>
      <entity type="Class">&or;Object</entity>
      <entity type="Class">&or;Role</entity>
      <entity type="ObjectProperty">&or;hasRole</entity>
      <entity type="ObjectProperty">&or;isRoleOf</entity>      
      <entity type="Class">&ar;Agent</entity>
    </entity_declarations>
    <axioms>    
      <axiom>ObjectProperty: isRoleOf Range: Object</axiom>
      <axiom>ObjectProperty: ?r Domain: ?A</axiom>
      <axiom>ObjectProperty: ?r Range: ?C</axiom>
      <axiom>ObjectProperty: hasRole Domain: Object</axiom>
      <axiom>ObjectProperty: hasRole Range: Role</axiom>
      <axiom>ObjectProperty: isRoleOf Domain: Role</axiom>      
      <axiom>Class: Agent SubClassOf: Object</axiom>
      <axiom>Class: Agent DisjointWith: Role</axiom>      
    </axioms>
    <ndp>
      <comparison threshold="1.0" measure="equal"><s1>?A</s1><s2>Person|person|PERSON|Human|human|HUMAN|People|people|PEOPLE</s2></comparison>
      <!--      <exist>isHyperonymOf(Agent,?A)</exist> -->
    </ndp>
  </op1>
  <op2>
    <entity_declarations>
<!--       <placeholder type="Class">?Role</placeholder> -->
      <placeholder type="Class">?D</placeholder>
      <entity type="Class">&or;Object</entity>
      <entity type="Class">&or;Role</entity>
      <entity type="ObjectProperty">&or;hasRole</entity>
      <entity type="ObjectProperty">&or;isRoleOf</entity>      
      <entity type="Class">&ar;Agent</entity>
    </entity_declarations>
    <axioms>    
      <axiom>Class: ?D SubClassOf: Role</axiom>      
      <axiom>ObjectProperty: isRoleOf Range: Object</axiom>
      <axiom>ObjectProperty: hasRole Domain: Object</axiom>
      <axiom>ObjectProperty: hasRole Range: Role</axiom>
      <axiom>ObjectProperty: isRoleOf Domain: Role</axiom>
      <axiom>Class: Agent SubClassOf: Object</axiom>      
      <axiom>Class: Agent DisjointWith: Role</axiom>            
    </axioms>
  </op2>
  <pt>    
    <eqHet op1="?r" op2="?D"/>
    <ntp entity="?D">Role_of_+?A+_that_+?r+?C</ntp>
    <eq op1="&or;Object" op2="&or;Object"/>
    <eq op1="&or;Role" op2="&or;Role"/>
    <eq op1="&or;hasRole" op2="&or;hasRole"/>
    <eq op1="&or;isRoleOf" op2="&or;isRoleOf"/>
    <eq op1="&ar;Agent" op2="&ar;Agent"/>
  </pt>
</tp>