<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rdf:RDF [
 <!ENTITY snarm 'http://rdf.myexperiment.org/ontologies/snarm/'>
 <!ENTITY rdf  'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
 <!ENTITY owl 'http://www.w3.org/2002/07/owl#'>
 <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
 <!ENTITY dc 'http://purl.org/dc/elements/1.1/'>
 <!ENTITY dcterms 'http://purl.org/dc/terms/'>
]>

<rdf:RDF xml:base       ="&snarm;"
         xmlns          ="&snarm;"
         xmlns:rdf      ="&rdf;"
         xmlns:rdfs     ="&rdfs;"
         xmlns:owl      ="&owl;"
	 xmlns:dc	="&dc;"
         xmlns:dcterms  ="&dcterms;"
         xmlns:xsd      ="&xsd;"
>

  <!-- =============== Description ==================== -->
  
  <owl:Ontology rdf:about="&snarm;">
    <owl:versionInfo></owl:versionInfo>
    <rdfs:label>SNARM Ontology v1.1</rdfs:label>
    <rdfs:comment> This ontology is designed for representing access rights within a simple network of associated users/groups.</rdfs:comment>
    <dc:language>en</dc:language>
    <dc:title xml:lang="en">Simple Network Access Rights Management (SNARM) Ontology</dc:title>
    <dc:creator rdf:resource="http://rdf.ecs.soton.ac.uk/person/9421"/>
    <dc:contributor rdf:datatype="http://www.w3.org/2001/XMLSchema#string">David R Newman</dc:contributor>
    <dc:publisher rdf:resource="http://rdf.myexperiment.org"/>
    <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#string">January 28, 2009</dc:date>
    <dc:format rdf:datatype="http://www.w3.org/2001/XMLSchema#string">rdf/xml</dc:format>
  </owl:Ontology>

  <!-- ============= Annotation Properties =========== -->

  <rdf:Description rdf:about="&dc;language">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&dc;title">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&dc;creator">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&dc;contributor">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&dc;publisher">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&dc;date">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&dc;format">
    <rdf:type rdf:resource="&owl;AnnotationProperty"/>
  </rdf:Description>

  <!-- ========= OWL-DL Compliance statements ======== -->  
  
  <rdf:Description rdf:about="&dcterms;RightsStatement">
    <rdf:type rdf:resource="&owl;Class"/>
  </rdf:Description>


  <!-- ================== CLASSES ==================== -->

  <owl:Class rdf:about="Access">
    <rdfs:label>Access</rdfs:label>
    <rdfs:comment>The Unrestricted Access to an AccessType</rdfs:comment>
    <owl:disjointWith rdf:resource="Accesser"/>
    <owl:disjointWith rdf:resource="AccessType"/>
    <owl:disjointWith rdf:resource="Policy"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="has-access-type" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:Class>

  <owl:Class rdf:about="Accesser">
    <rdfs:label>Accesser</rdfs:label>
    <rdfs:comment>The Accesser that is getting access</rdfs:comment>
    <owl:disjointWith rdf:resource="Access"/>
    <owl:disjointWith rdf:resource="AccessType"/>
    <owl:disjointWith rdf:resource="Policy"/>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:Class>
 
  <owl:Class rdf:about="AccessType">
    <rdfs:label>AccessType</rdfs:label>
    <rdfs:comment>The AccessType that is being giving, e.g. view, edit, download, etc.</rdfs:comment>
    <owl:disjointWith rdf:resource="Access"/>
    <owl:disjointWith rdf:resource="Accesser"/>
    <owl:disjointWith rdf:resource="Policy"/>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:Class>

  <owl:Class rdf:about="Policy">
    <rdfs:label>Policy</rdfs:label>
    <rdfs:comment>A Policy for the access rights to an object for users in the social network</rdfs:comment>
    <owl:disjointWith rdf:resource="Access"/>
    <owl:disjointWith rdf:resource="Accesser"/>
    <owl:disjointWith rdf:resource="AccessType"/>
    <rdfs:subClassOf rdf:resource="&dcterms;RightsStatement"/>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:Class>

  <owl:Class rdf:about="RestrictedAccess">
    <rdfs:label>Access</rdfs:label>
    <rdfs:comment>The restricted Access to an AccessType</rdfs:comment>
    <rdfs:subClassOf rdf:resource="Access"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="has-accesser" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:Class>


<!-- ============= Object Properties ============== -->
  <owl:ObjectProperty rdf:about="has-access">
    <rdfs:label>has-access</rdfs:label>
    <rdfs:comment>An Access that a Policy provides</rdfs:comment>
    <rdfs:domain rdf:resource="Policy"/>
    <rdfs:range rdf:resource="Access"/>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:about="has-accesser">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>has-accesser</rdfs:label>
    <rdfs:comment>An Accesser that a Mode provides access to</rdfs:comment>
    <rdfs:domain rdf:resource="Access"/>
    <rdfs:range rdf:resource="Accesser"/>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:ObjectProperty>

   <owl:ObjectProperty rdf:about="has-access-type">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>has-access-type</rdfs:label>
    <rdfs:comment>The AccessType an Access provides</rdfs:comment>
    <rdfs:range rdf:resource="AccessType"/>
    <rdfs:isDefinedBy rdf:resource="&snarm;"/>
  </owl:ObjectProperty>

</rdf:RDF>


