<?xml version="1.0" ?>
<!DOCTYPE rdf:RDF [
     <!ENTITY rdf  "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
     <!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#" >
     <!ENTITY owl  "http://www.w3.org/2002/07/owl#" >
     <!ENTITY iw   "http://inferenceweb.stanford.edu/2004/07/iw.owl#" >
   ]>

<rdf:RDF
  xmlns:rdf 	= "&rdf;"
  xmlns:rdfs 	= "&rdfs;"
  xmlns:owl 	= "&owl;"
  xmlns	    	= "&iw;"
  xml:base		= "&iw;">
  
  <owl:Ontology rdf:about="">
    <owl:versionInfo  xml:lang="en">$Id: iw.owl,v 0.9.3, 2005-10-24, Paulo Pinheiro da Silva, Deborah L. McGuinness, Cynthia Chang, and Li Ding$</owl:versionInfo>
    <rdfs:label xml:lang="en">IW200407V3</rdfs:label>
    <rdfs:comment xml:lang="en">PML ontology. This includes small updates from the July 2004 PML ontology.</rdfs:comment> 
  </owl:Ontology>
<!--
Nov 14, 2007 (Li Ding) added statement claiming that NodeSet is owl:disjoinWith Query.
-->  
  
<!-- Generic PML properties -->
  <owl:DatatypeProperty rdf:ID="hasIndex">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="&xsd;int"/>
	<rdfs:label>index</rdfs:label>
  </owl:DatatypeProperty>
  
  <owl:ObjectProperty rdf:ID="hasAxiom">
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <rdf:Description rdf:about="#LanguageAxiomSet"/>
          <rdf:Description rdf:about="#DerivedRule"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
    <rdfs:range rdf:resource="#Axiom"/>
	<rdfs:label>axiom</rdfs:label>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="hasLanguage">
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <rdf:Description rdf:about="#PrimitiveRule"/>
          <rdf:Description rdf:about="#NodeSet"/>
          <rdf:Description rdf:about="#Query"/>
          <rdf:Description rdf:about="#Axiom"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
    <rdfs:range rdf:resource="#Language"/>
	<rdfs:label>language</rdfs:label>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasSource">
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <rdf:Description rdf:about="#ProvenanceElement"/>
          <rdf:Description rdf:about="#SourceUsage"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
    <rdfs:range rdf:resource="#Source"/>
	<rdfs:label>source</rdfs:label>
  </owl:ObjectProperty>
  
  <owl:DatatypeProperty rdf:ID="name">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>name</rdfs:label>
  </owl:DatatypeProperty>  
  
  
<!-- Top level class:  ModelElement-->
  
  <owl:Class rdf:ID="ModelElement">

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#firstSubmissionDate"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#lastSubmissionDate"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="firstSubmissionDate">
    <rdfs:domain rdf:resource="#ModelElement"/>
    <rdfs:range rdf:resource="&xsd;dateTime"/>
	<rdfs:label>first submission date</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="lastSubmissionDate">
    <rdfs:domain rdf:resource="#ModelElement"/>
    <rdfs:range rdf:resource="&xsd;dateTime"/>
	<rdfs:label>last submission date</rdfs:label>
  </owl:DatatypeProperty>
  
<!-- *********** Provenance Part *********** -->
 
  <owl:Class rdf:ID="ProvenanceElement">
    <rdfs:subClassOf rdf:resource="#ModelElement"/>


    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#submitter"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#name"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#URL"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#englishDescription"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#englishExample"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasImage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasAudio"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#version"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>


  <owl:ObjectProperty rdf:ID="submitter">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="#Team"/>
	<rdfs:label>submitter</rdfs:label>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="URL">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;anyURI"/>
	<rdfs:label>url</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="englishDescription">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>english description</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="englishExample">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>english example</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="hasImage">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;anyURI"/>
	<rdfs:label>image source</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="hasAudio">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;anyURI"/>
	<rdfs:label>audio source</rdfs:label>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:ID="version">
    <rdfs:domain rdf:resource="#ProvenanceElement"/>
    <rdfs:range rdf:resource="&xsd;string"/>
 	<rdfs:label>version</rdfs:label>
 </owl:DatatypeProperty>


<!-- *********** -->
  
  <owl:Class rdf:ID="Language">
    <rdfs:subClassOf rdf:resource="#ProvenanceElement"/>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#escapeCharacter"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="escapeCharacter">
    <rdfs:range rdf:resource="&xsd;string"/>
    <rdfs:domain rdf:resource="#Language"/>
 	<rdfs:label>escapte character</rdfs:label>
  </owl:DatatypeProperty>

  
<!-- *********** -->
  
  <owl:Class rdf:ID="Format">
    <rdfs:subClassOf rdf:resource="#ProvenanceElement"/>

  </owl:Class>

  
  <!-- *********** -->

  <owl:Class rdf:ID="Axiom">
    <rdfs:subClassOf rdf:resource="#ProvenanceElement"/>

	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasLanguage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#axiomContent"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="axiomContent">
    <rdfs:domain rdf:resource="#Axiom"/>
    <rdfs:range rdf:resource="&xsd;string"/>
 	<rdfs:label>axiom content</rdfs:label>
  </owl:DatatypeProperty>
  
<!-- *********** -->

  <owl:Class rdf:ID="InferenceEngine">
    <rdfs:subClassOf rdf:resource="#ProvenanceElement"/>
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#inferenceEngineRule"/>
        <owl:minCardinality rdf:datatype="&xsd;int">1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:ObjectProperty rdf:ID="inferenceEngineRule">
    <rdfs:domain rdf:resource="#InferenceEngine"/>
    <rdfs:range rdf:resource="#PrimitiveRule"/>
 	<rdfs:label>inference engine rule</rdfs:label>
  </owl:ObjectProperty>
  

<!-- *********** -->

  <owl:Class rdf:ID="Source">
    <rdfs:subClassOf rdf:resource="#ProvenanceElement"/>
	
  </owl:Class>

<!-- *********** -->
  

  <owl:Class rdf:ID="Agent">
    <rdfs:subClassOf rdf:resource="#Source"/>
	
	
  </owl:Class>

  <owl:ObjectProperty rdf:ID="usesInferenceEngine">
    <rdfs:domain rdf:resource="#Agent"/>
    <rdfs:range rdf:resource="#InferenceEngine"/>
  </owl:ObjectProperty>
  


<!-- *********** -->

  <owl:Class rdf:ID="Organization">
    <rdfs:subClassOf rdf:resource="#Agent"/>
	
  </owl:Class>

  
<!-- *********** -->

  <owl:Class rdf:ID="Team">
    <rdfs:subClassOf rdf:resource="#Agent"/>
			
  </owl:Class>


  <owl:ObjectProperty rdf:ID="hasMember">
    <rdfs:domain rdf:resource="#Team"/>
    <rdfs:range rdf:resource="#Person"/>
 	<rdfs:label>member</rdfs:label>
  </owl:ObjectProperty>

<!-- *********** -->

  <owl:Class rdf:ID="Person">
    <rdfs:subClassOf rdf:resource="#Agent"/>
	
  </owl:Class>

<!-- *********** -->

  <owl:Class rdf:ID="Document">
    <rdfs:subClassOf rdf:resource="#Source"/>
	
	
  </owl:Class>

  <owl:ObjectProperty rdf:ID="hasAuthor">
    <rdfs:domain rdf:resource="#Document"/>
    <rdfs:range rdf:resource="#Source"/>
 	<rdfs:label>author</rdfs:label>
  </owl:ObjectProperty>

   
<!-- *********** -->

  <owl:Class rdf:ID="Ontology">
    <rdfs:subClassOf rdf:resource="#Document"/>
	
	
  </owl:Class>

<!-- *********** -->

  <owl:Class rdf:ID="LanguageAxiomSet">
    <rdfs:subClassOf rdf:resource="#Ontology"/>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#forLanguage"/>
        <owl:minCardinality rdf:datatype="&xsd;int">1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasAxiom"/>
        <owl:minCardinality rdf:datatype="&xsd;int">1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>


  <owl:ObjectProperty rdf:ID="forLanguage">
    <rdfs:domain rdf:resource="#LanguageAxiomSet"/>
    <rdfs:range rdf:resource="#Language"/>
  </owl:ObjectProperty>
  
<!-- *********** -->

  <owl:Class rdf:ID="Publication">
    <rdfs:subClassOf rdf:resource="#Document"/>
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#year"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#month"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#day"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasAuthor"/>
        <owl:minCardinality rdf:datatype="&xsd;int">1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="year">
    <rdfs:domain rdf:resource="#Publication"/>
    <rdfs:range rdf:resource="&xsd;gYear"/>
 	<rdfs:label>year</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="month">
    <rdfs:domain rdf:resource="#Publication"/>
    <rdfs:range rdf:resource="&xsd;gMonth"/>
 	<rdfs:label>month</rdfs:label>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="day">
    <rdfs:domain rdf:resource="#Publication"/>
    <rdfs:range rdf:resource="&xsd;gDay"/>
 	<rdfs:label>day</rdfs:label>
  </owl:DatatypeProperty>
  
<!-- *********** -->

  <owl:Class rdf:ID="Website">
    <rdfs:subClassOf rdf:resource="#Document"/>
	

  </owl:Class>



  
<!-- *********** -->

  <owl:Class rdf:ID="InferenceRule">
    <rdfs:subClassOf rdf:resource="#ProvenanceElement"/>
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#englishDescriptionTemplate"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="englishDescriptionTemplate">
    <rdfs:domain rdf:resource="#InferenceRule"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

<!-- *********** -->

  <owl:Class rdf:ID="PrimitiveRule">
    <rdfs:subClassOf rdf:resource="#InferenceRule"/>

	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasLanguage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#ruleSpec"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="ruleSpec">
    <rdfs:domain rdf:resource="#PrimitiveRule"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

<!-- *********** -->

  <owl:Class rdf:ID="MethodRule">
    <rdfs:subClassOf rdf:resource="#PrimitiveRule"/>
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#verificationMethod"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:DatatypeProperty rdf:ID="verificationMethod">
    <rdfs:domain rdf:resource="#MethodRule"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

<!-- *********** -->
  
  <owl:Class rdf:ID="DeclarativeRule">
    <rdfs:subClassOf rdf:resource="#PrimitiveRule"/>

  </owl:Class>
  
  
  <!-- newly added , built-in rule for PML -->
  <DeclarativeRule rdf:ID="DirectAssertion">
	<name>Direct Assertion</name>
	<submitter>
		<Team rdf:ID="KSL">
			<name>KSL</name>
			<submitter rdf:resource="#KSL"/>
		</Team>
	</submitter>
  </DeclarativeRule>

<!-- *********** -->

  <owl:Class rdf:ID="DerivedRule">
    <rdfs:subClassOf rdf:resource="#InferenceRule"/>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#ruleNodeSet"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:ObjectProperty rdf:ID="ruleNodeSet">
    <rdfs:domain rdf:resource="#DerivedRule"/>
    <rdfs:range rdf:resource="#NodeSet"/>
  </owl:ObjectProperty>
  
  
<!-- *********** -->
  
  <owl:Class rdf:ID="TranslationRule">
    <rdfs:subClassOf rdf:resource="#InferenceRule"/>
	
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#fromLanguage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#fromExpression"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#toLanguage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#toExpression"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:ObjectProperty rdf:ID="fromLanguage">
    <rdfs:domain rdf:resource="#TranslationRule"/>
    <rdfs:range rdf:resource="#Language"/>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="fromExpression">
    <rdfs:domain rdf:resource="#TranslationRule"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:ID="toLanguage">
    <rdfs:domain rdf:resource="#TranslationRule"/>
    <rdfs:range rdf:resource="#Language"/>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="toExpression">
    <rdfs:domain rdf:resource="#TranslationRule"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

    
  

  
  
  
  
<!-- *********** Proof Part *********** -->

  
  <owl:Class rdf:ID="ProofElement">
    <rdfs:subClassOf rdf:resource="#ModelElement"/>
  </owl:Class>

  
<!-- *********** -->
  
  <owl:Class rdf:ID="Query">
    <rdfs:subClassOf rdf:resource="#ProofElement"/>

	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasLanguage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>


    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#queryContent"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#isFromEngine"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>


  <owl:ObjectProperty rdf:ID="isQueryFor">
    <rdfs:domain rdf:resource="#Query"/>
    <rdfs:range rdf:resource="#Question"/>
 	<rdfs:label>question</rdfs:label>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="queryContent">
    <rdfs:domain rdf:resource="#Query"/>
    <rdfs:range rdf:resource="&xsd;string"/>
 	<rdfs:label>content</rdfs:label>
  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:ID="isFromEngine">
    <rdfs:domain rdf:resource="#Query"/>
    <rdfs:range rdf:resource="#InferenceEngine"/>
 	<rdfs:label>inference engine</rdfs:label>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasAnswer">
    <rdfs:domain rdf:resource="#Query"/>
    <rdfs:range rdf:resource="#NodeSet"/>
 	<rdfs:label>answer</rdfs:label>
  </owl:ObjectProperty>
  
  
<!-- *********** -->

  <owl:Class rdf:ID="NodeSet">
    <rdfs:subClassOf rdf:resource="#ProofElement"/>

	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasLanguage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#isExplanationOf"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasConclusion"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>


    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFormat"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasEnglishString"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    
    <owl:disjoinWith rdf:resource="#Query" />
  </owl:Class>

  <owl:ObjectProperty rdf:ID="isConsequentOf">
    <rdfs:domain rdf:resource="#NodeSet"/>
    <rdfs:range rdf:resource="#InferenceStep"/>
	<owl:inverseOf>
		<owl:ObjectProperty rdf:ID="consequent">
			<rdfs:label>consequent</rdfs:label>
		</owl:ObjectProperty>
	</owl:inverseOf>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="isExplanationOf">
    <rdfs:domain rdf:resource="#NodeSet"/>
    <rdfs:range rdf:resource="#NodeSet"/>
	<owl:inverseOf>
		<owl:ObjectProperty rdf:ID="explanation">
			<rdfs:label>explanation</rdfs:label>
		</owl:ObjectProperty>
	</owl:inverseOf>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="hasConclusion">
    <rdfs:domain rdf:resource="#NodeSet"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>conclusion</rdfs:label>
  </owl:DatatypeProperty>
  <owl:ObjectProperty rdf:ID="hasFormat">
    <rdfs:domain rdf:resource="#NodeSet"/>
    <rdfs:range rdf:resource="#Format"/>
	<rdfs:label>format</rdfs:label>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="hasEnglishString">
    <rdfs:domain rdf:resource="#NodeSet"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>english string</rdfs:label>
  </owl:DatatypeProperty>
  
  
<!-- *********** -->
  <owl:Class rdf:ID="Question">
    <rdfs:subClassOf rdf:resource="#ProofElement"/>

	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasAnswerPattern"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#questionContent"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:DatatypeProperty rdf:ID="hasAnswerPattern">
    <rdfs:domain rdf:resource="#Question"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>answer pattern</rdfs:label>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:ID="questionContent">
    <rdfs:domain rdf:resource="#Question"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>content</rdfs:label>
  </owl:DatatypeProperty>


<!-- Top level class:  Mapping-->
  
  <owl:Class rdf:ID="Mapping">
    
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#mapFrom"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#mapTo"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>  
  
  <owl:DatatypeProperty rdf:ID="mapFrom">
    <rdfs:domain rdf:resource="#Mapping"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="mapTo">
    <rdfs:domain rdf:resource="#Mapping"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  
  
<!-- Top level class:  PrettyNameMapping-->
  
  <owl:Class rdf:ID="PrettyNameMapping">
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasReplacee"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasShortPrettyName"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>  
  
  <owl:DatatypeProperty rdf:ID="hasReplacee">
    <rdfs:domain rdf:resource="#PrettyNameMapping"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>replacee</rdfs:label>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:ID="hasPrettyName">
    <rdfs:domain rdf:resource="#PrettyNameMapping"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>pretty name</rdfs:label>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="hasShortPrettyName">
    <rdfs:subPropertyOf rdf:resource="#hasPrettyName"/>
	<rdfs:label>short pretty name</rdfs:label>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="hasLongPrettyName">
    <rdfs:subPropertyOf rdf:resource="#hasPrettyName"/>
	<rdfs:label>long pretty name</rdfs:label>
  </owl:DatatypeProperty>



<!-- Top level class:  InferenceStep -->
  
  <owl:Class rdf:ID="InferenceStep">
  
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasRule"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasIndex"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasInferenceEngine"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#fromAnswerOrQuery"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSourceUsage"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:ObjectProperty rdf:ID="hasRule">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="#InferenceRule"/>
	<rdfs:label>inference rule</rdfs:label>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasInferenceEngine">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="#InferenceEngine"/>
	<rdfs:label>inference engine</rdfs:label>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="fromAnswerOrQuery">
    <rdfs:domain rdf:resource="#InferenceStep"/>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="fromQuery">
    <rdfs:subPropertyOf rdf:resource="#fromAnswerOrQuery"/>
    <rdfs:range rdf:resource="#Query"/>
	<rdfs:label>source query</rdfs:label>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="fromAnswer">
    <rdfs:subPropertyOf rdf:resource="#fromAnswerOrQuery"/>
    <rdfs:range rdf:resource="#NodeSet"/>
	<rdfs:label>source answer</rdfs:label>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="hasVariableMapping">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="#Mapping"/>
	<rdfs:label>variable mapping</rdfs:label>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="hasMetaBinding">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="#Mapping"/>
	<rdfs:label>meta binding</rdfs:label>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasAntecedent">
    <rdfs:domain rdf:resource="#InferenceStep"/>
	<rdfs:label>antecedent</rdfs:label>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasSourceUsage">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="#SourceUsage"/>
	<rdfs:label>source usage</rdfs:label>
  </owl:ObjectProperty>

  <owl:DatatypeProperty rdf:ID="hasDischarge">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="&xsd;string"/>
	<rdfs:label>discharge</rdfs:label>
  </owl:DatatypeProperty>

  <owl:ObjectProperty rdf:ID="hasPrettyNameMapping">
    <rdfs:domain rdf:resource="#InferenceStep"/>
    <rdfs:range rdf:resource="#PrettyNameMapping"/>
	<rdfs:label>pretty name mapping</rdfs:label>
  </owl:ObjectProperty>

<!-- Top level class:  SourceUsage-->

  <owl:Class rdf:ID="SourceUsage">
	
	
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#usageTime"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
	  <owl:Restriction>
        <owl:onProperty rdf:resource="#spanToByte"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#spanFromByte"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#usageQuery"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSource"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>  
  
  <owl:DatatypeProperty rdf:ID="usageTime">
    <rdfs:domain rdf:resource="#SourceUsage"/>
    <rdfs:range rdf:resource="&xsd;dateTime"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="spanFromByte">
    <rdfs:domain rdf:resource="#SourceUsage"/>
    <rdfs:range rdf:resource="&xsd;int"/>
  </owl:DatatypeProperty>  
  <owl:DatatypeProperty rdf:ID="spanToByte">
    <rdfs:domain rdf:resource="#SourceUsage"/>
    <rdfs:range rdf:resource="&xsd;int"/>
  </owl:DatatypeProperty>
  <owl:DatatypeProperty rdf:ID="usageQuery">
    <rdfs:domain rdf:resource="#SourceUsage"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>
	<owl:ObjectProperty rdf:ID = "hasProvenanceElement">
	  <rdfs:domain rdf:resource="#SourceUsage"/>
    <rdfs:range rdf:resource="#ProvenanceElement"/>
	<rdfs:label>source</rdfs:label>
  </owl:ObjectProperty>

<!-- Class:  LearnedSourceUsage-->

	<owl:Class rdf:ID="LearnedSourceUsage">
  	<rdfs:subClassOf rdf:resource="#SourceUsage" />
  	
  	<rdfs:subClassOf>
    	<owl:Restriction>
      	<owl:onProperty rdf:resource="#dataCollectionStart" />
      	<owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
    	</owl:Restriction>
  	</rdfs:subClassOf>
  	<rdfs:subClassOf>
    	<owl:Restriction>
      	<owl:onProperty rdf:resource="#dataCollectionEnd" />
      	<owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
    	</owl:Restriction>
  	</rdfs:subClassOf>
  	<rdfs:subClassOf>
    	<owl:Restriction>
      	<owl:onProperty rdf:resource="#hasOriginalContent" />
      	<owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
    	</owl:Restriction>
  	</rdfs:subClassOf>
	</owl:Class>

	<owl:DatatypeProperty rdf:ID="dataCollectionStart">
		<rdfs:domain rdf:resource="#LearnedSourceUsage" />
		<rdfs:range rdf:resource="&xsd;dateTime"/>
	</owl:DatatypeProperty>
	<owl:DatatypeProperty rdf:ID="dataCollectionEnd">
		<rdfs:domain rdf:resource="#LearnedSourceUsage" />
		<rdfs:range rdf:resource="&xsd;dateTime"/>
	</owl:DatatypeProperty>
	<owl:ObjectProperty rdf:ID="hasOriginalContent">
		<rdfs:domain rdf:resource="#LearnedSourceUsage" />
		<rdfs:range rdf:resource="#NodeSet" />
		<rdfs:label>original content</rdfs:label>
	</owl:ObjectProperty>

  
<!-- Top level class:  TrustRelation-->

  <owl:Class rdf:ID="TrustRelation">
		
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasTrustingParty"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasTrustedParty"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasTrustValue"/>
        <owl:cardinality rdf:datatype="&xsd;int">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasStartTime"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasEndTime"/>
        <owl:maxCardinality rdf:datatype="&xsd;int">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>  
  
  <owl:ObjectProperty rdf:ID="hasTrustingParty">
    <rdfs:domain rdf:resource="#TrustRelation"/>
    <rdfs:range rdf:resource="#Source"/>
	<rdfs:label>trusting party</rdfs:label>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasTrustedParty">
    <rdfs:domain rdf:resource="#TrustRelation"/>
	<rdfs:label>trusted party</rdfs:label>
  </owl:ObjectProperty>  
  
  <owl:DatatypeProperty rdf:ID="hasStartTime">
    <rdfs:domain rdf:resource="#TrustRelation"/>
    <rdfs:range rdf:resource="&xsd;dateTime"/>
	<rdfs:label>start time</rdfs:label>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:ID="hasEndTime">
    <rdfs:domain rdf:resource="#TrustRelation"/>
    <rdfs:range rdf:resource="&xsd;dateTime"/>
	<rdfs:label>end time</rdfs:label>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:ID="hasTrustValue">
    <rdfs:domain rdf:resource="#TrustRelation"/>
    <rdfs:range rdf:resource="&xsd;float"/>
	<rdfs:label>trust value</rdfs:label>
  </owl:DatatypeProperty>

  <owl:Class rdf:ID="AggregatedTrustRelation">
    <rdfs:subClassOf rdf:resource="#TrustRelation"/>
    
    <rdfs:subClassOf>
      <owl:Restriction>
       <owl:onProperty rdf:resource="#hasTrustingParty" />
       <owl:allValuesFrom rdf:resource="#Organization"/>
      </owl:Restriction>
    </rdfs:subClassOf>

  </owl:Class>  
  
  <owl:ObjectProperty rdf:ID="hasTopic">
    <rdfs:domain rdf:resource="#AggregatedTrustRelation"/>
	<rdfs:label>topic</rdfs:label>
  </owl:ObjectProperty>
    
</rdf:RDF>