<?xml version='1.0' encoding='ISO-8859-1'?>


<!-- Entity declarations (shortcuts) -->
<!DOCTYPE rdf:RDF [
    <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
    <!ENTITY rdfs 'http://www.w3.org/TR/WD-rdf-schema#'>
    <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
    <!ENTITY daml 'http://www.daml.org/2001/03/daml+oil#'>
]>


<!-- Setting up DAML Namespaces -->
<rdf:RDF 
    xmlns:rdf="&rdf;"
    xmlns:rdfs="&rdfs;"
    xmlns:daml="&daml;"
    xmlns:xsd="&xsd;">
    
    <!-- Information about the Ontology being created -->
    <daml:Ontology rdf:about="">
        <daml:versionInfo>
            $Id: daml+oil-ex.daml,v 1.4 2001/01/11 20:33:52 mdean Exp $
        </daml:versionInfo>
        <rdfs:comment>
            An ontology created by OntoEdit
        </rdfs:comment>
        <!-- Importing an ontology -->
        <daml:imports rdf:resource="http://www.daml.org/2000/12/daml+oil"/>
    </daml:Ontology>

    
    <!-- DAML uses rdf Classes -->
    <rdfs:Class rdf:ID="Staff">
        <!-- Example of local range statements through a restriction on 'toClass' -->
        <rdfs:subClassOf>
           <!-- Minimum 1 Email required (minCardinality) -->
            <daml:Restriction daml:minCardinalityQ="1">
                <daml:onProperty rdf:resource="#EMail"/>
                <daml:toClass rdf:resource="&xsd;String"/>
            </daml:Restriction>
        </rdfs:subClassOf>

        <!-- Restricting the cardinality of the property (locally) -->
        <rdfs:subClassOf>
            <daml:Restriction daml:cardinality="1">
                <daml:onProperty rdf:resource="#FName"/>
            </daml:Restriction>
        </rdfs:subClassOf>
    </rdfs:Class>
    

    <rdfs:Class rdf:ID="Admin">
        <!-- using RDFSchema subClassOf -->
        <rdfs:subClassOf rdf:resource="#Staff"/>
    </rdfs:Class>


    <rdfs:Class rdf:ID="Coordinator">
        <rdfs:subClassOf rdf:resource="#Admin"/>
    </rdfs:Class>
    
    <rdfs:Class rdf:ID="ProjAssistant">
        <rdfs:subClassOf rdf:resource="#Admin"/>
    </rdfs:Class>
    
    <rdfs:Class rdf:ID="Researcher">
        <rdfs:subClassOf rdf:resource="#Staff"/>
    </rdfs:Class>
    
    <rdfs:Class rdf:ID="GRA">
        <rdfs:subClassOf rdf:resource="#Researcher"/>
           <rdfs:subClassOf>
           <!-- Maximum of 5 papers (just for example) -->
            <daml:Restriction daml:maxCardinality="5">
                <daml:onProperty rdf:resource="#Paper"/>
              </daml:Restriction>
           </rdfs:subClassOf>
    </rdfs:Class>
      
    <rdfs:Class rdf:ID="ProjLeader">
        <rdfs:subClassOf rdf:resource="#ISIResearchStaff"/>
    </rdfs:Class>
    
    <rdfs:Class rdf:ID="SRSci">
        <rdfs:subClassOf rdf:resource="#ISIResearchStaff"/>
    </rdfs:Class>
    
    <rdfs:Class rdf:ID="Intern">
        <rdfs:subClassOf rdf:resource="#Researcher"/>
    </rdfs:Class>
    
    
    <!-- Datatype Properties (relating an object to a primitive datatype) -->
    <daml:DatatypeProperty rdf:ID="StartDate">
       <rdfs:domain rdf:resource="#Intern" />
       <!-- global restriction on the range of a property-->
       <rdfs:range rdf:resource="&xsd;date"/>
    </daml:DatatypeProperty>
    <daml:DatatypeProperty rdf:ID="EndDate">
       <rdfs:domain rdf:resource="#Intern" />
       <!-- global restriction on the range of a property-->
       <rdfs:range rdf:resource="&xsd;date"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="FName"/>
       <!-- global restriction on cardinality (only 1 - UniqueProperty) -->
       <rdf:type rdf:resource="http://www.daml.org/2001/03/daml+oil#UniqueProperty"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="NumProjPrincipal">
       <!-- global restriction on the domain of a property-->
       <rdfs:domain rdf:resource="#ISIResearchStaff" />
       <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="OfficeNo"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="MiddleInitial">
        <rdfs:comment xml:lang="en">
            Middle Initial
        </rdfs:comment>
    </daml:DatatypProperty>

    <daml:DatatypeProperty rdf:ID="Major"/>
       <rdfs:domain rdf:resource="#GRA" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <!-- Object Property (relating one object to another object) -->
    <rdf:ObjectProperty rdf:ID="Project"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="#Project"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="Group"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="College"/>
       <rdfs:domain rdf:resource="#Intern" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="DegreeObjective"/>
       <rdfs:domain rdf:resource="#GRA" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="EMail"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="LName"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="AdminGroup"/>
       <rdfs:domain rdf:resource="#Admin" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="TelNo"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="HomePage"/>
       <rdfs:domain rdf:resource="#Staff" />
       <rdfs:range rdf:resource="&xsd;anyURI"/>
    </daml:DatatypeProperty>
    
    <daml:DatatypeProperty rdf:ID="Paper"/>
       <rdfs:domain rdf:resource="#Researcher" />
       <rdfs:range rdf:resource="&rdfs;Literal"/>
    </daml:DatatypeProperty>
    
    <rdfs:Class rdf:ID="Project" />
 <!-- Some example classes (not linked with the Staff ontology) -->
   <daml:Class rdf:ID="Car">
      <rdfs:comment>no car is a person</rdfs:comment>
      <rdfs:subClassOf>
         <daml:Class>
        <!-- Negation using complementOf -->
           <daml:complementOf rdf:resource="#Person"/>
         </daml:Class>
      </rdfs:subClassOf>
  </daml:Class>
 <!-- An example of a transitive property-->
  <daml:TransitiveProperty rdf:ID="hasAncestor">
      <rdfs:label>hasAncestor</rdfs:label>
  </daml:TransitiveProperty>
<!-- An example of a union (here a disjointUnion)-->
  <daml:Class rdf:about="#Personnel">
      <daml:disjointUnionOf rdf:parseType="daml:collection">
         <daml:Class rdf:about="#Admin"/>
         <daml:Class rdf:about="#Researcher"/>
      </daml:disjointUnionOf>
  </daml:Class>


  <daml:Class rdf:ID="HumanBeing">
    <daml:sameClassAs rdf:resource="#Person"/>
  </daml:Class>

   
</rdf:RDF>