OWL

33
OWL Semantic Web Technologies

description

Semantic Web Technologies. OWL. Semantic Web - Layers. 1. URIs. [ Τι είναι - διαφορά με URL ]. XML. [ Basics ]. 2. RDF. [ Basics ]. 3. RDF Schema. [ Basics ]. 4. 5. OWL. [ Αναλυτική παρουσίαση ]. 5. 4. 3. 2. 1. Semantic web - URIs. - PowerPoint PPT Presentation

Transcript of OWL

OWL

Semantic Web Technologies

Semantic Web - Layers

1

23

4

5

1

2

3

4

5

URIs. [ Τι είναι - διαφορά με URL ]

XML. [ Basics ]

RDF. [ Basics ]

RDF Schema. [ Basics ]

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

<XML>

<PERSON><NAME>JOHN</NAME><AGE>22</AGE><PHONE>28210-32432</PHONE></PERSON>

<PERSON><NAME>GEORGE</NAME><AGE>43</AGE><PHONE>28210-22332</PHONE></PERSON>

</XML>

<XML>

<IMAGE><ID>IMG1</ID><TITLE>TREE</TITLE><PATH>C:\images\tree.jpg</PATH><CAPTION>This is a tree</caption></IMAGE>

<IMAGE><ID>IMG2</ID><TITLE>CAR</TITLE><PATH>C:\images\cars\car.jpg</PATH><CAPTION>This is a car</caption></IMAGE>

</XML>

Παράδειγμα 1 Παράδειγμα 2

Semantic web - RDF

• Τριπλέτες subject – predicate – object

• Κάθε description element περιγράφει ένα resource.

• Κάθε attribute ή Nested element σε ένα description tag είναι property του συγκεκριμένου resource.

Semantic web - 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>

Παράδειγμα σύνταξης RDF:

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

<owl:Classrdf:ID=“Bear"><rdfs:subClassOf rdf:resource="#Animal"/></owl:Class>

<rdfs:Classrdf:ID=“Bear"><rdfs:subClassOf rdf:resource="#Animal"/></rdfs: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 : Χρησιμοποιείται για να πάρουμε το συμπλήρωμα.

<owl:Class rdf:ID=“Alive"> <owl:complementOf rdf:resource="#Dead" /> </owl:Class>

Παράδειγμα : Alive είναιComplementOf του Dead

OWL - Classes

• oneOf : Περιορίζουμε τα Instances τα οποία μπορούν να δημιουργηθούν για μια κλάση.

<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>

Παράδειγμα : H κλάσηDay_Of_Week

OWL - Classes

• disJointWith : Oταν δυο κλάσεις δηλώνονται ως disJoint αυτό σημαίνει ότι εάν ένα individual ανήκει στη μια τότε δε μπορεί να ανήκει και στην άλλη.

<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>

Παράδειγμα : Εάν ένα instanceΑνήκει στην κλάση pasta δε μπορείΝα ανήκει και στις υπόλοιπες

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: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 μπορούμε να λύσουμε το πρόβλημα ορίζοντας το birthPlace ως functional :

OWL – 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>

Εναλακτικά με τη δήλωση functional του property θα Μπορούσαμε να φτιάξουμε ένα cardinality restriction :

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

<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>

sameIndividualAs : Χρησιμοποιείται για να δείξουμε ότι δύο διαφορετικά individuals αναφέρονται στο ίδιο resource ( περιγράφουν δηλαδή το ίδιο πράγμα ).

Παράδειγμα: Κακοποιός με διπλή ταυτότητα. Στα αρχεία του FBI φαίνεται ότι χρησιμοποιεί δύο (ή και περισσότερα) ονόματα.

OWL - Individuals

<Criminal rdf:ID=“Johnson"<owl:differentFrom rdf:resource="http://www.fbi.com/criminals#Jeferson“ />...

</Criminal>

differentFrom : Χρησιμοποιείται για να δείξουμε ότι δύο individuals διαφορετικά και δεν υπάρχει περίπτωση να αναφέρονται στο ίδιο resource.

Παράδειγμα: Δυο κακοποιοί των οποίων τα στοιχεία έχουν ταυτοποιηθεί και είμαστε σίγουροι πως δεν είναι το ίδιο άτομο.

OWL - 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>

allDifferent : Χρησιμοποιόντας το allDifferent μπορούμε να δείξουμε ότι μια συλλογή από individuals είναι όλα διαφορετικά μεταξύ τους.

Παράδειγμα: Ονόματα κακοποιών που έχουν ταυτοποιηθεί ότι είναι διαφορετικά πρόσωπα.