ιαχείριση Γνώσης σε Ενδοεπιχειρισιακά ίκτυα και το ιαδίκτυο (ΗΥ-566) Άσκηση 2 - Αναφορά "Επιλογή Παραδείγµατος Πεδίου Εφαρµογής Περιγραφής Γνώσης, Σύνταξη Σχήµατος σε RDFS (δεδοµένa σε RDF) και Επερωτήσεις σε RQL" Γιαννακόπουλος Ιωάννης giannak@csd.uoc.gr Γεωργίου Γεώργιος georgg@csd.uoc.gr Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης, Ηράκλειο 1 Εισαγωγή Ο σκοπός της συγκεκριµένης άσκησης ήταν: (i) κατ' αρχήν να επιλέξουµε ένα παράδειγµα πεδίου εφαρµογής περιγραφής γνώσης και κατόπιν να συντάξουµε το σχήµα του σε RDFS (οντολογία), (ii) να δηµιουργήσουµε κάποια δεδοµένα που σχετίζονται µε αυτό το σχήµα και να τα αποθηκεύσουµε σε βάση δεδοµένων (PostgreSQL), (iii) να εξάγουµε queries που µας ενδιαφέρουν και να τα εκφράσουµε στη γλώσσα επερωτήσεων RQL και τέλος (iv) να εξετάσουµε πιθανά limitations του RDF σχήµατος. 2 Παράδειγµα Πεδίου Εφαρµογής Περιγραφής Γνώσης Το domain της εφαρµογής που επιλέξαµε να µοντελοποιήσουµε είναι το web portal ενός ηλεκτρονικού βιβλιοπωλείου. Στις προδιαγραφές του βιβλιοπωλείου περιλαµβάνονται οντότητες που έχουν να κάνουν µε τίτλους βιβλίων ή περιοδικών, θεµατικές ενότητες, πελάτες του βιβλιοπωλείου, προτιµήσεις και συναλλαγές αυτών, προσφορές σε κάποιους τίτλους κ.τ.λ. Συγκεκριµένα το ηλεκτρονικό βιβλιοπωλείο υποστηρίζει τις παρακάτω λειτουργίες: Καταγραφή των τίτλων βιβλίων ή περιοδικών που διαθέτει το βιβλιοπωλείο. Κατηγοριοποίηση των τίτλων µε βάση θεµατικές ενότητες. Κάθε τίτλος µπορεί να ανήκει σε περισσότερες από µία θεµατικές ενότητες. Καταγραφή στοιχείων (όνοµα, επίθετο, διεύθυνση, επάγγελµα, τηλέφωνο, e-mail, κ.τ.λ.) για τους πελάτες του βιβλιοπωλείου. Επίσης καταγραφή των προτιµήσεων και του επιπέδου γνώσεων κάθε πελάτη ως προς θεµατικές ενότητες. Αναλυτική καταγραφή των πρόσφατων συναλλαγών κάθε πελάτη. Πρόσφατες θεωρούνται οι συναλλαγές του τελευταίου έτους. Υποστήριξη on-line συναλλαγών των πελατών µε το βιβλιοπωλείο και κατάταξη των συναλλαγών µε βάση τον τρόπο πληρωµής (πληρωµή µε αντικαταβολή ή on-line πληρωµή µε πιστωτική κάρτα). Ύπαρξη προσωπικού κωδικού για κάθε πελάτη. Καταγραφή των προσφορών που κάνει το βιβλιοπωλείο και αναζήτηση των πελατών που πρέπει να ειδοποιηθούν για τις προσφορές, επειδή έχουν δείξει προτίµηση για τη συγκεκριµένη θεµατική ενότητα. Καταγραφή των σχολίων κάποιου πελάτη για έναν τίτλο και αξιολόγηση του τίτλου από µέρους του πελάτη σε "κακό", "µέτριο", "καλό" ή "πολύ καλό". Αναζήτηση τίτλων µε βάση τίτλο, συγγραφέα, εκδοτικό οίκο, ISBN, serial number.
Αναζήτηση των δηµοφιλέστερων τίτλων για κάθε θεµατική ενότητα µαζί µε τη γνώµη των πελατών. 3 Oντολογία σε RDF Schema Στο Σχήµα 1 που ακολουθεί παρατίθεται η οντολογία του ηλεκτρονικού βιβλιοπωλείου σε RDF Schema. Σηµειώνουµε ότι στο παρακάτω σχήµα φαίνονται µόνο τα RDF properties που έχουν domain καθώς και range, κλάσεις. Αυτό κρίθηκε σκόπιµο να γίνει για λόγους ευανάγνωσης του σχήµατος. Για τα properties που έχουν domain κλάση και range literal, γίνεται λόγος αργότερα σ' αυτή την αναφορά. Σχήµα 1: Η οντολογία του ηλεκτρονικού βιβλιοπωλείου σε RDF Schema (RDFS) Όπως βλέπουµε στο Σχήµα 1, η οντολογία µας αποτελείται από δέκα κλάσεις. Με τον ορισµό τόσο των κλάσεων αυτών, όσο και των χαρακτηριστικών τους, ικανοποιούνται πλήρως οι προδιαγραφές του βιβλιοπωλείου που είχαν τεθεί εξ' αρχής (βλέπε Εδάφιο 2). Τα χαρακτηριστικά της κάθε κλάσης (properties µε domain την κλάση στην οποία αναφέρονται και range literal), φαίνονται παρακάτω: Title: Όνοµα τίτλου, συγγραφέας, έτος έκδοσης, τιµή Book: ISBN Magazine: Serial no Knowledge Area: Όνοµα γνωστικής περιοχής Publisher: Όνοµα εκδοτικού οίκου, περιοχή ενδιαφέροντος, ηλεκτρονική διεύθυνση Offer: Αρχική ηµεροµηνία προσφοράς, τελική ηµεροµηνία Customer: Όνοµα πελάτη, επίθετο, διεύθυνση, επάγγελµα, πόλη, e-mail, τηλέφωνο, login, password Preferences: Επίπεδο γνώσης του πελάτη ως προς θεµατικές ενότητες Purchase: Ηµεροµηνία συνδιαλλαγής (αγοράς κάποιου τίτλου) του πελάτη, τρόπος πληρωµής (on-line ή µε αντικαταβολή) Review: Σχόλια του πελάτη ως προς κάποιον τίτλο, βαθµός αξιολόγησης
Η οντολογία του βιβλιοπωλείου, σε RDFS κώδικα, φαίνεται παρακάτω: <?xml version="1.0" encoding="utf-8"?> <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:xsd="http://www.w3.org/2001/xmlschema#"> <rdfs:class rdf:id="title"/> <rdfs:class rdf:id="book"> <rdfs:subclassof rdf:resource="#title"/> </rdfs:class> <rdfs:class rdf:id="magazine"> <rdfs:subclassof rdf:resource="#title"/> </rdfs:class> <rdfs:class rdf:id="knowledgearea"/> <rdfs:class rdf:id="publisher"/> <rdfs:class rdf:id="offer"/> <rdfs:class rdf:id="customer"/> <rdfs:class rdf:id="preferences"/> <rdfs:class rdf:id="purchase"/> <rdfs:class rdf:id="review"/> <rdf:property rdf:id="titlename"> <rdf:property rdf:id="karea"> <rdfs:range rdf:resource="#knowledgearea"/> <rdf:property rdf:id="author"> <rdf:property rdf:id="publishedyear"> <rdf:property rdf:id="price"> <rdf:property rdf:id="kareaname"> <rdfs:domain rdf:resource="#knowledgearea"/> <rdf:property rdf:id="isbn"> <rdfs:domain rdf:resource="#book"/> <rdf:property rdf:id="serialno"> <rdfs:domain rdf:resource="#magazine"/>
<rdf:property rdf:id="publishername"> <rdfs:domain rdf:resource="#publisher"/> <rdf:property rdf:id="regionofinterest"> <rdfs:domain rdf:resource="#publisher"/> <rdf:property rdf:id="publisherurl"> <rdfs:domain rdf:resource="#publisher"/> <rdf:property rdf:id="publishedby"> <rdfs:range rdf:resource="#publisher"/> <rdf:property rdf:id="startdate"> <rdfs:domain rdf:resource="#offer"/> <rdf:property rdf:id="enddate"> <rdfs:domain rdf:resource="#offer"/> <rdf:property rdf:id="fname"> <rdf:property rdf:id="sname"> <rdf:property rdf:id="address"> <rdf:property rdf:id="profession"> <rdf:property rdf:id="city"> <rdf:property rdf:id="email"> <rdf:property rdf:id="telnum"> <rdf:property rdf:id="login">
<rdf:property rdf:id="password"> <rdf:property rdf:id="offerid"> <rdfs:range rdf:resource="#offer"/> <rdf:property rdf:id="customerid"> <rdfs:domain rdf:resource="#preferences"/> <rdfs:range rdf:resource="#customer"/> <rdf:property rdf:id="aboutkarea"> <rdfs:domain rdf:resource="#preferences"/> <rdfs:range rdf:resource="#knowledgearea"/> <rdf:property rdf:id="klevel"> <rdfs:domain rdf:resource="#preferences"/> <rdf:property rdf:id="pdate"> <rdf:property rdf:id="paymentway"> <!-- Boolean: 0 in cash (offline), 1 by credit card (online) --> <rdf:property rdf:id="whichcustomer"> <rdfs:range rdf:resource="#customer"/> <rdf:property rdf:id="whichtitle"> <rdfs:range rdf:resource="#title"/> <rdf:property rdf:id="cid"> <rdfs:range rdf:resource="#customer"/> <rdf:property rdf:id="tid"> <rdfs:range rdf:resource="#title"/> <rdf:property rdf:id="grade"> <!-- Potential values: 0 -> bad, 1 -> moderate, 2 -> good, 3 -> very good --> <rdf:property rdf:id="comments"> <!-- Customer comments about a specific title --> </rdf:rdf>
Σύµφωνα µε την παραπάνω οντολογία, ένα παράδειγµα σε RDF-Instance επίπεδο (RDF δεδοµένα), είναι το ακόλουθο: <KnowledgeArea rdf:id="knarea1"> <kareaname>network Programming</kAreaName> </KnowledgeArea> <Publisher rdf:id="pub2"> <publishername>addison Wesley</publisherName> <regionofinterest>computer Books</regionOfInterest> <publisherurl>http://www.aw.com</publisherurl> </Publisher> <Book rdf:id="book1"> <titlename>tcp/ip Illustrated Volume 2: The Implementation</titleName> <author>richard Stevens</author> <ISBN>0-201-63354-X</ISBN> <karea rdf:resource="#knarea1"/> <publishedby rdf:resource="#pub2"/> <publishedyear>1995</publishedyear> <!-- This book is not in offer... --> </Book> 4 Επερωτήσεις σε RQL Μερικά (τα πιο ενδεικτικά) από τα queries που υποστηρίζει η οντολογία µας στα RDF δεδοµένα που έχουν εισαχθεί στη βάση δεδοµένων, εκπεφρασµένα σε RQL, φαίνονται παρακάτω: 1. Προβολή των θεµατικών ενοτήτων στις οποίες χωρίζονται οι τίτλοι. select X, Y from KnowledgeArea{X}.kAreaName{Y} 2. Προβολή των τίτλων ανά θεµατική ενότητα. select N, A from Title{X}.kArea{Y}, {T}titleName{N}, {T}author{A} where Y="KNArea1" and X=T 3. Προβολή των σχολίων πελατών για κάποιο τίτλο. select C from Review{X}.tID{Y}, {R}comment{C} where Y="Book1" and X=R 4. Προβολή της βαθµολογίας όλων των πελατών για έναν συγκεκριµένο τίτλο. select C from Review{X}.tID{Y}, {R}grade{C} where Y="Book1" and X=R 5. Αναζήτηση τίτλου µε βάση όνοµα. (Παρόµοια και µε βάση συγγραφέα, εκδοτικό οίκο κ.τ.λ.) select N, A, KN, PN from Title{X}.ISBN{Y}, {T}titleName{N}, {T}author{A}, {T}kArea{K}.kAreaName{KN}, {T}publishedBy{P}.publisherName{PN} where Y like "*TCP/IP Illustrated*" and X=T
6. Αναζήτηση βιβλίου µε βάση ISBN. select N, A, KN, PN from Book{X}.ISBN{Y}, {T}titleName{N}, {T}author{A}, {T}kArea{K}.kAreaName{KN}, {T}publishedBy{P}.publisherName{PN} where Y="0-201-63354-X" and X=T 7. Προβολή των τίτλων που είναι σε προσφορά. select Χ from Τitle{X}.offerID{Y} 8. Προβολή του επιπέδου γνώσεων των πελατών ως προς κάποια θεµατική ενότητα. select N from Preferences{X}.aboutKArea{Y}, {T}kLevel{N} where Y="KnArea1" and X=T 9. Προβολή των προσφορών σε τίτλους, οι οποίες άρχισαν µετά τις 25/10/2002. select Χ, S, E from Τitle{X}.offerID{Y}, {Τ}startDate{S}, {T}endDate{E} where S >= "2002-10-25" and X=T 5 Limitations του RDF Σχήµατος Το σχήµα του βιβλιοπωλείου µας λόγω του ότι είναι εκπεφρασµένο σε RDFS, παρουσιάζει κάποιες αδυναµίες όσον αφορά την εκφραστικότητα των οντοτήτων που περιέχονται σ' αυτό καθώς και των ιδιοτήτων τους. Τα limitations αυτά εντοπίζονται στα ακόλουθα: Οι κλάσεις Book και Magazine είναι disjoint. Κάτι τέτοιο όµως δε µπορούµε να το εκφράσουµε στο RDF schema Εκτός από Literals δεν υπάρχουν πιο restrictive τιµές γνωρισµάτων (π.χ. boolean) Cardinality restrictions: Π.χ. Θέλουµε να πούµε ότι ένας τίτλος έχει ακριβώς µία προσφορά, πράγµα που δε µπορούµε στο RDF schema Τα range restrictions (transitive properties) που υπάρχουν σε κάποια attributes των properties της οντολογίας, δε µπορούν να εκφραστούν στο RDF schema Τα παραπάνω limitations πρόκειται να αντιµετωπιστούν στο επόµενο draft της οντολογίας µας (Άσκηση 3), η οποία θα είναι εκπεφρασµένη σε OWL.