<?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 owl  "http://www.w3.org/2002/07/owl#" >
     <!ENTITY xsd  "http://www.w3.org/2001/XMLSchema#" >
   ]>

<rdf:RDF
  xmlns     = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"
  xmlns:vin = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"
  xml:base  = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#"
  xmlns:food= "http://www.w3.org/TR/2003/CR-owl-guide-20030818/food#"
  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#"
  xmlns:xsd = "http://www.w3.org/2001/XMLSchema#">

  <owl:Ontology rdf:about="">
    <rdfs:comment>An example OWL ontology</rdfs:comment>
    <owl:priorVersion>
      <owl:Ontology rdf:about="http://www.w3.org/TR/2003/WD-owl-guide-20030331/wine"/>
    </owl:priorVersion>
    <owl:imports rdf:resource="http://www.w3.org/TR/2003/CR-owl-guide-20030818/food"/>
    <rdfs:comment>Derived from the DAML Wine ontology at 
      http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml
      Substantially changed, in particular the Region based relations.
    </rdfs:comment>
    <rdfs:label>Wine Ontology</rdfs:label>
  </owl:Ontology>
  
  <owl:Class rdf:ID="Wine">
    <rdfs:subClassOf rdf:resource="&food;PotableLiquid" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasMaker" />
	<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasMaker" />
	<owl:allValuesFrom rdf:resource="#Winery" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
 	<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn"/> 
        <owl:someValuesFrom rdf:resource="&vin;Region"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:label xml:lang="en">wine</rdfs:label>
    <rdfs:label xml:lang="fr">vin</rdfs:label>
  </owl:Class>
  
  <owl:Class rdf:ID="Vintage">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasVintageYear"/>  
        <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>

  <owl:Class rdf:ID="WineGrape">
    <rdfs:subClassOf rdf:resource="&food;Grape" />
  </owl:Class>
  
  <owl:Class rdf:ID="WhiteWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WhiteTableWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#TableWine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WhiteNonSweetWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#WhiteWine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Dry" />
              <owl:Thing rdf:about="#OffDry" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WhiteLoire">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Loire" />
      <owl:Class rdf:about="#WhiteWine" />
    </owl:intersectionOf>
  </owl:Class>

  <owl:Class rdf:about="#WhiteLoire">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#CheninBlancGrape" />
              <owl:Thing rdf:about="#PinotBlancGrape" />
              <owl:Thing rdf:about="#SauvignonBlancGrape" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WhiteBurgundy">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Burgundy" />
      <owl:Class rdf:about="#WhiteWine" />
    </owl:intersectionOf>
  </owl:Class>

  <owl:Class rdf:about="#WhiteBurgundy">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#ChardonnayGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WhiteBordeaux">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Bordeaux" />
      <owl:Class rdf:about="#WhiteWine" />
    </owl:intersectionOf>
  </owl:Class>

  <owl:Class rdf:about="#WhiteBordeaux">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#SemillonGrape" />
              <owl:Thing rdf:about="#SauvignonBlancGrape" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Region" />

  <owl:ObjectProperty rdf:ID="locatedIn">
    <rdf:type rdf:resource="&owl;TransitiveProperty" />
    <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
    <rdfs:range rdf:resource="#Region" />
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="adjacentRegion">
    <rdf:type rdf:resource="&owl;SymmetricProperty" />
    <rdfs:domain rdf:resource="#Region" />
    <rdfs:range rdf:resource="#Region" />
  </owl:ObjectProperty>
  
  <owl:Class rdf:ID="VintageYear" />

  <owl:DatatypeProperty rdf:ID="yearValue">
    <rdfs:domain rdf:resource="#VintageYear" />    
    <rdfs:range  rdf:resource="&xsd;positiveInteger" />
  </owl:DatatypeProperty>
  
  <VintageYear rdf:ID="Year1998">
    <yearValue rdf:datatype="&xsd;positiveInteger">1998</yearValue>
  </VintageYear>

  <owl:ObjectProperty rdf:ID="hasVintageYear">
    <rdf:type rdf:resource="&owl;FunctionalProperty" />
    <rdfs:domain rdf:resource="#Vintage" />
    <rdfs:range  rdf:resource="#VintageYear" />
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="madeFromGrape">
    <rdfs:subPropertyOf rdf:resource="&food;madeFromFruit" />
    <rdfs:domain rdf:resource="#Wine" />
    <rdfs:range rdf:resource="#WineGrape" />
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="madeIntoWine">
    <owl:inverseOf rdf:resource="#madeFromGrape" />
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasWineDescriptor">
    <rdfs:domain rdf:resource="#Wine" />
    <rdfs:range  rdf:resource="#WineDescriptor" />
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasSugar">
    <rdf:type rdf:resource="&owl;FunctionalProperty" />
    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
    <rdfs:range rdf:resource="#WineSugar" />
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="hasBody">
    <rdf:type rdf:resource="&owl;FunctionalProperty" />
    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
    <rdfs:range rdf:resource="#WineBody" />
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="hasFlavor">
    <rdf:type rdf:resource="&owl;FunctionalProperty" />
    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
    <rdfs:range rdf:resource="#WineFlavor" />
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="hasColor">
    <rdf:type rdf:resource="&owl;FunctionalProperty" />
    <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
    <rdfs:domain rdf:resource="#Wine" />
    <rdfs:range rdf:resource="#WineColor" />
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:ID="hasMaker">
    <rdf:type rdf:resource="&owl;FunctionalProperty" />
  </owl:ObjectProperty>
  
  <owl:ObjectProperty rdf:ID="producesWine">
    <owl:inverseOf rdf:resource="#hasMaker" />
  </owl:ObjectProperty>

  <owl:Class rdf:ID="Zinfandel">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#ZinfandelGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:about="#Zinfandel">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Full" />
              <owl:Thing rdf:about="#Medium" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Winery" />
  
  <owl:Class rdf:ID="WineDescriptor">
    <rdfs:comment>Made WineDescriptor unionType of tastes and color</rdfs:comment>
    <owl:unionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#WineTaste" />
      <owl:Class rdf:about="#WineColor" />
    </owl:unionOf>
  </owl:Class>

  <owl:Class rdf:ID="WineTaste">
    <rdfs:subClassOf rdf:resource="#WineDescriptor" />
  </owl:Class>

  <owl:Class rdf:ID="WineColor">
    <rdfs:subClassOf rdf:resource="#WineDescriptor" />
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="#White" />
      <owl:Thing rdf:about="#Rose" />
      <owl:Thing rdf:about="#Red" />
    </owl:oneOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WineSugar">
    <rdfs:subClassOf rdf:resource="#WineTaste" />
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="#Sweet" />
      <owl:Thing rdf:about="#OffDry" />
      <owl:Thing rdf:about="#Dry" />
    </owl:oneOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WineFlavor">
    <rdfs:subClassOf rdf:resource="#WineTaste" />
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="#Delicate" />
      <owl:Thing rdf:about="#Moderate" />
      <owl:Thing rdf:about="#Strong" />
    </owl:oneOf>
  </owl:Class>
  
  <owl:Class rdf:ID="WineBody">
    <rdfs:subClassOf rdf:resource="#WineTaste" />
    <owl:oneOf rdf:parseType="Collection">
      <owl:Thing rdf:about="#Light" />
      <owl:Thing rdf:about="#Medium" />
      <owl:Thing rdf:about="#Full" />
    </owl:oneOf>
  </owl:Class>
  
  <Region rdf:ID="USRegion" />
  
  <owl:Class rdf:ID="Tours">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Loire" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#ToursRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>

  <owl:Class rdf:about="#Tours">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#CheninBlancGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="TableWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="SweetWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Sweet" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="SweetRiesling">
    <rdfs:subClassOf rdf:resource="#DessertWine" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Full" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Riesling" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Sweet" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="StEmilion">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Strong" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#CabernetSauvignonGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Bordeaux" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#StEmilionRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="SemillonOrSauvignonBlanc">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Medium" />
              <owl:Thing rdf:about="#Full" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#SemillonGrape" />
              <owl:Thing rdf:about="#SauvignonBlancGrape" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Semillon">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#SemillonOrSauvignonBlanc" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#SemillonGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="SauvignonBlanc">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#SemillonOrSauvignonBlanc" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#SauvignonBlancGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Sauterne">
    <rdfs:subClassOf rdf:resource="#LateHarvest" />
    <rdfs:subClassOf rdf:resource="#Bordeaux" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#SauterneRegion" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Medium" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Sancerre">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Medium" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#OffDry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Delicate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#SauvignonBlancGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Loire" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#SancerreRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="RoseWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Rose" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Riesling">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#RieslingGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="RedWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="RedTableWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#TableWine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="RedBurgundy">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#PinotNoirGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Burgundy" />
      <owl:Class rdf:about="#RedWine" />
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="RedBordeaux">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#CabernetSauvignonGrape" />
              <owl:Thing rdf:about="#MerlotGrape" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Bordeaux" />
      <owl:Class rdf:about="#RedWine" />
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Port">
    <rdfs:subClassOf rdf:resource="#RedWine" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#PortugalRegion" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Full" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Strong" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Sweet" />
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="PinotNoir">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#PinotNoirGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="PinotBlanc">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#PinotBlancGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="PetiteSyrah">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Medium" />
              <owl:Thing rdf:about="#Full" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#PetiteSyrahGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Pauillac">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Full" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Strong" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#CabernetSauvignonGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Medoc" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#PauillacRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Muscadet">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Light" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Delicate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#PinotBlancGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Loire" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#MuscadetRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Meursault">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Full" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#WhiteBurgundy" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#MeursaultRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Merlot">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Moderate" />
              <owl:Thing rdf:about="#Delicate" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Light" />
              <owl:Thing rdf:about="#Medium" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#MerlotGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Meritage">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#CabernetSauvignonGrape" />
              <owl:Thing rdf:about="#CabernetFrancGrape" />
              <owl:Thing rdf:about="#MalbecGrape" />
              <owl:Thing rdf:about="#PetiteVerdotGrape" />
              <owl:Thing rdf:about="#MerlotGrape" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <Region rdf:ID="MedocRegion">
    <locatedIn rdf:resource="#BordeauxRegion" />
  </Region>
  
  <owl:Class rdf:ID="Medoc">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Bordeaux" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#MedocRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Margaux">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Delicate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#MerlotGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Medoc" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#MargauxRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <Region rdf:ID="LoireRegion">
    <locatedIn rdf:resource="#FrenchRegion" />
  </Region>
  
  <owl:Class rdf:ID="Loire">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#LoireRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="LateHarvest">
    <rdfs:subClassOf rdf:resource="#Wine" />
    <owl:disjointWith rdf:resource="#EarlyHarvest" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Sweet" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="ItalianWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#ItalianRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <Region rdf:ID="ItalianRegion" />
  
  <owl:Class rdf:ID="IceWine">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Medium" />
              <owl:Thing rdf:about="#Full" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#LateHarvest" />
      <owl:Class rdf:about="#DessertWine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="GermanWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#GermanyRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Gamay">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#GamayGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="FullBodiedWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Full" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <Region rdf:ID="FrenchRegion" />
  
  <owl:Class rdf:ID="FrenchWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#FrenchRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>

  <owl:Class rdf:ID="EarlyHarvest">
    <rdfs:subClassOf rdf:resource="#Wine" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Dry" />
              <owl:Thing rdf:about="#OffDry" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="DryWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="DryWhiteWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#DryWine" />
      <owl:Class rdf:about="#WhiteWine" />
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="DryRiesling">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Delicate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Light" />
              <owl:Thing rdf:about="#Medium" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Riesling" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="DryRedWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#DryWine" />
      <owl:Class rdf:about="#RedWine" />
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="DessertWine">
    <rdfs:subClassOf rdf:resource="#Wine" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#OffDry" />
              <owl:Thing rdf:about="#Sweet" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="CotesDOr">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Moderate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#RedBurgundy" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#CotesDOrRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Chianti">
    <rdfs:subClassOf rdf:resource="#ItalianWine" />
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#ChiantiRegion" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#SangioveseGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Moderate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Light" />
              <owl:Thing rdf:about="#Medium" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <owl:Class rdf:ID="CheninBlanc">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Moderate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Full" />
              <owl:Thing rdf:about="#Medium" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Dry" />
              <owl:Thing rdf:about="#OffDry" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#CheninBlancGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Chardonnay">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#White" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Full" />
              <owl:Thing rdf:about="#Medium" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#ChardonnayGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <Region rdf:ID="CaliforniaRegion">
    <locatedIn rdf:resource="#USRegion" />
  </Region>
  
  <Region rdf:ID="TexasRegion">
    <locatedIn rdf:resource="#USRegion" />
  </Region>
  
  <owl:Class rdf:ID="CaliforniaWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#CaliforniaRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="TexasWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#TexasRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="CabernetSauvignon">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#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>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:allValuesFrom>
          <owl:Class>
            <owl:oneOf rdf:parseType="Collection">
              <owl:Thing rdf:about="#Medium" />
              <owl:Thing rdf:about="#Full" />
            </owl:oneOf>
          </owl:Class>
        </owl:allValuesFrom>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#CabernetSauvignonGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="CabernetFranc">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Moderate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Medium" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#CabernetFrancGrape" />
      </owl:Restriction>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Burgundy">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#BourgogneRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  
  <Region rdf:ID="BourgogneRegion">
    <locatedIn rdf:resource="#FrenchRegion" />
  </Region>
  
  <Region rdf:ID="BordeauxRegion">
    <locatedIn rdf:resource="#FrenchRegion" />
  </Region>
  
  <owl:Class rdf:ID="Bordeaux">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#BordeauxRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="Beaujolais">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Red" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Light" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#Dry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Delicate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:hasValue rdf:resource="#GamayGrape" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#madeFromGrape" />
        <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:maxCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#BeaujolaisRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <Region rdf:ID="AustralianRegion" />
  
  <owl:Class rdf:ID="Anjou">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasColor" />
        <owl:hasValue rdf:resource="#Rose" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasBody" />
        <owl:hasValue rdf:resource="#Light" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasFlavor" />
        <owl:hasValue rdf:resource="#Delicate" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty rdf:resource="#hasSugar" />
        <owl:hasValue rdf:resource="#OffDry" />
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Loire" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#AnjouRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="AmericanWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#USRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <owl:Class rdf:ID="AlsatianWine">
    <owl:intersectionOf rdf:parseType="Collection">
      <owl:Class rdf:about="#Wine" />
      <owl:Restriction>
        <owl:onProperty rdf:resource="#locatedIn" />
        <owl:hasValue rdf:resource="#AlsaceRegion" />
      </owl:Restriction>
    </owl:intersectionOf>
  </owl:Class>
  
  <WineBody rdf:ID="Full" />
  
  <WineBody rdf:ID="Medium" />
  
  <WineBody rdf:ID="Light" />
  
  <WineColor rdf:ID="Red" />
  
  <WineColor rdf:ID="Rose" />
  
  <WineColor rdf:ID="White" />
  
  <WineFlavor rdf:ID="Strong" />
  
  <WineFlavor rdf:ID="Moderate" />
  
  <WineFlavor rdf:ID="Delicate" />
  
  <WineSugar rdf:ID="Dry" />
  
  <WineSugar rdf:ID="OffDry">
    <owl:differentFrom rdf:resource="#Dry"/>
    <owl:differentFrom rdf:resource="#Sweet"/>
  </WineSugar>
  
  <WineSugar rdf:ID="Sweet">
    <owl:differentFrom rdf:resource="#Dry"/>
  </WineSugar>
  
  <owl:AllDifferent>
    <owl:distinctMembers rdf:parseType="Collection">
      <vin:WineColor rdf:about="#Red" />
      <vin:WineColor rdf:about="#White" />
      <vin:WineColor rdf:about="#Rose" />
    </owl:distinctMembers>
  </owl:AllDifferent>

  <owl:AllDifferent>
    <owl:distinctMembers rdf:parseType="Collection">
      <vin:WineBody rdf:about="#Light" />
      <vin:WineBody rdf:about="#Medium" />
      <vin:WineBody rdf:about="#Full" />
    </owl:distinctMembers>
  </owl:AllDifferent>

  <owl:AllDifferent>
    <owl:distinctMembers rdf:parseType="Collection">
      <vin:WineFlavor rdf:about="#Delicate" />
      <vin:WineFlavor rdf:about="#Moderate" />
      <vin:WineFlavor rdf:about="#Strong" />
    </owl:distinctMembers>
  </owl:AllDifferent>
 
  <owl:AllDifferent>
    <owl:distinctMembers rdf:parseType="Collection">
      <vin:WineSugar rdf:about="#Sweet" />
      <vin:WineSugar rdf:about="#OffDry" />
      <vin:WineSugar rdf:about="#Dry" />
    </owl:distinctMembers>
  </owl:AllDifferent>

  <Region rdf:ID="AlsaceRegion">   
    <locatedIn rdf:resource="#FrenchRegion" />
  </Region>

  <Region rdf:ID="AnjouRegion">
    <locatedIn rdf:resource="#LoireRegion" />
  </Region>
  
  <Region rdf:ID="ArroyoGrandeRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <Winery rdf:ID="Beringer" />

  <Winery rdf:ID="Bancroft" />
  
  <Chardonnay rdf:ID="BancroftChardonnay">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#Bancroft" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Chardonnay>
  
  <Region rdf:ID="BeaujolaisRegion">
    <locatedIn rdf:resource="#FrenchRegion" />
  </Region>
  
  <WineGrape rdf:ID="CabernetFrancGrape" />
  
  <WineGrape rdf:ID="CabernetSauvignonGrape" />
  
  <Region rdf:ID="CentralCoastRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <WineGrape rdf:ID="ChardonnayGrape" />
  
  <Winery rdf:ID="ChateauChevalBlanc" />
  
  <StEmilion rdf:ID="ChateauChevalBlancStEmilion">
    <hasMaker  rdf:resource="#ChateauChevalBlanc" />
  </StEmilion>
  
  <Winery rdf:ID="ChateauDYchem" />
  
  <Sauterne rdf:ID="ChateauDYchemSauterne">
    <madeFromGrape rdf:resource="#SauvignonBlancGrape" />
    <madeFromGrape rdf:resource="#SemillonGrape" />
    <hasFlavor rdf:resource="#Strong" />
    <hasMaker  rdf:resource="#ChateauDYchem" />
  </Sauterne> 
  
  <Winery rdf:ID="ChateauDeMeursault" />
  
  <Meursault rdf:ID="ChateauDeMeursaultMeursault">
    <hasFlavor rdf:resource="#Moderate" />
    <hasMaker  rdf:resource="#ChateauDeMeursault" />
  </Meursault>
  
  <Winery rdf:ID="ChateauLafiteRothschild" />
  
  <Pauillac rdf:ID="ChateauLafiteRothschildPauillac">
    <hasMaker  rdf:resource="#ChateauLafiteRothschild" />
  </Pauillac>
  
  <Margaux rdf:ID="ChateauMargaux">
    <hasMaker  rdf:resource="#ChateauMargauxWinery" />
  </Margaux>
  
  <Winery rdf:ID="ChateauMargauxWinery" />
  
  <Winery rdf:ID="ChateauMorgon" />
  
  <Beaujolais rdf:ID="ChateauMorgonBeaujolais">
    <hasMaker  rdf:resource="#ChateauMorgon" />
  </Beaujolais>
  
  <WineGrape rdf:ID="CheninBlancGrape" />

  <WineGrape rdf:ID="ZinfandelGrape" />

  <Chianti rdf:ID="ChiantiClassico">
    <hasBody   rdf:resource="#Medium" />
    <hasMaker  rdf:resource="#McGuinnesso" />
  </Chianti>
  
  <Region rdf:ID="ChiantiRegion">
    <locatedIn rdf:resource="#ItalianRegion" />
  </Region>
  
  <Winery rdf:ID="ClosDeLaPoussie" />
  
  <Sancerre rdf:ID="ClosDeLaPoussieSancerre">
    <hasMaker  rdf:resource="#ClosDeLaPoussie" />
  </Sancerre>
  
  <Winery rdf:ID="ClosDeVougeot" />
  
  <CotesDOr rdf:ID="ClosDeVougeotCotesDOr">
    <hasMaker  rdf:resource="#ClosDeVougeot" />
  </CotesDOr>
  
  <Winery rdf:ID="CongressSprings" />
  
  <Semillon rdf:ID="CongressSpringsSemillon">
    <hasMaker  rdf:resource="#CongressSprings" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Semillon>

  <Winery rdf:ID="Corbans" />
  
  <Riesling rdf:ID="CorbansDryWhiteRiesling">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Corbans" />
    <hasSugar  rdf:resource="#OffDry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Riesling>
  
  <SauvignonBlanc rdf:ID="CorbansPrivateBinSauvignonBlanc">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Corbans" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </SauvignonBlanc>
  
  <SauvignonBlanc rdf:ID="CorbansSauvignonBlanc">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Corbans" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Medium" />
  </SauvignonBlanc>
  
  <Winery rdf:ID="CortonMontrachet" />
  
  <WhiteBurgundy rdf:ID="CortonMontrachetWhiteBurgundy">
    <hasMaker  rdf:resource="#CortonMontrachet" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </WhiteBurgundy>
  
  <Region rdf:ID="CotesDOrRegion">
    <locatedIn rdf:resource="#BourgogneRegion" />
  </Region>
  
  <Winery rdf:ID="Cotturi" />
  
  <Zinfandel rdf:ID="CotturiZinfandel">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#Cotturi" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </Zinfandel>
  
  <Winery rdf:ID="DAnjou" />
  
  <Region rdf:ID="EdnaValleyRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <Winery rdf:ID="Elyse" />
  
  <Zinfandel rdf:ID="ElyseZinfandel">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#Elyse" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Full" />
  </Zinfandel>
  
  <Winery rdf:ID="Forman" />
  
  <CabernetSauvignon rdf:ID="FormanCabernetSauvignon">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#Forman" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Medium" />
  </CabernetSauvignon>
  
  <Chardonnay rdf:ID="FormanChardonnay">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#Forman" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Full" />
  </Chardonnay>
  
  <Winery rdf:ID="Foxen" />
  
  <CheninBlanc rdf:ID="FoxenCheninBlanc">
    <locatedIn rdf:resource="#SantaBarbaraRegion" />
    <hasMaker  rdf:resource="#Foxen" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Full" />
  </CheninBlanc>
  
  <WineGrape rdf:ID="GamayGrape" />
  
  <Winery rdf:ID="GaryFarrell" />
  
  <Merlot rdf:ID="GaryFarrellMerlot">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#GaryFarrell" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Merlot>
  
  <Region rdf:ID="GermanyRegion" />
  
  <Winery rdf:ID="Handley" />
  
  <Winery rdf:ID="KalinCellars" />
  
  <Semillon rdf:ID="KalinCellarsSemillon">
    <hasMaker  rdf:resource="#KalinCellars" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </Semillon>
  
  <Winery rdf:ID="KathrynKennedy" />
  
  <Meritage rdf:ID="KathrynKennedyLateral">
    <hasMaker  rdf:resource="#KathrynKennedy" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Delicate" />
    <hasBody   rdf:resource="#Medium" />
  </Meritage>
  
  <Winery rdf:ID="LaneTanner" />
  
  <PinotNoir rdf:ID="LaneTannerPinotNoir">
    <locatedIn rdf:resource="#SantaBarbaraRegion" />
    <hasMaker  rdf:resource="#LaneTanner" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Delicate" />
    <hasBody   rdf:resource="#Light" />
  </PinotNoir>
  
  <Winery rdf:ID="Longridge" />
  
  <Merlot rdf:ID="LongridgeMerlot">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Longridge" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Light" />
  </Merlot>
  
  <WineGrape rdf:ID="MalbecGrape" />
  
  <Region rdf:ID="MargauxRegion">
    <locatedIn rdf:resource="#MedocRegion" />
  </Region>
  
  <Winery rdf:ID="Marietta" />
  
  <CabernetSauvignon rdf:ID="MariettaCabernetSauvignon">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#Marietta" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </CabernetSauvignon>
  
  <RedTableWine rdf:ID="MariettaOldVinesRed">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#Marietta" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </RedTableWine>
  
  <PetiteSyrah rdf:ID="MariettaPetiteSyrah">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#Marietta" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </PetiteSyrah>
  
  <Zinfandel rdf:ID="MariettaZinfandel">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#Marietta" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Zinfandel>
  
  <Winery rdf:ID="McGuinnesso" />
  
  <Region rdf:ID="MendocinoRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
    <adjacentRegion rdf:resource="#SonomaRegion" />
  </Region>
  
  <WineGrape rdf:ID="MerlotGrape" />
  
  <Region rdf:ID="MeursaultRegion">
    <locatedIn rdf:resource="#BourgogneRegion" />
  </Region>
  
  <Winery rdf:ID="MountEdenVineyard" />
  
  <Chardonnay rdf:ID="MountEdenVineyardEdnaValleyChardonnay">
    <locatedIn rdf:resource="#EdnaValleyRegion" />
    <hasMaker  rdf:resource="#MountEdenVineyard" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Chardonnay>
  
  <PinotNoir rdf:ID="MountEdenVineyardEstatePinotNoir">
    <locatedIn rdf:resource="#EdnaValleyRegion" />
    <hasMaker  rdf:resource="#MountEdenVineyard" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </PinotNoir>
  
  <Winery rdf:ID="Mountadam" />
  
  <Chardonnay rdf:ID="MountadamChardonnay">
    <locatedIn rdf:resource="#SouthAustraliaRegion" />
    <hasMaker  rdf:resource="#Mountadam" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </Chardonnay>
  
  <PinotNoir rdf:ID="MountadamPinotNoir">
    <locatedIn rdf:resource="#SouthAustraliaRegion" />
    <hasMaker  rdf:resource="#Mountadam" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </PinotNoir>
  
  <DryRiesling rdf:ID="MountadamRiesling">
    <locatedIn rdf:resource="#SouthAustraliaRegion" />
    <hasMaker  rdf:resource="#Mountadam" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Delicate" />
    <hasBody   rdf:resource="#Medium" />
  </DryRiesling>
  
  <Region rdf:ID="MuscadetRegion">
    <locatedIn rdf:resource="#LoireRegion" />
  </Region>
  
  <Region rdf:ID="NapaRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <Region rdf:ID="NewZealandRegion" />
  
  <Winery rdf:ID="PageMillWinery" />  

  <CabernetSauvignon rdf:ID="PageMillWineryCabernetSauvignon">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#PageMillWinery" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </CabernetSauvignon>
  
  <Region rdf:ID="PauillacRegion">
    <locatedIn rdf:resource="#MedocRegion" />
  </Region>
  
  <Winery rdf:ID="PeterMccoy" />
  
  <Chardonnay rdf:ID="PeterMccoyChardonnay">
    <locatedIn rdf:resource="#SonomaRegion" />
    <hasMaker  rdf:resource="#PeterMccoy" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Chardonnay>
  
  <WineGrape rdf:ID="PetiteSyrahGrape" />
  
  <WineGrape rdf:ID="PetiteVerdotGrape" />
  
  <WineGrape rdf:ID="PinotBlancGrape" />
  
  <WineGrape rdf:ID="PinotNoirGrape" />
  
  <Region rdf:ID="PortugalRegion" />
  
  <Winery rdf:ID="PulignyMontrachet" />
  
  <WhiteBurgundy rdf:ID="PulignyMontrachetWhiteBurgundy">
    <hasMaker  rdf:resource="#PulignyMontrachet" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </WhiteBurgundy>
  
  <WineGrape rdf:ID="RieslingGrape" />
  
  <Anjou rdf:ID="RoseDAnjou">
    <hasMaker  rdf:resource="#DAnjou" />
  </Anjou>
  
  <Region rdf:ID="SancerreRegion">
    <locatedIn rdf:resource="#LoireRegion" />
  </Region>
  
  <WineGrape rdf:ID="SangioveseGrape" />
  
  <Region rdf:ID="SantaBarbaraRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <Winery rdf:ID="SantaCruzMountainVineyard" />
  
  <CabernetSauvignon rdf:ID="SantaCruzMountainVineyardCabernetSauvignon">
    <locatedIn rdf:resource="#SantaCruzMountainsRegion" />
    <hasMaker  rdf:resource="#SantaCruzMountainVineyard" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </CabernetSauvignon>
  
  <Region rdf:ID="CentralTexasRegion">
    <locatedIn rdf:resource="#TexasRegion" />
  </Region>

  <Winery rdf:ID="StGenevieve" />

  <WhiteWine rdf:ID="StGenevieveTexasWhite">
    <locatedIn rdf:resource="#CentralTexasRegion" />
    <hasMaker  rdf:resource="#StGenevieve" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
  </WhiteWine>

  <Region rdf:ID="SantaCruzMountainsRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <Winery rdf:ID="SaucelitoCanyon" />
  
  <Zinfandel rdf:ID="SaucelitoCanyonZinfandel">
    <locatedIn rdf:resource="#ArroyoGrandeRegion" />
    <hasMaker  rdf:resource="#SaucelitoCanyon" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Zinfandel>
  
  <Zinfandel rdf:ID="SaucelitoCanyonZinfandel1998">
    <locatedIn rdf:resource="#ArroyoGrandeRegion" />
    <hasVintageYear rdf:resource="#Year1998" />
    <hasMaker  rdf:resource="#SaucelitoCanyon" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </Zinfandel>

  <Region rdf:ID="SauterneRegion">
    <locatedIn rdf:resource="#BordeauxRegion" />
  </Region>
  
  <WineGrape rdf:ID="SauvignonBlancGrape" />
  
  <Winery rdf:ID="SchlossRothermel" />
  
  <SweetRiesling rdf:ID="SchlossRothermelTrochenbierenausleseRiesling">
    <locatedIn rdf:resource="#GermanyRegion" />
    <hasMaker  rdf:resource="#SchlossRothermel" />
    <hasSugar  rdf:resource="#Sweet" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </SweetRiesling>
  
  <Winery rdf:ID="SchlossVolrad" />
  
  <SweetRiesling rdf:ID="SchlossVolradTrochenbierenausleseRiesling">
    <locatedIn rdf:resource ="#GermanyRegion" />
    <hasMaker  rdf:resource="#SchlossVolrad" />
    <hasSugar  rdf:resource="#Sweet" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Full" />
  </SweetRiesling>
  
  <Winery rdf:ID="SeanThackrey" />
  
  <PetiteSyrah rdf:ID="SeanThackreySiriusPetiteSyrah">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#SeanThackrey" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Strong" />
    <hasBody   rdf:resource="#Full" />
  </PetiteSyrah>
  
  <Winery rdf:ID="Selaks" />
  
  <IceWine rdf:ID="SelaksIceWine">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Selaks" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
    <hasColor rdf:resource="#White" />
  </IceWine>
  
  <SauvignonBlanc rdf:ID="SelaksSauvignonBlanc">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Selaks" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </SauvignonBlanc>
  
  <WineGrape rdf:ID="SemillonGrape" />
  
  <Winery rdf:ID="SevreEtMaine" />
  
  <Muscadet rdf:ID="SevreEtMaineMuscadet">
    <hasMaker  rdf:resource="#SevreEtMaine" />
  </Muscadet>
  
  <Region rdf:ID="SonomaRegion">
    <locatedIn rdf:resource="#CaliforniaRegion" />
  </Region>
  
  <Region rdf:ID="SouthAustraliaRegion">
    <locatedIn rdf:resource="#AustralianRegion" />
  </Region>
  
  <Region rdf:ID="StEmilionRegion">
    <locatedIn rdf:resource="#BordeauxRegion" />
  </Region>
  
  <Winery rdf:ID="Stonleigh" />
  
  <SauvignonBlanc rdf:ID="StonleighSauvignonBlanc">
    <locatedIn rdf:resource="#NewZealandRegion" />
    <hasMaker  rdf:resource="#Stonleigh" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Delicate" />
    <hasBody   rdf:resource="#Medium" />
  </SauvignonBlanc>
  
  <Winery rdf:ID="Taylor" />
  
  <Port rdf:ID="TaylorPort">
    <hasMaker  rdf:resource="#Taylor" />
  </Port>
  
  <Region rdf:ID="ToursRegion">
    <locatedIn rdf:resource="#LoireRegion" />
  </Region>
  
  <Winery rdf:ID="Ventana" />
  
  <CheninBlanc rdf:ID="VentanaCheninBlanc">
    <locatedIn rdf:resource="#CentralCoastRegion" />
    <hasMaker  rdf:resource="#Ventana" />
    <hasSugar  rdf:resource="#OffDry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </CheninBlanc>
  
  <Winery rdf:ID="WhitehallLane" />
  
  <CabernetFranc rdf:ID="WhitehallLaneCabernetFranc">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasMaker  rdf:resource="#WhitehallLane" />
    <hasSugar  rdf:resource="#Dry" />
    <hasFlavor rdf:resource="#Moderate" />
    <hasBody   rdf:resource="#Medium" />
  </CabernetFranc>
  
  <DessertWine rdf:ID="WhitehallLanePrimavera">
    <locatedIn rdf:resource="#NapaRegion" />
    <hasSugar  rdf:resource="#Sweet" />
    <hasFlavor rdf:resource="#Delicate" />
    <hasBody   rdf:resource="#Light" />
  </DessertWine>
  
  <owl:AllDifferent>
    <owl:distinctMembers rdf:parseType="Collection">
      <vin:Winery rdf:about="#Bancroft" />
      <vin:Winery rdf:about="#ChateauChevalBlanc" />
      <vin:Winery rdf:about="#ChateauDYchem" />
      <vin:Winery rdf:about="#ChateauDeMeursault" />
      <vin:Winery rdf:about="#ChateauLafiteRothschild" />
      <vin:Winery rdf:about="#ChateauMargauxWinery" />
      <vin:Winery rdf:about="#ChateauMorgon" />
      <vin:Winery rdf:about="#ClosDeLaPoussie" />
      <vin:Winery rdf:about="#ClosDeVougeot" />
      <vin:Winery rdf:about="#CongressSprings" />
      <vin:Winery rdf:about="#Corbans" />
      <vin:Winery rdf:about="#CortonMontrachet" />
      <vin:Winery rdf:about="#Cotturi" />
      <vin:Winery rdf:about="#DAnjou" />
      <vin:Winery rdf:about="#Elyse" />
      <vin:Winery rdf:about="#Forman" />
      <vin:Winery rdf:about="#Foxen" />
      <vin:Winery rdf:about="#GaryFarrell" />
      <vin:Winery rdf:about="#KalinCellars" />
      <vin:Winery rdf:about="#KathrynKennedy" />
      <vin:Winery rdf:about="#LaneTanner" />
      <vin:Winery rdf:about="#Longridge" />
      <vin:Winery rdf:about="#Marietta" />
      <vin:Winery rdf:about="#McGuinnesso" />
      <vin:Winery rdf:about="#MountEdenVineyard" />
      <vin:Winery rdf:about="#Mountadam" />
      <vin:Winery rdf:about="#PageMillWinery" />
      <vin:Winery rdf:about="#PeterMccoy" />
      <vin:Winery rdf:about="#PulignyMontrachet" />
      <vin:Winery rdf:about="#SantaCruzMountainVineyard" />
      <vin:Winery rdf:about="#SaucelitoCanyon" />
      <vin:Winery rdf:about="#SchlossRothermel" />
      <vin:Winery rdf:about="#SchlossVolrad" />
      <vin:Winery rdf:about="#SeanThackrey" />
      <vin:Winery rdf:about="#Selaks" />
      <vin:Winery rdf:about="#SevreEtMaine" />
      <vin:Winery rdf:about="#StGenevieve" />
      <vin:Winery rdf:about="#Stonleigh" />
      <vin:Winery rdf:about="#Taylor" />
      <vin:Winery rdf:about="#Ventana" />
      <vin:Winery rdf:about="#WhitehallLane" />
    </owl:distinctMembers>
  </owl:AllDifferent>

</rdf:RDF>
