Semantic Technologies
     Übung, Wintersemester 2011/12
  30. November 2011 - OWL & Protégé
Aufgabe 1
• Gegeben ist folgende Ontologie für die
  Verwaltung von Musik:
 ‣   http://www.hki.uni-koeln.de/sites/all/files/courses/
     5899/11-11-23_music-ontology_simple.owl


• Erweitern Sie diese Ontologie mit den
  Konstrukten aus RDFS+ so, dass dadurch
  möglichst viele Schlüsse automatisch
  gezogen werden können.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [                                                  <owl:DatatypeProperty rdf:about="&m;releaseDate"/>
   <!ENTITY m "http://example.org/music-ontology#">
   <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">       <owl:DatatypeProperty rdf:about="&m;title"/>
   <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">               </rdf:RDF>
]>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:owl="http://www.w3.org/2002/07/owl#">

  <owl:Class rdf:about="&m;Artist"/>

  <owl:Class rdf:about="&m;Band"/>

  <owl:Class rdf:about="&m;Soloartist"/>

  <rdf:Property rdf:about="&m;name">
     <rdfs:subClassOf rdf:resource="&rdfs;label"/>
  </rdf:Property>

  <rdf:Property rdf:about="&m;collaboratedWith"/>

  <rdf:Property rdf:about="&m;website"/>

  <rdf:Property rdf:about="&m;released">
     <rdfs:domain rdf:resource="&m;Artist"/>
     <rdfs:range rdf:resource="&m;Release"/>
  </rdf:Property>

  <rdf:Property rdf:about="&m;byArtist">
     <rdfs:domain rdf:resource="&m;Release"/>
     <rdfs:range rdf:resource="&m;Artist"/>
  </rdf:Property>

  <owl:Class rdf:about="&m;Release"/>

  <owl:Class rdf:about="&m;LP"/>

  <owl:Class rdf:about="&m;CD"/>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [                                                  <owl:Class rdf:about="&m;LP">
   <!ENTITY m "http://example.org/music-ontology#">                    <rdfs:subClassOf rdf:resource="&m;Release"/>
   <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">       </owl:Class>
   <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">                 <owl:Class rdf:about="&m;CD">
   <!ENTITY owl "http://www.w3.org/2002/07/owl#">                      <rdfs:subClassOf rdf:resource="&m;Release"/>
]>                                                                   </owl:Class>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:owl="http://www.w3.org/2002/07/owl#">                       <owl:DatatypeProperty rdf:about="&m;releaseDate"/>

  <owl:Class rdf:about="&m;Artist"/>                                 <owl:DatatypeProperty rdf:about="&m;title"/>

  <owl:Class rdf:about="&m;Band">                                  </rdf:RDF>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>
  </owl:Class>

  <owl:Class rdf:about="&m;Soloartist">
    <rdfs:subClassOf rdf:resource="&m;Artist"/>
  </owl:Class>

  <rdf:Property rdf:about="&m;name">
    <rdfs:subClassOf rdf:resource="&rdfs;label"/>
  </owl:DatatypeProperty>

  <rdf:Property rdf:about="&m;collaboratedWith"/>

  <rdf:Property rdf:about="&m;website"/>
  <rdf:Property rdf:about="&m;released">
     <rdfs:domain rdf:resource="&m;Artist"/>
     <rdfs:range rdf:resource="&m;Release"/>
  </rdf:Property>

  <rdf:Property rdf:about="&m;byArtist">
     <rdfs:domain rdf:resource="&m;Release"/>
     <rdfs:range rdf:resource="&m;Artist"/>
  </rdf:Property>

  <owl:Class rdf:about="&m;Release"/>
<?xml version="1.0" encoding="UTF-8"?>                               <rdf:Property rdf:about="&m;released">
<!DOCTYPE rdf:RDF [                                                     <rdfs:domain rdf:resource="&m;Artist"/>
   <!ENTITY m "http://example.org/music-ontology#">                     <rdfs:range rdf:resource="&m;Release"/>
   <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">       </rdf:Property>
   <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">                 <rdf:Property rdf:about="&m;byArtist">
   <!ENTITY owl "http://www.w3.org/2002/07/owl#">                       <rdfs:domain rdf:resource="&m;Release"/>
]>                                                                      <rdfs:range rdf:resource="&m;Artist"/>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     </rdf:Property>
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:owl="http://www.w3.org/2002/07/owl#">                       <owl:Class rdf:about="&m;Release"/>

  <owl:Class rdf:about="&m;Artist"/>                                 <owl:Class rdf:about="&m;LP">
                                                                       <rdfs:subClassOf rdf:resource="&m;Release"/>
  <owl:Class rdf:about="&m;Band">                                    </owl:Class>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>
  </owl:Class>                                                       <owl:Class rdf:about="&m;CD">
                                                                       <rdfs:subClassOf rdf:resource="&m;Release"/>
  <owl:Class rdf:about="&m;Soloartist">                              </owl:Class>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>
  </owl:Class>                                                       <rdf:Property rdf:about="&m;releaseDate">
                                                                        <rdfs:domain rdf:resource="&m;Release"/>
  <rdf:Property rdf:about="&m;name">                                    <rdfs:range rdf:resource="&xsd;date"/>
     <rdfs:subClassOf rdf:resource="&rdfs;label"/>                   </rdf:Property>
     <rdfs:domain rdf:resource="&m;Artist"/>
     <rdfs:range rdf:resource="&xsd;string"/>                        <rdf:Property rdf:about="&m;title">
  </rdf:Property>                                                       <rdfs:domain rdf:resource="&m;Release"/>
                                                                        <rdfs:range rdf:resource="&xsd;string"/>
  <rdf:Property rdf:about="&m;collaboratedWith">                     </rdf:Property>
     <rdfs:domain rdf:resource="&m;Artist"/>
     <rdfs:range rdf:resource="&m;Artist"/>                        </rdf:RDF>
  </rdf:Property>

  <rdf:Property rdf:about="&m;website">
     <rdfs:domain rdf:resource="&m;Artist"/>
  </rdf:Property>
<?xml version="1.0" encoding="UTF-8"?>                               <owl:ObjectProperty rdf:about="&m;released">
<!DOCTYPE rdf:RDF [                                                    <rdfs:domain rdf:resource="&m;Artist"/>
   <!ENTITY m "http://example.org/music-ontology#">                    <rdfs:range rdf:resource="&m;Release"/>
   <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">       </owl:ObjectProperty>
   <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">                 <owl:ObjectProperty rdf:about="&m;byArtist">
   <!ENTITY owl "http://www.w3.org/2002/07/owl#">                      <rdfs:domain rdf:resource="&m;Release"/>
]>                                                                     <rdfs:range rdf:resource="&m;Artist"/>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     </owl:ObjectProperty>
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
   xmlns:owl="http://www.w3.org/2002/07/owl#">                       <owl:Class rdf:about="&m;Release"/>

  <owl:Class rdf:about="&m;Artist"/>                                 <owl:Class rdf:about="&m;LP">
                                                                       <rdfs:subClassOf rdf:resource="&m;Release"/>
  <owl:Class rdf:about="&m;Band">                                    </owl:Class>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>
  </owl:Class>                                                       <owl:Class rdf:about="&m;CD">
                                                                       <rdfs:subClassOf rdf:resource="&m;Release"/>
  <owl:Class rdf:about="&m;Soloartist">                              </owl:Class>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>
  </owl:Class>                                                       <owl:DatatypeProperty rdf:about="&m;releaseDate">
                                                                       <rdfs:domain rdf:resource="&m;Release"/>
  <owl:DatatypeProperty rdf:about="&m;name">                           <rdfs:range rdf:resource="&xsd;date"/>
    <rdfs:subClassOf rdf:resource="&rdfs;label"/>                    </owl:DatatypeProperty>
    <rdfs:domain rdf:resource="&m;Artist"/>
    <rdfs:range rdf:resource="&xsd;string"/>                         <owl:DatatypeProperty rdf:about="&m;title">
  </owl:DatatypeProperty>                                              <rdfs:domain rdf:resource="&m;Release"/>
                                                                       <rdfs:range rdf:resource="&xsd;string"/>
  <owl:ObjectProperty rdf:about="&m;collaboratedWith">               </owl:DatatypeProperty>
    <rdfs:domain rdf:resource="&m;Artist"/>
    <rdfs:range rdf:resource="&m;Artist"/>                         </rdf:RDF>
  </owl:ObjectProperty>

  <owl:ObjectProperty rdf:about="&m;website">
    <rdfs:domain rdf:resource="&m;Artist"/>
  </owl:ObjectProperty>
<?xml version="1.0" encoding="UTF-8"?>                               <owl:ObjectProperty rdf:about="&m;released">
<!DOCTYPE rdf:RDF [                                                    <rdfs:domain rdf:resource="&m;Artist"/>
   <!ENTITY m "http://example.org/music-ontology#">                    <rdfs:range rdf:resource="&m;Release"/>
   <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">       </owl:ObjectProperty>
   <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#">
   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">                 <owl:ObjectProperty rdf:about="&m;byArtist">
   <!ENTITY owl "http://www.w3.org/2002/07/owl#">                      <rdf:type rdf:resource="&owl;FunctionalProperty"/>
]>                                                                     <rdfs:domain rdf:resource="&m;Release"/>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"       <rdfs:range rdf:resource="&m;Artist"/>
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"                  <owl:inverseOf rdf:resource="&m;released"/>
   xmlns:owl="http://www.w3.org/2002/07/owl#">                       </owl:ObjectProperty>

  <owl:Class rdf:about="&m;Artist"/>                                 <owl:Class rdf:about="&m;Release"/>

  <owl:Class rdf:about="&m;Band">                                    <owl:Class rdf:about="&m;LP">
    <rdfs:subClassOf rdf:resource="&m;Artist"/>                        <rdfs:subClassOf rdf:resource="&m;Release"/>
  </owl:Class>                                                       </owl:Class>

  <owl:Class rdf:about="&m;Soloartist">                              <owl:Class rdf:about="&m;CD">
    <rdfs:subClassOf rdf:resource="&m;Artist"/>                        <rdfs:subClassOf rdf:resource="&m;Release"/>
  </owl:Class>                                                       </owl:Class>

  <owl:DatatypeProperty rdf:about="&m;name">                         <owl:DatatypeProperty rdf:about="&m;releaseDate">
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>                 <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdfs:subClassOf rdf:resource="&rdfs;label"/>                      <rdfs:domain rdf:resource="&m;Release"/>
    <rdfs:domain rdf:resource="&m;Artist"/>                            <rdfs:range rdf:resource="&xsd;date"/>
    <rdfs:range rdf:resource="&xsd;string"/>                         </owl:DatatypeProperty>
  </owl:DatatypeProperty>
                                                                     <owl:DatatypeProperty rdf:about="&m;title">
  <owl:ObjectProperty rdf:about="&m;collaboratedWith">                 <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdf:type rdf:resource="&owl;SymmetricProperty"/>                  <rdfs:domain rdf:resource="&m;Release"/>
    <rdfs:domain rdf:resource="&m;Artist"/>                            <rdfs:range rdf:resource="&xsd;string"/>
    <rdfs:range rdf:resource="&m;Artist"/>                           </owl:DatatypeProperty>
  </owl:ObjectProperty>
                                                                   </rdf:RDF>
  <owl:ObjectProperty rdf:about="&m;website">
    <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
    <rdfs:domain rdf:resource="&m;Artist"/>
  </owl:ObjectProperty>
Aufgabe 2


• Erstellen Sie mit Hilfe der Klassen und
  Properties aus RDFS+ ein Mapping der
  Ontologie aus Aufgabe 1 auf FOAF.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [                                                  <owl:ObjectProperty rdf:about="&m;website">
   <!ENTITY m "http://example.org/music-ontology#">                    <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
   <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#">        <owl:equivalentProperty rdf:resource="&foaf;homepage"/>
   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">                 </owl:ObjectProperty>
   <!ENTITY owl "http://www.w3.org/2002/07/owl#">
   <!ENTITY foaf "http://xmlns.com/foaf/0.1/#">                      <owl:ObjectProperty rdf:about="&m;released">
]>                                                                     <rdfs:subPropertyOf rdf:resource="&foaf;made"/>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"       <rdfs:subPropertyOf rdf:resource="&foaf;pastProject"/>
   xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"                  <rdfs:domain rdf:resource="&m;Artist"/>
   xmlns:owl="http://www.w3.org/2002/07/owl#"                          <rdfs:range rdf:resource="&m;Release"/>
   xmlns:foaf="http://xmlns.com/foaf/0.1/#" >                        </owl:ObjectProperty>

  <owl:Class rdf:about="&m;Artist">                                  <owl:ObjectProperty rdf:about="&m;byArtist">
    <rdfs:subClassOf rdf:resource="&foaf;Agent"/>                      <rdf:type rdf:resource="&owl;FunctionalProperty"/>
  </owl:Class>                                                         <rdfs:subPropertyOf rdf:resource="&foaf;maker"/>
                                                                       <rdfs:domain rdf:resource="&m;Release"/>
  <owl:Class rdf:about="&m;Band">                                      <rdfs:range rdf:resource="&m;Artist"/>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>                        <owl:inverseOf rdf:resource="&m;released"/>
    <rdfs:subClassOf rdf:resource="&foaf;Group"/>                    </owl:ObjectProperty>
  </owl:Class>
                                                                     <owl:Class rdf:about="&m;Release">
  <owl:Class rdf:about="&m;Soloartist">                                <rdfs:subClassOf rdf:resource="&foaf;Project"/>
    <rdfs:subClassOf rdf:resource="&m;Artist"/>                      </owl:Class>
    <rdfs:subClassOf rdf:resource="&foaf;Person"/>
  </owl:Class>                                                       <!-- ... -->

  <owl:DatatypeProperty rdf:about="&m;name">                       </rdf:RDF>
    <rdf:type rdf:resource="&owl;FunctionalProperty"/>
    <rdf:subPropertyOf rdf:resource="&foaf;name"/>
    <rdfs:subClassOf rdf:resource="&rdfs;label"/>
    <rdfs:domain rdf:resource="&m;Artist"/>
    <rdfs:range rdf:resource="&xsd;string"/>
  </owl:DatatypeProperty>

  <owl:ObjectProperty rdf:about="&m;collaboratedWith">
    <rdf:type rdf:resource="&owl;SymmetricProperty"/>
    <rdfs:domain rdf:resource="&m;Artist"/>
    <rdfs:range rdf:resource="&m;Artist"/>
  </owl:ObjectProperty>
Noch etwas OWL
Disjunkte Klassen
<owl:Class rdf:about="&klips;Hauptseminar">
    <owl:disjointWith rdf:resource="&klips;Proseminar"/>
</owl:Class>




                        oder

<owl:AllDisjointClasses>
    <owl:members rdf:parseType="Collection">
        <owl:Class rdf:resource="&klips;Vorlesung"/>
        <owl:Class rdf:resource="&klips;Hauptseminar"/>
        <owl:Class rdf:resource="&klips;Proseminar"/>
        <owl:Class rdf:resource="&klips;Übung"/>
    </owl:members>
</owl:AllDisjointClasses>
Beschränkungen

• Beispiel:
 • „Hauptseminare werden nur von Professoren
     gehalten
• owl:Restriction
 • Unterklasse von owl:Class
 • Mitglieder der Klasse erfüllen bestimmte
     Bedingungen
    •   owl:someValuesFrom, owl:allValuesFrom, owl:hasValue
Beschränkungen
<owl:Restriction>
    <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/>
    <owl:someValuesFrom rdf:resource="&klips;Professor"/>
</owl:Restriction>



= Die Klasse aller Ressourcen, die von mindestens
    einem Professor gehalten werden.
<owl:Restriction>
    <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/>
    <owl:allValuesFrom rdf:resource="&klips;Professor"/>
</owl:Restriction>



= Die Klasse aller Ressourcen, die nur von
     Professoren gehalten werden.
➡ Achtung: Auch erfüllt, wenn niemand das Seminar hält!
Beschränkungen
<owl:Class rdf:about="&klips;Hauptseminar">
    <rdf:subClassOf rdf:resource="&klips;Seminar"/>
    <rdf:subClassOf>
        <owl:Restriction>
            <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/>
            <owl:someValuesFrom rdf:resource="&klips;Professor"/>
        </owl:Restriction>
    </rdf:subClassOf>
</owl:Class>




• Hauptseminare sind eine spezielle Art der
   Seminare, die von Professoren gehalten werden.
• Hauptseminare müssen von Professoren
   gehalten werden.
Beschränkungen
<owl:Class rdf:about="&klips;Hauptseminar">
    <rdf:subClassOf rdf:resource="&klips;Seminar"/>
    <owl:equivalentClass>
        <owl:Restriction>
            <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/>
            <owl:someValuesFrom rdf:resource="&klips;Professor"/>
        </owl:Restriction>
    </owl:equivalentClass>
</owl:Class>



•   Hauptseminare sind genau die Seminare, die von
    Professoren gehalten werden.

•   Hauptseminare müssen von Professoren gehalten
    werden.

•   Wenn ein Seminar von einem Professor gehalten wird,
    ist es ein Hauptseminar.
Protégé
Ein Ontologie-Editor
Protégé

• Open Source
• Cross-Plattform (Windows, Linux, Mac)
• http://protege.stanford.edu
Aufgabe
Aufgabe

• Bearbeiten Sie das Protégé OWL Tutorial:
    ‣   http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/


•   Schauen Sie sich die entstehende OWL-Datei
    beim Bearbeiten parallel in einem Text-Editor an.

•   Folgen Sie den einzelnen Exercises soweit wie
    sie können und senden Sie mir die entstandene
    Pizza-Ontologie.

Sitzung 8

  • 1.
    Semantic Technologies Übung, Wintersemester 2011/12 30. November 2011 - OWL & Protégé
  • 2.
    Aufgabe 1 • Gegebenist folgende Ontologie für die Verwaltung von Musik: ‣ http://www.hki.uni-koeln.de/sites/all/files/courses/ 5899/11-11-23_music-ontology_simple.owl • Erweitern Sie diese Ontologie mit den Konstrukten aus RDFS+ so, dass dadurch möglichst viele Schlüsse automatisch gezogen werden können.
  • 3.
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPErdf:RDF [ <owl:DatatypeProperty rdf:about="&m;releaseDate"/> <!ENTITY m "http://example.org/music-ontology#"> <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <owl:DatatypeProperty rdf:about="&m;title"/> <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> </rdf:RDF> ]> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#"> <owl:Class rdf:about="&m;Artist"/> <owl:Class rdf:about="&m;Band"/> <owl:Class rdf:about="&m;Soloartist"/> <rdf:Property rdf:about="&m;name"> <rdfs:subClassOf rdf:resource="&rdfs;label"/> </rdf:Property> <rdf:Property rdf:about="&m;collaboratedWith"/> <rdf:Property rdf:about="&m;website"/> <rdf:Property rdf:about="&m;released"> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&m;Release"/> </rdf:Property> <rdf:Property rdf:about="&m;byArtist"> <rdfs:domain rdf:resource="&m;Release"/> <rdfs:range rdf:resource="&m;Artist"/> </rdf:Property> <owl:Class rdf:about="&m;Release"/> <owl:Class rdf:about="&m;LP"/> <owl:Class rdf:about="&m;CD"/>
  • 4.
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPErdf:RDF [ <owl:Class rdf:about="&m;LP"> <!ENTITY m "http://example.org/music-ontology#"> <rdfs:subClassOf rdf:resource="&m;Release"/> <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> </owl:Class> <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <owl:Class rdf:about="&m;CD"> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> <rdfs:subClassOf rdf:resource="&m;Release"/> ]> </owl:Class> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#"> <owl:DatatypeProperty rdf:about="&m;releaseDate"/> <owl:Class rdf:about="&m;Artist"/> <owl:DatatypeProperty rdf:about="&m;title"/> <owl:Class rdf:about="&m;Band"> </rdf:RDF> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <owl:Class rdf:about="&m;Soloartist"> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <rdf:Property rdf:about="&m;name"> <rdfs:subClassOf rdf:resource="&rdfs;label"/> </owl:DatatypeProperty> <rdf:Property rdf:about="&m;collaboratedWith"/> <rdf:Property rdf:about="&m;website"/> <rdf:Property rdf:about="&m;released"> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&m;Release"/> </rdf:Property> <rdf:Property rdf:about="&m;byArtist"> <rdfs:domain rdf:resource="&m;Release"/> <rdfs:range rdf:resource="&m;Artist"/> </rdf:Property> <owl:Class rdf:about="&m;Release"/>
  • 5.
    <?xml version="1.0" encoding="UTF-8"?> <rdf:Property rdf:about="&m;released"> <!DOCTYPE rdf:RDF [ <rdfs:domain rdf:resource="&m;Artist"/> <!ENTITY m "http://example.org/music-ontology#"> <rdfs:range rdf:resource="&m;Release"/> <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> </rdf:Property> <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <rdf:Property rdf:about="&m;byArtist"> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> <rdfs:domain rdf:resource="&m;Release"/> ]> <rdfs:range rdf:resource="&m;Artist"/> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" </rdf:Property> xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#"> <owl:Class rdf:about="&m;Release"/> <owl:Class rdf:about="&m;Artist"/> <owl:Class rdf:about="&m;LP"> <rdfs:subClassOf rdf:resource="&m;Release"/> <owl:Class rdf:about="&m;Band"> </owl:Class> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <owl:Class rdf:about="&m;CD"> <rdfs:subClassOf rdf:resource="&m;Release"/> <owl:Class rdf:about="&m;Soloartist"> </owl:Class> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <rdf:Property rdf:about="&m;releaseDate"> <rdfs:domain rdf:resource="&m;Release"/> <rdf:Property rdf:about="&m;name"> <rdfs:range rdf:resource="&xsd;date"/> <rdfs:subClassOf rdf:resource="&rdfs;label"/> </rdf:Property> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&xsd;string"/> <rdf:Property rdf:about="&m;title"> </rdf:Property> <rdfs:domain rdf:resource="&m;Release"/> <rdfs:range rdf:resource="&xsd;string"/> <rdf:Property rdf:about="&m;collaboratedWith"> </rdf:Property> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&m;Artist"/> </rdf:RDF> </rdf:Property> <rdf:Property rdf:about="&m;website"> <rdfs:domain rdf:resource="&m;Artist"/> </rdf:Property>
  • 6.
    <?xml version="1.0" encoding="UTF-8"?> <owl:ObjectProperty rdf:about="&m;released"> <!DOCTYPE rdf:RDF [ <rdfs:domain rdf:resource="&m;Artist"/> <!ENTITY m "http://example.org/music-ontology#"> <rdfs:range rdf:resource="&m;Release"/> <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> </owl:ObjectProperty> <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <owl:ObjectProperty rdf:about="&m;byArtist"> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> <rdfs:domain rdf:resource="&m;Release"/> ]> <rdfs:range rdf:resource="&m;Artist"/> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" </owl:ObjectProperty> xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#"> <owl:Class rdf:about="&m;Release"/> <owl:Class rdf:about="&m;Artist"/> <owl:Class rdf:about="&m;LP"> <rdfs:subClassOf rdf:resource="&m;Release"/> <owl:Class rdf:about="&m;Band"> </owl:Class> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <owl:Class rdf:about="&m;CD"> <rdfs:subClassOf rdf:resource="&m;Release"/> <owl:Class rdf:about="&m;Soloartist"> </owl:Class> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <owl:DatatypeProperty rdf:about="&m;releaseDate"> <rdfs:domain rdf:resource="&m;Release"/> <owl:DatatypeProperty rdf:about="&m;name"> <rdfs:range rdf:resource="&xsd;date"/> <rdfs:subClassOf rdf:resource="&rdfs;label"/> </owl:DatatypeProperty> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&xsd;string"/> <owl:DatatypeProperty rdf:about="&m;title"> </owl:DatatypeProperty> <rdfs:domain rdf:resource="&m;Release"/> <rdfs:range rdf:resource="&xsd;string"/> <owl:ObjectProperty rdf:about="&m;collaboratedWith"> </owl:DatatypeProperty> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&m;Artist"/> </rdf:RDF> </owl:ObjectProperty> <owl:ObjectProperty rdf:about="&m;website"> <rdfs:domain rdf:resource="&m;Artist"/> </owl:ObjectProperty>
  • 7.
    <?xml version="1.0" encoding="UTF-8"?> <owl:ObjectProperty rdf:about="&m;released"> <!DOCTYPE rdf:RDF [ <rdfs:domain rdf:resource="&m;Artist"/> <!ENTITY m "http://example.org/music-ontology#"> <rdfs:range rdf:resource="&m;Release"/> <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> </owl:ObjectProperty> <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> <owl:ObjectProperty rdf:about="&m;byArtist"> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> <rdf:type rdf:resource="&owl;FunctionalProperty"/> ]> <rdfs:domain rdf:resource="&m;Release"/> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <rdfs:range rdf:resource="&m;Artist"/> xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" <owl:inverseOf rdf:resource="&m;released"/> xmlns:owl="http://www.w3.org/2002/07/owl#"> </owl:ObjectProperty> <owl:Class rdf:about="&m;Artist"/> <owl:Class rdf:about="&m;Release"/> <owl:Class rdf:about="&m;Band"> <owl:Class rdf:about="&m;LP"> <rdfs:subClassOf rdf:resource="&m;Artist"/> <rdfs:subClassOf rdf:resource="&m;Release"/> </owl:Class> </owl:Class> <owl:Class rdf:about="&m;Soloartist"> <owl:Class rdf:about="&m;CD"> <rdfs:subClassOf rdf:resource="&m;Artist"/> <rdfs:subClassOf rdf:resource="&m;Release"/> </owl:Class> </owl:Class> <owl:DatatypeProperty rdf:about="&m;name"> <owl:DatatypeProperty rdf:about="&m;releaseDate"> <rdf:type rdf:resource="&owl;FunctionalProperty"/> <rdf:type rdf:resource="&owl;FunctionalProperty"/> <rdfs:subClassOf rdf:resource="&rdfs;label"/> <rdfs:domain rdf:resource="&m;Release"/> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&xsd;date"/> <rdfs:range rdf:resource="&xsd;string"/> </owl:DatatypeProperty> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="&m;title"> <owl:ObjectProperty rdf:about="&m;collaboratedWith"> <rdf:type rdf:resource="&owl;FunctionalProperty"/> <rdf:type rdf:resource="&owl;SymmetricProperty"/> <rdfs:domain rdf:resource="&m;Release"/> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&xsd;string"/> <rdfs:range rdf:resource="&m;Artist"/> </owl:DatatypeProperty> </owl:ObjectProperty> </rdf:RDF> <owl:ObjectProperty rdf:about="&m;website"> <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/> <rdfs:domain rdf:resource="&m;Artist"/> </owl:ObjectProperty>
  • 8.
    Aufgabe 2 • ErstellenSie mit Hilfe der Klassen und Properties aus RDFS+ ein Mapping der Ontologie aus Aufgabe 1 auf FOAF.
  • 9.
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPErdf:RDF [ <owl:ObjectProperty rdf:about="&m;website"> <!ENTITY m "http://example.org/music-ontology#"> <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/> <!ENTITY rdfs "http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <owl:equivalentProperty rdf:resource="&foaf;homepage"/> <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"> </owl:ObjectProperty> <!ENTITY owl "http://www.w3.org/2002/07/owl#"> <!ENTITY foaf "http://xmlns.com/foaf/0.1/#"> <owl:ObjectProperty rdf:about="&m;released"> ]> <rdfs:subPropertyOf rdf:resource="&foaf;made"/> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" <rdfs:subPropertyOf rdf:resource="&foaf;pastProject"/> xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" <rdfs:domain rdf:resource="&m;Artist"/> xmlns:owl="http://www.w3.org/2002/07/owl#" <rdfs:range rdf:resource="&m;Release"/> xmlns:foaf="http://xmlns.com/foaf/0.1/#" > </owl:ObjectProperty> <owl:Class rdf:about="&m;Artist"> <owl:ObjectProperty rdf:about="&m;byArtist"> <rdfs:subClassOf rdf:resource="&foaf;Agent"/> <rdf:type rdf:resource="&owl;FunctionalProperty"/> </owl:Class> <rdfs:subPropertyOf rdf:resource="&foaf;maker"/> <rdfs:domain rdf:resource="&m;Release"/> <owl:Class rdf:about="&m;Band"> <rdfs:range rdf:resource="&m;Artist"/> <rdfs:subClassOf rdf:resource="&m;Artist"/> <owl:inverseOf rdf:resource="&m;released"/> <rdfs:subClassOf rdf:resource="&foaf;Group"/> </owl:ObjectProperty> </owl:Class> <owl:Class rdf:about="&m;Release"> <owl:Class rdf:about="&m;Soloartist"> <rdfs:subClassOf rdf:resource="&foaf;Project"/> <rdfs:subClassOf rdf:resource="&m;Artist"/> </owl:Class> <rdfs:subClassOf rdf:resource="&foaf;Person"/> </owl:Class> <!-- ... --> <owl:DatatypeProperty rdf:about="&m;name"> </rdf:RDF> <rdf:type rdf:resource="&owl;FunctionalProperty"/> <rdf:subPropertyOf rdf:resource="&foaf;name"/> <rdfs:subClassOf rdf:resource="&rdfs;label"/> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&xsd;string"/> </owl:DatatypeProperty> <owl:ObjectProperty rdf:about="&m;collaboratedWith"> <rdf:type rdf:resource="&owl;SymmetricProperty"/> <rdfs:domain rdf:resource="&m;Artist"/> <rdfs:range rdf:resource="&m;Artist"/> </owl:ObjectProperty>
  • 10.
  • 11.
    Disjunkte Klassen <owl:Class rdf:about="&klips;Hauptseminar"> <owl:disjointWith rdf:resource="&klips;Proseminar"/> </owl:Class> oder <owl:AllDisjointClasses> <owl:members rdf:parseType="Collection"> <owl:Class rdf:resource="&klips;Vorlesung"/> <owl:Class rdf:resource="&klips;Hauptseminar"/> <owl:Class rdf:resource="&klips;Proseminar"/> <owl:Class rdf:resource="&klips;Übung"/> </owl:members> </owl:AllDisjointClasses>
  • 12.
    Beschränkungen • Beispiel: •„Hauptseminare werden nur von Professoren gehalten • owl:Restriction • Unterklasse von owl:Class • Mitglieder der Klasse erfüllen bestimmte Bedingungen • owl:someValuesFrom, owl:allValuesFrom, owl:hasValue
  • 13.
    Beschränkungen <owl:Restriction> <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/> <owl:someValuesFrom rdf:resource="&klips;Professor"/> </owl:Restriction> = Die Klasse aller Ressourcen, die von mindestens einem Professor gehalten werden. <owl:Restriction> <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/> <owl:allValuesFrom rdf:resource="&klips;Professor"/> </owl:Restriction> = Die Klasse aller Ressourcen, die nur von Professoren gehalten werden. ➡ Achtung: Auch erfüllt, wenn niemand das Seminar hält!
  • 14.
    Beschränkungen <owl:Class rdf:about="&klips;Hauptseminar"> <rdf:subClassOf rdf:resource="&klips;Seminar"/> <rdf:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/> <owl:someValuesFrom rdf:resource="&klips;Professor"/> </owl:Restriction> </rdf:subClassOf> </owl:Class> • Hauptseminare sind eine spezielle Art der Seminare, die von Professoren gehalten werden. • Hauptseminare müssen von Professoren gehalten werden.
  • 15.
    Beschränkungen <owl:Class rdf:about="&klips;Hauptseminar"> <rdf:subClassOf rdf:resource="&klips;Seminar"/> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&klips;wirdGehaltenVon"/> <owl:someValuesFrom rdf:resource="&klips;Professor"/> </owl:Restriction> </owl:equivalentClass> </owl:Class> • Hauptseminare sind genau die Seminare, die von Professoren gehalten werden. • Hauptseminare müssen von Professoren gehalten werden. • Wenn ein Seminar von einem Professor gehalten wird, ist es ein Hauptseminar.
  • 16.
  • 17.
    Protégé • Open Source •Cross-Plattform (Windows, Linux, Mac) • http://protege.stanford.edu
  • 18.
  • 19.
    Aufgabe • Bearbeiten Siedas Protégé OWL Tutorial: ‣ http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/ • Schauen Sie sich die entstehende OWL-Datei beim Bearbeiten parallel in einem Text-Editor an. • Folgen Sie den einzelnen Exercises soweit wie sie können und senden Sie mir die entstandene Pizza-Ontologie.