<?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">?B</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>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>
  </op1>
  <op2>
    <entity_declarations>
      <placeholder type="Class">?C</placeholder>
      <placeholder type="Class">?D</placeholder>
      <placeholder type="Class">?E</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: ?C SubClassOf: Agent</axiom>      
      <axiom>Class: ?D SubClassOf: ?C</axiom>
      <axiom>Class: ?E 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>
      <axiom>Class: ?D EquivalentTo: ( hasRole some ?E )</axiom>
    </axioms>
  </op2>
  <pt>    
    <eq op1="?A" op2="?C"/>
    <eq op1="?B" op2="?D" />    
    <ntp entity="?E">?B+Role</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>