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>
