<?xml version="1.0"?>
<?xml-stylesheet href="http://www.w3.org/2002/06/rdfs2html.xsl" type="application/xml"?>
<!DOCTYPE owl [
   <!ENTITY cobra "http://daml.umbc.edu/ontologies/cobra/0.4/">
   <!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 ctx   "http://daml.umbc.edu/ontologies/cobra/0.4/context#">
   <!ENTITY spc   "http://daml.umbc.edu/ontologies/cobra/0.4/space-basic#">
   <!ENTITY rcc   "http://daml.umbc.edu/ontologies/cobra/0.4/rcc-basic#">
   <!ENTITY dev   "http://daml.umbc.edu/ontologies/cobra/0.4/device#">
   <!ENTITY agt   "http://daml.umbc.edu/ontologies/cobra/0.4/agent#">
   <!ENTITY tme   "http://daml.umbc.edu/ontologies/cobra/0.4/time-basic#">
   <!ENTITY mto   "http://daml.umbc.edu/ontologies/cobra/0.4/meeting#">

   ]>    
<!--
    Author: Harry Chen (mailto:harry.chen@umbc.edu)
            http://umbc.edu/~hchen4/

    Copyright 2003 Harry Chen, All Rights Reserved.
 
    This work is licensed under the Creative Commons Attribution
    License. To view a copy of this license, visit 
    http://creativecommons.org/licenses/by/1.0/ or send a letter to
    Creative Commons, 559 Nathan Abbott Way, Stanford, California
    94305, USA.  
   
    CoBrA Web Site: 
      http://cobra.umbc.edu

    This version: 
      http://daml.umbc.edu/ontologies/cobra/0.4/context

    Lastest version:
      http://daml.umbc.edu/ontologies/cobra/

    CVS Version: $Revision: 1.1 $, $Date: 2003/10/29 05:43:34 $
-->
<rdf:RDF  
   xmlns:rdf   = "&rdf;"
   xmlns:rdfs  = "&rdfs;"
   xmlns:owl   = "&owl;"
   xmlns:xsd   = "&xsd;"
   xmlns:spc   = "&spc;"
   xmlns:rcc   = "&rcc;"
   xmlns:tme   = "&tme;"
   xmlns:agt   = "&agt;"
   xmlns:dev   = "&dev;"
   xmlns:mto   = "&mto;"
   xmlns       = "&ctx;"
   xml:base    = "http://daml.umbc.edu/ontologies/cobra/0.4/context">

  <owl:Ontology rdf:about="&cobra;context">
    <owl:versionInfo>0.4</owl:versionInfo>
    <rdfs:label>COBRA-ONT Context Ontology</rdfs:label>
    <owl:imports rdf:resource="&cobra;space-basic"/>
    <owl:imports rdf:resource="&cobra;rcc-basic"/>
    <owl:imports rdf:resource="&cobra;time-basic"/>
    <owl:imports rdf:resource="&cobra;agent"/>
    <owl:imports rdf:resource="&cobra;device"/>
    <owl:imports rdf:resource="&cobra;meeting"/>
    <rdfs:comment>
      This ontology defines concepts for describing different types
      contextual information associated with people, devices,
      meetings, and rooms. This ontology is not intended for modeling
      context. It is designed to support the ontology for broker
      communication (see broker-comm). 
    </rdfs:comment>
  </owl:Ontology>

  <owl:Class rdf:ID="ContextInfo">
    <rdfs:label>ContextInfo</rdfs:label>    
  </owl:Class>

  <owl:Class rdf:ID="LocationContext">
    <rdfs:label>LocationContext</rdfs:label>

    <rdfs:subClassOf rdf:resource="#ContextInfo"/>

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

  <owl:ObjectProperty rdf:ID="locationOf">
    <rdfs:label>locationOf</rdfs:label>
    <rdfs:domain rdf:resource="#LocationContext"/>
    <rdfs:range rdf:resource="&spc;SpatialThing"/>
  </owl:ObjectProperty> 

  <owl:ObjectProperty rdf:ID="duringTimeInterval">
    <rdfs:label>duringTimeInterval</rdfs:label>
    <rdfs:domain rdf:resource="#LocationContext"/>
    <rdfs:range rdf:resource="&tme;IntervalThing"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="atTimeInstant">
    <rdfs:label>atTimeInstant</rdfs:label>
    <rdfs:domain rdf:resource="#LocationContext"/>
    <rdfs:range rdf:resource="&tme;InstantThing"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="inRegion">
    <rdfs:label>inRegion</rdfs:label>
    <rdfs:domain rdf:resource="#LocationContext"/>
    <rdfs:range rdf:resource="&spc;SpatialThing"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="connectsWith">
    <rdfs:label>connectsWith</rdfs:label>
    <rdfs:domain rdf:resource="#LocationContext"/>
    <rdfs:range rdf:resource="&rcc;SpatialRegion"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="partOf">
    <rdfs:label>partOf</rdfs:label>
    <rdfs:domain rdf:resource="#LocationContext"/>
    <rdfs:range rdf:resource="&rcc;SpatialRegion"/>
  </owl:ObjectProperty>

  <!-- The role of a person in a meeting -->

  <owl:Class rdf:ID="RoleInMeeting">
    <rdfs:label>RoleInMeeting</rdfs:label>
    
    <rdfs:subClassOf rdf:resource="#ContextInfo"/>

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

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

  <owl:ObjectProperty rdf:ID="roleOf">
    <rdfs:label>roleOf</rdfs:label>
    <rdfs:domain rdf:resource="#RoleInMeeting"/>
    <rdfs:range rdf:resource="&agt;Person"/>
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="inMeeting">
    <rdfs:label>inMeeting</rdfs:label>
    <rdfs:domain rdf:resource="#RoleInMeeting"/>
    <rdfs:range rdf:resource="&mto;Meeting"/>
  </owl:ObjectProperty>
  
  

  <!-- The profile of a person -->

  <owl:Class rdf:ID="UserProfile">
    <rdfs:label>UserProfile</rdfs:label>
    
    <rdfs:subClassOf rdf:resource="#ContextInfo"/>
    
    <rdfs:subClassOf>
      <owl:Restriction>
	<owl:onProperty rdf:resource="#profileOf"/>
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">
	  1
	</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
	<owl:onProperty rdf:resource="#profileOf"/>
	<owl:allValuesFrom rdf:resource="&agt;Person"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="DeviceProfile">
    <rdfs:label>DeviceProfile</rdfs:label>
    
    <rdfs:subClassOf rdf:resource="#ContextInfo"/>
    
    <rdfs:subClassOf>
      <owl:Restriction>
	<owl:onProperty rdf:resource="#profileOf"/>
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">
	  1
	</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>

    <rdfs:subClassOf>
      <owl:Restriction>
	<owl:onProperty rdf:resource="#profileOf"/>
	<owl:allValuesFrom rdf:resource="&dev;Device"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:ObjectProperty rdf:ID="profileOf">
    <rdfs:label>profileOf</rdfs:label>
  </owl:ObjectProperty>

</rdf:RDF>
