http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-core/testing/ontology/owl/Wine/food.owl
----------------------------------------------------------------------
diff --git a/jena-core/testing/ontology/owl/Wine/food.owl 
b/jena-core/testing/ontology/owl/Wine/food.owl
index 7699226..04f6825 100644
--- a/jena-core/testing/ontology/owl/Wine/food.owl
+++ b/jena-core/testing/ontology/owl/Wine/food.owl
@@ -1,1350 +1,1350 @@
-<?xml version="1.0"?>
-<!DOCTYPE rdf:RDF [
-     <!ENTITY vin  "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"; >
-     <!ENTITY food "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#"; >
-     <!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#"; >
-   ]>
-
-<rdf:RDF
-  xmlns     = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#";
-  xmlns:food= "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#";
-  xml:base  = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#";
-  xmlns:vin = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#";
-  xmlns:owl = "http://www.w3.org/2002/07/owl#";
-  xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
-  xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#";>
-
-  <owl:Ontology rdf:about="">
-    <rdfs:comment>
-      Derived from the DAML Wine ontology at 
-      http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
-      Substantially modified.
-    </rdfs:comment>
-    <owl:imports 
rdf:resource="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine"/>
-  </owl:Ontology>
-
-  <owl:Class rdf:ID="ConsumableThing" />
-
-  <owl:Class rdf:ID="NonConsumableThing">
-    <owl:complementOf rdf:resource="#ConsumableThing" />
-  </owl:Class>
-
-  <owl:Class rdf:ID="EdibleThing">
-    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PotableLiquid">
-    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
-    <owl:disjointWith rdf:resource="#EdibleThing" />
-  </owl:Class>
-  
-  <!-- One goal of these example ontologies was that they
-       be in the OWL DL subset.  We made wine and food
-       mutually import one another, because food shares
-       many of the wine properties.
-       Rather than that, we could have used the following
-       assertion for all of the shared concepts:
-
-        <owl:Class rdf:ID="&vin;Wine"/>
-
-       The reason for this is that in DL all referenced 
-       elements must have a type.
-  -->
-
-  <owl:Class rdf:ID="Wine">
-    <owl:equivalentClass rdf:resource="&vin;Wine"/>
-  </owl:Class>
-
-  <owl:ObjectProperty rdf:ID="madeFromFruit">
-    <rdfs:domain rdf:resource="#ConsumableThing" />
-    <rdfs:range rdf:resource="#Fruit" />
-  </owl:ObjectProperty>
-
-  <owl:Class rdf:ID="Juice">
-    <rdfs:subClassOf rdf:resource="#PotableLiquid" />
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#madeFromFruit" />
-       <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-
-  <owl:ObjectProperty rdf:ID="hasDrink">
-    <rdfs:domain rdf:resource="#MealCourse" />
-    <rdfs:range rdf:resource="#PotableLiquid" />
-  </owl:ObjectProperty>
-  
-  <owl:Thing rdf:ID="White">
-    <owl:sameAs rdf:resource="&vin;White"/>
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Rose">
-    <owl:sameAs rdf:resource="&vin;Rose" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Red">
-    <owl:sameAs rdf:resource="&vin;Red" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Sweet">
-    <owl:sameAs rdf:resource="&vin;Sweet" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="OffDry">
-    <owl:sameAs rdf:resource="&vin;OffDry" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Dry">
-    <owl:sameAs rdf:resource="&vin;Dry" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Delicate">
-    <owl:sameAs rdf:resource="&vin;Delicate" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Moderate">
-    <owl:sameAs rdf:resource="&vin;Moderate" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Strong">
-    <owl:sameAs rdf:resource="&vin;Strong" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Light">
-    <owl:sameAs rdf:resource="&vin;Light" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Medium">
-    <owl:sameAs rdf:resource="&vin;Medium" />
-  </owl:Thing>
-
-  <owl:Thing rdf:ID="Full">
-    <owl:sameAs rdf:resource="&vin;Full" />
-  </owl:Thing>
-
-  <owl:ObjectProperty rdf:ID="course">
-    <rdfs:domain rdf:resource="#Meal" />
-    <rdfs:range rdf:resource="#MealCourse" />
-  </owl:ObjectProperty>
-  
-  <owl:Class rdf:ID="Grape">
-    <rdfs:subClassOf rdf:resource="#SweetFruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Pasta">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#Meat" />
-    <owl:disjointWith rdf:resource="#Fowl" />
-    <owl:disjointWith rdf:resource="#Seafood" />
-    <owl:disjointWith rdf:resource="#Dessert" />
-    <owl:disjointWith rdf:resource="#Fruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithWhiteSauce">
-    <rdfs:subClassOf rdf:resource="#Pasta" />
-    <owl:disjointWith rdf:resource="#PastaWithRedSauce" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithSpicyRedSauceCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#PastaWithSpicyRedSauce" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Full" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Strong" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithSpicyRedSauce">
-    <rdfs:subClassOf rdf:resource="#PastaWithRedSauce" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithRedSauce">
-    <rdfs:subClassOf rdf:resource="#Pasta" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithNonSpicyRedSauceCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#PastaWithNonSpicyRedSauce" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithNonSpicyRedSauce">
-    <rdfs:subClassOf rdf:resource="#PastaWithRedSauce" />
-    <owl:disjointWith rdf:resource="#PastaWithSpicyRedSauce" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithLightCreamSauce">
-    <rdfs:subClassOf rdf:resource="#PastaWithWhiteSauce" />
-    <owl:disjointWith rdf:resource="#PastaWithHeavyCreamSauce" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithLightCreamCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#PastaWithLightCreamSauce" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Light" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Delicate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithHeavyCreamSauce">
-    <rdfs:subClassOf rdf:resource="#PastaWithWhiteSauce" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="PastaWithHeavyCreamCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#PastaWithHeavyCreamSauce" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="OysterShellfishCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#OysterShellfish" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Sweet" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="OysterShellfish">
-    <rdfs:subClassOf rdf:resource="#Shellfish" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="OtherTomatoBasedFoodCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#OtherTomatoBasedFood" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="OtherTomatoBasedFood">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#Pasta" />
-    <owl:disjointWith rdf:resource="#Meat" />
-    <owl:disjointWith rdf:resource="#Fowl" />
-    <owl:disjointWith rdf:resource="#Seafood" />
-    <owl:disjointWith rdf:resource="#Dessert" />
-    <owl:disjointWith rdf:resource="#Fruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonSweetFruitCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#NonSweetFruit" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Delicate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#OffDry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="SweetFruitCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#SweetFruit" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Sweet" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <!-- changed so that Fruit can be unionOf 
-  <owl:Class rdf:ID="NonSweetFruit">
-    <rdfs:subClassOf rdf:resource="#Fruit" />
-    <owl:disjointWith rdf:resource="#SweetFruit" />
-  </owl:Class>
-  -->
-  
-  <owl:Class rdf:ID="NonSweetFruit">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#SweetFruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonSpicyRedMeatCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#NonSpicyRedMeat" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:allValuesFrom>
-              <owl:Class>
-                <owl:oneOf rdf:parseType="Collection">
-                  <owl:Thing rdf:about="#Strong" />
-                  <owl:Thing rdf:about="#Moderate" />
-                </owl:oneOf>
-              </owl:Class>
-            </owl:allValuesFrom>
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonSpicyRedMeat">
-    <rdfs:subClassOf rdf:resource="#RedMeat" />
-    <owl:disjointWith rdf:resource="#SpicyRedMeat" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonRedMeatCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#NonRedMeat" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Strong" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonRedMeat">
-    <rdfs:subClassOf rdf:resource="#Meat" />
-    <owl:disjointWith rdf:resource="#RedMeat" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonOysterShellfishCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#NonOysterShellfish" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonOysterShellfish">
-    <rdfs:subClassOf rdf:resource="#Shellfish" />
-    <owl:disjointWith rdf:resource="#OysterShellfish" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonBlandFishCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#NonBlandFish" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="NonBlandFish">
-    <rdfs:subClassOf rdf:resource="#Fish" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Meat">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#Fowl" />
-    <owl:disjointWith rdf:resource="#Seafood" />
-    <owl:disjointWith rdf:resource="#Dessert" />
-    <owl:disjointWith rdf:resource="#Fruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="MealCourse">
-    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom rdf:resource="#Wine" />
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <owl:disjointWith rdf:resource="#PotableLiquid" />
-    <owl:disjointWith rdf:resource="#EdibleThing" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Meal">
-    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#course" />
-        <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#course" />
-        <owl:allValuesFrom rdf:resource="#MealCourse" />
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <owl:disjointWith rdf:resource="#MealCourse" />
-    <owl:disjointWith rdf:resource="#PotableLiquid" />
-    <owl:disjointWith rdf:resource="#EdibleThing" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="LightMeatFowlCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#LightMeatFowl" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="LightMeatFowl">
-    <rdfs:subClassOf rdf:resource="#Fowl" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="FruitCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#Fruit" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <!--- Replaced so that we have a unionOf construct
-        Aug 20 02 MKS, suggestion by R. Volz.  
-
-  <owl:Class rdf:ID="Fruit">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-  </owl:Class>
-
-  --> 
-  
-  <owl:Class rdf:ID="Fruit">
-    <owl:unionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#SweetFruit" />
-      <owl:Class rdf:about="#NonSweetFruit" />
-    </owl:unionOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Fowl">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#Seafood" />
-    <owl:disjointWith rdf:resource="#Dessert" />
-    <owl:disjointWith rdf:resource="#Fruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="FishCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#Fish" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Medium" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="DessertCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#Dessert" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Full" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Strong" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Sweet" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Dessert">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#Fruit" />
-  </owl:Class>
-  
-  <!-- changed so that Fruit can be unionOf 
-  <owl:Class rdf:ID="SweetFruit">
-    <rdfs:subClassOf rdf:resource="#Fruit" />
-  </owl:Class>
-  -->
-  <owl:Class rdf:ID="SweetFruit">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="SweetDessertCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#SweetDessert" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="SweetDessert">
-    <rdfs:subClassOf rdf:resource="#Dessert" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="DarkMeatFowlCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#DarkMeatFowl" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Light" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Delicate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="DarkMeatFowl">
-    <rdfs:subClassOf rdf:resource="#Fowl" />
-    <owl:disjointWith rdf:resource="#LightMeatFowl" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="CheeseNutsDessertCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#CheeseNutsDessert" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="CheeseNutsDessert">
-    <rdfs:subClassOf rdf:resource="#Dessert" />
-    <owl:disjointWith rdf:resource="#SweetDessert" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="BlandFishCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#BlandFish" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Delicate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="BlandFish">
-    <rdfs:subClassOf rdf:resource="#Fish" />
-    <owl:disjointWith rdf:resource="#NonBlandFish" />
-  </owl:Class>
-  
-  <owl:ObjectProperty rdf:ID="hasFood">
-    <rdfs:domain rdf:resource="#MealCourse" />
-    <rdfs:range rdf:resource="#EdibleThing" />
-  </owl:ObjectProperty>
-  
-  <owl:Class rdf:ID="Fish">
-    <rdfs:subClassOf rdf:resource="#Seafood" />
-    <owl:disjointWith rdf:resource="#Shellfish" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="SpicyRedMeat">
-    <rdfs:subClassOf rdf:resource="#RedMeat" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="ShellfishCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#Shellfish" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:allValuesFrom>
-              <owl:Class>
-                <owl:oneOf rdf:parseType="Collection">
-                  <owl:Thing rdf:about="#Moderate" />
-                  <owl:Thing rdf:about="#Strong" />
-                </owl:oneOf>
-              </owl:Class>
-            </owl:allValuesFrom>
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Full" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Shellfish">
-    <rdfs:subClassOf rdf:resource="#Seafood" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="SeafoodCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#Seafood" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#White" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="Seafood">
-    <rdfs:subClassOf rdf:resource="#EdibleThing" />
-    <owl:disjointWith rdf:resource="#Dessert" />
-    <owl:disjointWith rdf:resource="#Fruit" />
-  </owl:Class>
-  
-  <owl:Class rdf:ID="RedMeatCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#RedMeat" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <owl:Class rdf:ID="RedMeat">
-    <rdfs:subClassOf rdf:resource="#Meat" />
-  </owl:Class>
-  
-  <SweetDessert rdf:ID="Cake" />
-  
-  <SweetFruit rdf:ID="Bananas" />
-  
-  <SweetFruit rdf:ID="MixedFruit" />
-  
-  <NonOysterShellfish rdf:ID="Mussels" />
-  
-  <CheeseNutsDessert rdf:ID="Nuts" />
-  
-  <OysterShellfish rdf:ID="Oysters" />
-  
-  <PastaWithLightCreamSauce rdf:ID="PastaWithWhiteClamSauce" />
-  
-  <SweetFruit rdf:ID="Peaches" />
-  
-  <SweetDessert rdf:ID="Pie" />
-  
-  <OtherTomatoBasedFood rdf:ID="Pizza" />
-  
-  <NonRedMeat rdf:ID="Pork" />
-  
-  <NonSpicyRedMeat rdf:ID="RoastBeef" />
-  
-  <BlandFish rdf:ID="Scrod" />
-  
-  <PastaWithNonSpicyRedSauce rdf:ID="SpaghettiWithTomatoSauce" />
-  
-  <NonSpicyRedMeat rdf:ID="Steak" />
-  
-  <NonBlandFish rdf:ID="Swordfish" />
-  
-  <EatingGrape rdf:ID="ThompsonSeedless" />
-  
-  <owl:Class rdf:ID="EatingGrape">
-    <rdfs:subClassOf rdf:resource="#Grape" />
-  </owl:Class>
-
-  <NonBlandFish rdf:ID="Tuna" />
-  
-  <LightMeatFowl rdf:ID="Turkey" />
-  
-  <NonSpicyRedMeat rdf:ID="Veal" />
-  
-  <owl:Class rdf:ID="SpicyRedMeatCourse">
-    <owl:intersectionOf rdf:parseType="Collection">
-      <owl:Class rdf:about="#MealCourse" />
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasFood" />
-        <owl:allValuesFrom rdf:resource="#SpicyRedMeat" />
-      </owl:Restriction>
-    </owl:intersectionOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasColor" />
-            <owl:hasValue rdf:resource="#Red" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasBody" />
-            <owl:hasValue rdf:resource="#Full" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasFlavor" />
-            <owl:hasValue rdf:resource="#Moderate" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-    <rdfs:subClassOf>
-      <owl:Restriction>
-        <owl:onProperty rdf:resource="#hasDrink" />
-        <owl:allValuesFrom>
-          <owl:Restriction>
-            <owl:onProperty rdf:resource="&vin;hasSugar" />
-            <owl:hasValue rdf:resource="#Dry" />
-          </owl:Restriction>
-        </owl:allValuesFrom>
-      </owl:Restriction>
-    </rdfs:subClassOf>
-  </owl:Class>
-  
-  <SpicyRedMeat rdf:ID="BeefCurry" />
-  
-  <LightMeatFowl rdf:ID="Chicken" />
-  
-  <NonOysterShellfish rdf:ID="Clams" />
-  
-  <DarkMeatFowl rdf:ID="Duck" />
-  
-  <SpicyRedMeat rdf:ID="GarlickyRoast" />
-  
-  <DarkMeatFowl rdf:ID="Goose" />
-  
-  <BlandFish rdf:ID="Halibut" />
-  
-  <NonOysterShellfish rdf:ID="Crab" />
-  
-  <BlandFish rdf:ID="Flounder" />
-  
-  <NonOysterShellfish rdf:ID="Lobster" />
-  
-  <PastaWithHeavyCreamSauce rdf:ID="FettucineAlfRedo" />
-  
-  <PastaWithSpicyRedSauce rdf:ID="FraDiavolo" />
-  
-  <CheeseNutsDessert rdf:ID="Cheese" />
-  
-</rdf:RDF>
+<?xml version="1.0"?>
+<!DOCTYPE rdf:RDF [
+     <!ENTITY vin  "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"; >
+     <!ENTITY food "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#"; >
+     <!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#"; >
+   ]>
+
+<rdf:RDF
+  xmlns     = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#";
+  xmlns:food= "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#";
+  xml:base  = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#";
+  xmlns:vin = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#";
+  xmlns:owl = "http://www.w3.org/2002/07/owl#";
+  xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+  xmlns:rdfs= "http://www.w3.org/2000/01/rdf-schema#";>
+
+  <owl:Ontology rdf:about="">
+    <rdfs:comment>
+      Derived from the DAML Wine ontology at 
+      http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
+      Substantially modified.
+    </rdfs:comment>
+    <owl:imports 
rdf:resource="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine"/>
+  </owl:Ontology>
+
+  <owl:Class rdf:ID="ConsumableThing" />
+
+  <owl:Class rdf:ID="NonConsumableThing">
+    <owl:complementOf rdf:resource="#ConsumableThing" />
+  </owl:Class>
+
+  <owl:Class rdf:ID="EdibleThing">
+    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PotableLiquid">
+    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
+    <owl:disjointWith rdf:resource="#EdibleThing" />
+  </owl:Class>
+  
+  <!-- One goal of these example ontologies was that they
+       be in the OWL DL subset.  We made wine and food
+       mutually import one another, because food shares
+       many of the wine properties.
+       Rather than that, we could have used the following
+       assertion for all of the shared concepts:
+
+        <owl:Class rdf:ID="&vin;Wine"/>
+
+       The reason for this is that in DL all referenced 
+       elements must have a type.
+  -->
+
+  <owl:Class rdf:ID="Wine">
+    <owl:equivalentClass rdf:resource="&vin;Wine"/>
+  </owl:Class>
+
+  <owl:ObjectProperty rdf:ID="madeFromFruit">
+    <rdfs:domain rdf:resource="#ConsumableThing" />
+    <rdfs:range rdf:resource="#Fruit" />
+  </owl:ObjectProperty>
+
+  <owl:Class rdf:ID="Juice">
+    <rdfs:subClassOf rdf:resource="#PotableLiquid" />
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#madeFromFruit" />
+       <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+
+  <owl:ObjectProperty rdf:ID="hasDrink">
+    <rdfs:domain rdf:resource="#MealCourse" />
+    <rdfs:range rdf:resource="#PotableLiquid" />
+  </owl:ObjectProperty>
+  
+  <owl:Thing rdf:ID="White">
+    <owl:sameAs rdf:resource="&vin;White"/>
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Rose">
+    <owl:sameAs rdf:resource="&vin;Rose" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Red">
+    <owl:sameAs rdf:resource="&vin;Red" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Sweet">
+    <owl:sameAs rdf:resource="&vin;Sweet" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="OffDry">
+    <owl:sameAs rdf:resource="&vin;OffDry" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Dry">
+    <owl:sameAs rdf:resource="&vin;Dry" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Delicate">
+    <owl:sameAs rdf:resource="&vin;Delicate" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Moderate">
+    <owl:sameAs rdf:resource="&vin;Moderate" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Strong">
+    <owl:sameAs rdf:resource="&vin;Strong" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Light">
+    <owl:sameAs rdf:resource="&vin;Light" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Medium">
+    <owl:sameAs rdf:resource="&vin;Medium" />
+  </owl:Thing>
+
+  <owl:Thing rdf:ID="Full">
+    <owl:sameAs rdf:resource="&vin;Full" />
+  </owl:Thing>
+
+  <owl:ObjectProperty rdf:ID="course">
+    <rdfs:domain rdf:resource="#Meal" />
+    <rdfs:range rdf:resource="#MealCourse" />
+  </owl:ObjectProperty>
+  
+  <owl:Class rdf:ID="Grape">
+    <rdfs:subClassOf rdf:resource="#SweetFruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Pasta">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#Meat" />
+    <owl:disjointWith rdf:resource="#Fowl" />
+    <owl:disjointWith rdf:resource="#Seafood" />
+    <owl:disjointWith rdf:resource="#Dessert" />
+    <owl:disjointWith rdf:resource="#Fruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithWhiteSauce">
+    <rdfs:subClassOf rdf:resource="#Pasta" />
+    <owl:disjointWith rdf:resource="#PastaWithRedSauce" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithSpicyRedSauceCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#PastaWithSpicyRedSauce" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Full" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Strong" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithSpicyRedSauce">
+    <rdfs:subClassOf rdf:resource="#PastaWithRedSauce" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithRedSauce">
+    <rdfs:subClassOf rdf:resource="#Pasta" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithNonSpicyRedSauceCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#PastaWithNonSpicyRedSauce" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Moderate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithNonSpicyRedSauce">
+    <rdfs:subClassOf rdf:resource="#PastaWithRedSauce" />
+    <owl:disjointWith rdf:resource="#PastaWithSpicyRedSauce" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithLightCreamSauce">
+    <rdfs:subClassOf rdf:resource="#PastaWithWhiteSauce" />
+    <owl:disjointWith rdf:resource="#PastaWithHeavyCreamSauce" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithLightCreamCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#PastaWithLightCreamSauce" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Light" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Delicate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithHeavyCreamSauce">
+    <rdfs:subClassOf rdf:resource="#PastaWithWhiteSauce" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="PastaWithHeavyCreamCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#PastaWithHeavyCreamSauce" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Moderate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="OysterShellfishCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#OysterShellfish" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Sweet" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="OysterShellfish">
+    <rdfs:subClassOf rdf:resource="#Shellfish" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="OtherTomatoBasedFoodCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#OtherTomatoBasedFood" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Moderate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="OtherTomatoBasedFood">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#Pasta" />
+    <owl:disjointWith rdf:resource="#Meat" />
+    <owl:disjointWith rdf:resource="#Fowl" />
+    <owl:disjointWith rdf:resource="#Seafood" />
+    <owl:disjointWith rdf:resource="#Dessert" />
+    <owl:disjointWith rdf:resource="#Fruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonSweetFruitCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#NonSweetFruit" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Delicate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#OffDry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SweetFruitCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#SweetFruit" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Moderate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Sweet" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <!-- changed so that Fruit can be unionOf 
+  <owl:Class rdf:ID="NonSweetFruit">
+    <rdfs:subClassOf rdf:resource="#Fruit" />
+    <owl:disjointWith rdf:resource="#SweetFruit" />
+  </owl:Class>
+  -->
+  
+  <owl:Class rdf:ID="NonSweetFruit">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#SweetFruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonSpicyRedMeatCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#NonSpicyRedMeat" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:allValuesFrom>
+              <owl:Class>
+                <owl:oneOf rdf:parseType="Collection">
+                  <owl:Thing rdf:about="#Strong" />
+                  <owl:Thing rdf:about="#Moderate" />
+                </owl:oneOf>
+              </owl:Class>
+            </owl:allValuesFrom>
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonSpicyRedMeat">
+    <rdfs:subClassOf rdf:resource="#RedMeat" />
+    <owl:disjointWith rdf:resource="#SpicyRedMeat" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonRedMeatCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#NonRedMeat" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Strong" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonRedMeat">
+    <rdfs:subClassOf rdf:resource="#Meat" />
+    <owl:disjointWith rdf:resource="#RedMeat" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonOysterShellfishCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#NonOysterShellfish" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonOysterShellfish">
+    <rdfs:subClassOf rdf:resource="#Shellfish" />
+    <owl:disjointWith rdf:resource="#OysterShellfish" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonBlandFishCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#NonBlandFish" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Moderate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="NonBlandFish">
+    <rdfs:subClassOf rdf:resource="#Fish" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Meat">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#Fowl" />
+    <owl:disjointWith rdf:resource="#Seafood" />
+    <owl:disjointWith rdf:resource="#Dessert" />
+    <owl:disjointWith rdf:resource="#Fruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="MealCourse">
+    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom rdf:resource="#Wine" />
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#PotableLiquid" />
+    <owl:disjointWith rdf:resource="#EdibleThing" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Meal">
+    <rdfs:subClassOf rdf:resource="#ConsumableThing" />
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#course" />
+        <owl:minCardinality 
rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#course" />
+        <owl:allValuesFrom rdf:resource="#MealCourse" />
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <owl:disjointWith rdf:resource="#MealCourse" />
+    <owl:disjointWith rdf:resource="#PotableLiquid" />
+    <owl:disjointWith rdf:resource="#EdibleThing" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="LightMeatFowlCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#LightMeatFowl" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Moderate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="LightMeatFowl">
+    <rdfs:subClassOf rdf:resource="#Fowl" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="FruitCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#Fruit" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <!--- Replaced so that we have a unionOf construct
+        Aug 20 02 MKS, suggestion by R. Volz.  
+
+  <owl:Class rdf:ID="Fruit">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+  </owl:Class>
+
+  --> 
+  
+  <owl:Class rdf:ID="Fruit">
+    <owl:unionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#SweetFruit" />
+      <owl:Class rdf:about="#NonSweetFruit" />
+    </owl:unionOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Fowl">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#Seafood" />
+    <owl:disjointWith rdf:resource="#Dessert" />
+    <owl:disjointWith rdf:resource="#Fruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="FishCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#Fish" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Medium" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DessertCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#Dessert" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Full" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Strong" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Sweet" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Dessert">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#Fruit" />
+  </owl:Class>
+  
+  <!-- changed so that Fruit can be unionOf 
+  <owl:Class rdf:ID="SweetFruit">
+    <rdfs:subClassOf rdf:resource="#Fruit" />
+  </owl:Class>
+  -->
+  <owl:Class rdf:ID="SweetFruit">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SweetDessertCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#SweetDessert" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SweetDessert">
+    <rdfs:subClassOf rdf:resource="#Dessert" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DarkMeatFowlCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#DarkMeatFowl" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Light" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Delicate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasSugar" />
+            <owl:hasValue rdf:resource="#Dry" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="DarkMeatFowl">
+    <rdfs:subClassOf rdf:resource="#Fowl" />
+    <owl:disjointWith rdf:resource="#LightMeatFowl" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="CheeseNutsDessertCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#CheeseNutsDessert" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="CheeseNutsDessert">
+    <rdfs:subClassOf rdf:resource="#Dessert" />
+    <owl:disjointWith rdf:resource="#SweetDessert" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="BlandFishCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#BlandFish" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:hasValue rdf:resource="#Delicate" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="BlandFish">
+    <rdfs:subClassOf rdf:resource="#Fish" />
+    <owl:disjointWith rdf:resource="#NonBlandFish" />
+  </owl:Class>
+  
+  <owl:ObjectProperty rdf:ID="hasFood">
+    <rdfs:domain rdf:resource="#MealCourse" />
+    <rdfs:range rdf:resource="#EdibleThing" />
+  </owl:ObjectProperty>
+  
+  <owl:Class rdf:ID="Fish">
+    <rdfs:subClassOf rdf:resource="#Seafood" />
+    <owl:disjointWith rdf:resource="#Shellfish" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SpicyRedMeat">
+    <rdfs:subClassOf rdf:resource="#RedMeat" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="ShellfishCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#Shellfish" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasFlavor" />
+            <owl:allValuesFrom>
+              <owl:Class>
+                <owl:oneOf rdf:parseType="Collection">
+                  <owl:Thing rdf:about="#Moderate" />
+                  <owl:Thing rdf:about="#Strong" />
+                </owl:oneOf>
+              </owl:Class>
+            </owl:allValuesFrom>
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasBody" />
+            <owl:hasValue rdf:resource="#Full" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Shellfish">
+    <rdfs:subClassOf rdf:resource="#Seafood" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="SeafoodCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#Seafood" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#White" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="Seafood">
+    <rdfs:subClassOf rdf:resource="#EdibleThing" />
+    <owl:disjointWith rdf:resource="#Dessert" />
+    <owl:disjointWith rdf:resource="#Fruit" />
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RedMeatCourse">
+    <owl:intersectionOf rdf:parseType="Collection">
+      <owl:Class rdf:about="#MealCourse" />
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasFood" />
+        <owl:allValuesFrom rdf:resource="#RedMeat" />
+      </owl:Restriction>
+    </owl:intersectionOf>
+    <rdfs:subClassOf>
+      <owl:Restriction>
+        <owl:onProperty rdf:resource="#hasDrink" />
+        <owl:allValuesFrom>
+          <owl:Restriction>
+            <owl:onProperty rdf:resource="&vin;hasColor" />
+            <owl:hasValue rdf:resource="#Red" />
+          </owl:Restriction>
+        </owl:allValuesFrom>
+      </owl:Restriction>
+    </rdfs:subClassOf>
+  </owl:Class>
+  
+  <owl:Class rdf:ID="RedMeat">
+    <rdfs:subClassOf rdf:resource="#Meat" />
+  </owl:Class>
+  
+  <SweetDessert rdf:ID="Cake" />
+  
+  <SweetFruit rdf:ID="Bananas" />
+  
+  <SweetFruit rdf:ID="MixedFruit" />
+  
+  <NonOysterShellfish rdf:ID="Mussels" />
+  
+  <CheeseNutsDessert rdf:ID="Nuts" />
+  
+  <OysterShellfish rdf:ID="Oysters" />
+  
+  <PastaWithLightCreamSauce rdf:ID="PastaWithWhiteClamSauce" />
+  
+  <SweetFruit rdf:ID="Peaches" />
+  
+  <SweetDessert rdf:ID="Pie" />
+  
+  <OtherTomatoBasedFood rdf:ID="Pizza" />
+  
+  <NonRedMeat rdf:ID="Pork" />
+  
+  <NonSpicyRedMeat rdf:ID="RoastBeef" />
+  
+  <BlandFish rdf:ID="Scrod" />
+  
+  <PastaWithNonSpicyRedSauce rdf:ID="SpaghettiWit

<TRUNCATED>

Reply via email to