Transcript owl:Class

Semantic Web Technologies
OWL
Semantic Web - Layers
1
URIs. [ Τι είναι - διαφορά με URL ]
2
XML. [ Basics ]
3
RDF. [ Basics ]
4
RDF Schema. [ Basics ]
5
5
4
3
2
1
OWL. [ Αναλυτική παρουσίαση ]
Semantic web - URIs
• Ενα URI ( Uniform Resource Identifier )
χρησιμοποιείται ως αναγνωριστικό για
οποιοδήποτε resource.
• Ένα URI μας δίνει πληροφορία για
ακριβώς ένα resource.
• Μπορεί να υπάρχουν περισσότερα από
ένα URIs που να “δείχνουν” στο ίδιο
resource.
Semantic web - URIs
• Το URL ( Uniform Resource Locator )
μας δίνει πληροφορία για το που
βρίσκεται ένα resource στο δίκτυο.
• Στο RDF τα URIs είναι συνήθως URLs της
μορφής:
http:www.example.com#something
Semantic web - XML
• H XML (eXtensible Markup Language ) είναι
μια γλώσσα που περιγράφει τη δομή
αποθήκευσης της πληροφορίας.
• H XML όπως και η HTML είναι mark-up
language και το συντακτικό της βασίζεται
στα tags <….>
• Στην XML ο χρήστης μπορεί να ορίσει τα
δικά του tags χωρίς περιορισμούς.
Semantic web - XML
Παράδειγμα 1
Παράδειγμα 2
<XML>
<XML>
<PERSON>
<NAME>JOHN</NAME>
<AGE>22</AGE>
<PHONE>28210-32432</PHONE>
</PERSON>
<IMAGE>
<ID>IMG1</ID>
<TITLE>TREE</TITLE>
<PATH>C:\images\tree.jpg</PATH>
<CAPTION>This is a tree</caption>
</IMAGE>
<PERSON>
<NAME>GEORGE</NAME>
<AGE>43</AGE>
<PHONE>28210-22332</PHONE>
</PERSON>
</XML>
<IMAGE>
<ID>IMG2</ID>
<TITLE>CAR</TITLE>
<PATH>C:\images\cars\car.jpg</PATH>
<CAPTION>This is a car</caption>
</IMAGE>
</XML>
Semantic web - RDF
• Τριπλέτες subject – predicate – object
• Κάθε description element περιγράφει ένα
resource.
• Κάθε attribute ή Nested element σε ένα
description tag είναι property του
συγκεκριμένου resource.
Semantic web - RDF
Παράδειγμα σύνταξης RDF:
<rdf:Description rdf:about="some.uri/person/John">
<ex:hasFriend resource="some.uri/person/George"/>
</rdf:Description>
<rdf:Description rdf:about="some.uri/person/John">
<ex:hasHomePage>http://www.john.gr</ex:hasHomePage>
</rdf:Description>
<rdf:Description rdf:about="some.uri/person/George">
<ex:hasFriend resource="some.uri/person/Tom"/>
</rdf:Description>
Semantic web - RDF namespaces
• Συντομογραφίες για τα resource identifiers για να γίνεται
ποιο ευανάγνωστο ένα RDF Document.
• <rdf:RDF
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#">
Semantic web - RDF schema
• To RDFS μας δίνει τη δυνατότητα να
προσθέσουμε semantics στο RDF.
• Μέσω του RDFS μπορούμε να
δημιουργήσουμε ένα λεξικό από όρους που
έχουν κάποια σημασιολογία και να
καθορίσουμε τις σχέσεις μεταξύ τους.
Semantic web - RDF schema
• Μερικά RDF Schema terms :
Class , Property , type , subClassOf ,range domain
• Φτιάχνοντας τριπλέτες με αυτούς τους
όρους:
<Person,type,Class>
<hasFriend,type,Property>
<Professor,subClassOf,Person>
<John,type,Professor>
<hasFriend,range,Person>
<hasFriend,domain,Person>
Semantic web - RDF schema
• Προβλήματα του RDF Schema :
Αδυναμία να περιγράψει με περισσότερη λεπτομέρια τα
resources :
– No localised range and domain constraints
• Πχ το range του hasChild είναι person για τους ανθρώπους και
elephant για τους ελέφαντες.
– No existence/cardinality constraints
• Πχ. Ενας άνθρωπος έχει ακριβώς 2 γονείς.
– No transitive, inverse or symmetrical properties
• Can’t say that isPartOf is a transitive property, that hasPart is the
inverse of isPartOf or that touches is symmetrical
– Κτλ κτλ
OWL - Γενικά
• H OWL βρίσκεται ένα επίπεδο πάνω από
το RDF schema του οποίου είναι
ουσιαστικά μια επέκταση.
• H OWL μας προσφέρει ένα πολύ πιο
πλούσιο και εκφραστικό συντακτικό για να
περιγράψουμε classes, properties και τις
μεταξύ τους σχέσεις.
• Ότι χρησιμοποιείται στο RDF-RDFS
συντακτικά είναι valid και στην OWL
OWL - Classes
• owl:class είναι subclass του rdfs:class
• Πολύ μεγαλύτερη εκφραστικότητα από
rdfs:class
<rdfs:Classrdf:ID=“Bear">
<rdfs:subClassOf rdf:resource="#Animal"/>
</rdfs:Class>
<owl:Classrdf:ID=“Bear">
<rdfs:subClassOf rdf:resource="#Animal"/>
</owl:Class>
OWL - Classes
• IntersectionOf : Χρησιμοποιώντας το
μπορούμε να κατασκευάσουμε μια κλάση
συνδέοντας την με μια άλλη ή με μια
ιδιότητα.
Παράδειγμα : Ο John
Είναι ένα Intersection του
Human και του male.
<owl:Class rdf:ID=“John">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Human" />
<owl:Class rdf:about="#Male" />
</owl:intersectionOf>
</owl:Class>
OWL - Classes
• UnionOf : Χρησιμοποιείται για να
καθορίσουμε ότι μια κλάση είναι “κάτι” και
“κάτι άλλο” αλλα ποτέ και τα δύο .
Παράδειγμα : Ένα φρούτο
Μπορεί να είναι γλυκό ή οχι
Γλυκό.
<owl:Class rdf:ID="Fruit">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#SweetFruit" />
<owl:Class rdf:about="#NonSweetFruit" />
</owl:unionOf> </owl:Class>
OWL - Classes
• ComplementOf : Χρησιμοποιείται για να
πάρουμε το συμπλήρωμα.
Παράδειγμα : Alive είναι
ComplementOf του Dead
<owl:Class rdf:ID=“Alive">
<owl:complementOf rdf:resource="#Dead" />
</owl:Class>
OWL - Classes
• oneOf : Περιορίζουμε τα Instances τα
οποία μπορούν να δημιουργηθούν για μια
κλάση.
Παράδειγμα : H κλάση
Day_Of_Week
<owl:Class rdf:ID=“Day_Of_Week">
<owl:oneOf rdf:parseType="Collection">
< Day_Of_Week rdf:about="http://www.ex.com#Monday"/>
< Day_Of_Week rdf:about="http://www.ex.com#Tuesday"/>
< Day_Of_Week rdf:about="http://www.ex.com#Wednesday"/>
…
</owl:oneOf>
</owl:Class>
OWL - Classes
• disJointWith : Oταν δυο κλάσεις
δηλώνονται ως disJoint αυτό σημαίνει ότι
εάν ένα individual ανήκει στη μια τότε δε
μπορεί να ανήκει και στην άλλη.
Παράδειγμα : Εάν ένα instance
Ανήκει στην κλάση pasta δε μπορεί
Να ανήκει και στις υπόλοιπες
<owl:Class rdf:ID="Pasta">
<owl:disjointWith rdf:resource="#Meat"/>
<owl:disjointWith rdf:resource="#Fowl"/>
<owl:disjointWith rdf:resource="#Seafood"/>
<owl:disjointWith rdf:resource="#Dessert"/>
<owl:disjointWith rdf:resource="#Fruit"/>
</owl:Class>
OWL - Properties
• Στην owl έχουμε 2 ειδών properties
1) Object properties
2) Datatype properties
Τα object συσχετίζουν δύο resources ενώ τα
datatype συσχετίζουν ένα resource με
ένα literal ( string , value , date κτλ )
Και τα 2 είναι subclasses του rdf:property
OWL - Property Characteristics
1) Symmetric
Παράδειγμα :
X touches Y  Y touches X
X connects to Y  Y connects to X
<owl:ObjectProperty rdf:ID=“touches">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#SymmetricProperty"/>
<rdfs:domain rdf:resource="#Person"/>
<rdfs:range rdf:resource="#Person"/>
</owl:ObjectProperty>
OWL - Property Characteristics
2) Transitive
Παράδειγμα :
X includes Y , Y includes Z  X includes Z
Bear is an animal , Grizzly is a bear 
Grizzly is an animal
<owl:ObjectProperty rdf:ID=“includes">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#TransitiveProperty"/>
<rdfs:domain rdf:resource="#shape"/>
<rdfs:range rdf:resource="#shape"/>
</owl:ObjectProperty>
OWL - Property Characteristics
3) Functional
Για κάθε Instance υπάρχει μόνο μία τιμή που
συνδέεται με το Property.
• Παρακάτω βλέπουμε πως μπορεί να
δημιουργηθεί σύγχηση από τις τριπλέτες
του RDF όταν δεν έχουμε cardinality
restrictions και πως η OWL λύνει αυτό το
πρόβλημα.
OWL - Functional Example
RDF : Δεν μπορούμε να βρούμε ποιο από τα παρακάτω
είναι αληθές.
<Person rdf:about="http://www.person.org#John">
<birthplace rdf:about="http://www.country.org#USA"/>
</Person>
<Person rdf:about="http://www.person.org#John">
<birthplace rdf:about="http://www.country.org#GREECE"/>
</Person>
<Person rdf:about="http://www.person.org#John">
<birthplace rdf:about="http://www.country.org#GERMANY"/>
</Person>
OWL - Functional Example
Στην owl μπορούμε να λύσουμε το πρόβλημα ορίζοντας το
birthPlace ως functional :
<owl:DatatypeProperty rdf:ID=“birthPlace">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:domain rdf:resource="#Person"/>
<rdfs:range rdf:resource=“Country"/>
</owl:ObjectProperty>
OWL – Cardinality restriction
Εναλακτικά με τη δήλωση functional του property θα
Μπορούσαμε να φτιάξουμε ένα cardinality restriction :
<owl:Class rdf:ID=“Person">
<owl:Restriction>
<owl:onProperty rdf:resource="#birthPlace"/>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</owl:Class>
OWL - Property Characteristics
4) Inverse Functional
Σχέση 1 προς 1.
Παράδειγμα:
Ενας άνθρωπος έχει έναν αριθμό
ταυτότητας και ένας αριθμός ταυτότητας
αντιστοιχεί σε έναν ανθρωπο.
OWL - Property Characteristics
5) Inverse
Καθορίζει την αντίστροφη σχέση.
Παράδειγμα :
Employee1 worksfor Company1
Company1 hasEmployee Employee1
<owl:ObjectProperty rdf:ID=“worksFor">
<owl:inverseOf rdf:resource="#hasEmployee"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:range rdf:resource="#Company"/>
</owl:ObjectProperty>
OWL - Individuals
• Individuals είναι τα instances των κλάσεων
• Στην owl υπάρχουν κάποια statements
που περιγράφουν σχέσεις ανάμεσα στα
individuals.
• Παρακάτω θα δουμε τα :
sameIndividualAs
differentFrom
allDifferent
OWL - Individuals
sameIndividualAs : Χρησιμοποιείται για να δείξουμε ότι δύο
διαφορετικά individuals αναφέρονται στο ίδιο resource (
περιγράφουν δηλαδή το ίδιο πράγμα ).
Παράδειγμα: Κακοποιός με διπλή ταυτότητα. Στα αρχεία του
FBI φαίνεται ότι χρησιμοποιεί δύο (ή και περισσότερα)
ονόματα.
<Criminal rdf:ID=“Johnson"
<owl:sameIndividualAs rdf:resource="http://www.fbi.com/criminals#Jackson"/>
<owl:sameIndividualAs rdf:resource="http://www.fbi.com/criminals#Larson"/>
...
</Criminal>
OWL - Individuals
differentFrom : Χρησιμοποιείται για να δείξουμε ότι δύο
individuals διαφορετικά και δεν υπάρχει περίπτωση να
αναφέρονται στο ίδιο resource.
Παράδειγμα: Δυο κακοποιοί των οποίων τα στοιχεία έχουν
ταυτοποιηθεί και είμαστε σίγουροι πως δεν είναι το ίδιο άτομο.
<Criminal rdf:ID=“Johnson"
<owl:differentFrom rdf:resource="http://www.fbi.com/criminals#Jeferson“ />
...
</Criminal>
OWL - Individuals
allDifferent : Χρησιμοποιόντας το allDifferent μπορούμε να
δείξουμε ότι μια συλλογή από individuals είναι όλα
διαφορετικά μεταξύ τους.
Παράδειγμα: Ονόματα κακοποιών που έχουν ταυτοποιηθεί ότι
είναι διαφορετικά πρόσωπα.
<owl:AllDifferent>
<owl:distinctMembers rdf:parseType="Collection">
<Criminal rdf:about="http://www.fbi.com/criminals#Johnson"/>
<Criminal rdf:about="http://www.fbi.com/criminals#Jackson"/>
<Criminal rdf:about="http://www.fbi.com/criminals#Larson"/>
<Criminal rdf:about="http://www.fbi.com/criminals#Jeferson"/>
</owl:distinctMembers>
</owl:AllDifferent>