<?xml version="1.0" encoding="iso-8859-1"?>
<!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 xsd  "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY owl  "http://www.w3.org/2002/07/owl#" >
<!ENTITY dc    "http://purl.org/dc/elements/1.1/">
<!ENTITY mo2dg "http://www.charlestoncore.org/ontology/mo2dg#">
<!ENTITY boss "http://www.charlestoncore.org/ontology/boss#">
<!ENTITY ccb "http://www.charlestoncore.org/ontology/base#">
]>
<rdf:RDF
 xmlns          ="&mo2dg;"
 xmlns:mo2dg    ="&mo2dg;"
 xmlns:rdf      ="&rdf;"
 xmlns:rdfs     ="&rdfs;"
 xmlns:xsd      ="&xsd;"
 xmlns:owl      ="&owl;"
 xmlns:dc       ="&dc;"
 xmlns:boss     ="&boss;"
 xmlns:ccb      ="&ccb;"
 xml:base       ="http://www.charlestoncore.org/ontology/mo2dg"
 >

  <owl:Ontology rdf:about="">
    <rdfs:isDefinedBy rdf:resource="http://www.charlestoncore.org/ont/mo2dg.html"/>
    <owl:imports rdf:resource="&boss;"/>
    <owl:imports rdf:resource="&ccb;"/>
    <dc:creator>Xiaoshu Wang</dc:creator>
    <dc:contributor>Jonas S. Almeida</dc:contributor>
    <dc:contributor>Romesh Stanislaus</dc:contributor>
    <dc:contributor>Liuhong Jiang</dc:contributor>
    <dc:title>Minimum Information about 2DE Gel Electrophoresis</dc:title>
    <rdfs:comment>This file defines an ontology that matches the information defined by MO2DG.  The design of this ontology however is intended to offer MO2DG a version in RDF rather than to adhere the principles of ontology design.  Because XML is a tree based structure so design of XML schema is mostly done by grouping related concepts.  Ontology design however is done so according to the semantic meanings.  Thus an ontology designed for describing the same information will look drastically different.  Since this document is originated as an alternative to XML based MO2DG, the design goal is to keep the resemblance to its XML counter parts.</rdfs:comment>
    <owl:versionInfo>25 March 2005</owl:versionInfo>
  </owl:Ontology>

<!-- Classes -->
  <owl:Class rdf:ID="TwoDEStudy">
    <rdfs:comment>TwoDE study extends from boss:Study.  What we are suggesting here is that TwoDEStudy must use at least one BioSample as its material for the study.</rdfs:comment>
    <rdfs:subClassOf rdf:resource="&boss;Study"/>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="material"/>
        <owl:someValuesFrom rdf:resource="BioSample"/>
        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="method"/>
        <owl:someValuesFrom rdf:resource="GelProtocol"/>
        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="BioSample">
    <rdfs:comment>The BioSample is used to group all biological samples used in a study.</rdfs:comment>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="species"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction> 
      <owl:Restriction>
        <owl:onProperty rdf:resource="tissue"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="cell"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="Reagent">
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#chemName"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#concentration"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#unit"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="Chaotrope">
    <rdfs:subClassOf rdf:resource="#Reagent"/>
  </owl:Class>

  <owl:Class rdf:ID="Detergent">
    <rdfs:subClassOf rdf:resource="#Reagent"/>
  </owl:Class>

  <owl:Class rdf:ID="Ampholyte">
    <rdfs:subClassOf rdf:resource="#Reagent"/>
  </owl:Class>

  <owl:Class rdf:ID="Reductant">
    <rdfs:subClassOf rdf:resource="#Reagent"/>
  </owl:Class>

  <owl:Class rdf:ID="ProteaseInhibitor">
    <rdfs:subClassOf rdf:resource="#Reagent"/>
  </owl:Class>

  <owl:Class rdf:ID="Alkyl">
    <rdfs:subClassOf rdf:resource="#Reagent"/>
  </owl:Class>

  <owl:Class rdf:ID="GelProtocol">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#densitometry"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#staining"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#proteinLoad"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&boss;method"/>
        <owl:someValuesFrom rdf:resource="#SamplePrep"/>
        <owl:someValuesFrom rdf:resource="#IEF_Protocol"/>
        <owl:someValuesFrom rdf:resource="#SDS-PAGE_Protocol"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="SamplePrep">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#prefractionation"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&boss;method"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
        <owl:someValuesFrom rdf:resource="#Solubilization"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="Solubilization">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassof>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&boss;material"/>
        <owl:someValuesFrom rdf:resource="#Chaotrope"/>
        <owl:someValuesFrom rdf:resource="#Detergent"/>
        <owl:someValuesFrom rdf:resource="#Ampholyte"/>
        <owl:someValuesFrom rdf:resource="#Reductant"/>
        <owl:someValuesFrom rdf:resource="#ProteaseInhibitor"/>
        <owl:someValuesFrom rdf:resource="#Alkyl"/>
      </owl:Restriction>
    </rdfs:subClassof>
  </owl:Class>

  <owl:Class rdf:ID="IEF_Protocol">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="&boss;method"/>
        <owl:someValuesFrom rdf:resource="#Rehydration"/>
        <owl:someValuesFrom rdf:resource="#IEF_Focusing"/>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&boss;material"/>
        <owl:someValuesFrom rdf:resource="#FocusMedium"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="Rehydration">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#rehyBuffer"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#rehyTime"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="IEF_Focusing">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#focusBuffer"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#focusVolt"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#focusHour"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="FocusMedium">
    <rdfs:subClassof rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#low_pH"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#high_pH"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#typeOfIEF"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#thickness"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&ccb;shape"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
        <owl:allValuesFrom rdf:resource="&ccb;Rectangle"/>
      </owl:Restriction>
    </rdfs:subClassof>
  </owl:Class>

  <owl:Class rdf:ID="SDS-PAGE_Protocol">
    <rdfs:subClassOf rdf:resource="&boss;Protocol"/>
    <rdfs:subClassof rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#equiBuffer"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#runBuffer"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#runVolt"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#runAmp"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#runHour"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&boss;material"/>
        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
        <owl:someValuesFrom rdf:resource="#AcrylamideGel"/>
      </owl:Restriction>
    </rdfs:subClassof>
  </owl:Class>

  <owl:Class rdf:ID="AcrylamideGel">
    <rdfs:subClassOf rdf:parseType="Collection">
      <owl:Restriction>
        <owl:onProperty rdf:resource="#acrylamidePercent"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#crossLinker"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#thickness"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="&ccb;shape"/>
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
        <owl:allValuesFrom rdf:resource="&ccb;Rectangle"/>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <!-- Properties -->
  <owl:DatatypeProperty rdf:ID="species">
    <rdfs:domain rdf:resource="#BioSample"/>
    <rdfs:range rdf:resource="&xsd;string"/>
    <rdfs:comment>Using a string datatype property is a temporary solution until a full ontology about species is created.  But meanwhile the best practice of using this property is to comform to controlled vocabulary such as MeSH, DDC, etc.</rdfs:comment>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="tissue">
    <rdfs:domain rdf:resource="#BioSample"/>
    <rdfs:range rdf:resource="&xsd;string"/>
    <rdfs:comment>Again we recommend the best practice to use controlled vocabulary.</rdfs:comment>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="cell">
    <rdfs:domain rdf:resource="#BioSample"/>
    <rdfs:range rdf:resource="&xsd;string"/>
    <rdfs:comment>Again we recommend the best practice to use controlled vocabulary.</rdfs:comment>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="chemName">
    <rdfs:domain rdf:resource="#Reagent"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="concentration">
    <rdfs:domain rdf:resource="#Reagent"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="unit">
    <rdfs:domain rdf:resource="#Reagent"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="manufacturer">
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="productID">
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="densitometry">
    <rdfs:domain rdf:resource="#GelProtocol"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="staining">
    <rdfs:domain rdf:resource="#GelProtocol"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:ObjectProperty rdf:ID="proteinLoad">
    <rdfs:domain rdf:resource="#GelProtocol"/>
    <rdfs:range rdf:resource="#Reagent"/>
  </owl:ObjectProperty>

  <owl:DatatypeProperty rdf:ID="prefractionation">
    <rdfs:domain rdf:resource="#SamplePrep"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="low_pH">
    <rdfs:domain rdf:resource="#FocusMedium"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="high_pH">
    <rdfs:domain rdf:resource="#FocusMedium"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="typeOfIEF">
    <rdfs:domain rdf:resource="#FocusMedium"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>
  
  <owl:DatatypeProperty rdf:ID="rehyBuffer">
    <rdfs:domain rdf:resource="#Rehydration"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="rehyTime">
    <rdfs:domain rdf:resource="#Rehydration"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="focusBuffer">
    <rdfs:domain rdf:resource="#IEF_Focusing"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="focusVolt">
    <rdfs:domain rdf:resource="#IEF_Focusing"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="focusHour">
    <rdfs:domain rdf:resource="#IEF_Focusing"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="acrylamidePercent">
    <rdfs:domain rdf:resource="#AcrylamideGel"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="crossLinker">
    <rdfs:domain rdf:resource="#AcrylamideGel"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="equiBuffer">
    <rdfs:domain rdf:resource="#SDS-PAGE_Protocol"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="runBuffer">
    <rdfs:domain rdf:resource="#SDS-PAGE_Protocol"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="runVolt">
    <rdfs:domain rdf:resource="#SDS-PAGE_Protocol"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="runAmp">
    <rdfs:domain rdf:resource="#SDS-PAGE_Protocol"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="runHour">
    <rdfs:domain rdf:resource="#SDS-PAGE_Protocol"/>
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

  <owl:DatatypeProperty rdf:ID="thickness">
    <rdfs:range rdf:resource="&xsd;double"/>
  </owl:DatatypeProperty>

</rdf:RDF>