diff --git a/SensorOntologyV01.owl b/SensorOntologyV01.owl
new file mode 100644
index 0000000000000000000000000000000000000000..7a50bb04db4fa2c52e55905fb3e23b611bb5b9f5
--- /dev/null
+++ b/SensorOntologyV01.owl
@@ -0,0 +1,534 @@
+<?xml version="1.0"?>
+<rdf:RDF
+    xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
+    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+    xmlns:owl="http://www.w3.org/2002/07/owl#"
+    xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
+    xmlns="http://www.owl-ontologies.com/unnamed.owl#"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xml:base="http://www.owl-ontologies.com/unnamed.owl">
+  <owl:Ontology rdf:about="">
+    <owl:imports rdf:resource="http://protege.stanford.edu/plugins/owl/protege"/>
+  </owl:Ontology>
+  <owl:Class rdf:ID="Reset">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="Genereal"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="Calibrate">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Genereal"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="Check">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="mainFunction"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="DeviceProperties"/>
+  <owl:Class rdf:ID="setGlobalParameter">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Genereal"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="contrastScanner">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="detectionSensor"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="luminescenceScanner"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="colorSensor"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="Sensor">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom rdf:resource="#DeviceProperties"/>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:ID="hasProperties"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:cardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+        >1</owl:cardinality>
+        <owl:onProperty>
+          <owl:DatatypeProperty rdf:ID="uniqueID"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:equivalentClass>
+      <owl:Class>
+        <owl:unionOf rdf:parseType="Collection">
+          <owl:Restriction>
+            <owl:onProperty>
+              <owl:ObjectProperty rdf:ID="hasSkill"/>
+            </owl:onProperty>
+            <owl:someValuesFrom>
+              <owl:Class rdf:ID="SensorSkill"/>
+            </owl:someValuesFrom>
+          </owl:Restriction>
+          <owl:Restriction>
+            <owl:someValuesFrom>
+              <owl:Class rdf:ID="PhysicalDevice"/>
+            </owl:someValuesFrom>
+            <owl:onProperty>
+              <owl:ObjectProperty rdf:about="#hasProperties"/>
+            </owl:onProperty>
+          </owl:Restriction>
+        </owl:unionOf>
+      </owl:Class>
+    </owl:equivalentClass>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasProperties"/>
+        </owl:onProperty>
+        <owl:someValuesFrom>
+          <owl:Class rdf:about="#PhysicalDevice"/>
+        </owl:someValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom>
+          <owl:Class rdf:about="#SensorSkill"/>
+        </owl:someValuesFrom>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom>
+          <owl:Class rdf:about="#mainFunction"/>
+        </owl:someValuesFrom>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:ID="hasMainFunction"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="proximitySwitch">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="photoeletricSwitch"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="reflexSwitch"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="throughBeanSwitches"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="Communication">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#PhysicalDevice"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf rdf:resource="#DeviceProperties"/>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="Arrangement"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="loadParameterSet">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Genereal"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="Locate">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#mainFunction"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#mainFunction">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#SensorSkill"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="setExposureTime">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="forSensorOnly"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="outputDataFromErrorMemory">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="diagnosticFunction"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="saveParameterSet">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Genereal"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#PhysicalDevice">
+    <rdfs:subClassOf rdf:resource="#DeviceProperties"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#Arrangement"/>
+    </owl:disjointWith>
+    <owl:equivalentClass>
+      <owl:Class>
+        <owl:intersectionOf rdf:parseType="Collection">
+          <owl:Restriction>
+            <owl:cardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+            >1</owl:cardinality>
+            <owl:onProperty>
+              <owl:DatatypeProperty rdf:ID="height"/>
+            </owl:onProperty>
+          </owl:Restriction>
+          <owl:Restriction>
+            <owl:onProperty>
+              <owl:DatatypeProperty rdf:ID="length"/>
+            </owl:onProperty>
+            <owl:cardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+            >1</owl:cardinality>
+          </owl:Restriction>
+          <owl:Restriction>
+            <owl:cardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+            >1</owl:cardinality>
+            <owl:onProperty>
+              <owl:FunctionalProperty rdf:ID="width"/>
+            </owl:onProperty>
+          </owl:Restriction>
+          <owl:Restriction>
+            <owl:onProperty>
+              <owl:FunctionalProperty rdf:ID="mass"/>
+            </owl:onProperty>
+            <owl:cardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+            >1</owl:cardinality>
+          </owl:Restriction>
+        </owl:intersectionOf>
+      </owl:Class>
+    </owl:equivalentClass>
+    <owl:disjointWith rdf:resource="#Communication"/>
+  </owl:Class>
+  <owl:Class rdf:ID="distanceSensor">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#photoeletricSwitch"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="smartCamera"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf rdf:resource="#Sensor"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#detectionSensor"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="performeSelfTest">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#diagnosticFunction"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#diagnosticFunction">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#SensorSkill"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="setMeasurementRange">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#forSensorOnly"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="setWaveLengthOfLight">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#forSensorOnly"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#Genereal">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="additionalFunction"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="setIlluminationOpticalSensor">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#forSensorOnly"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="loadSoftwareComponents">
+    <rdfs:subClassOf rdf:resource="#Genereal"/>
+  </owl:Class>
+  <owl:Class rdf:about="#luminescenceScanner">
+    <owl:disjointWith rdf:resource="#contrastScanner"/>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#detectionSensor"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#colorSensor"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="Measure">
+    <rdfs:subClassOf rdf:resource="#mainFunction"/>
+  </owl:Class>
+  <owl:Class rdf:about="#reflexSwitch">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#throughBeanSwitches"/>
+    </owl:disjointWith>
+    <owl:disjointWith rdf:resource="#proximitySwitch"/>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#photoeletricSwitch"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#colorSensor">
+    <owl:disjointWith rdf:resource="#luminescenceScanner"/>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#detectionSensor"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#contrastScanner"/>
+  </owl:Class>
+  <owl:Class rdf:about="#throughBeanSwitches">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#photoeletricSwitch"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#reflexSwitch"/>
+    <owl:disjointWith rdf:resource="#proximitySwitch"/>
+  </owl:Class>
+  <owl:Class rdf:about="#photoeletricSwitch">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#smartCamera"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#detectionSensor"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf rdf:resource="#Sensor"/>
+    <owl:disjointWith rdf:resource="#distanceSensor"/>
+  </owl:Class>
+  <owl:Class rdf:about="#SensorSkill">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+        >0</owl:minCardinality>
+        <owl:onProperty>
+          <owl:DatatypeProperty rdf:ID="in"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:DatatypeProperty rdf:ID="out"/>
+        </owl:onProperty>
+        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+        >1</owl:minCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#forSensorOnly">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#additionalFunction"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="Scan">
+    <rdfs:subClassOf rdf:resource="#mainFunction"/>
+  </owl:Class>
+  <owl:Class rdf:ID="Classify">
+    <rdfs:subClassOf rdf:resource="#mainFunction"/>
+  </owl:Class>
+  <owl:Class rdf:about="#detectionSensor">
+    <rdfs:subClassOf rdf:resource="#Sensor"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#smartCamera"/>
+    </owl:disjointWith>
+    <owl:equivalentClass>
+      <owl:Restriction>
+        <owl:someValuesFrom>
+          <owl:Class rdf:ID="Detect"/>
+        </owl:someValuesFrom>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasMainFunction"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </owl:equivalentClass>
+    <owl:disjointWith rdf:resource="#distanceSensor"/>
+    <owl:disjointWith rdf:resource="#photoeletricSwitch"/>
+  </owl:Class>
+  <owl:Class rdf:ID="to_add_more">
+    <rdfs:subClassOf rdf:resource="#forSensorOnly"/>
+  </owl:Class>
+  <owl:Class rdf:ID="setResolution">
+    <rdfs:subClassOf rdf:resource="#forSensorOnly"/>
+  </owl:Class>
+  <owl:Class rdf:ID="adjustThreshold">
+    <rdfs:subClassOf rdf:resource="#forSensorOnly"/>
+  </owl:Class>
+  <owl:Class rdf:about="#Detect">
+    <rdfs:subClassOf rdf:resource="#mainFunction"/>
+  </owl:Class>
+  <owl:Class rdf:ID="visionSensor">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#smartCamera"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="collectProcessStatistic">
+    <rdfs:subClassOf rdf:resource="#diagnosticFunction"/>
+  </owl:Class>
+  <owl:Class rdf:ID="Sort">
+    <rdfs:subClassOf rdf:resource="#mainFunction"/>
+  </owl:Class>
+  <owl:Class rdf:about="#smartCamera">
+    <owl:disjointWith rdf:resource="#detectionSensor"/>
+    <owl:disjointWith rdf:resource="#photoeletricSwitch"/>
+    <rdfs:subClassOf rdf:resource="#Sensor"/>
+    <owl:disjointWith rdf:resource="#distanceSensor"/>
+  </owl:Class>
+  <owl:Class rdf:about="#additionalFunction">
+    <rdfs:subClassOf rdf:resource="#SensorSkill"/>
+  </owl:Class>
+  <owl:Class rdf:about="#Arrangement">
+    <owl:disjointWith rdf:resource="#PhysicalDevice"/>
+    <rdfs:subClassOf rdf:resource="#DeviceProperties"/>
+    <owl:disjointWith rdf:resource="#Communication"/>
+  </owl:Class>
+  <owl:ObjectProperty rdf:ID="hasAddictionalFunction">
+    <rdfs:range rdf:resource="#additionalFunction"/>
+    <rdfs:subPropertyOf>
+      <owl:ObjectProperty rdf:about="#hasSkill"/>
+    </rdfs:subPropertyOf>
+  </owl:ObjectProperty>
+  <owl:ObjectProperty rdf:about="#hasSkill">
+    <rdfs:domain rdf:resource="#Sensor"/>
+    <rdfs:range rdf:resource="#SensorSkill"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#InverseFunctionalProperty"/>
+  </owl:ObjectProperty>
+  <owl:ObjectProperty rdf:about="#hasProperties">
+    <rdfs:domain rdf:resource="#Sensor"/>
+    <rdfs:range rdf:resource="#DeviceProperties"/>
+  </owl:ObjectProperty>
+  <owl:ObjectProperty rdf:about="#hasMainFunction">
+    <rdfs:range rdf:resource="#mainFunction"/>
+    <rdfs:subPropertyOf rdf:resource="#hasSkill"/>
+  </owl:ObjectProperty>
+  <owl:ObjectProperty rdf:ID="hasDiagnosticFunction">
+    <rdfs:range rdf:resource="#diagnosticFunction"/>
+    <rdfs:subPropertyOf rdf:resource="#hasSkill"/>
+  </owl:ObjectProperty>
+  <owl:DatatypeProperty rdf:ID="mechanicalResistance">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="lightType">
+    <rdfs:domain rdf:resource="#Detect"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="cost">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="shape">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="allowedMinAmbientTemperature">
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="description">
+    <rdfs:domain rdf:resource="#Sensor"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="enclosureRatingIP">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="protocol">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#Communication"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="laserClass">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="mountedDevicePosition">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#Arrangement"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="coordinateReferenceSystem">
+    <rdfs:domain rdf:resource="#Arrangement"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="mountedDeviceOrientation">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#Arrangement"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:about="#uniqueID">
+    <rdfs:domain rdf:resource="#Sensor"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#ID"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="powerConsumption">
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="allowedMaxAmbientTemperature">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:about="#height">
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:about="#out">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#SensorSkill"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="physicalInterface">
+    <rdfs:domain rdf:resource="#Communication"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:about="#in">
+    <rdfs:domain rdf:resource="#SensorSkill"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:about="#length">
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+  </owl:DatatypeProperty>
+  <owl:FunctionalProperty rdf:ID="responseTime">
+    <rdfs:domain rdf:resource="#mainFunction"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="switchingFrequency">
+    <rdfs:domain rdf:resource="#mainFunction"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:about="#width">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="scanningDistance">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdfs:domain rdf:resource="#mainFunction"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:about="#mass">
+    <rdfs:domain rdf:resource="#PhysicalDevice"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="lightSpotSize">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#Detect"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+<!--   <photoeletricSwitch rdf:ID="photoeletricSwitch_2"/> -->
+<!--   <photoeletricSwitch rdf:ID="photoeletricSwitch_1"/> -->
+</rdf:RDF>
+
+<!-- Created with Protege (with OWL Plugin 2.1, Build 284)  http://protege.stanford.edu -->
+
diff --git a/owl.ast b/owl.ast
index bda8c2e279dfc817e3bea3ef4e1e0902222e61b3..83d24325ff378f8ac3319df645224f9afa058441 100644
--- a/owl.ast
+++ b/owl.ast
@@ -11,18 +11,23 @@ RdfDeclaration : ComplexElement;
 RdfFirst : ComplexElement;
 RdfRest : ComplexElement;
 RdfType : ComplexElement;
-RdfsSubClassOf : ComplexElement;
 RdfsDomain : ComplexElement;
 RdfsRange : ComplexElement;
+RdfsSubClassOf : ComplexElement;
+RdfsSubPropertyOf : ComplexElement;
 OwlOntology : ComplexElement;
 OwlAllValuesFrom : ComplexElement;
+OwlCardinality : ComplexElement;
 OwlClass : ComplexElement;
 OwlDataRange : ComplexElement;
 OwlDatatypeProperty : ComplexElement;
 OwlDisjointWith : ComplexElement;
 OwlEquivalentClass : ComplexElement;
 OwlFunctionalProperty : ComplexElement;
+OwlImports : ComplexElement;
+OwlIntersectionOf : ComplexElement;
 OwlInverseOf : ComplexElement;
+OwlMinCardinality : ComplexElement;
 OwlObjectProperty : ComplexElement;
 OwlOneOf : ComplexElement;
 OwlOnProperty : ComplexElement;
@@ -43,6 +48,9 @@ RdfParseType : Attribute;
 RdfResource : Attribute;
 XmlBase : Attribute;
 Xmlns : Attribute;
+XmlnsDaml : Attribute;
+XmlnsDc : Attribute;
+XmlnsProtege : Attribute;
 XmlnsRdf : Attribute;
 XmlnsXsd : Attribute;
 XmlnsRdfs : Attribute;
diff --git a/owl.jjt b/owl.jjt
index 286fdd4e0364ac9d4cc6d0b947616fc65f833238..73007c11a7fd9bd83182d100bbab89a8eb80db8e 100644
--- a/owl.jjt
+++ b/owl.jjt
@@ -54,33 +54,18 @@ SPECIAL_TOKEN : /* COMMENTS */
 
 <DEFAULT, BOUNDS> TOKEN : /* RESERVED WORDS AND LITERALS */
 {
-    < XML                : "xml"          >
-  | < XML_BASE           : "xml:base" >
-  | < XMLNS              : "xmlns" >	 
-  | < XMLNS_RDF          : "xmlns:rdf" >	 
-  | < XMLNS_XSD          : "xmlns:xsd" >	 
-  | < XMLNS_RDFS         : "xmlns:rdfs" >	 
-  | < XMLNS_OWL          : "xmlns:owl" >	 
-  | < RDF_RDF            : "rdf:RDF"      >
-  | < RDF_ABOUT          : "rdf:about" >
-  | < RDF_DATATYPE          : "rdf:datatype" >
-  | < RDF_ID                : "rdf:ID" >
-  | < RDF_FIRST             : "rdf:first" >
-  | < RDF_REST              : "rdf:rest" >
-  | < RDF_PARSETYPE         : "rdf:parseType" >
-  | < RDF_RESOURCE          : "rdf:resource" >
-  | < RDF_TYPE              : "rdf:type" >
-  | < RDFS_DOMAIN           : "rdfs:domain" >
-  | < RDFS_RANGE            : "rdfs:range" >
-  | < RDFS_SUBCLASSOF       : "rdfs:subClassOf" >
-  | < OWL_ALLVALUESFROM     : "owl:allValuesFrom" >
+    < OWL_ALLVALUESFROM     : "owl:allValuesFrom" >
+  | < OWL_CARDINALITY        : "owl:cardinality" >
   | < OWL_CLASS             : "owl:Class" >
   | < OWL_DATARANGE         : "owl:DataRange" >
   | < OWL_DATATYPEPROPERTY  : "owl:DatatypeProperty" >
   | < OWL_DISJOINTWITH      : "owl:disjointWith" >
   | < OWL_EQUIVALENTCLASS   : "owl:equivalentClass" >
   | < OWL_FUNCTIONALPROPERTY : "owl:FunctionalProperty" >
+  | < OWL_IMPORTS            : "owl:imports" >
+  | < OWL_INTERSECTIONOF     : "owl:intersectionOf" >
   | < OWL_INVERSEOF         : "owl:inverseOf" >
+  | < OWL_MINCARDINALITY     : "owl:minCardinality" >
   | < OWL_OBJECTPROPERTY    : "owl:ObjectProperty" >
   | < OWL_ONPROPERTY        : "owl:onProperty" >
   | < OWL_ONEOF             : "owl:oneOf" >
@@ -88,10 +73,32 @@ SPECIAL_TOKEN : /* COMMENTS */
   | < OWL_RESTRICTION       : "owl:Restriction" >
   | < OWL_SOMEVALUESFROM    : "owl:someValuesFrom" >
   | < OWL_UNIONOF           : "owl:unionOf" >
+  | < RDF_RDF            : "rdf:RDF"      >
+  | < RDF_ABOUT          : "rdf:about" >
+  | < RDF_DATATYPE          : "rdf:datatype" >
+  | < RDF_ID                : "rdf:ID" >
+  | < RDF_FIRST             : "rdf:first" >
+  | < RDF_REST              : "rdf:rest" >
+  | < RDF_PARSETYPE         : "rdf:parseType" >
+  | < RDF_RESOURCE          : "rdf:resource" >
+  | < RDF_TYPE              : "rdf:type" >
+  | < RDFS_DOMAIN           : "rdfs:domain" >
+  | < RDFS_RANGE            : "rdfs:range" >
+  | < RDFS_SUBCLASSOF       : "rdfs:subClassOf" >
+  | < RDFS_SUBPROPERTYOF     : "rdfs:subPropertyOf" >
   | < VERSION               : "version" >
+  | < XML                   : "xml"          >
+  | < XML_BASE              : "xml:base" >
+  | < XMLNS                 : "xmlns" >	 
+  | < XMLNS_DAML            : "xmlns:daml" >	 
+  | < XMLNS_DC              : "xmlns:dc" >	 
+  | < XMLNS_PROTEGE         : "xmlns:protege" >	 
+  | < XMLNS_RDF             : "xmlns:rdf" >	 
+  | < XMLNS_XSD             : "xmlns:xsd" >	 
+  | < XMLNS_RDFS            : "xmlns:rdfs" >	 
+  | < XMLNS_OWL             : "xmlns:owl" >	 
 
 }// RESERVED WORDS AND LITERALS
-
 <DEFAULT, BOUNDS> TOKEN : /* LITERALS */
 {
     < INTEGER_LITERAL:
@@ -315,13 +322,17 @@ void OwlElement() : {}
 {
     OwlOntology()
 	| OwlAllValuesFrom()
+	| OwlCardinality()
 	| OwlClass()
 	| OwlDataRange()
 	| OwlDatatypeProperty()
 	| OwlDisjointWith()
 	| OwlEquivalentClass()
 	| OwlFunctionalProperty()
+	| OwlImports()
+	| OwlIntersectionOf()
 	| OwlInverseOf()
+	| OwlMinCardinality()
 	| OwlObjectProperty()
 	| OwlOneOf()
 	| OwlOnProperty()
@@ -332,7 +343,8 @@ void OwlElement() : {}
 
 void OwlOntology() #OwlOntology : {}
 {
-    <OWL_ONTOLOGY> AttributeList() 	ElementList() "/>"
+    <OWL_ONTOLOGY> AttributeList() 
+	(">" ElementList() "</" <OWL_ONTOLOGY> ">" | ElementList() "/>")
 }
 
 void OwlAllValuesFrom() #OwlAllValuesFrom : {}
@@ -341,6 +353,12 @@ void OwlAllValuesFrom() #OwlAllValuesFrom : {}
 	(">" ElementList() "</" <OWL_ALLVALUESFROM> ">" | ElementList() "/>")
 }
 
+void OwlCardinality() #OwlCardinality : {}
+{
+    <OWL_CARDINALITY> AttributeList() 
+	(">" ElementList() "</" <OWL_CARDINALITY> ">" | ElementList() "/>")
+}
+
 void OwlClass() #OwlClass : {}
 {
     <OWL_CLASS> AttributeList() 
@@ -377,12 +395,30 @@ void OwlFunctionalProperty() #OwlFunctionalProperty : {}
 	(">" ElementList() "</" <OWL_FUNCTIONALPROPERTY> ">" | ElementList() "/>")
 }
 
+void OwlImports () #OwlImports  : {}
+{
+    <OWL_IMPORTS> AttributeList() 
+	(">" ElementList() "</" <OWL_IMPORTS> ">" | ElementList() "/>")
+}
+
+void OwlIntersectionOf () #OwlIntersectionOf  : {}
+{
+    <OWL_INTERSECTIONOF> AttributeList() 
+	(">" ElementList() "</" <OWL_INTERSECTIONOF> ">" | ElementList() "/>")
+}
+
 void OwlInverseOf () #OwlInverseOf  : {}
 {
     <OWL_INVERSEOF> AttributeList() 
 	(">" ElementList() "</" <OWL_INVERSEOF> ">" | ElementList() "/>")
 }
 
+void OwlMinCardinality () #OwlMinCardinality  : {}
+{
+    <OWL_MINCARDINALITY> AttributeList() 
+	(">" ElementList() "</" <OWL_MINCARDINALITY> ">" | ElementList() "/>")
+}
+
 void OwlObjectProperty () #OwlObjectProperty  : {}
 {
     <OWL_OBJECTPROPERTY> AttributeList() 
@@ -424,9 +460,10 @@ void RdfElement() : {}
     RdfType()
 	| RdfFirst()
 	| RdfRest()
-	| RdfsSubClassOf()
 	| RdfsDomain()
 	| RdfsRange()
+	| RdfsSubClassOf()
+	| RdfsSubPropertyOf()
 }
 
 void RdfType() #RdfType : {}
@@ -465,6 +502,12 @@ void RdfsSubClassOf() #RdfsSubClassOf : {}
 	(">" ElementList() "</" <RDFS_SUBCLASSOF> ">" | ElementList() "/>")
 }
 
+void RdfsSubPropertyOf() #RdfsSubPropertyOf : {}
+{
+    <RDFS_SUBPROPERTYOF> AttributeList() 
+	(">" ElementList() "</" <RDFS_SUBPROPERTYOF> ">" | ElementList() "/>")
+}
+
 void AttributeList() #List : {}
 {
     (Attribute())*
@@ -530,10 +573,13 @@ void XmlBase() #XmlBase : {}
 void XmlnsAttribute() : {}
 {
     Xmlns()
+	| XmlnsDaml()
+	| XmlnsDc()
+	| XmlnsOwl()
+	| XmlnsProtege()
 	| XmlnsRdf()
-	| XmlnsXsd()
 	| XmlnsRdfs()
-	| XmlnsOwl()
+	| XmlnsXsd()
 }
 
 void Xmlns() #Xmlns : {}
@@ -541,6 +587,21 @@ void Xmlns() #Xmlns : {}
     <XMLNS> <ASSIGN> Value()
 }
 
+void XmlnsDaml() #XmlnsDaml : {}
+{
+    <XMLNS_DAML> <ASSIGN> Value()
+}
+
+void XmlnsDc() #XmlnsDc : {}
+{
+    <XMLNS_DC> <ASSIGN> Value()
+}
+
+void XmlnsProtege() #XmlnsProtege : {}
+{
+    <XMLNS_PROTEGE> <ASSIGN> Value()
+}
+
 void XmlnsRdf() #XmlnsRdf : {}
 {
     <XMLNS_RDF> <ASSIGN> Value()