<?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#" >    
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
]>

<tp xmlns="http://nb.vse.cz/~svabo/patomat/tp/tp-schema.xsd">
  <op1>
    <entity_declarations>      
      <placeholder type="Class">?A</placeholder>
      <placeholder type="Class">?B</placeholder>
      <placeholder type="Class">?C</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: ?B SubClassOf: ?A</axiom>
      <axiom recursive="true">Class: ?C SubClassOf: ?B</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>
    <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">?X</placeholder>
      <placeholder type="Class">?D</placeholder>
      <placeholder type="Class">?E</placeholder>
      <placeholder type="Individual">?a</placeholder>
      <placeholder type="Individual">?b</placeholder>
      <placeholder type="ObjectProperty">?x</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 type="AnnotationProperty">&rdfs;seeAlso</entity>
      <placeholder type="Literal">?label</placeholder>
      <placeholder type="Literal">?mabel</placeholder>
    </entity_declarations>
    <axioms>    
<!--      <axiom>Class: ?E SubClassOf: Agent</axiom> -->
      <axiom>Class: ?D SubClassOf: ?X</axiom>
      <axiom>Class: ?D EquivalentTo: ( hasRole value ?a )</axiom>
      <axiom recursive="true">Class: ?E EquivalentTo: ( hasRole value ?b )</axiom>
      <axiom>Individual: ?a Annotations: seeAlso ?label</axiom>
      <axiom recursive="true">Individual: ?b Annotations: seeAlso ?mabel</axiom>
      <axiom>Individual: ?a Types: Role</axiom>
      <axiom recursive="true">Individual: ?b Types: Role</axiom>
      <axiom recursive="true">Individual: ?b Facts: ?x ?a</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>    
    <eq op1="?A" op2="?X"/>
    <eq op1="?B" op2="?D"/>
    <eq op1="?C" op2="?E"/>
<!--    <eqAnn op1="?B" op2="?D" /> -->        
    <ntp entity="?a">?B+Role</ntp>
    <ntp entity="?b">?C+Role</ntp>
    <ntp entity="?x">subRoleOf</ntp>
    <ntp entity="?label">?B</ntp>
    <ntp entity="?mabel">?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>