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

<!DOCTYPE rdf:RDF [
 <!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 mebase 'http://rdf.myexperiment.org/ontologies/base/'>
 <!ENTITY mevd 'http://rdf.myexperiment.org/ontologies/viewings_downloads/'>
]>

<rdf:RDF xml:base		="&mevd;"
         xmlns			="&mevd;"
         xmlns:mebase		="&mebase;"
         xmlns:rdf	 	="&rdf;"
         xmlns:rdfs		="&rdfs;"
         xmlns:owl		="&owl;"
         xmlns:dc		="&dc;"
         xmlns:xsd		="&xsd;"
>
  <!-- =============== Description ==================== -->

  <owl:Ontology rdf:about="&mevd;">
    <rdfs:label>myExperiment Viewings &amp; Downloads v1.0</rdfs:label>
    <rdfs:comment>This allows statistics on the viewings and downloads of contributions to be recorded.</rdfs:comment>
    <dc:language>en</dc:language>
    <dc:title xml:lang="en">The myExperiment Viewings &amp; Downloads 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">May 6, 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="&mebase;Annotation">
    <rdf:type rdf:resource="&owl;Class"/>
  </rdf:Description>

  <rdf:Description rdf:about="&mebase;count">
    <rdf:type rdf:resource="&owl;DatatypeProperty"/>
  </rdf:Description>

  <rdf:Description rdf:about="&mebase;User">
    <rdf:type rdf:resource="&owl;Class"/>
  </rdf:Description>

  <rdf:Description rdf:about="&mebase;Contribution">
    <rdf:type rdf:resource="&owl;Class"/>
  </rdf:Description>


  <!-- =============== myExperiment Entity Classes ================= -->

  <owl:Class rdf:about="Usage">
    <rdfs:label>Download</rdfs:label>
    <rdfs:comment>A Usage of a Contribution, i.e. Viewing, Download, etc.</rdfs:comment>
    <rdfs:subClassOf rdf:resource="&mebase;Annotation"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="user-agent" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="accessed-from-site" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:Class>
  
  <owl:Class rdf:about="Download">
    <rdfs:label>Download</rdfs:label>
    <rdfs:comment>A Download of a Contribution by a User</rdfs:comment>
    <rdfs:subClassOf rdf:resource="Usage"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:Class>

  <owl:Class rdf:about="Downloads">
    <rdfs:label>Downloads</rdfs:label>
    <rdfs:comment>Downloads of a Contribution by a User</rdfs:comment>
    <rdfs:subClassOf rdf:resource="Download"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&mebase;count" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:Class>

  <owl:Class rdf:about="Viewing">
    <rdfs:label>Viewing</rdfs:label>
    <rdfs:comment>A Viewing of a Contribution by a User</rdfs:comment>
    <rdfs:subClassOf rdf:resource="Usage"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:Class>

  <owl:Class rdf:about="Viewings">
    <rdfs:label>Viewings</rdfs:label>
    <rdfs:comment>Viewings of a Contribution by a User</rdfs:comment>
    <rdfs:subClassOf rdf:resource="Viewing"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&mebase;count" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:Class>

<!-- =============== Datatype Properties ============== -->
  
  <owl:DatatypeProperty rdf:about="downloads-count">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>downloads-count</rdfs:label>
    <rdfs:comment>The count of contribution downloads by a User</rdfs:comment>
    <rdfs:domain rdf:resource="&mebase;User"/>
    <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:about="viewings-count">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>viewings-count</rdfs:label>
    <rdfs:comment>The count of Contribution viewings by a User</rdfs:comment>
    <rdfs:domain rdf:resource="&mebase;User"/>
    <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:about="downloaded">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>downloaded</rdfs:label>
    <rdfs:comment>The count of the number of times a Contribution has been downloaded</rdfs:comment>
    <rdfs:domain rdf:resource="&mebase;Contribution"/>
    <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:about="viewed">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>viewed</rdfs:label>
    <rdfs:comment>The count of the number of times a Contribution has been viewed</rdfs:comment>
    <rdfs:domain rdf:resource="&mebase;Contribution"/>
    <rdfs:range rdf:resource="&xsd;nonNegativeInteger"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:about="user-agent">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>user-agent</rdfs:label>
    <rdfs:comment>The user-agent used to view/download</rdfs:comment>
    <rdfs:domain rdf:resource="Usage"/>
    <rdfs:range rdf:resource="&xsd;string"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:about="accessed-from-site">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:label>accessed-from-site</rdfs:label>
    <rdfs:comment>Was the Usage performed via the website</rdfs:comment>
    <rdfs:domain rdf:resource="Usage"/>
    <rdfs:range rdf:resource="&xsd;boolean"/>
    <rdfs:isDefinedBy rdf:resource="&mevd;"/>
  </owl:DatatypeProperty>


</rdf:RDF>
