diff --git a/GripperOnotology.owl b/GripperOntology.owl
similarity index 100%
rename from GripperOnotology.owl
rename to GripperOntology.owl
diff --git a/GripperOntology_experimental3.owl b/GripperOntology_experimental3.owl
new file mode 100644
index 0000000000000000000000000000000000000000..b1f0162f7a2bf39cfb0775b8be40d577ce928d77
--- /dev/null
+++ b/GripperOntology_experimental3.owl
@@ -0,0 +1,645 @@
+<?xml version="1.0"?>
+<rdf:RDF
+    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="http://www.owl-ontologies.com/unnamed.owl#"
+  xml:base="http://www.owl-ontologies.com/unnamed.owl">
+  <owl:Ontology rdf:about=""/>
+  <owl:Class rdf:ID="VacuumGripper">
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="Gripper"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="PincerGripper"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="MagnetGripper"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:ID="hasSkill"/>
+        </owl:onProperty>
+        <owl:someValuesFrom>
+          <owl:Class rdf:ID="AdjustVacuumToGrip"/>
+        </owl:someValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+        <owl:someValuesFrom>
+          <owl:Class rdf:ID="AdjustVacuumToRelease"/>
+        </owl:someValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="FingerGripper"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="AngleGripper">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#PincerGripper"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="ParallelGripper"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="AdhesionGripper"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="CloseFingers">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#AdjustVacuumToRelease"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="CloseClaws"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="AdjustCurrentToRelease"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="Close"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#PincerGripper">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#MagnetGripper"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom>
+          <owl:Class rdf:about="#CloseClaws"/>
+        </owl:someValuesFrom>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#FingerGripper"/>
+    </owl:disjointWith>
+    <owl:disjointWith rdf:resource="#VacuumGripper"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+        <owl:someValuesFrom>
+          <owl:Class rdf:ID="OpenClaws"/>
+        </owl:someValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Gripper"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#ParallelGripper">
+    <rdfs:subClassOf rdf:resource="#PincerGripper"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#AdhesionGripper"/>
+    </owl:disjointWith>
+    <owl:disjointWith rdf:resource="#AngleGripper"/>
+  </owl:Class>
+  <owl:Class rdf:about="#FingerGripper">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Gripper"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#PincerGripper"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+        <owl:someValuesFrom>
+          <owl:Class rdf:ID="OpenFingers"/>
+        </owl:someValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom rdf:resource="#CloseFingers"/>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#VacuumGripper"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#MagnetGripper"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:ID="GripperSkill">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#Gripper"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:about="#AdjustVacuumToGrip">
+    <owl:disjointWith>
+      <owl:Class rdf:ID="AdjustCurrentToGrip"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#OpenClaws"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#OpenFingers"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf>
+      <owl:Class rdf:ID="Open"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#AdjustCurrentToRelease">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Close"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#CloseFingers"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#CloseClaws"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#AdjustVacuumToRelease"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:about="#OpenFingers">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#AdjustCurrentToGrip"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Open"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#AdjustVacuumToGrip"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#OpenClaws"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:about="#MagnetGripper">
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom>
+          <owl:Class rdf:about="#AdjustCurrentToGrip"/>
+        </owl:someValuesFrom>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#PincerGripper"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+        <owl:someValuesFrom rdf:resource="#AdjustCurrentToRelease"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#FingerGripper"/>
+    <owl:disjointWith rdf:resource="#VacuumGripper"/>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Gripper"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:ID="JointFingerGripper">
+    <rdfs:subClassOf rdf:resource="#FingerGripper"/>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="ElasticFingerGripper"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:about="#AdjustCurrentToGrip">
+    <owl:disjointWith rdf:resource="#AdjustVacuumToGrip"/>
+    <owl:disjointWith rdf:resource="#OpenFingers"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#OpenClaws"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Open"/>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#AdjustVacuumToRelease">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Close"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#CloseClaws"/>
+    </owl:disjointWith>
+    <owl:disjointWith rdf:resource="#CloseFingers"/>
+    <owl:disjointWith rdf:resource="#AdjustCurrentToRelease"/>
+  </owl:Class>
+  <owl:Class rdf:about="#ElasticFingerGripper">
+    <rdfs:subClassOf rdf:resource="#FingerGripper"/>
+    <owl:disjointWith rdf:resource="#JointFingerGripper"/>
+  </owl:Class>
+  <owl:Class rdf:about="#OpenClaws">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Open"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#AdjustVacuumToGrip"/>
+    <owl:disjointWith rdf:resource="#AdjustCurrentToGrip"/>
+    <owl:disjointWith rdf:resource="#OpenFingers"/>
+  </owl:Class>
+  <owl:Class rdf:ID="CircularParallelGripper">
+    <rdfs:subClassOf rdf:resource="#ParallelGripper"/>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="GeneralParallelGripper"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="LineParallelGripper"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:about="#CloseClaws">
+    <rdfs:subClassOf>
+      <owl:Class rdf:about="#Close"/>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#AdjustVacuumToRelease"/>
+    <owl:disjointWith rdf:resource="#CloseFingers"/>
+    <owl:disjointWith rdf:resource="#AdjustCurrentToRelease"/>
+  </owl:Class>
+  <owl:Class rdf:about="#Open">
+    <owl:disjointWith>
+      <owl:Class rdf:about="#Close"/>
+    </owl:disjointWith>
+    <owl:disjointWith>
+      <owl:Class rdf:ID="DetectHolding"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf rdf:resource="#GripperSkill"/>
+  </owl:Class>
+  <owl:Class rdf:about="#LineParallelGripper">
+    <owl:disjointWith rdf:resource="#CircularParallelGripper"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#GeneralParallelGripper"/>
+    </owl:disjointWith>
+    <rdfs:subClassOf rdf:resource="#ParallelGripper"/>
+  </owl:Class>
+  <owl:Class rdf:about="#AdhesionGripper">
+    <owl:disjointWith rdf:resource="#AngleGripper"/>
+    <rdfs:subClassOf rdf:resource="#PincerGripper"/>
+    <owl:disjointWith rdf:resource="#ParallelGripper"/>
+  </owl:Class>
+  <owl:Class rdf:about="#GeneralParallelGripper">
+    <rdfs:subClassOf rdf:resource="#ParallelGripper"/>
+    <owl:disjointWith rdf:resource="#LineParallelGripper"/>
+    <owl:disjointWith rdf:resource="#CircularParallelGripper"/>
+  </owl:Class>
+  <owl:Class rdf:about="#DetectHolding">
+    <owl:disjointWith rdf:resource="#Open"/>
+    <rdfs:subClassOf rdf:resource="#GripperSkill"/>
+    <owl:disjointWith>
+      <owl:Class rdf:about="#Close"/>
+    </owl:disjointWith>
+  </owl:Class>
+  <owl:Class rdf:about="#Gripper">
+    <owl:disjointWith rdf:resource="#GripperSkill"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+        <owl:someValuesFrom rdf:resource="#DetectHolding"/>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom rdf:resource="#Open"/>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:someValuesFrom>
+          <owl:Class rdf:about="#Close"/>
+        </owl:someValuesFrom>
+        <owl:onProperty>
+          <owl:ObjectProperty rdf:about="#hasSkill"/>
+        </owl:onProperty>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  <owl:Class rdf:about="#Close">
+    <owl:disjointWith rdf:resource="#DetectHolding"/>
+    <owl:disjointWith rdf:resource="#Open"/>
+    <rdfs:subClassOf rdf:resource="#GripperSkill"/>
+  </owl:Class>
+  <owl:ObjectProperty rdf:about="#hasSkill">
+    <owl:inverseOf>
+      <owl:ObjectProperty rdf:ID="isSkillOf"/>
+    </owl:inverseOf>
+    <rdfs:domain rdf:resource="#Gripper"/>
+    <rdfs:range rdf:resource="#GripperSkill"/>
+  </owl:ObjectProperty>
+  <owl:ObjectProperty rdf:about="#isSkillOf">
+    <rdfs:domain rdf:resource="#GripperSkill"/>
+    <rdfs:range rdf:resource="#Gripper"/>
+    <owl:inverseOf rdf:resource="#hasSkill"/>
+  </owl:ObjectProperty>
+  <owl:DatatypeProperty rdf:ID="shapeOfClaws">
+    <rdfs:domain rdf:resource="#PincerGripper"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="maximumForce">
+    <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="#PincerGripper"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="typeOfActuation">
+    <rdfs:range>
+      <owl:DataRange>
+        <owl:oneOf rdf:parseType="Resource">
+          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+          >pneumatic</rdf:first>
+          <rdf:rest rdf:parseType="Resource">
+            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >hydraulic</rdf:first>
+            <rdf:rest rdf:parseType="Resource">
+              <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
+              <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+              >electric</rdf:first>
+            </rdf:rest>
+          </rdf:rest>
+        </owl:oneOf>
+      </owl:DataRange>
+    </rdfs:range>
+    <rdfs:domain rdf:resource="#PincerGripper"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="maximumVacuum">
+    <rdfs:domain rdf:resource="#VacuumGripper"/>
+    <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="weightOfGripper">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdfs:domain rdf:resource="#Gripper"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="numberOfMovableClaws">
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:domain rdf:resource="#PincerGripper"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="elasticallySupported">
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
+    <rdfs:domain rdf:resource="#VacuumGripper"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="uniqueID">
+    <rdfs:domain rdf:resource="#Gripper"/>
+    <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="diameterOfGripper">
+    <rdfs:domain>
+      <owl:Class>
+        <owl:unionOf rdf:parseType="Collection">
+          <owl:Class rdf:about="#MagnetGripper"/>
+          <owl:Class rdf:about="#VacuumGripper"/>
+        </owl:unionOf>
+      </owl:Class>
+    </rdfs:domain>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="sizeOfGripper">
+    <rdfs:domain rdf:resource="#PincerGripper"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="mechanicalInterface">
+    <rdfs:domain rdf:resource="#Gripper"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:DatatypeProperty>
+  <owl:DatatypeProperty rdf:ID="electricalInterface">
+    <rdfs:domain rdf:resource="#Gripper"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
+  </owl:DatatypeProperty>
+  <owl:FunctionalProperty rdf:ID="typeOfMagnet">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#MagnetGripper"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="cycleTime">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
+    <rdfs:domain>
+      <owl:Class>
+        <owl:unionOf rdf:parseType="Collection">
+          <owl:Class rdf:about="#FingerGripper"/>
+          <owl:Class rdf:about="#PincerGripper"/>
+          <owl:Class rdf:about="#VacuumGripper"/>
+        </owl:unionOf>
+      </owl:Class>
+    </rdfs:domain>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="typeOfFingers">
+    <rdfs:range>
+      <owl:DataRange>
+        <owl:oneOf rdf:parseType="Resource">
+          <rdf:rest rdf:parseType="Resource">
+            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
+            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >multiple joints</rdf:first>
+          </rdf:rest>
+          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+          >elastic</rdf:first>
+        </owl:oneOf>
+      </owl:DataRange>
+    </rdfs:range>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:domain rdf:resource="#FingerGripper"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="typeOfVacuum">
+    <rdfs:range>
+      <owl:DataRange>
+        <owl:oneOf rdf:parseType="Resource">
+          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+          >venturi nozzle</rdf:first>
+          <rdf:rest rdf:parseType="Resource">
+            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >vacuum pump</rdf:first>
+            <rdf:rest rdf:parseType="Resource">
+              <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
+              <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+              >blower</rdf:first>
+            </rdf:rest>
+          </rdf:rest>
+        </owl:oneOf>
+      </owl:DataRange>
+    </rdfs:range>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:domain rdf:resource="#VacuumGripper"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="stiffnessOfGripper">
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+    <rdfs:domain rdf:resource="#VacuumGripper"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="materialOfGripper">
+    <rdfs:domain>
+      <owl:Class>
+        <owl:unionOf rdf:parseType="Collection">
+          <owl:Class rdf:about="#FingerGripper"/>
+          <owl:Class rdf:about="#VacuumGripper"/>
+        </owl:unionOf>
+      </owl:Class>
+    </rdfs:domain>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="degreesOfFreedom">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:domain>
+      <owl:Class>
+        <owl:unionOf rdf:parseType="Collection">
+          <owl:Class rdf:about="#FingerGripper"/>
+          <owl:Class rdf:about="#PincerGripper"/>
+          <owl:Class rdf:about="#VacuumGripper"/>
+        </owl:unionOf>
+      </owl:Class>
+    </rdfs:domain>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="insideOrOutsidePicking">
+    <rdfs:domain rdf:resource="#PincerGripper"/>
+    <rdfs:range>
+      <owl:DataRange>
+        <owl:oneOf rdf:parseType="Resource">
+          <rdf:rest rdf:parseType="Resource">
+            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+            >outside</rdf:first>
+            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
+          </rdf:rest>
+          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
+          >inside</rdf:first>
+        </owl:oneOf>
+      </owl:DataRange>
+    </rdfs:range>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="numberOfFingers">
+    <rdfs:range>
+      <owl:DataRange>
+        <owl:oneOf rdf:parseType="Resource">
+          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+          >2</rdf:first>
+          <rdf:rest rdf:parseType="Resource">
+            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+            >3</rdf:first>
+            <rdf:rest rdf:parseType="Resource">
+              <rdf:rest rdf:parseType="Resource">
+                <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
+                <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+                >5</rdf:first>
+              </rdf:rest>
+              <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
+              >4</rdf:first>
+            </rdf:rest>
+          </rdf:rest>
+        </owl:oneOf>
+      </owl:DataRange>
+    </rdfs:range>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:domain rdf:resource="#FingerGripper"/>
+  </owl:FunctionalProperty>
+  <owl:FunctionalProperty rdf:ID="numberOfClaws">
+    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
+    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
+    <rdfs:domain rdf:resource="#PincerGripper"/>
+  </owl:FunctionalProperty>
+<!--   <VacuumGripper rdf:ID="GripperTwo"> -->
+<!--     <elasticallySupported rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean" -->
+<!--     >true</elasticallySupported> -->
+<!--     <electricalInterface rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >E_INT_2</electricalInterface> -->
+<!--     <mechanicalInterface rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >M_INT_3</mechanicalInterface> -->
+<!--     <stiffnessOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >Stiff</stiffnessOfGripper> -->
+<!--     <maximumVacuum rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--     >20.0</maximumVacuum> -->
+<!--     <weightOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--     >145.0</weightOfGripper> -->
+<!--     <degreesOfFreedom rdf:datatype="http://www.w3.org/2001/XMLSchema#int" -->
+<!--     >0</degreesOfFreedom> -->
+<!--     <typeOfVacuum rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >vacuum pump</typeOfVacuum> -->
+<!--     <materialOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >Rubber</materialOfGripper> -->
+<!--     <uniqueID rdf:datatype="http://www.w3.org/2001/XMLSchema#ID" -->
+<!--     >GRIPPER2</uniqueID> -->
+<!--     <cycleTime rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--     >245.0</cycleTime> -->
+<!--     <diameterOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >10 x 10</diameterOfGripper> -->
+<!--   </VacuumGripper> -->
+<!--   <AdhesionGripper rdf:ID="GripperThree"> -->
+<!--     <insideOrOutsidePicking rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >inside</insideOrOutsidePicking> -->
+<!--     <sizeOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >Large</sizeOfGripper> -->
+<!--     <typeOfActuation rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >hydraulic</typeOfActuation> -->
+<!--     <numberOfMovableClaws rdf:datatype="http://www.w3.org/2001/XMLSchema#int" -->
+<!--     >3</numberOfMovableClaws> -->
+<!--     <uniqueID rdf:datatype="http://www.w3.org/2001/XMLSchema#ID" -->
+<!--     >GRIPPER3</uniqueID> -->
+<!--     <mechanicalInterface rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >M_INT_1</mechanicalInterface> -->
+<!--     <numberOfClaws rdf:datatype="http://www.w3.org/2001/XMLSchema#int" -->
+<!--     >3</numberOfClaws> -->
+<!--     <electricalInterface rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >E_INT_1</electricalInterface> -->
+<!--     <degreesOfFreedom rdf:datatype="http://www.w3.org/2001/XMLSchema#int" -->
+<!--     >3</degreesOfFreedom> -->
+<!--     <weightOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--     >200.0</weightOfGripper> -->
+<!--     <shapeOfClaws rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--     >Rounded</shapeOfClaws> -->
+<!--     <maximumForce rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--     >150.0</maximumForce> -->
+<!--     <cycleTime rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--     >10.0</cycleTime> -->
+<!--   </AdhesionGripper> -->
+<!--   <owl:AllDifferent> -->
+<!--     <owl:distinctMembers rdf:parseType="Collection"> -->
+<!--       <ElasticFingerGripper rdf:ID="GripperOne"> -->
+<!--         <cycleTime rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--         >230.0</cycleTime> -->
+<!--         <mechanicalInterface rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--         >M_INT_2</mechanicalInterface> -->
+<!--         <materialOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--         >Plastic</materialOfGripper> -->
+<!--         <typeOfFingers rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--         >elastic</typeOfFingers> -->
+<!--         <numberOfFingers rdf:datatype="http://www.w3.org/2001/XMLSchema#int" -->
+<!--         >4</numberOfFingers> -->
+<!--         <electricalInterface rdf:datatype="http://www.w3.org/2001/XMLSchema#string" -->
+<!--         >E_INT_1</electricalInterface> -->
+<!--         <uniqueID rdf:datatype="http://www.w3.org/2001/XMLSchema#ID" -->
+<!--         >GRIPPER1</uniqueID> -->
+<!--         <degreesOfFreedom rdf:datatype="http://www.w3.org/2001/XMLSchema#int" -->
+<!--         >2</degreesOfFreedom> -->
+<!--         <weightOfGripper rdf:datatype="http://www.w3.org/2001/XMLSchema#float" -->
+<!--         >250.0</weightOfGripper> -->
+<!--       </ElasticFingerGripper> -->
+<!--     </owl:distinctMembers> -->
+<!--   </owl:AllDifferent> -->
+<!--   <owl:AllDifferent> -->
+<!--     <owl:distinctMembers rdf:parseType="Collection"> -->
+<!--       <VacuumGripper rdf:about="#GripperTwo"/> -->
+<!--     </owl:distinctMembers> -->
+<!--   </owl:AllDifferent> -->
+<!--   <owl:AllDifferent> -->
+<!--     <owl:distinctMembers rdf:parseType="Collection"> -->
+<!--       <AdhesionGripper rdf:about="#GripperThree"/> -->
+<!--     </owl:distinctMembers> -->
+<!--   </owl:AllDifferent> -->
+</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 6d2982d0a815ab8fcda28e07cab7c085d727f1f4..fcd4326877989e7ea9bd32103fe99d4813e9dd87 100644
--- a/owl.ast
+++ b/owl.ast
@@ -5,24 +5,41 @@ Specification ::= XmlHeader RdfDeclaration;
 
 XmlHeader ::= Attribute*;
 
-abstract Element ::= Attribute* Element*;
-RdfDeclaration : Element;
-RdfsSubClassOf : Element;
-RdfsDomain : Element;
-OwlOntology : Element;
-OwlAllValuesFrom : Element;
-OwlClass : Element;
-OwlDisjointWith : Element;
-OwlEquivalentClass : Element;
-OwlObjectProperty : Element;
-OwlOnProperty : Element;
-OwlSomeValuesFrom : Element;
-OwlRestriction : Element;
+abstract Element;
+abstract ComplexElement : Element ::= Attribute* Element*;
+RdfDeclaration : ComplexElement;
+RdfFirst : ComplexElement;
+RdfRest : ComplexElement;
+RdfType : ComplexElement;
+RdfsSubClassOf : ComplexElement;
+RdfsDomain : ComplexElement;
+RdfsRange : ComplexElement;
+OwlOntology : ComplexElement;
+OwlAllValuesFrom : ComplexElement;
+OwlClass : ComplexElement;
+OwlDataRange : ComplexElement;
+OwlDatatypeProperty : ComplexElement;
+OwlDisjointWith : ComplexElement;
+OwlEquivalentClass : ComplexElement;
+OwlFunctionalProperty : ComplexElement;
+OwlInverseOf : ComplexElement;
+OwlObjectProperty : ComplexElement;
+OwlOneOf : ComplexElement;
+OwlOnProperty : ComplexElement;
+OwlSomeValuesFrom : ComplexElement;
+OwlRestriction : ComplexElement;
+OwlUnionOf : ComplexElement;
+
+abstract SimpleElement : Element;
+StringElement : SimpleElement ::= <IDENTIFIER>;
+IntElement : SimpleElement ::= <INTEGER_LITERAL>;
 
 abstract Attribute ::= Value;
 Version : Attribute;
 RdfAbout : Attribute;
+RdfDatatype : Attribute;
 RdfId : Attribute;
+RdfParseType : Attribute;
 RdfResource : Attribute;
 XmlBase : Attribute;
 Xmlns : Attribute;
diff --git a/owl.jjt b/owl.jjt
index a10f08b8dfbce6f92621e04cf867675a8b8f516a..286fdd4e0364ac9d4cc6d0b947616fc65f833238 100644
--- a/owl.jjt
+++ b/owl.jjt
@@ -63,20 +63,32 @@ SPECIAL_TOKEN : /* COMMENTS */
   | < XMLNS_OWL          : "xmlns:owl" >	 
   | < RDF_RDF            : "rdf:RDF"      >
   | < RDF_ABOUT          : "rdf:about" >
-  | < RDF_ID             : "rdf:ID" >
-  | < RDF_RESOURCE       : "rdf:resource" >
-  | < RDFS_DOMAIN        : "rdfs:domain" >
-  | < RDFS_SUBCLASSOF    : "rdfs:subClassOf" >
-  | < OWL_ALLVALUESFROM  : "owl:allValuesFrom" >
-  | < OWL_CLASS          : "owl:Class" >
-  | < OWL_ONTOLOGY       : "owl:Ontology" >
-  | < OWL_DISJOINTWITH   : "owl:disjointWith" >
-  | < OWL_EQUIVALENTCLASS: "owl:equivalentClass" >
-  | < OWL_RESTRICTION    : "owl:Restriction" >
-  | < OWL_ONPROPERTY     : "owl:onProperty" >
-  | < OWL_OBJECTPROPERTY : "owl:ObjectProperty" >
-  | < OWL_SOMEVALUESFROM : "owl:someValuesFrom" >
-  | < VERSION            : "version" >
+  | < 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_CLASS             : "owl:Class" >
+  | < OWL_DATARANGE         : "owl:DataRange" >
+  | < OWL_DATATYPEPROPERTY  : "owl:DatatypeProperty" >
+  | < OWL_DISJOINTWITH      : "owl:disjointWith" >
+  | < OWL_EQUIVALENTCLASS   : "owl:equivalentClass" >
+  | < OWL_FUNCTIONALPROPERTY : "owl:FunctionalProperty" >
+  | < OWL_INVERSEOF         : "owl:inverseOf" >
+  | < OWL_OBJECTPROPERTY    : "owl:ObjectProperty" >
+  | < OWL_ONPROPERTY        : "owl:onProperty" >
+  | < OWL_ONEOF             : "owl:oneOf" >
+  | < OWL_ONTOLOGY          : "owl:Ontology" >
+  | < OWL_RESTRICTION       : "owl:Restriction" >
+  | < OWL_SOMEVALUESFROM    : "owl:someValuesFrom" >
+  | < OWL_UNIONOF           : "owl:unionOf" >
+  | < VERSION               : "version" >
 
 }// RESERVED WORDS AND LITERALS
 
@@ -275,9 +287,28 @@ void ElementList() #List : {}
 
 void Element() : {}
 {
-    "<" ( OwlElement()
-	  | RdfElement()
-	  )
+    ( "<" ( OwlElement()
+	    | RdfElement()
+	    ))
+	| SimpleElement()
+}
+
+void SimpleElement() : {}
+{
+    IntElement()
+	| StringElement()
+}
+
+void IntElement() #IntElement : { Token t; }
+{
+    t = <INTEGER_LITERAL>
+	{jjtThis.setINTEGER_LITERAL(t.image);}
+}
+
+void StringElement() #StringElement : { Token t; }
+{
+    t = <IDENTIFIER>
+	{jjtThis.setIDENTIFIER(t.image);}
 }
 
 void OwlElement() : {}
@@ -285,12 +316,18 @@ void OwlElement() : {}
     OwlOntology()
 	| OwlAllValuesFrom()
 	| OwlClass()
+	| OwlDataRange()
+	| OwlDatatypeProperty()
 	| OwlDisjointWith()
 	| OwlEquivalentClass()
+	| OwlFunctionalProperty()
+	| OwlInverseOf()
 	| OwlObjectProperty()
+	| OwlOneOf()
 	| OwlOnProperty()
 	| OwlSomeValuesFrom()
 	| OwlRestriction()
+	| OwlUnionOf()
 }
 
 void OwlOntology() #OwlOntology : {}
@@ -310,6 +347,18 @@ void OwlClass() #OwlClass : {}
 	(">" ElementList() "</" <OWL_CLASS> ">" | ElementList() "/>")
 }
 
+void OwlDataRange() #OwlDataRange : {}
+{
+    <OWL_DATARANGE> AttributeList() 
+	(">" ElementList() "</" <OWL_DATARANGE> ">" | ElementList() "/>")
+}
+
+void OwlDatatypeProperty() #OwlDatatypeProperty : {}
+{
+    <OWL_DATATYPEPROPERTY> AttributeList() 
+	(">" ElementList() "</" <OWL_DATATYPEPROPERTY> ">" | ElementList() "/>")
+}
+
 void OwlDisjointWith() #OwlDisjointWith : {}
 {
     <OWL_DISJOINTWITH> AttributeList() 
@@ -322,12 +371,30 @@ void OwlEquivalentClass() #OwlEquivalentClass : {}
 	(">" ElementList() "</" <OWL_EQUIVALENTCLASS> ">" | ElementList() "/>")
 }
 
+void OwlFunctionalProperty() #OwlFunctionalProperty : {}
+{
+    <OWL_FUNCTIONALPROPERTY> AttributeList() 
+	(">" ElementList() "</" <OWL_FUNCTIONALPROPERTY> ">" | ElementList() "/>")
+}
+
+void OwlInverseOf () #OwlInverseOf  : {}
+{
+    <OWL_INVERSEOF> AttributeList() 
+	(">" ElementList() "</" <OWL_INVERSEOF> ">" | ElementList() "/>")
+}
+
 void OwlObjectProperty () #OwlObjectProperty  : {}
 {
     <OWL_OBJECTPROPERTY> AttributeList() 
 	(">" ElementList() "</" <OWL_OBJECTPROPERTY> ">" | ElementList() "/>")
 }
 
+void OwlOneOf () #OwlOneOf  : {}
+{
+    <OWL_ONEOF> AttributeList() 
+	(">" ElementList() "</" <OWL_ONEOF> ">" | ElementList() "/>")
+}
+
 void OwlOnProperty () #OwlOnProperty  : {}
 {
     <OWL_ONPROPERTY> AttributeList() 
@@ -346,16 +413,38 @@ void OwlRestriction () #OwlRestriction  : {}
 	(">" ElementList() "</" <OWL_RESTRICTION> ">" | ElementList() "/>")
 }
 
+void OwlUnionOf () #OwlUnionOf  : {}
+{
+    <OWL_UNIONOF> AttributeList() 
+	(">" ElementList() "</" <OWL_UNIONOF> ">" | ElementList() "/>")
+}
+
 void RdfElement() : {}
 {
-    RdfsSubClassOf()
+    RdfType()
+	| RdfFirst()
+	| RdfRest()
+	| RdfsSubClassOf()
 	| RdfsDomain()
+	| RdfsRange()
 }
 
-void RdfsSubClassOf() #RdfsSubClassOf : {}
+void RdfType() #RdfType : {}
 {
-    <RDFS_SUBCLASSOF> AttributeList() 
-	(">" ElementList() "</" <RDFS_SUBCLASSOF> ">" | ElementList() "/>")
+    <RDF_TYPE> AttributeList() 
+	(">" ElementList() "</" <RDF_TYPE> ">" | ElementList() "/>")
+}
+
+void RdfFirst() #RdfFirst : {}
+{
+    <RDF_FIRST> AttributeList() 
+	(">" ElementList() "</" <RDF_FIRST> ">" | ElementList() "/>")
+}
+
+void RdfRest() #RdfRest : {}
+{
+    <RDF_REST> AttributeList() 
+	(">" ElementList() "</" <RDF_REST> ">" | ElementList() "/>")
 }
 
 void RdfsDomain() #RdfsDomain : {}
@@ -364,6 +453,18 @@ void RdfsDomain() #RdfsDomain : {}
 	(">" ElementList() "</" <RDFS_DOMAIN> ">" | ElementList() "/>")
 }
 
+void RdfsRange() #RdfsRange : {}
+{
+    <RDFS_RANGE> AttributeList() 
+	(">" ElementList() "</" <RDFS_RANGE> ">" | ElementList() "/>")
+}
+
+void RdfsSubClassOf() #RdfsSubClassOf : {}
+{
+    <RDFS_SUBCLASSOF> AttributeList() 
+	(">" ElementList() "</" <RDFS_SUBCLASSOF> ">" | ElementList() "/>")
+}
+
 void AttributeList() #List : {}
 {
     (Attribute())*
@@ -385,7 +486,9 @@ void Version() #Version : {}
 void RdfAttribute() : {}
 {
     RdfAbout()
+	| RdfDatatype()
 	| RdfId()
+	| RdfParseType()
 	| RdfResource()
 }
 
@@ -394,12 +497,22 @@ void RdfAbout() #RdfAbout : {}
     <RDF_ABOUT> <ASSIGN> Value()
 }
 
+void RdfDatatype() #RdfDatatype : {}
+{
+    <RDF_DATATYPE> <ASSIGN> Value()
+}
+
 void RdfId() #RdfId : {}
 {
     <RDF_ID> <ASSIGN> Value()
 }
 
-void RdfResource() #RdfId : {}
+void RdfParseType() #RdfParseType : {}
+{
+    <RDF_PARSETYPE> <ASSIGN> Value()
+}
+
+void RdfResource() #RdfResource : {}
 {
     <RDF_RESOURCE> <ASSIGN> Value()
 }