You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/05/14 14:03:26 UTC

[27/42] jena git commit: Merge commit 'refs/pull/143/head' of github.com:apache/jena

http://git-wip-us.apache.org/repos/asf/jena/blob/4b5cd267/jena-core/testing/ontology/owl/Wine/food.owl
----------------------------------------------------------------------
diff --cc jena-core/testing/ontology/owl/Wine/food.owl
index 04f6825,04f6825..7699226
--- a/jena-core/testing/ontology/owl/Wine/food.owl
+++ b/jena-core/testing/ontology/owl/Wine/food.owl
@@@ -1,1350 -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:

<TRUNCATED>