Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

Sample Solution Assignment 2 DL OWL Protégé by wql24865

VIEWS: 17 PAGES: 16

									Universität des Saarlandes
Naturwissenschaftlich-Technische Fakultät I

Fachrichtung 6.2 - Informatik
Lehrstuhl Prof. Dr. Dr. h.c. mult. W. Wahlster

Advanced Course: Semantic Web Technologies (SS 2006)



Sample Solution Assignment 2: DL / OWL / Protégé


Exercise 1: [OWL] (2P)

Familiarize yourselves with OWL by reading the OWL Web Ontology Language Guide of the
W3C (http://www.w3.org/TR/owl-guide/) or related documents.



Exercise 2: [Elephants World] (6P)

Given the following ontology:

-    Elephant is a sub-concept of the concept Animal.
-    Herbivore is a concept whose members are exactly those animals who eat only plants.
-    Adult_Elephant is a concept whose members are exactly those elephants older than
     20.
-    Adult elephants might have children who are again elephants.
-    Djan is an elephant.
-    Djan is 23 years old.
-    Djan is the child of Zorba.

a)   Represent the ontology in description logic.
b)   Represent the ontology in first-order logic.
c)   Represent the ontology in OWL.
d)   Which of these statements belong to the T-Box and to the A-Box. Try to give an
     alternative A-Box using the same T-Box.



Solution:

Note: We define the third and fourth assertions together as one statement.

a) Here we use ≡ instead of the dotted equal sign to denote equivalence concepts.
− Elephant ⊆ Animal
− Herbivore ≡Animal u ∀eats.Plant
− Adult_Elephant ≡ Elephant u     20.age u ∀hasChild. Elephant
- Elephant (Djan)
- age ( Djan, 23 )
- hasChild ( Zorba, Djan)



b) Note that we use curried functions instead of predicates.
- ∀x.Elephant(x)  Animal(x)
- ∀xy.Herbivore (x)  Animal(x) ∧ (eats( x y)  Plant(y))
- ∀xyz.Adult_Elephant (x)  Animal(x) ∧ (hasChild( x y)  Elephant(y)) ∧
(age x z)  z >20)
- Elephant Djan
- age Djan 23
- hasChild Zorba Djan




c)

This file does not correspond totally to the given formulae above. It is mentioned to give an
impression of designing such an ontology in Protégé. It captures the given assertions but have
some details, such as the instantiations, which should make the structure clear.

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://www.owl-ontologies.com/unnamed.owl#"
  xml:base="http://www.owl-ontologies.com/unnamed.owl">
  <owl:Ontology rdf:about=""/>
  <owl:Class rdf:ID="Animal"/>
  <owl:Class rdf:ID="Herbivore">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Animal"/>
          <owl:Restriction>
            <owl:onProperty>
              <owl:SymmetricProperty rdf:ID="eats"/>
            </owl:onProperty>
            <owl:allValuesFrom>
              <owl:Class rdf:ID="Plants"/>
            </owl:allValuesFrom>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:ID="Adult_Elephant">
    <owl:equivalentClass>
      <owl:Class>
        <owl:intersectionOf rdf:parseType="Collection">
          <owl:Class rdf:ID="Elephant"/>
          <owl:Restriction>
            <owl:minCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
            >20</owl:minCardinality>
            <owl:onProperty>
              <owl:DatatypeProperty rdf:ID="age"/>
            </owl:onProperty>
          </owl:Restriction>
        </owl:intersectionOf>
      </owl:Class>
    </owl:equivalentClass>
  </owl:Class>
  <owl:Class rdf:about="#Elephant">
    <rdfs:subClassOf rdf:resource="#Animal"/>
  </owl:Class>
  <owl:ObjectProperty rdf:ID="hasChild">
    <rdfs:range rdf:resource="#Elephant"/>
    <rdfs:domain rdf:resource="#Adult_Elephant"/>
    <owl:inverseOf>
      <owl:ObjectProperty rdf:ID="hasParent"/>
    </owl:inverseOf>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasParent">
    <rdfs:range rdf:resource="#Adult_Elephant"/>
    <owl:inverseOf rdf:resource="#hasChild"/>
    <rdfs:domain rdf:resource="#Elephant"/>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:about="#age">
    <rdfs:domain rdf:resource="#Animal"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
  </owl:DatatypeProperty>
  <owl:SymmetricProperty rdf:about="#eats">
    <owl:inverseOf rdf:resource="#eats"/>
    <rdfs:domain rdf:resource="#Animal"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/>
  </owl:SymmetricProperty>
  <owl:DataRange>
    <owl:oneOf rdf:parseType="Resource">
      <rdf:rest rdf:parseType="Resource">
        <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
        >meat</rdf:first>
        <rdf:rest rdf:parseType="Resource">
          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
          >meat and platns</rdf:first>
          <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-
ns#nil"/>
        </rdf:rest>
      </rdf:rest>
      <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
      >plants</rdf:first>
    </owl:oneOf>
  </owl:DataRange>
  <Plants rdf:ID="Tomato"/>
  <Elephant rdf:ID="Djan">
    <age rdf:datatype="http://www.w3.org/2001/XMLSchema#int">23</age>
    <hasParent>
      <Adult_Elephant rdf:ID="Zorba">
        <hasChild rdf:resource="#Djan"/>
      </Adult_Elephant>
    </hasParent>
  </Elephant>
  <Plants rdf:ID="Eggplant"/>

</rdf:RDF>

     e) The first four statements belong to the T-Box and the rest to the A-
        Box. An alternative A-Box would be:

        -   Jumbo is an elephant
        -   Mambo is the child of Jumbo
        -   Jumbo is 29 years old

Exercise 3: [OWL & Protégé] (6P)

     a) Install Protégé (with the OWL-Plug-in) and get familiarized with it.
     b) Represent the following DL-expression in Protégé:

              Person u ∀hasChild.Doctor t ∃hasChild.Doctor



     c) Model the minimum requirements for a standard hotel in Protégé.
          a. There are two types of rooms: 12 m² single-rooms and 16 m² double-
              rooms.
          b. The double-rooms must have two beds.
          c. Every room must have a shower
          d. The hotel has to accept credit cards



     d) Visualize your model with OWLViz.

Solution:

b)
<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://www.owl-ontologies.com/unnamed.owl#"
  xml:base="http://www.owl-ontologies.com/unnamed.owl" >
  <rdf:Description rdf:nodeID="A0">
    <owl:intersectionOf rdf:nodeID="A1"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description>
  <rdf:Description rdf:about="#Person">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A2">
    <rdf:first rdf:nodeID="A3"/>
    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-
ns#nil"/>
  </rdf:Description>
  <rdf:Description rdf:about="#HappyPerson">
    <owl:equivalentClass rdf:nodeID="A0"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A4">
    <rdf:rest rdf:nodeID="A5"/>
    <rdf:first rdf:resource="#Doctor"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A1">
    <rdf:rest rdf:nodeID="A2"/>
    <rdf:first rdf:resource="#Person"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A6">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <owl:unionOf rdf:nodeID="A4"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A5">
    <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-
ns#nil"/>
    <rdf:first rdf:nodeID="A7"/>
  </rdf:Description>
  <rdf:Description rdf:about="#hasChild">
    <rdfs:range rdf:resource="#Person"/>
    <rdfs:domain rdf:resource="#Person"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/>
  </rdf:Description>
  <rdf:Description rdf:about="">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Ontology"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A7">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
    <owl:someValuesFrom rdf:resource="#Doctor"/>
    <owl:onProperty rdf:resource="#hasChild"/>
  </rdf:Description>
  <rdf:Description rdf:about="#Doctor">
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <rdfs:subClassOf rdf:resource="#Person"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A3">
    <owl:allValuesFrom rdf:nodeID="A6"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
    <owl:onProperty rdf:resource="#hasChild"/>
  </rdf:Description>
</rdf:RDF>

<!-- Created with Protege (with OWL Plugin 2.1, Build 284)
http://protege.stanford.edu -->

c)

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="http://www.owl-ontologies.com/unnamed.owl#"
  xml:base="http://www.owl-ontologies.com/unnamed.owl">
  <owl:Ontology rdf:about=""/>
  <owl:Class rdf:ID="SingleRoom">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasBed"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith>
      <owl:Class rdf:ID="DoubleRoom"/>
    </owl:disjointWith>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Room"/>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:DatatypeProperty rdf:ID="hasSize"/>
        </owl:onProperty>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >12</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#DoubleRoom">
    <owl:disjointWith rdf:resource="#SingleRoom"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:DatatypeProperty rdf:about="#hasSize"/>
        </owl:onProperty>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >16</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Room"/>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#hasBed"/>
        </owl:onProperty>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >2</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="CreditCard"/>
  <owl:Class rdf:ID="Hotel">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="accepts"/>
        </owl:onProperty>
        <owl:someValuesFrom rdf:resource="#CreditCard"/>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
  </owl:Class>
  <owl:Class rdf:ID="Bed"/>
  <owl:Class rdf:ID="Shower"/>
  <owl:Class rdf:about="#Room">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#hasBed"/>
        </owl:onProperty>
        <owl:minCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:maxCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >2</owl:maxCardinality>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#hasBed"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasShower"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:ObjectProperty rdf:about="#hasBed">
    <rdfs:domain rdf:resource="#Room"/>
    <rdfs:range rdf:resource="#Bed"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasRoom">
    <rdfs:domain rdf:resource="#Hotel"/>
    <rdfs:range rdf:resource="#Room"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasShower">
    <rdfs:domain rdf:resource="#Room"/>
    <rdfs:range rdf:resource="#Shower"/>
    <rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:about="#hasSize">
    <rdfs:domain rdf:resource="#Room"/>
    <rdfs:range>
      <owl:DataRange>
        <owl:oneOf rdf:parseType="Resource">
          <rdf:rest rdf:parseType="Resource">
            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-
syntax-ns#nil"/>
            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
            >16</rdf:first>
          </rdf:rest>
          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
          >12</rdf:first>
        </owl:oneOf>
      </owl:DataRange>
    </rdfs:range>
    <rdf:type
rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
  </owl:DatatypeProperty>
  <owl:DataRange>
    <owl:oneOf rdf:parseType="Resource">
      <rdf:rest rdf:parseType="Resource">
        <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >2</rdf:first>
        <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-
ns#nil"/>
      </rdf:rest>
      <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
      >1</rdf:first>
    </owl:oneOf>
  </owl:DataRange>
</rdf:RDF>

<!-- Created with Protege (with OWL Plugin 2.2, Build 311)
http://protege.stanford.edu -->
d)




Exercise 4: [OWL & Protégé] (6P)

In this exercise, you are going to model an ontology of computer hardware. Here, you
have to create primitive and defined classes and appropriate relations between them.
Implement your solution in Protégé and observe which class relations are inferred. Your
ontology must contain at least the following classes:

- Graphic card

- Memory

- IO-Devices

- Input Devices

- Output Devices

- Keyboard

- Mouse

- Monitor

And at least two instances for each class. Do not forget to emphasize the disjoint classes.
Solution:




<?xml version="1.0"?>
<rdf:RDF
    xmlns="http://www.owl-ontologies.com/Ontology1148564678.owl#"
    xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:base="http://www.owl-ontologies.com/Ontology1148564678.owl">
  <owl:Ontology rdf:about="">
    <owl:imports
rdf:resource="http://protege.stanford.edu/plugins/owl/protege"/>
  </owl:Ontology>
  <owl:Class rdf:ID="Bus">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="isPartOf"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith>
      <owl:Class rdf:ID="IO-Device"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:ID="Computer"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:ID="CPU"/>
    </owl:disjointWith>
    <rdfs:subClassOf>
      <owl:Class rdf:ID="Computer_Hardware"/>
    </rdfs:subClassOf>
    <owl:disjointWith>
      <owl:Class rdf:ID="Graphic_Card"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:ID="Memory"/>
    </owl:disjointWith>
  </owl:Class>
  <owl:Class rdf:about="#CPU">
    <rdfs:subClassOf rdf:resource="#Computer_Hardware"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#isPartOf"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith>
      <owl:Class rdf:about="#IO-Device"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:about="#Memory"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:about="#Computer"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:about="#Graphic_Card"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="#Bus"/>
  </owl:Class>
  <owl:Class rdf:ID="Input_Device">
    <owl:disjointWith>
      <owl:Class rdf:ID="Output_Device"/>
    </owl:disjointWith>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#IO-Device"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:ID="Keyboard">
    <rdfs:subClassOf rdf:resource="#Input_Device"/>
    <owl:disjointWith>
      <owl:Class rdf:ID="Mouse"/>
    </owl:disjointWith>
  </owl:Class>
  <owl:Class rdf:about="#Graphic_Card">
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#isPartOf"/>
        </owl:onProperty>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith rdf:resource="#CPU"/>
    <owl:disjointWith>
      <owl:Class rdf:about="#Computer"/>
    </owl:disjointWith>
    <owl:disjointWith>
      <owl:Class rdf:about="#IO-Device"/>
    </owl:disjointWith>
    <rdfs:subClassOf rdf:resource="#Computer_Hardware"/>
    <owl:disjointWith rdf:resource="#Bus"/>
    <owl:disjointWith>
      <owl:Class rdf:about="#Memory"/>
    </owl:disjointWith>
  </owl:Class>
  <owl:Class rdf:about="#IO-Device">
    <owl:disjointWith rdf:resource="#CPU"/>
    <owl:disjointWith>
      <owl:Class rdf:about="#Memory"/>
    </owl:disjointWith>
    <rdfs:subClassOf rdf:resource="#Computer_Hardware"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#isPartOf"/>
        </owl:onProperty>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith rdf:resource="#Bus"/>
    <owl:disjointWith rdf:resource="#Graphic_Card"/>
    <owl:disjointWith>
      <owl:Class rdf:about="#Computer"/>
    </owl:disjointWith>
  </owl:Class>
  <owl:Class rdf:ID="Monitor">
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Output_Device"/>
    </rdfs:subClassOf>
    <owl:disjointWith>
      <owl:Class rdf:ID="Printer"/>
    </owl:disjointWith>
  </owl:Class>
  <owl:Class rdf:about="#Memory">
    <owl:disjointWith rdf:resource="#Bus"/>
    <owl:disjointWith rdf:resource="#Graphic_Card"/>
    <owl:disjointWith>
      <owl:Class rdf:about="#Computer"/>
    </owl:disjointWith>
    <owl:disjointWith rdf:resource="#IO-Device"/>
    <owl:disjointWith rdf:resource="#CPU"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:about="#isPartOf"/>
        </owl:onProperty>
        <owl:cardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:cardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf rdf:resource="#Computer_Hardware"/>
  </owl:Class>
  <owl:Class rdf:about="#Printer">
    <owl:disjointWith rdf:resource="#Monitor"/>
    <rdfs:subClassOf>
      <owl:Class rdf:about="#Output_Device"/>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#Mouse">
    <rdfs:subClassOf rdf:resource="#Input_Device"/>
    <owl:disjointWith rdf:resource="#Keyboard"/>
  </owl:Class>
  <owl:Class rdf:about="#Computer">
    <rdfs:subClassOf rdf:resource="#Computer_Hardware"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasCPU"/>
        </owl:onProperty>
        <owl:minCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasMemory"/>
        </owl:onProperty>
        <owl:minCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
    <owl:disjointWith rdf:resource="#Graphic_Card"/>
    <owl:disjointWith rdf:resource="#Memory"/>
    <owl:disjointWith rdf:resource="#CPU"/>
    <owl:disjointWith rdf:resource="#IO-Device"/>
    <owl:disjointWith rdf:resource="#Bus"/>
    <rdfs:subClassOf>
      <owl:Restriction>
        <owl:onProperty>
          <owl:ObjectProperty rdf:ID="hasBus"/>
        </owl:onProperty>
        <owl:minCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
        >1</owl:minCardinality>
      </owl:Restriction>
    </rdfs:subClassOf>
  </owl:Class>
  <owl:Class rdf:about="#Output_Device">
    <rdfs:subClassOf rdf:resource="#IO-Device"/>
    <owl:disjointWith rdf:resource="#Input_Device"/>
  </owl:Class>
  <owl:ObjectProperty rdf:ID="CPU_is_connected">
    <rdfs:range rdf:resource="#Bus"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="ExternalConnection">
    <rdfs:domain rdf:resource="#Graphic_Card"/>
    <rdfs:range rdf:resource="#Monitor"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="BusConnection">
    <rdfs:range>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#IO-Device"/>
          <owl:Class rdf:about="#CPU"/>
          <owl:Class rdf:about="#Memory"/>
          <owl:Class rdf:about="#Graphic_Card"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:range>
    <rdfs:domain rdf:resource="#Bus"/>
    <owl:inverseOf>
      <owl:ObjectProperty rdf:ID="InternalConnection"/>
    </owl:inverseOf>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasCPU">
    <rdfs:range rdf:resource="#CPU"/>
    <rdfs:domain rdf:resource="#Computer"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasIODevice">
    <rdfs:domain rdf:resource="#Computer"/>
    <rdfs:range rdf:resource="#IO-Device"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#isPartOf">
    <rdfs:range rdf:resource="#Computer"/>
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#CPU"/>
          <owl:Class rdf:about="#Graphic_Card"/>
          <owl:Class rdf:about="#IO-Device"/>
          <owl:Class rdf:about="#Bus"/>
          <owl:Class rdf:about="#Memory"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasBus">
    <rdfs:domain rdf:resource="#Computer"/>
    <rdfs:range rdf:resource="#Bus"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:ID="hasGraphicCard">
    <rdfs:range rdf:resource="#Graphic_Card"/>
    <rdfs:domain rdf:resource="#Computer"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#InternalConnection">
    <owl:inverseOf rdf:resource="#BusConnection"/>
    <rdfs:domain>
      <owl:Class>
        <owl:unionOf rdf:parseType="Collection">
          <owl:Class rdf:about="#Graphic_Card"/>
          <owl:Class rdf:about="#CPU"/>
          <owl:Class rdf:about="#IO-Device"/>
          <owl:Class rdf:about="#Memory"/>
        </owl:unionOf>
      </owl:Class>
    </rdfs:domain>
    <rdfs:range rdf:resource="#Bus"/>
  </owl:ObjectProperty>
  <owl:ObjectProperty rdf:about="#hasMemory">
    <rdfs:range rdf:resource="#Memory"/>
    <rdfs:domain rdf:resource="#Computer"/>
  </owl:ObjectProperty>
  <owl:DatatypeProperty rdf:ID="DatatypeProperty_12"/>
  <owl:DatatypeProperty rdf:ID="DatatypeProperty_18"/>
  <owl:DatatypeProperty rdf:ID="DatatypeProperty_4">
    <rdfs:range>
      <owl:DataRange>
        <owl:oneOf rdf:parseType="Resource">
          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#int"
          >1</rdf:first>
          <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-
ns#nil"/>
      </owl:oneOf>
    </owl:DataRange>
  </rdfs:range>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="DatatypeProperty_2"/>
<Keyboard rdf:ID="Keyboard101">
  <isPartOf>
    <Computer rdf:ID="MEDION">
      <hasIODevice>
        <Mouse rdf:ID="WheelMouse">
          <InternalConnection>
            <Bus rdf:ID="AGP">
              <BusConnection>
                <Graphic_Card rdf:ID="RadeonX1900XTX">
                  <InternalConnection rdf:resource="#AGP"/>
                  <ExternalConnection>
                    <Monitor rdf:ID="CRT">
                      <InternalConnection rdf:resource="#AGP"/>
                      <isPartOf rdf:resource="#MEDION"/>
                    </Monitor>
                  </ExternalConnection>
                  <isPartOf rdf:resource="#MEDION"/>
                </Graphic_Card>
              </BusConnection>
              <BusConnection rdf:resource="#Keyboard101"/>
              <isPartOf rdf:resource="#MEDION"/>
              <BusConnection rdf:resource="#WheelMouse"/>
              <BusConnection>
                <Memory rdf:ID="GEIL_512">
                  <isPartOf rdf:resource="#MEDION"/>
                  <InternalConnection rdf:resource="#AGP"/>
                </Memory>
              </BusConnection>
              <BusConnection>
                <Printer rdf:ID="DeskJet">
                  <InternalConnection rdf:resource="#AGP"/>
                  <isPartOf rdf:resource="#MEDION"/>
                </Printer>
              </BusConnection>
              <BusConnection>
                <CPU rdf:ID="Core2">
                  <isPartOf rdf:resource="#MEDION"/>
                  <InternalConnection rdf:resource="#AGP"/>
                </CPU>
              </BusConnection>
              <BusConnection rdf:resource="#CRT"/>
            </Bus>
          </InternalConnection>
          <isPartOf rdf:resource="#MEDION"/>
        </Mouse>
      </hasIODevice>
      <hasIODevice rdf:resource="#Keyboard101"/>
      <hasGraphicCard rdf:resource="#RadeonX1900XTX"/>
      <hasBus rdf:resource="#AGP"/>
      <hasIODevice rdf:resource="#CRT"/>
      <hasMemory rdf:resource="#GEIL_512"/>
      <hasCPU rdf:resource="#Core2"/>
      <hasIODevice rdf:resource="#DeskJet"/>
    </Computer>
  </isPartOf>
  <InternalConnection rdf:resource="#AGP"/>
</Keyboard>
<Mouse rdf:ID="OpticalMouse">
    <isPartOf>
      <Computer rdf:ID="DELL">
        <hasIODevice>
          <Printer rdf:ID="LaserJet">
            <isPartOf rdf:resource="#DELL"/>
            <InternalConnection>
              <Bus rdf:ID="PCI-Express">
                <isPartOf rdf:resource="#DELL"/>
                <BusConnection>
                  <Memory rdf:ID="Corsair_1024">
                    <isPartOf rdf:resource="#DELL"/>
                    <InternalConnection rdf:resource="#PCI-Express"/>
                  </Memory>
                </BusConnection>
                <BusConnection>
                  <Monitor rdf:ID="TFT">
                    <InternalConnection rdf:resource="#PCI-Express"/>
                    <isPartOf rdf:resource="#DELL"/>
                  </Monitor>
                </BusConnection>
                <BusConnection>
                  <CPU rdf:ID="Athlon64X2">
                    <InternalConnection rdf:resource="#PCI-Express"/>
                    <isPartOf rdf:resource="#DELL"/>
                  </CPU>
                </BusConnection>
                <BusConnection rdf:resource="#OpticalMouse"/>
                <BusConnection rdf:resource="#LaserJet"/>
                <BusConnection>
                  <Graphic_Card rdf:ID="GeForce7900GTX">
                    <ExternalConnection rdf:resource="#TFT"/>
                    <InternalConnection rdf:resource="#PCI-Express"/>
                    <isPartOf rdf:resource="#DELL"/>
                  </Graphic_Card>
                </BusConnection>
                <BusConnection>
                  <Keyboard rdf:ID="MsKeyboard">
                    <InternalConnection rdf:resource="#PCI-Express"/>
                    <isPartOf rdf:resource="#DELL"/>
                  </Keyboard>
                </BusConnection>
              </Bus>
            </InternalConnection>
          </Printer>
        </hasIODevice>
        <hasBus rdf:resource="#PCI-Express"/>
        <hasIODevice rdf:resource="#OpticalMouse"/>
        <hasGraphicCard rdf:resource="#GeForce7900GTX"/>
        <hasIODevice rdf:resource="#TFT"/>
        <hasCPU rdf:resource="#Athlon64X2"/>
        <hasIODevice rdf:resource="#MsKeyboard"/>
        <hasMemory rdf:resource="#Corsair_1024"/>
      </Computer>
    </isPartOf>
    <InternalConnection rdf:resource="#PCI-Express"/>
  </Mouse>
</rdf:RDF>

<!-- Created with Protege (with OWL Plugin 2.2, Build 311)
http://protege.stanford.edu -->

								
To top