<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
  <!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#" >
  <!ENTITY owl  "http://www.w3.org/2002/07/owl#" >
  <!ENTITY rdf  "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
  <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
  <!ENTITY dc   "http://purl.org/dc/elements/1.1/" >
  <!ENTITY foaf "http://xmlns.com/foaf/0.1/" >
  <!ENTITY proj "http://www.mindswap.org/2003/owl/project#" >
]>

<rdf:RDF
    xml:base="&proj;" 
    xmlns:rdf="&rdf;"
    xmlns:rdfs="&rdfs;"
    xmlns:owl="&owl;"
    xmlns:dc="&dc;"
    xmlns:foaf="&foaf;"
    xmlns:proj="&proj;"
    xmlns="&proj;"
>

<owl:Ontology rdf:about="" rdfs:label="Project Ontology">
  <owl:imports>
    <owl:Ontology rdf:about="http://www.mindswap.org/2003/owl/foaf"/>
  </owl:imports>
</owl:Ontology>


<!-- Project Heirarchy -->
<owl:Class rdf:ID="Project" rdfs:label="Project">
  <rdfs:subClassOf rdf:resource="&foaf;Project"/>
</owl:Class>

<owl:Class rdf:ID="ArchivedProject" rdfs:label="Archived Project">
  <rdfs:subClassOf rdf:resource="#Project"/>
</owl:Class>

<owl:Class rdf:ID="ActiveProject" rdfs:label="Active Project">
  <rdfs:subClassOf rdf:resource="#Project"/>
  <owl:disjointWith rdf:resource="#ArchivedProject"/>
</owl:Class>

<!-- Inititiatives -->
<owl:Class rdf:ID="Initiative" rdfs:label="Initiative">
  <rdfs:subClassOf rdf:resource="#Project"/>
</owl:Class>

<owl:Class rdf:ID="ActiveInitiative" rdfs:label="Active Initiative">
  <rdfs:subClassOf rdf:resource="#Initiative"/>
  <rdfs:subClassOf rdf:resource="#ActiveProject"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Initiative"/>
    <owl:Class rdf:about="#ActiveProject"/>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="ArchivedInitiative" rdfs:label="Archived Initiative">
  <rdfs:subClassOf rdf:resource="#Initiative"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Initiative"/>
    <owl:Class rdf:about="#ArchivedProject"/>
  </owl:intersectionOf>
</owl:Class>

<!-- Software -->
<owl:Class rdf:ID="Software" rdfs:label="Software Project">
  <rdfs:subClassOf rdf:resource="#Project"/>
</owl:Class>

<owl:Class rdf:ID="ActiveSoftware" rdfs:label="Active Software Project">
  <rdfs:subClassOf rdf:resource="#Software"/>
  <rdfs:subClassOf rdf:resource="#ActiveProject"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Software"/>
    <owl:Class rdf:about="#ActiveProject"/>
  </owl:intersectionOf>
</owl:Class>

<owl:Class rdf:ID="ArchivedSoftware" rdfs:label="Archived Software Project">
  <rdfs:subClassOf rdf:resource="#Software"/>
  <owl:intersectionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Software"/>
    <owl:Class rdf:about="#ArchivedProject"/>
  </owl:intersectionOf>
</owl:Class>

<!-- Demos -->
<owl:Class rdf:ID="Demo" rdfs:label="Project Demo" />

<owl:Class rdf:ID="WebstartDemo" rdfs:label="Webstart Demo">
  <rdfs:subClassOf rdf:resource="#Demo"/>
</owl:Class>

<!-- Software Versions -->
<owl:Class rdf:ID="SoftwareVersion" rdfs:label="Software Version"/>
<owl:Class rdf:ID="SoftwareStatus" rdfs:label="Software Status"/>

<!-- Team Members -->
<owl:Class rdf:ID="Member" rdfs:label="Project Member">
  <rdfs:subClassOf rdf:resource="&foaf;Person"/>
</owl:Class>

<owl:Class rdf:ID="Leader" rdfs:label="Project Leader">
  <rdfs:subClassOf rdf:resource="#Member"/>
</owl:Class>

<owl:Class rdf:ID="Programmer" rdfs:label="Project Programmer">
  <rdfs:subClassOf rdf:resource="#Member"/>
</owl:Class>

<!-- Project Properties -->
<owl:ObjectProperty rdf:ID="member" rdfs:label="project member">
  <!--<rdfs:subPropertyOf rdf:resource="&foaf;member"/>-->
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="#Member"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="leader" rdfs:label="project leader">
  <rdfs:subPropertyOf rdf:resource="#member"/>
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="#Leader"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="hasOntology" rdfs:label="associated ontology">
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="&foaf;Document"/>
</owl:ObjectProperty>

<!--
<owl:InverseFunctionalProperty rdf:ID="homepage" 
			       rdfs:label="project homepage">
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="&foaf;Document"/>
</owl:InverseFunctionalProperty>
-->

<owl:ObjectProperty rdf:ID="hasPaper" rdfs:label="associated paper">
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="&foaf;Document"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="demoPage" rdfs:label="associated demo">
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="&foaf;Document"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="downloadPage" rdfs:label="software downloads">
  <rdfs:domain rdf:resource="#Software"/>
  <rdfs:range  rdf:resource="&foaf;Document"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="hasVersion" rdfs:label="software version">
  <rdfs:domain rdf:resource="#Software"/>
  <rdfs:range rdf:resource="#SoftwareVersion"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="subProject" rdfs:label="sub project">
  <rdf:type rdf:resource="&owl;TransitiveProperty"/>
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="#Project"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="subProjectOf" rdfs:label="sub project of">
  <rdf:type rdf:resource="&owl;TransitiveProperty"/>
  <owl:inverseOf rdf:resource="#subProject"/>
  <rdfs:domain rdf:resource="#Project"/>
  <rdfs:range rdf:resource="#Project"/>
</owl:ObjectProperty>


<!-- Version Properties -->
<owl:DatatypeProperty rdf:ID="versionString" rdfs:label="version string">
  <rdfs:domain rdf:resource="#SoftwareVersion"/>
</owl:DatatypeProperty>
<owl:ObjectProperty rdf:ID="status" rdfs:label="software status"/>


<!-- External properties -->
<owl:DatatypeProperty rdf:about="&dc;description" rdfs:label="description"/>
<owl:DatatypeProperty rdf:about="&dc;title" rdfs:label="title"/>
<owl:DatatypeProperty rdf:about="&dc;date" rdfs:label="date"/>


</rdf:RDF>
