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