Μια Οντολογία ΟWL για τα Σχολικά Εργαστήρια Πληροφορικής Σταύρος Σαχτούρης, Περικλής Γεωργιάδης saxtouri@csd.uoc.gr, perge@csd.uoc.gr ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Φθινόπωρο 2003-04 - 2 η Άσκηση Περιεχόμενα 1. Η αφετηρία από την προηγούμενη εργασία...2 2. Οντολογία...4 2.1. Κλάσεις - Υποκλάσεις...4 2.1.1. Ορισμός disjoint κλάσεων...4 2.1.2. Ορισμός κλάσεων με απαρίθμηση των μελών της...5 2.1.3. Ορισμός κλάσης ως τομή υπάρχουσας με ανώνυμη από περιορισμό σε ιδιότητα...5 2.1.4. Ορισμός κλάσης με nesting σε boolean συνδυασμούς ορισμένων και ανωνύμων κλάσεων.6 2.2. Ιδιότητες Υποϊδιότητες...7 2.2.1. Ορισμός αντίστροφων ObjectProperties...8 2.2.2. Ορισμός Functional και ταυτόχρονα InverseFunctional Properties...8 2.2.3. Ορισμός Περιορισμών πληθυκότητας...9 2.2.4. Ορισμός Functional Properties...9 2.3. Συνοπτικό σχήμα της Οντολογίας με τις ιδιότητες ObjectType...10 3. Παρατηρήσεις - Επεκτάσεις...11 4. Προβλήματα στη μοντελοποίηση με OWL...12 Παράρτημα Α: Ο κώδικας της οντολογίας OWL (χωρίς τα δεδομένα)...13
1. Η αφετηρία από την προηγούμενη εργασία Το πεδίο το οποίο μοντελοποιούμε σε OWL έχει εξηγηθεί αναλυτικά στην προηγούμενη εργασία μας. Ας το περιγράψουμε, λοιπόν, περιληπτικά εδώ, παραπέμποντας τον αναγνώστη για τη λεπτομερέστερη ανάλυση του στο προαναφερθέν πόνημα. Η οντολογία αφορά τα Σχολικά Εργαστήρια Πληροφορικής με τα οποία έχει εξοπλισθεί τα τελευταία χρόνια η συντριπτική πλειοψηφία των Σχολικών Μονάδων (Γυμνάσια, Λύκεια, ΤΕΕ, ΣΕΚ) της Δευτεροβάθμιας Εκπαίδευσης. Τα εργαστήρια αυτά αποκτήθηκαν με διάφορους τρόπους (χρηματοδοτήσεις Ευρωπαϊκών Προγραμμάτων, Δωρεές, Εθνικά Προγράμματα, κ.ο.κ.). Μια Σχολική Μονάδα μπορεί να έχει υπό την ευθύνη της περισσότερα από ένα εργαστήρια, ή, αν είναι μικρή, μπορεί να εξυπηρετείται από εργαστήριο γειτονικής ή συστεγαζόμενης μονάδας. Κάθε εργαστήριο, λοιπόν, μπορεί να χρησιμοποιείται από πολλούς καθηγητές ενός, ή περισσότερων σχολείων. Για κάθε εργαστήριο ορίζεται κάθε σχολική χρονιά ένας καθηγητής ως Υπεύθυνος Εργαστηρίου. Ο καθηγητής αυτός δεν ανήκει απαραίτητα οργανικά στην ίδια μονάδα που έχει την ευθύνη του εργαστηρίου (για παράδειγμα ένας καθηγητής Πληροφορικής μπορεί να είναι υπεύθυνος εργαστηρίου για ένα επαρχιακό σχολείο στο οποίο κάνει μια μέρα τη βδομάδα μάθημα, ενώ ανήκει οργανικά σε άλλο σχολείο, όπου επίσης είναι πιθανό να έχει ορισθεί υπεύθυνος εργαστηρίου. Τα περισσότερα εργαστήρια, τέλος, έχουν συμβόλαια υποστήριξης από εταιρείες, οι οποίες δεν συμπίπτουν απαραίτητα με τις προμηθεύτριες εταιρείες. Το μοντέλο μας φροντίζει να τηρούνται, ή να μπορούν να αντληθούν, πληροφορίες που έχουν σχέση με τα παραπάνω. Οι πληροφορίες αυτές είναι χρήσιμες σε πολλές ομάδες χρηστών, που δε συμπίπτουν απαραίτητα με τους παραγωγούς τους: σύλλογοι Διδασκόντων και διευθύνσεις Σχολικών Μονάδων, διευθύνσεις Δευτεροβάθμιας, Κέντρα Πληροφορικής και Νέων Τεχνολογιών (ΠΛΗ.ΝΕ.Τ.), Υπηρεσίες Υποστήριξης του Πανελληνίου Σχολικού Δικτύου (Edunet), υπηρεσίες του ΥΠ.Ε.Π.Θ., αλλά και φορείς ή μεμονωμένοι εκπαιδευτικοί, γονείς και μαθητές έχουν λόγους να τις χρησιμοποιήσουν. Η υλοποίηση σε RDF/S έδωσε τη δυνατότητα της δημιουργίας μιας οντολογίας που μοντελοποίησε επαρκώς το παραπάνω πεδίο. Ταυτόχρονα η χρήση της RDF Suite για την εισαγωγή δεδομένων σε RSSDB, και η σύνταξη ερωτημάτων σε RQL, κατέδειξε την εγκυρότητα και τη χρησιμότητα της υλοποίησης. Ωστόσο, αναγνωρίσθηκαν μια σειρά από ανάγκες τις οποίες δεν μπόρεσε να ικανοποιήσει. Ας αναφέρουμε, ενδεικτικά, κάποιες από αυτές. Θα θέλαμε να έχουμε τη δυνατότητα: Να ορίσουμε ότι κάτι που είναι Σχολική Μονάδα δεν μπορεί να είναι και Εταιρεία... Να περιορίσουμε το είδος σύνδεσης ενός εργαστηρίου σε συγκεκριμένες επιτρεπτές τιμές... Να φτιάξουμε αντίστροφες σχέσεις: π.χ. μεταξύ labneed και lab, ώστε να απαντούμε ευκολότερα ερωτήσεις που εμπλέκουν κι άλλες οντότητες με αυτές στην ίδια «φορά». Θέλουμε όμως η σχέση της αντιστροφής να είναι ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 2
«αντιληπτή» στο ίδιο το μοντέλο, ώστε να είναι δυνατή η «μηχανική» εξαγωγή συμπερασμάτων πάνω στα δεδομένα... Να ορίσουμε ότι μια εταιρεία έχει έναν μοναδικό ΑΦΜ... Να ορίσουμε ότι ένας ΑΦΜ ή ένας αριθμός ταυτότητας ανήκει μόνο σε μια εταιρεία ή έναν καθηγητή, αντίστοιχα... Να ορίσουμε ότι κάθε καθηγητής έχει μία ακριβώς οργανική θέση. Να ορίσουμε ότι υπάρχει μία το πολύ ημερομηνία λήξεως για κάθε εργαστηριακή ανάγκη... Να μπορούμε να διαπιστώνουμε ότι στιγμιότυπα όπως τα «3ο Λύκειο Ηρακλείου», «3ο Ενιαίο Λύκειο Ηρακλείου» και «3ο Ε.Λ. Ηρακλείου» αναφέρονται στην ίδια σχολική μονάδα... Να ορίσουμε με κανόνα την κλάση των καθηγητών που είναι υπεύθυνοι εργαστηρίων... Η χρήση της OWL επέτρεψε να ικανοποιήσουμε τις παραπάνω ανάγκες. ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 3
2. Οντολογία Οι κλάσεις και οι ιδιότητες της οντολογίας βασίσθηκαν στο υλοποιημένο σε RDF/S μοντέλο. 2.1. Κλάσεις - Υποκλάσεις Ως γνωστόν, στην OWL οι κλάσεις δεν ορίζονται μόνο με τον άμεσο τρόπο της RDF/S, αλλά και με αρκετούς άλλους τρόπους. Έτσι, εκτός από τις κλάσεις και υποκλάσεις της υλοποίησης RDF/S, προστέθηκαν 4 νέες: η ictype, η osfamily, η labhead και η loafers: person Αντιπροσωπεύει Νομικά ή Φυσικά Πρόσωπα, δηλαδή Σχολικές Μονάδες, Εταιρείες και Καθηγητές. Έχει, λοιπόν, αντίστοιχες υποκλάσεις τις: school, company, teacher. lab Αντιπροσωπεύει τα Εργαστήρια. Έχει, λοιπόν, αντίστοιχες υποκλάσεις τις: complab, phylab, και θα μπορούσαμε να προσθέσουμε και άλλες. labneed Αντιπροσωπεύει τις ενέργειες και τις λειτουργίες που γίνονται σχετικά με ένα εργαστήριο, όπως το ποιος έχει την ευθύνη του, ποιος το έχει προμηθεύσει, ποιος το συντηρεί, ποιος το χρησιμοποιεί, κ.ο.κ. Έχει, λοιπόν, αντίστοιχες υποκλάσεις τις: goodsnservices, authority, operation. goodsnservices: Αφορά ενέργεια πώλησης ή υποστήριξης του εξοπλισμού για ένα εργαστήριο. authority: Αφορά το ποια μονάδα και ποιος εκπαιδευτικός έχει την ευθύνη του εργαστηρίου. operation: Αφορά την εκμετάλλευση ενός εργαστηρίου από μια σχολική μονάδα ή έναν εκπαιδευτικό. Στις κλάσεις αυτές έγινε εφικτό να ορίσουμε το χαρακτηριστικό disjoint. Η ιδιότητα αυτή είναι συμμετρική και κληρονομούμενη, ενώ δεν είναι μεταβατική. Αυτό επέτρεψε να περιορίσουμε τους ορισμούς disjoint σε «επίπεδα» και «ομάδες» κλάσεων, χωρίς να χρειαστεί να καταφύγουμε σε εξάντληση όλων των συνδυασμών κλάσεων. 2.1.1. Ορισμός disjoint κλάσεων Ορίσαμε ως disjoint μεταξύ τους τις κλάσεις στις ακόλουθες ομάδες: person, lab, labneed school, company, teacher complab, PhyLab goodsnservices, authority, operation ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 4
Για παράδειγμα, για την πρώτη τριάδα ο αντίστοιχος κώδικας OWL είναι: <owl:class rdf:id="person"> <owl:disjointwith rdf:resource="#lab"/> <owl:disjointwith rdf:resource="#labneed"/> <owl:class rdf:id="lab"> <owl:disjointwith rdf:resource="#labneed"/> <owl:class rdf:id="labneed"/> 2.1.2. Ορισμός κλάσεων με απαρίθμηση των μελών της Όπως προαναφέρθηκε, θέλουμε να περιορίσουμε τις δυνατές τιμές της ιδιότητας IConnection από οποιοδήποτε αλφαριθμητικό σε μία μόνο από τις τιμές: Dialup64K, Dialup128K, Leased64K, Leased128K, DSL και WiFi. Ομοίως θέλουμε να περιορίσουμε τις επιτρεπτές τιμές της ιδιότητας osplatform στις: Win98, Win2K, WinXP, MacOS, Linux, Win2K & Linux και WinXP & Linux. Αυτό γίνεται ορίζοντας δύο νέες κλάσεις ictype και osfamily, αντίστοιχα, στις οποίες απαριθμούμε ως μέλη τους τις προαναφερθείσες τιμές. Για παράδειγμα, ο κώδικας OWL για τον ορισμό της ictype έχει ως εξής: <owl:class rdf:id="ictype"> <owl:oneof rdf:parsetype="collection"> <owl:thing rdf:about="#dialup64k"/> <owl:thing rdf:about="#dialup128k"/> <owl:thing rdf:about="#leased64k"/> <owl:thing rdf:about="#leased128k"/> <owl:thing rdf:about="#dsl"/> <owl:thing rdf:about="#wifi"/> </owl:oneof> Φυσικά, οι ιδιότητες IConnection και osplatform θα πρέπει να αλλάξουν πεδίο τιμών range, αλλάζοντας ταυτόχρονα και είδος: από ObjectProperties σε DatatypeProperties (βλέπε παρακάτω) 2.1.3. Ορισμός κλάσης ως τομή υπάρχουσας με ανώνυμη από περιορισμό σε ιδιότητα Ενδιαφέρει να ορίσουμε την κλάση labhead των καθηγητών που είναι υπεύθυνοι εργαστηρίων. Υλοποιήσαμε τον παραπάνω ορισμό μέσω της τομής της κλάσης teacher με μια ανώνυμη κλάση που παράγεται από τον περιορισμό που θέσαμε ώστε η ιδιότητα isgranted να έχει μία τουλάχιστον τιμή από την κλάση authority. ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 5
Ακολουθεί ο κώδικας OWL για την παραπάνω υλοποίηση : <owl:class rdf:id="labhead"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:about="#teacher"/> <owl:restriction> <owl:onproperty rdf:resource="#isgranted"/> <owl:somevaluesfrom rdf:resource="#authority"/> </owl:restriction> </owl:intersectionof> 2.1.4. Ορισμός κλάσης με nesting σε boolean συνδυασμούς ορισμένων και ανωνύμων κλάσεων Ενδιαφέρει να ορίσουμε την κλάση loafers των καθηγητών που δεν είναι ούτε υπεύθυνοι εργαστηρίων, αλλά ούτε και χρησιμοποιούν εργαστήριο στη διδασκαλία τους. Την υλοποιήσαμε ορίζοντας την ως την τομή μεταξύ της κλάσης teacher και του συμπληρώματος της ένωσης της κλάσης labhead me μια ανώνυμη κλάση που παράγεται από τον περιορισμό που θέσαμε ώστε η ιδιότητα makes να έχει μία τουλάχιστον τιμή από την κλάση operation. Ακολουθεί ο κώδικας OWL για την παραπάνω υλοποίηση : <owl:class rdf:id="loafers"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:about="#teacher"/> <owl:class> <owl:complementof> <owl:class> <owl:unionof rdf:parsetype="collection"> <owl:class rdf:about="#labhead"/> <owl:restriction> <owl:onproperty rdf:resource="#makes"/> <owl:somevaluesfrom rdf:resource="#operation"/> </owl:restriction> </owl:unionof> </owl:complementof> </owl:intersectionof> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 6
2.2. Ιδιότητες Υποϊδιότητες Οι ιδιότητες στην OWL χωρίζονται με βάση το πεδίο τιμών τους range σε δύο κατηγορίες: στις ObjectProperties με range άλλες κλάσεις και τις DatatypeProperties με range σε επιτρεπτούς τύπους τιμών που ορίζει η XML. Οι περισσότερες ιδιότητες και των δύο κατηγοριών του μοντέλου διατηρήθηκαν όπως ήταν στην υλοποίηση RDF/S με ελάχιστες trivial αλλαγές, όπως nonnegativeinteger από integer, ή date από datetime. Ας τις θυμήσουμε (μαζί με τις αλλαγές που ακολουθούν): 1 ο επίπεδο ObjectProperties Property Domain Range provides person labneed utilizes school labneed has lab labneed isappointedat teacher school osplatform complab ictype IConnection complab osfamily 2 ο Επίπεδο ObjectProperties Property Domain Range ParentProperty sells company goodsnservices provides buys school goodsnservices utilizes isgranted teacher authority provides exercises school authority utilizes makes teacher operation provides takesadvantageof school operation utilizes DatatypeProperties Property Domain Range labid lab string labcode lab string location lab string type lab string PCcount complab nonnegativeinteger osplatform complab string IConnection complab string name person string postaladdress person string code school string url school string AM teacher nonnegativeinteger specialty teacher string AFM company nonnegativeinteger startingdate labneed date expirydate labneed date hoursperweek operation nonnegativeinteger funding goodsnservices string description goodsnservices string ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 7
Για τη σημασιολογία τους παραπέμπουμε στην πρώτη εργασία μας. Όπως αναφέρθηκε στην ενότητα 2.1.2, δύο ιδιότητες χρειάστηκε να αλλάξουν κατηγορία, από ObjectProperties σε DatatypeProperties. Πρόκειται για την IConnection και την osplatform με νέα πεδία range τα ictype και osfamily αντίστοιχα. Για παράδειγμα, ο κώδικας OWL για τον ορισμό της IConnection έχει ως εξής: <owl:objectproperty rdf:id="iconnection"> <rdfs:domain rdf:resource="#complab"/> <rdfs:range rdf:resource="# "/> 2.2.1. Ορισμός αντίστροφων ObjectProperties Όπως έχει αναφερθεί, η ρητή δήλωση στην οντολογία ότι δύο ιδιότητες είναι αντίστροφες μεταξύ τους κάνει ευκολότερη τόσο την εξαγωγή πληροφορίας από αυτήν, όσο και την παραγωγή γνώσης και την εξαγωγή συμπερασμάτων. Δημιουργήσαμε 7 νέες ιδιότητες και τις δηλώσαμε αντίστροφες αντιστοίχων άλλων. Ο παρακάτω πίνακας τις συνοψίζει: Νέα Ιδιότητα Domain Range Αντίστροφη arisesby labneed lab has issoldby goodsnservices company sells isboughtby goodsnservices school buys belongsto authority teacher isgranted isexercisedby authority school exercises ismadeby operation teacher makes isbeneficialto operation school takesadvantageof Για παράδειγμα, ο κώδικας OWL για τον ορισμό της arisesby ως αντίστροφης της has έχει ως εξής: <owl:objectproperty rdf:id="arisesby"> <owl:inverseof rdf:resource="#has"/> <rdfs:domain rdf:resource="#labneed"/> <rdfs:range rdf:resource="#lab"/> 2.2.2. Ορισμός Functional και ταυτόχρονα InverseFunctional Properties Θέλουμε να ορίσουμε δύο ιδιαίτερα χαρακτηριστικά για τις ιδιότητες AFM, AM, Code και labcode. Οι ιδιότητες αυτές όταν υπάρχουν για ένα μέλος της αντίστοιχης κλάσης είναι μοναδικές (μια εταιρεία δεν έχει δύο Α.Φ.Μ.), ενώ, από την άλλη μεριά, κάθε τιμή των ιδιοτήτων αυτών μπορεί να ανήκει μόνο σε ένα συγκεκριμένο μέλος της κλάσης. Αυτά ακριβώς τα χαρακτηριστικά, αντιστοίχως, ορίζουν μια Functional και μια InverseFunctional ιδιότητα. ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 8
Για παράδειγμα, ο κώδικας OWL για τον ορισμό της AFM ως Functional και InverseFunctional έχει ως εξής: <owl:datatypeproperty rdf:id="afm"> <rdf:type rdf:resource="&owl;functionalproperty"/> <rdf:type rdf:resource="&owl;inversefunctionalproperty"/> <rdfs:domain rdf:resource="#company"/> <rdfs:range rdf:resource="&xsd;nonnegativeinteger"/> 2.2.3. Ορισμός Περιορισμών πληθυκότητας Για τις ιδιότητες isappointedat και startingdate, θέλουμε να ορίσουμε ότι κάθε μέλος της αντίστοιχης κλάσης έχει υποχρεωτικά μία ακριβώς τιμή από αυτές. Αυτό το χαρακτηριστικό δηλώνεται με τον προσδιορισμό της πληθυκότητας για τις ιδιότητες αυτές. Για παράδειγμα, ο κώδικας OWL για τον ορισμό 1 για την cardinality της ιδιότητας isappointedat έχει ως εξής: <owl:class rdf:about="#teacher"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#isappointedat"/> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger"> 1 </owl:cardinality> </owl:restriction> </rdfs:subclassof> Ο ορισμός γίνεται, δηλώνοντας την κλάση teacher ως υποκλάση μιας ανώνυμης κλάσης στην οποία ισχύει ο περιορισμός πληθυκότητας που επιθυμούμε. 2.2.4. Ορισμός Functional Properties Τέλος, θέλουμε για τις ιδιότητες expirydate και IConnection κάτι παρόμοιο, αλλά όχι ακριβώς ίδιο, με πριν: οι ιδιότητες αυτές μπορούν να αποδίδουν μία το πολύ τιμή σε κάθε μέλος της αντίστοιχης κλάσης. Αυτό το χαρακτηριστικό ορίζει μια functional ιδιότητα. Για παράδειγμα, ο κώδικας OWL για τον ορισμό της expirydate ως functional έχει ως εξής: <owl:datatypeproperty rdf:id="expirydate"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdfs:domain rdf:resource="#labneed"/> <rdfs:range rdf:resource="&xsd;date"/> Ακολουθεί το συνοπτικό σχήμα της οντολογίας ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 9
Σ. Σαχτούρης, Π. Γεωργιάδης... Μια Οντολογία OWL για τα Σχολικά Εργαστήρια Πληροφορικής 2.3. Συνοπτικό σχήμα της Οντολογίας με τις ιδιότητες ObjectType (παραλείπουμε τις labhead και loafers) ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 10
3. Παρατηρήσεις - Επεκτάσεις Ο τρόπος με τον οποίο υλοποιήθηκε η οντολογία σε OWL ακολούθησε τα ίδια κριτήρια που είχαν τεθεί και στην αρχική μοντελοποίηση σε RDF/S. Επιδιώξαμε να τηρήσουμε τη λεπτή ισορροπία ανάμεσα σε μια οντολογία που θα είναι αφενός γενική, αφαιρετική και λιτή, και αφετέρου ευέλικτη, επεκτάσιμη, σαφής και πλήρης. Τελικός στόχος του εγχειρήματος υπήρξε και πάλι η λειτουργικότητα για τον τελικό χρήστη και η ικανοποίηση των τρεχουσών και των προβλεπομένων αναγκών του. Σε ό,τι αφορά την επεκτασιμότητα της οντολογίας, αρκετά ακόμη θα μπορούσαν να γίνουν: Με περισσότερες ιδιότητες που θα αφορούν γεωγραφική κατανομή (και ενδεχόμενη χρήση ιεραρχιών από γεωγραφικές οντολογίες: νομοί, πόλεις, χωριά) θα μπορούσαμε να απαντούμε και σε ερωτήματα που εμπλέκουν την παράμετρο αυτή. Η κλάση school θα μπορούσε να είχε χωριστεί σε υποκλάσεις, δηλώνοντας αντίστοιχα Γυμνάσιο, Λύκειο, ΤΕΕ, ΣΕΚ, κλπ., ή μια αντίστοιχη ιδιότητα θα μπορούσε να προστεθεί στην school, ώστε να υπήρχε και αυτή η παράμετρος της πληροφορίας για χρήση. Σκόπιμα, τέλος, έχουν παραλειφθεί και άλλες κατηγορίες δεδομένων που θα μπορούσαμε να είχαμε συμπεριλάβει ως ιδιότητες με datatype range, όπως τηλέφωνα, διευθύνσεις email, κ.ο.κ., γιατί στόχος μας δεν υπήρξε η ποσότητα. Αντιμετωπίσαμε αρκετά προβλήματα με τα διαθέσιμα εργαλεία για την εργασία μας. Διαπιστώσαμε ότι δεν υπάρχουν ακόμη reasoning tool - editor ειδικά για OWL. Αυτά που εντοπίσαμε περιορίζονται σε κυρίως σε δυνατότητες import /export, χωρίς να δίνουν τη δυνατότητα κτισίματος μιας οντολογίας με καθαρούς κανόνες OWL. Πιο συγκεκριμένα, ο OilEd 3.5.5 παρά τις προδοαγραφές του, δεν λειτούργησε σωστά ούτε στο άνοιγμα σχημάτων RDF/S, ούτε και στην εξαγωγή σε OWL. Το Protégé 2000, καθιερωμένη ναυαρχίδα στον ευρύτερο χώρο της αναπαράστασης γνώσης παρόλο που παρέχει πρόσφατο plug-in για την OWL δε φάνηκε να διαθέτει ακόμη τη σταθερότητα και ωριμότητα ενός εργααλείου που θα περάσει από τη beta έκδοση. Ακόμη και τα δύο on-line εργαλεία που χρησιμοποιήσαμε για απλό validation αποδείχθηκαν ασύμβατα μεταξύ τους: σπανίως συμφώνησαν στο αποτέλεσμα τους. Τα εργαλεία αυτά βρίσκονται στις διευθύνσεις: http://owl.bbn.com/validator/ και http://phoebus.cs.man.ac.uk:9999/owl/validator ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 11
4. Προβλήματα στη μοντελοποίηση με OWL Παρά τις σημαντικές βελτιώσεις της οντολογίας, διαπιστώσαμε ότι υπάρχουν ακόμη στοιχεία τα οποία θα μπορούσε να περιλάβει η OWL, ώστε να μπορούμε να κάνουμε εύκολα (ως χρήστες-γνώστες ενός συγκεκριμένου πεδίου, και όχι ως επιστήμονες Πληροφορικής) ενέργειες όπως: Να μην επιτρέπουμε σε μια ημερομηνία λήξης να είναι προγενέστερη της αντίστοιχης έναρξης Να μπορούμε να ορίσουμε ότι ένα εργαστήριο έχει το πολύ 24 υπολογιστές (όχι με υποκλάση «ψευδο-ακεραίων») Γενικότερα να επιβάλλουμε περιορισμούς τόσο ποσοτικούς, όσο και σε συνδυασμούς ιδιοτήτων (π.χ. του τύπου if x(a) then y(b)) (μήπως όμως αυτό ανήκει στο application level;) Επίσης θα θέλαμε αρκετές φορές μια default value σε κάποια ιδιότητα. Η βιβλιογραφία αναφέρει και άλλες «ελλείψεις» της OWL, αλλά εμείς περιοριζόμαστε σε αυτές που διαπιστώσαμε οι ίδιο στην εργασία μας. Το σχήμα της οντολογίας βρίσκεται στο: http://www.csd.uoc.gr/~perge/hy566/school-lab.owl ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 12
Παράρτημα Α: Ο κώδικας της οντολογίας OWL (χωρίς τα δεδομένα) <?xml version="1.0"?> <!DOCTYPE rdf:rdf [ <!ENTITY owl "http://www.w3.org/2002/07/owl#" > <!ENTITY xsd "http://www.w3.org/2001/xmlschema#" > ]> <rdf:rdf xml:lang="en" xmlns="http://www.csd.uoc.gr/~perge/hy566/school-lab# " 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#"> <owl:ontology rdf:about=""> <rdfs:comment>csd 566 Project 2 ontology</rdfs:comment> <rdfs:label>school Computer Lab Ontology</rdfs:label> </owl:ontology> <owl:class rdf:id="person"> <owl:disjointwith rdf:resource="#lab"/> <owl:disjointwith rdf:resource="#labneed"/> <owl:class rdf:id="lab"> <owl:disjointwith rdf:resource="#labneed"/> <owl:class rdf:id="labneed"/> <owl:class rdf:id="school"> <owl:disjointwith rdf:resource="#company"/> <owl:disjointwith rdf:resource="#teacher"/> <rdfs:subclassof rdf:resource="#person"/> <owl:class rdf:id="company"> <owl:disjointwith rdf:resource="#teacher"/> <rdfs:subclassof rdf:resource="#person"/> <owl:class rdf:id="teacher"> <rdfs:subclassof rdf:resource="#person"/> <owl:class rdf:id="complab"> <owl:disjointwith rdf:resource="#phylab"/> <rdfs:subclassof rdf:resource="#lab"/> <owl:class rdf:id="phylab"> <rdfs:subclassof rdf:resource="#lab"/> <owl:class rdf:id="goodsnservices"> <owl:disjointwith rdf:resource="#authority"/> <owl:disjointwith rdf:resource="#operation"/> <rdfs:subclassof rdf:resource="#labneed"/> <owl:class rdf:id="authority"> <owl:disjointwith rdf:resource="#operation"/> <rdfs:subclassof rdf:resource="#labneed"/> <owl:class rdf:id="operation"> <rdfs:subclassof rdf:resource="#labneed"/> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 13
<owl:objectproperty rdf:id="provides"> <rdfs:domain rdf:resource="#person"/> <rdfs:range rdf:resource="#labneed"/> <owl:objectproperty rdf:id="utilizes"> <rdfs:domain rdf:resource="#school"/> <rdfs:range rdf:resource="#labneed"/> <owl:objectproperty rdf:id="has"> <rdfs:domain rdf:resource="#lab"/> <rdfs:range rdf:resource="#labneed"/> <owl:objectproperty rdf:id="arisesby"> <owl:inverseof rdf:resource="#has"/> <rdfs:domain rdf:resource="#labneed"/> <rdfs:range rdf:resource="#lab"/> <owl:objectproperty rdf:id="isappointedat"> <rdfs:domain rdf:resource="#teacher"/> <rdfs:range rdf:resource="#labneed"/> <owl:objectproperty rdf:id="sells"> <rdfs:domain rdf:resource="#company"/> <rdfs:range rdf:resource="#goodsnservices"/> <rdfs:subpropertyof rdf:resource="#provides"/> <owl:objectproperty rdf:id="issoldby"> <owl:inverseof rdf:resource="#sells"/> <rdfs:domain rdf:resource="#goodsnservices"/> <rdfs:range rdf:resource="#company"/> <owl:objectproperty rdf:id="isgranted"> <rdfs:domain rdf:resource="#teacher"/> <rdfs:range rdf:resource="#authority"/> <rdfs:subpropertyof rdf:resource="#provides"/> <owl:objectproperty rdf:id="belongsto"> <owl:inverseof rdf:resource="#isgranted"/> <rdfs:domain rdf:resource="#authority"/> <rdfs:range rdf:resource="#teacher"/> <owl:objectproperty rdf:id="makes"> <rdfs:domain rdf:resource="#teacher"/> <rdfs:range rdf:resource="#operation"/> <rdfs:subpropertyof rdf:resource="#provides"/> <owl:objectproperty rdf:id="ismadeby"> <owl:inverseof rdf:resource="#makes"/> <rdfs:domain rdf:resource="#operation"/> <rdfs:range rdf:resource="#teacher"/> <owl:objectproperty rdf:id="buys"> <rdfs:domain rdf:resource="#school"/> <rdfs:range rdf:resource="#goodsnservices"/> <rdfs:subpropertyof rdf:resource="#utilizes"/> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 14
<owl:objectproperty rdf:id="isboughtby"> <owl:inverseof rdf:resource="#buys"/> <rdfs:domain rdf:resource="#goodsnservices"/> <rdfs:range rdf:resource="#school"/> <owl:objectproperty rdf:id="exercises"> <rdfs:domain rdf:resource="#school"/> <rdfs:range rdf:resource="#authority"/> <rdfs:subpropertyof rdf:resource="#utilizes"/> <owl:objectproperty rdf:id="isexercisedby"> <owl:inverseof rdf:resource="#exercises"/> <rdfs:domain rdf:resource="#authority"/> <rdfs:range rdf:resource="#school"/> <owl:objectproperty rdf:id="takesadvantageof"> <rdfs:domain rdf:resource="#school"/> <rdfs:range rdf:resource="#operation"/> <rdfs:subpropertyof rdf:resource="#utilizes"/> <owl:objectproperty rdf:id="isbeneficialto"> <owl:inverseof rdf:resource="#takesadvantageof"/> <rdfs:domain rdf:resource="#operation"/> <rdfs:range rdf:resource="#school"/> <owl:datatypeproperty rdf:id="labid"> <rdfs:domain rdf:resource="#lab"/> <owl:datatypeproperty rdf:id="name"> <rdfs:domain rdf:resource="#person"/> <owl:datatypeproperty rdf:id="labcode"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdf:type rdf:resource="&owl;inversefunctionalproperty" /> <rdfs:domain rdf:resource="#lab"/> <owl:datatypeproperty rdf:id="code"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdf:type rdf:resource="&owl;inversefunctionalproperty" /> <rdfs:domain rdf:resource="#school"/> <owl:datatypeproperty rdf:id="location"> <rdfs:domain rdf:resource="#lab"/> <owl:datatypeproperty rdf:id="postaladdress"> <rdfs:domain rdf:resource="#person"/> <owl:datatypeproperty rdf:id="type"> <rdfs:domain rdf:resource="#lab"/> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 15
<owl:datatypeproperty rdf:id="pccount"> <rdfs:domain rdf:resource="#complab"/> <rdfs:range rdf:resource="&xsd;nonnegativeinteger"/> <owl:objectproperty rdf:id="osplatform"> <rdfs:domain rdf:resource="#complab"/> <rdfs:range rdf:resource="#osfamily"/> <owl:objectproperty rdf:id="iconnection"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdfs:domain rdf:resource="#complab"/> <rdfs:range rdf:resource="#ictype"/> <owl:datatypeproperty rdf:id="url"> <rdfs:domain rdf:resource="#school"/> <owl:datatypeproperty rdf:id="specialty"> <rdfs:domain rdf:resource="#teacher"/> <owl:datatypeproperty rdf:id="am"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdf:type rdf:resource="&owl;inversefunctionalproperty" /> <rdfs:domain rdf:resource="#teacher"/> <rdfs:range rdf:resource="&xsd;nonnegativeinteger"/> <owl:datatypeproperty rdf:id="afm"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdf:type rdf:resource="&owl;inversefunctionalproperty" /> <rdfs:domain rdf:resource="#company"/> <rdfs:range rdf:resource="&xsd;nonnegativeinteger"/> <owl:datatypeproperty rdf:id="startingdate"> <rdfs:domain rdf:resource="#labneed"/> <rdfs:range rdf:resource="&xsd;date"/> <owl:datatypeproperty rdf:id="expirydate"> <rdf:type rdf:resource="&owl;functionalproperty" /> <rdfs:domain rdf:resource="#labneed"/> <rdfs:range rdf:resource="&xsd;date"/> <owl:datatypeproperty rdf:id="hoursperweek"> <rdfs:domain rdf:resource="#operation"/> <rdfs:range rdf:resource="&xsd;nonnegativeinteger"/> <owl:datatypeproperty rdf:id="funding"> <rdfs:domain rdf:resource="#goodsnservices"/> <owl:datatypeproperty rdf:id="description"> <rdfs:domain rdf:resource="#goodsnservices"/> <owl:class rdf:about="#teacher"> <rdfs:subclassof> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 16
<owl:restriction> <owl:onproperty rdf:resource="#isappointedat"/> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger"> 1 </owl:cardinality> </owl:restriction> </rdfs:subclassof> <owl:class rdf:about="#labneed"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#startingdate"/> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger"> 1 </owl:cardinality> </owl:restriction> </rdfs:subclassof> <owl:class rdf:about="#complab"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#iconnection"/> <owl:cardinality rdf:datatype="&xsd;nonnegativeinteger"> 1 </owl:cardinality> </owl:restriction> </rdfs:subclassof> <owl:class rdf:id="labhead"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:about="#teacher"/> <owl:restriction> <owl:onproperty rdf:resource="#isgranted"/> <owl:somevaluesfrom rdf:resource="#authority"/> </owl:restriction> </owl:intersectionof> <owl:class rdf:id="osfamily"> <owl:oneof rdf:parsetype="collection"> <owl:thing rdf:about="#win98"/> <owl:thing rdf:about="#win2k"/> <owl:thing rdf:about="#winxp"/> <owl:thing rdf:about="#macos"/> <owl:thing rdf:about="#linux"/> <owl:thing rdf:about="#win2k-n-linux"/> <owl:thing rdf:about="#winxp-n-linux"/> </owl:oneof> <owl:class rdf:id="loafers"> <owl:intersectionof rdf:parsetype="collection"> <owl:class rdf:about="#teacher"/> <owl:class> <owl:complementof> <owl:class> <owl:unionof rdf:parsetype="collection"> <owl:class rdf:about="#labhead"/> <owl:restriction> <owl:onproperty rdf:resource="#makes"/> <owl:somevaluesfrom rdf:resource="#operation"/> </owl:restriction> </owl:unionof> </owl:complementof> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 17
</owl:intersectionof> <owl:class rdf:id="ictype"> <owl:oneof rdf:parsetype="collection"> <owl:thing rdf:about="#dialup64k"/> <owl:thing rdf:about="#dialup128k"/> <owl:thing rdf:about="#leased64k"/> <owl:thing rdf:about="#leased128k"/> <owl:thing rdf:about="#dsl"/> <owl:thing rdf:about="#wifi"/> </owl:oneof> </rdf:rdf> ΗΥ-566 Διαχείριση Γνώσης στο Διαδίκτυο... Σελίδα 18