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>