<?xml version='1.0' encoding='ISO-8859-1'?>
<!-- $Id: elements-ont.daml,v 1.26 2002/12/03 21:25:46 drager Exp $ -->

<!DOCTYPE uridef[
  <!ENTITY rdf  "http://www.w3.org/1999/02/22-rdf-syntax-ns">
  <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema">
  <!ENTITY daml "http://www.daml.org/2001/03/daml+oil">
  <!ENTITY xsd  "http://www.w3.org/2000/10/XMLSchema">
  <!ENTITY this "http://www.daml.org/experiment/ontology/beta/elements-ont">
  <!ENTITY soci "http://www.daml.org/experiment/ontology/beta/social-elements-ont">
  <!ENTITY poli "http://www.daml.org/experiment/ontology/beta/political-elements-ont">
  <!ENTITY econ "http://www.daml.org/experiment/ontology/beta/economic-elements-ont">
  <!ENTITY infr "http://www.daml.org/experiment/ontology/beta/infrastructure-elements-ont">
  <!ENTITY info "http://www.daml.org/experiment/ontology/beta/information-elements-ont">
  <!ENTITY mil  "http://www.daml.org/experiment/ontology/beta/military-elements-ont">
  <!ENTITY dt   "http://www.daml.org/experiment/ontology/beta/ona.xsd">
  <!ENTITY fips "http://www.daml.org/2001/09/countries/fips-10-4-ont">
  <!ENTITY loc  "http://www.daml.org/experiment/ontology/beta/location-ont">
  <!ENTITY img  "http://ubot.lockheedmartin.com/ubot/2002/08/satellite-image-ont.daml">
]>

  
<rdf:RDF
  xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:xsd ="http://www.w3.org/2000/10/XMLSchema#"
  xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
  xmlns:ves="http://orlando.drc.com/daml/ontology/VES/3.2/drc-ves-ont#"
  xmlns = "http://www.daml.org/experiment/ontology/beta/elements-ont#"
>
  

<daml:Ontology rdf:about="">
  <rdfs:label>Elements of National Power Upper Ontology</rdfs:label>
  <!-- Base ontology for the DAML Demonstration and Experiment Plan, Version 0.5 -->
  <daml:versionInfo>$Id: elements-ont.daml,v 1.26 2002/12/03 21:25:46 drager Exp $</daml:versionInfo>
  <daml:imports rdf:resource="&daml;"/>
  <daml:imports rdf:resource="&soci;"/>
  <daml:imports rdf:resource="&poli;"/>
  <daml:imports rdf:resource="&econ;"/>
  <daml:imports rdf:resource="&infr;"/>
  <daml:imports rdf:resource="&info;"/>
  <daml:imports rdf:resource="&mil;"/>
  <ves:title>DAML Demonstration and Experiment Plan Base Ontology</ves:title>
  <ves:creator>BBN</ves:creator>
  <ves:contributor>David Rager</ves:contributor>
  <ves:location>&this;</ves:location>
  <ves:version>$Revision: 1.26 $</ves:version>
  <ves:email>drager@bbn.com</ves:email>
  <ves:status>inwork</ves:status>
  <ves:statusDate>$Date: 2002/12/03 21:25:46 $</ves:statusDate>
</daml:Ontology>

<!-- ElementOfNationalPower - the main Class -->

<daml:Class rdf:ID="ElementOfNationalPower">
  <rdfs:label>ElementOfNationalPower</rdfs:label>
  <rdfs:comment>
    Element of National Power is the top level class for describing
    all the possible enemy elements of national power. 
  </rdfs:comment>

<!-- label is a human readable name of the element -->
  <daml:subClassOf>
    <daml:Restriction>
      <daml:onProperty rdf:resource="&rdfs;#label"/>
      <daml:toClass rdf:resource="&xsd;#string"/>
    </daml:Restriction>
  </daml:subClassOf>

<!-- location indicates the location of an element -->
  <daml:subClassOf>
    <daml:Restriction>
       <daml:onProperty rdf:resource="#location"/>
       <daml:toClass rdf:resource="&loc;#Location"/>
    </daml:Restriction>
  </daml:subClassOf>

<!-- The country the element is located in -->
  <daml:subClassOf>
    <daml:Restriction>
      <daml:onProperty rdf:resource="#country"/>
      <daml:toClass rdf:resource="&fips;#Country"/>
    </daml:Restriction>
  </daml:subClassOf>

<!-- The Status of the element -->
  <daml:subClassOf>
    <daml:Restriction>
      <daml:onProperty rdf:resource="#status"/>
      <daml:toClass rdf:resource="#Status"/>
    </daml:Restriction>
  </daml:subClassOf>

  <daml:subClassOf>
    <daml:Restriction>
      <rdfs:comment>a change in Status (e.g. destruction) of one ENP can have a (positive or negative) affect on another</rdfs:comment>
      <daml:onProperty rdf:resource="#hasEffect"/>
      <daml:toClass rdf:resource="#Effect"/>
    </daml:Restriction>
  </daml:subClassOf>
  
  <daml:subClassOf>
    <daml:Restriction>
      <rdfs:comment>An image associated with an enp</rdfs:comment>
      <daml:onProperty rdf:resource="#image"/>
      <daml:toClass rdf:resource="&img;#SpaceImage"/>
    </daml:Restriction>
  </daml:subClassOf>
  
</daml:Class>


<!-- Basic properties for all Elements of National Power -->


<!-- location indicates the location of an element -->
<daml:ObjectProperty rdf:ID="location">
  <rdfs:label>location</rdfs:label>
</daml:ObjectProperty>

<!-- One such location can be the country of the element -->
<daml:ObjectProperty rdf:ID="country">
  <rdfs:label>country</rdfs:label>
  <daml:subPropertyOf rdf:resource="#location"/>
</daml:ObjectProperty>

<!-- The Status of the element -->
<daml:ObjectProperty rdf:ID="status">
  <rdfs:label>status</rdfs:label>
</daml:ObjectProperty>

<daml:ObjectProperty rdf:ID="hasEffect">
  <rdfs:label>hasEffect</rdfs:label>
</daml:ObjectProperty>

<!-- imagery for an element -->
<daml:ObjectProperty rdf:ID="image">
  <rdfs:label>image</rdfs:label>
</daml:ObjectProperty>


<daml:Class rdf:ID="NotionalCountry">
  <rdfs:label>Notional Country</rdfs:label>
  <rdfs:comment>
    A Notional Country is a subClass of Country.  It provides the
ability to create a copy of a country and its elements of national
power.  A notional country refers back to it's original country.
  </rdfs:comment>
  <daml:subClassOf rdf:resource="&fips;#Country"/>
  <daml:subClassOf>
    <daml:Restriction>
      <daml:onProperty rdf:resource="#derivedFrom"/>
      <daml:toClass rdf:resource="&fips;#Country"/>
    </daml:Restriction>
  </daml:subClassOf>
</daml:Class>

<daml:ObjectProperty rdf:ID="derivedFrom">
  <rdfs:label>derivedFrom</rdfs:label>
  <rdfs:comment>
    A notional country is derived from a country.
  </rdfs:comment>
</daml:ObjectProperty>


<!-- This provides the properties used to define the effect
  of removing one ENP would have on another ENP. -->

<daml:ObjectProperty rdf:ID="affects">
  <rdfs:label>affects</rdfs:label>
</daml:ObjectProperty>

<daml:ObjectProperty rdf:ID="dependsUpon">
  <rdfs:label>dependsUpon</rdfs:label>
  <rdfs:comment>dependsUpon is conceptually an inverse subproperty of affects:  if factoryA dependsUpon powerPlantB, then powerPlantB affects factoryA, but dependsUpon is only one type of effect.  The need to introduce Effect to model the n-ary affects relation makes this awkward and perhaps unusable.</rdfs:comment>
  <daml:subPropertyOf>
    <daml:ObjectProperty>
      <daml:inverseOf rdf:resource="#affects"/>
    </daml:ObjectProperty>
  </daml:subPropertyOf>
</daml:ObjectProperty>

<daml:Class rdf:ID="Effect">
  <rdfs:label>Effect</rdfs:label>
  <rdfs:comment>this class exists to model the n-ary affects relationship</rdfs:comment>
  <daml:subClassOf>
    <daml:Restriction>
      <daml:onProperty rdf:resource="#effectValue"/>
      <daml:toClass rdf:resource="&xsd;#integer"/> <!-- XXX: prefer daml:oneOf -->
    </daml:Restriction>
  </daml:subClassOf>
  <daml:subClassOf>
    <daml:Restriction>
      <daml:onProperty rdf:resource="#affects"/>
      <daml:toClass rdf:resource="#ElementOfNationalPower"/>
    </daml:Restriction>
  </daml:subClassOf>
</daml:Class>

<rdf:Property rdf:ID="effectValue">
  <rdfs:label>effectValue</rdfs:label>
  <rdfs:comment>
    The domain of this property is a statement with the property effects.
  </rdfs:comment>
  <rdfs:range rdf:resource="&xsd;#integer"/>
</rdf:Property>

<daml:Class rdf:ID="DirectEffect">
  <rdfs:label>Direct Effect</rdfs:label>
  <rdfs:comment>explicitly entered effect</rdfs:comment>
  <daml:subClassOf rdf:resource="#Effect"/>
</daml:Class>
  
<daml:Class rdf:ID="IndirectEffect">
  <rdfs:label>Indirect Effect</rdfs:label>
  <rdfs:comment>created by computing transitive closure of DirectEffects</rdfs:comment>
  <daml:subClassOf rdf:resource="#Effect"/>
</daml:Class>
  


<daml:Class rdf:ID="Status">
  <rdfs:label>Status</rdfs:label>
  <rdfs:comment>The operational status of an ENP is one of three values</rdfs:comment>
<!-- This will be a oneOf Class, but for now our API doens't handle daml:collection -->
</daml:Class>

<Status rdf:ID="operational">
  <rdfs:label>operational</rdfs:label>
</Status>
<Status rdf:ID="degraded">
  <rdfs:label>degraded</rdfs:label>
</Status>
<Status rdf:ID="non-operational">
  <rdfs:label>non-operational</rdfs:label>
</Status>



</rdf:RDF>

