Semantic Web Technologies OWL
Semantic Web - Layers URIs. [ Τι είναι - διαφορά με URL ] 1 URIs. [ Τι είναι - διαφορά με URL ] 2 XML. [ Basics ] 3 RDF. [ Basics ] 4 RDF Schema. [ Basics ] 5 5 OWL. [ Αναλυτική παρουσίαση ] 4 3 2 1
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> <NAME>GEORGE</NAME> <AGE>43</AGE> <PHONE>28210-22332</PHONE> </XML> <XML> <IMAGE> <ID>IMG1</ID> <TITLE>TREE</TITLE> <PATH>C:\images\tree.jpg</PATH> <CAPTION>This is a tree</caption> </IMAGE> <ID>IMG2</ID> <TITLE>CAR</TITLE> <PATH>C:\images\cars\car.jpg</PATH> <CAPTION>This is a car</caption> </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> <ex:hasHomePage>http://www.john.gr</ex:hasHomePage> <rdf:Description rdf:about="some.uri/person/George"> <ex:hasFriend resource="some.uri/person/Tom"/>
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 Αδυναμία να περιγράψει με περισσότερη λεπτομέρια τα 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:Classrdf:ID=“Bear"> <rdfs:subClassOf rdf:resource="#Animal"/> </rdfs:Class> <owl:Classrdf:ID=“Bear"> <rdfs:subClassOf rdf:resource="#Animal"/> </owl:Class>
OWL - Classes IntersectionOf : Χρησιμοποιώντας το μπορούμε να κατασκευάσουμε μια κλάση συνδέοντας την με μια άλλη ή με μια ιδιότητα. <owl:Class rdf:ID=“John"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Human" /> <owl:Class rdf:about="#Male" /> </owl:intersectionOf> </owl:Class> Παράδειγμα : Ο John Είναι ένα Intersection του Human και του male.
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 Object properties Datatype properties Τα object συσχετίζουν δύο resources ενώ τα datatype συσχετίζουν ένα resource με ένα literal ( string , value , date κτλ ) Και τα 2 είναι subclasses του rdf:property
OWL - Property Characteristics 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> <birthplace rdf:about="http://www.country.org#GREECE"/> <birthplace rdf:about="http://www.country.org#GERMANY"/>
OWL - Functional Example 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>