ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ"

Transcript

1 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ GoNToggle: Έξυπνη µηχανή αναζήτησης µε χρήση οντολογιών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ του ΓΕΩΡΓΙΟΥ Π. ΓΙΑΝΝΟΠΟΥΛΟΥ Επιβλέπων : Ιωάννης Βασιλείου Καθηγητής Ε.Μ.Π. Αθήνα, Ιούλιος 2006

2 2

3 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ GoNToggle: Έξυπνη µηχανή αναζήτησης µε χρήση οντολογιών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ του ΓΕΩΡΓΙΟΥ Π. ΓΙΑΝΝΟΠΟΥΛΟΥ Επιβλέπων : Ιωάννης Βασιλείου Καθηγητής Ε.Μ.Π. Εγκρίθηκε από την τριµελή εξεταστική επιτροπή την 18 η Ιουλίου Ιωάννης Βασιλείου Τιµολέων Σελλής Κωνσταντίνος Σαγώνας Καθηγητής Ε.Μ.Π. Καθηγητής Ε.Μ.Π. Αν. Καθηγητής Ε.Μ.Π. Αθήνα, Ιούλιος

4 ... ΓΕΩΡΓΙΟΣ Π. ΓΙΑΝΝΟΠΟΥΛΟΣ ιπλωµατούχος Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π. Copyright Γεώργιος Π. Γιαννόπουλος, 2006 Με επιφύλαξη παντός δικαιώµατος. All rights reserved. Απαγορεύεται η αντιγραφή, αποθήκευση και διανοµή της παρούσας εργασίας, εξ ολοκλήρου ή τµήµατος αυτής, για εµπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανοµή για σκοπό µη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν µήνυµα. Ερωτήµατα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συµπεράσµατα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερµηνευθεί ότι αντιπροσωπεύουν τις επίσηµες θέσεις του Εθνικού Μετσόβιου Πολυτεχνείου.

5 Περίληψη Σκοπός της παρούσας διπλωµατικής είναι η ανάπτυξη µίας µηχανής αναζήτησης εγγράφων στο σκληρό δίσκο υπολογιστών η οποία θα συνδυάζει την κλασσική αναζήτηση µε λέξεις κλειδιά µε αναζήτηση-περιήγηση στις έννοιες µίας οντολογίας. Η εφαρµογή θα δίνει τη δυνατότητα στο χρήστη να δεικτοδοτεί έγγραφα του σκληρού δίσκου και να δηµιουργεί ένα ευρετήριο που θα περιέχει πληροφορία σχετική µε αυτά τα έγγραφα. Πάνω σε αυτό το ευρετήριο θα εκτελείται αναζήτηση διαφόρων εγγράφων µε χρήση λέξεων-φράσεων κλειδιών. Επιπλέον, ο χρήστης θα µπορεί να ανοίγει κάποιο έγγραφο και να χαρακτηρίζει σηµασιολογικά ολόκληρο το έγγραφο ή κοµµάτια του κειµένου του, µε τη βοήθεια εννοιών µίας οντολογίας που θα έχει φορτώσει, δηµιουργώντας στιγµιότυπα των κλάσεων της οντολογίας. Θα προσφέρεται, επίσης, η δυνατότητα επεξεργασίας της οντολογίας (επεξεργασίαπροσθαφαίρεση κλάσεων, ιδιοτήτων και στιγµιότυπων). Όσον αφορά την αναζήτηση εγγράφων, ο χρήστης θα µπορεί να περιηγείται στις κλάσεις της οντολογίας και να επιλέγει στιγµιότυπα-χαρακτηρισµένα έγγραφα προς εµφάνιση. Επίσης, θα προσφέρονται λειτουργίες όπως συνδυαστική αναζήτηση, δηλαδή αναζήτηση και µε λέξεις κλειδιά και µε περιήγηση στην οντολογία, αναζήτηση στα αποτελέσµατα προηγούµενης αναζήτησης και αναζήτηση µε σύνθετα επερωτήµατα στην οντολογία. Στα αποτελέσµατα, εκτός από το όνοµα των εγγράφων, θα η παρουσιάζεται σηµασιολογική πληροφορία που προκύπτει για το καθένα από την αναζήτηση και το σκορ που θα διαµορφώνεται ανάλογα µε το είδος της αναζήτησης. Ο χρήστης θα µπορεί να ανοίξει το κάθε έγγραφο και να δει τη σηµασιολογική πληροφορία που µεταφέρει, αλλά και να εντοπίσει παρόµοια σηµασιολογικά κείµενα. Λέξεις Κλειδιά: Αναζήτηση, σκορ, λέξη κλειδί, ευρετήριο, σκληρός δίσκος, οντολογία, έννοια-κλάση, ιδιότητα, στιγµιότυπο, εξαγωγή κειµένου, σηµασιολογική επισηµείωσηχαρακτηρισµός. 5

6 6

7 Abstract The scope of this thesis was the development of a desktop search engine which combines keyword text search with search-navigation on the concepts of an ontology. Through the application the user will be able to index documents of his hard disk, so that he can, later, search them with keyword search. The user, will also be able to annotate semantically either a whole document, or parts of its text, using concepts-classes of an ontology loaded and creating, this way, instances of those classes. Editing and processing the hierarchy of the ontology (classes, properties, instances) will also be an option. The application will provide the user the option to search documents by navigating on the classes of the ontology and choosing the instances-annotated documents he is interested in. Combined search (both keyword and ontology search), search on the results and complex query search will be available. The results will appear with the semantic information and a certain score that depends on the kind of the search. The user will also be able to open a document from the results, view the semantic annotation in it and search for semantically similar documents. Keywords: Search, score, keyword, index, hard disk, ontology, concept-class, property, instance, text extraction, semantic annotation. 7

8 8

9 Ευχαριστίες Η διπλωµατική εργασία εκπονήθηκε στο Εργαστήριο Συστηµάτων Βάσεων γνώσεων και εδοµένων του Εθνικού Μετσόβιου Πολυτεχνείου. Θα ήθελα να ευχαριστήσω τον καθηγητή κ. Ιωάννη Βασιλείου για την ανάθεση της διπλωµατικής. Επίσης, την Άντζελα ηµητρίου και το Θοδωρή αλαµάγκα για την πολύτιµη βοήθεια και καθοδήγησή τους. Τέλος, θα ήθελα να ευχαριστήσω τους γονείς µου για την υποστήριξή τους καθ όλη τη διάρκεια των σπουδών µου. 9

10 10

11 Πίνακας περιεχοµένων 1 Εισαγωγή Αντικείµενο της διπλωµατικής Οργάνωση του τόµου Περιγραφή θέµατος Θεωρητική µελέτη Μηχανές αναζήτησης εικτοδότηση(indexing) Αναζήτηση(searching) Οντολογίες Σηµασιολογικός Ιστός Οντολογία Η γλώσσα OWL Σχετικές εργασίες Μηχανές αναζήτησης Google Desktop Search MSN Deskbar Yahoo Desktop Search Εφαρµογές επεξεργασίας οντολογιών SWOOP OilEd DOE Protégé Στόχος Ανάλυση και σχεδίαση Ανάλυση απαιτήσεων Εισαγωγή Λειτουργικές Απαιτήσεις ηµιουργία ευρετηρίου: Σηµασιολογικός χαρακτηρισµός κειµένων και επεξεργασία οντολογιών:

12 Αναζήτηση: Περιορισµοί Περιγραφή αρχιτεκτονικού σχεδίου Εισαγωγή Αρχιτεκτονικές αποφάσεις Πλατφόρµα Γλώσσα προγραµµατισµού Αρχιτεκτονικές όψεις Περιπτώσεις χρήσης (Περιβαλλοντική/Υπηρεσιακή όψη) Πλατφορµική όψη Χρηστική όψη (Οθόνες της εφαρµογής) οµική όψη Περιγραφή λεπτοµερούς σχεδίου Εισαγωγή Αποσυνθετική εδοµενική Συνεργατική Υλοποίηση Πλατφόρµες και προγραµµατιστικά εργαλεία Εργαλεία ανάπτυξης Πλατφόρµα ανάπτυξης Εγκατάσταση και εκτέλεση της εφαρµογής Βιβλιοθήκες Βιβλιοθήκη Lucene Γενικά Πακέτα του lucene Αλλαγές που πραγµατοποιήθηκαν Protégé Γενικά Κλάση Project Κλάση OWLUI Κλάση OWLModel

13 4.3 Λεπτοµέρειες υλοποίησης Κλάση IndexJDialog private void IndexFileSearchPerformed(java.awt.event.ActionEvent evt) private void DataFileSearchPerformed(java.awt.event.ActionEvent evt) private void ExitItemActionPerformed(java.awt.event.ActionEvent evt) private void IndexActionPerformed(java.awt.event.ActionEvent evt) Κλάση AnnotateJDialog private void loadontologyperformed(java.awt.event.actionevent evt) private void changeontologyperformed(java.awt.event.actionevent evt) private void changeinstancesperformed(java.awt.event.actionevent evt) private void saveontologyperformed(java.awt.event.actionevent evt) private void searchfileperformed (java.awt.event.actionevent evt) private void extractfiletext () protected String getbody(element rawdoc) protected String gettext(node node) private static COSDocument parsedocument(inputstream is) private void searchmarkfileactionperformed(java.awt.event.actionevent evt) private void refreshinstanceslist() private void showinstanceslist() private void showparttexts() private void annotatefileactionperformed(java.awt.event.actionevent evt) private void annotatepartactionperformed(java.awt.event.actionevent evt) private void annotateaction() private void editdelinstanceactionperformed(java.awt.event.actionevent evt) Κλάση NewJFrame private void loadontactionperformed(java.awt.event.actionevent evt) private void searchactionperformed(java.awt.event.actionevent evt) private void searchkeyword()

14 private void navigateontology(collection aclasses) private void relatedclassactionperformed(java.awt.event.actionevent evt) private void relativeallclassesactionperformed( java.awt.event.actionevent evt) private void openfileactionperformed(java.awt.event.actionevent evt) private void searchresactionperformed(java.awt.event.actionevent evt) private void searchradiobuttonactionperformed( java.awt.event.actionevent evt) private void searchresradiobuttonactionperformed(java.awt.event. ActionEvent evt) protected String getbody(element rawdoc) protected String gettext(node node) private static COSDocument parsedocument(inputstream is) public static Collection pickrdfresources3(collection allowedclasses) private static OWLModel getowlmodel(collection allowedclses) private void annotateactionperformed(java.awt.event.actionevent evt) private void IndexItemActionPerformed(java.awt.event.ActionEvent evt) Κλάση ComplexCellRenderer Κλάση DiamondIcon Κλάση OpenTextJFrame private void openpropertyactionperformed(java.awt.event.actionevent evt) Κλάση OpenTextJFrame_ Έλεγχος Μεθοδολογία ελέγχου Αναλυτική παρουσίαση ελέγχου ηµιουργία ευρετηρίου Σηµασιολογικός χαρακτηρισµός Αναζήτηση

15 6 Επίλογος Σύνοψη και συµπεράσµατα Μελλοντικές επεκτάσεις Βιβλιογραφία

16 . 16

17 1 Εισαγωγή Καθώς η ανάγκη για αποθήκευση όλο και µεγαλύτερου όγκου πληροφοριών στους σκληρούς δίσκους υπολογιστών γίνεται επιτακτική, επιβάλλεται, πλέον, η ανάπτυξη εργαλείων τα οποία θα έχουν την δυνατότητα να διατρέχουν τους σκληρούς δίσκους και να εξάγουν την επιθυµητή πληροφορία µε αποδοτικό τρόπο. Οι µηχανές αναζήτησης που προσφέρονται σήµερα (desktop search engines) λειτουργούν µε τον κλασσικό τρόπο αναζήτησης, δηλαδή µε χρήση λέξεων-κλειδιών. Συγκεκριµένα, διατρέχουν τον σκληρό δίσκο, εξάγουν από το κάθε έγγραφο πληροφορία που αφορά το περιεχόµενό του και την αποθηκεύουν σε ευρετήρια. Έτσι, καθίσταται δυνατή η αναζήτηση λέξεων κλειδιών στον τίτλο ή στο κείµενο κάποιου εγγράφου, µέσω των ευρετηρίων αυτών. Το πρόβληµα που προκύπτει µε τον παραπάνω τρόπο αναζήτησης είναι ότι, κάποια έγγραφα ενδέχεται να µην περιέχουν στο κείµενο ή στον τίτλο τους µία συγκεκριµένη λέξη ή φράση, παρόλα αυτά, όµως, να ανήκουν σηµασιολογικά στην ευρύτερη έννοια που περιγράφεται από την ίδια λέξη. Για παράδειγµα, ένα πολύ εξειδικευµένο κείµενο που περιγράφει τη γλώσσα SQL, µπορεί να µην περιέχει τη λέξη database, έχει, όµως, σχέση µε βάσεις δεδοµένων. Λύση στο παραπάνω πρόβληµα προσφέρει η χρήση οντολογιών. Με τη βοήθεια µίας οντολογίας, ο χρήστης δύναται να χαρακτηρίζει σηµασιολογικά ένα έγγραφο, µε βάση τις έννοιες τις οντολογίας, και ανεξάρτητα από τις λέξεις κλειδιά που περιέχει το έγγραφο. Ύστερα, µπορεί να πλοηγείται στις έννοιες της οντολογίας και να αναζητά τα επιθυµητά έγγραφα. 17

18 1.1 Αντικείµενο της διπλωµατικής Αντικείµενο της διπλωµατικής είναι η σχεδίαση και υλοποίηση µίας ολοκληρωµένης µηχανής αναζήτησης στα αρχεία υπολογιστή (desktop search engine) η οποία θα συνδυάζει αναζήτηση µε λέξεις κλειδιά και αναζήτηση µε χρήση οντολογιών. Σε πρώτο στάδιο, πραγµατοποιείται µία θεωρητική ανάλυση όσον αφορά τη λειτουργία των µηχανών αναζήτησης µε λέξεις κλειδιά, καθώς και µία εισαγωγή στις έννοιες της οντολογίας και των οντολογικών γλωσσών (OWL κ.α.). Κατόπιν, εξετάζονται σχετικές υλοποιήσεις και επιλέγονται δύο από αυτές, στις οποίες και θα βασιστεί η υλοποίηση της εφαρµογής, ενσωµατώνοντας κάποιες από τις βιβλιοθήκες τους: Το Lucene, που αποτελεί µία βιβλιοθήκη συναρτήσεων για δηµιουργία µηχανών αναζήτησης Το Protégé, που αποτελεί µία ολοκληρωµένη εφαρµογή διαχείρισης οντολογιών, αλλά παράλληλα προσφέρει και ανάλογο API µε συναρτήσεις και UI για επεξεργασία οντολογιών και εκτέλεση ερωτήσεων πάνω σε αυτές. Τέλος, υλοποιείται η εφαρµογή GoΝToggle, η οποία, αξιοποιώντας και επεκτείνοντας δυνατότητες και των δύο παραπάνω προγραµµάτων, προσφέρει τις εξής βασικές λειτουργίες: ηµιουργία ευρετηρίου, µε δεικτοδότηση περιοχών του σκληρού δίσκου Άνοιγµα, περιήγηση, επεξεργασία και αποθήκευση οντολογίας Σηµασιολογική επισηµείωση κειµένων µε γραφικό τρόπο Καταχώρηση αρχείων ή αποσπασµάτων κειµένων στην οντολογία µε µορφή στιγµιότυπων και περαιτέρω συσχέτισή τους ανά δύο, µέσω ανάθεσης ρόλων. Αναζήτηση µε λέξεις κλειδιά πάνω στο ευρετήριο. Αναζήτηση µε χρήση ερωτήσεων στην οντολογία Σύνθετες επιλογές αναζήτησης (αναζήτηση στα αποτελέσµατα προηγούµενης αναζήτησης, αναζήτηση για αρχεία µίας συγκεκριµένης κλάσης της οντολογίας που όµως περιέχουν συγκεκριµένες λέξεις κλειδιά κ.α.). Εµφάνιση αποτελεσµάτων αναζήτησης µε γραφικό τρόπο, µε επιπλέον µεταπληροφορίες που προέρχονται από την οντολογία και το βαθµό ικανοποίησης της αναζήτησης. Περιήγηση στην οντολογία ξεκινώντας από τα στιγµιότυπα των αποτελεσµάτων αναζήτησης και προχωρώντας µέσω των συσχετίσεων που τους έχουν ανατεθεί, µέσω αναζήτησης άλλων σχετικών σηµασιολογικά στιγµιότυπων και µέσω νέων αναζητήσεων στα αποτελέσµατα προηγούµενων αναζητήσεων. 18

19 1.2 Οργάνωση του τόµου Η παρούσα διπλωµατική εργασία αποτελείται από 7 κεφάλαια: Στο πρώτο κεφάλαιο γίνεται µία εισαγωγή και περιγράφεται το αντικείµενο της διπλωµατικής, καθώς και τη οργάνωση του τόµου. Στο δεύτερο κεφάλαιο γίνεται µία θεωρητική µελέτη των µηχανών αναζήτησης (λειτουργίες, χρησιµοποιούµενες δοµές) και των οντολογιών (θεωρία, γλώσσες οντολογιών και προγράµµατα διαχείρισης οντολογιών). Επιπλέον, παρουσιάζονται σχετικές εργασίες, αλλά και ο στόχος της διπλωµατικής. Στο τρίτο κεφάλαιο περιγράφεται η ανάλυση και σχεδίαση της εφαρµογής, καθώς και οι λειτουργίες που προσφέρει στο χρήστη. Στο τέταρτο κεφάλαιο γίνεται µία σύντοµη περιγραφή της πλατφόρµας και των προγραµµατιστικών εργαλείων που χρησιµοποιήθηκαν και στη συνέχεια περιγράφονται αναλυτικά οι κλάσεις της εφαρµογής και ο ρόλος κάθε κλάσης και των επιµέρους συναρτήσεων στη λειτουργία της εφαρµογής. Στο πέµπτο κεφάλαιο παρουσιάζεται η µεθοδολογία ελέγχου και πραγµατοποιείται ο έλεγχος του προγράµµατος για τις βασικότερες περιπτώσεις χρήσης. Στο έκτο κεφάλαιο γίνεται η σύνοψη της εργασίας και παρατίθενται τα συµπεράσµατα που προέκυψαν, αλλά και ιδέες για µελλοντικές προεκτάσεις της εργασίας. Στο έβδοµο κεφάλαιο δίνεται η βιβλιογραφία. 19

20 . 20

21 2 Περιγραφή θέµατος Σε αυτό το κεφάλαιο γίνεται µία θεωρητική µελέτη των µηχανών αναζήτησης (λειτουργίες, χρησιµοποιούµενες δοµές) και των οντολογιών (θεωρία, γλώσσες οντολογιών και προγράµµατα διαχείρισης οντολογιών). Επιπλέον, παρουσιάζονται σχετικές εργασίες, αλλά και ο στόχος της διπλωµατικής. 2.1 Θεωρητική µελέτη Αυτή η ενότητα πραγµατεύεται το θεωρητικό υπόβαθρο της εργασίας. Στην πρώτη υποενότητα αναλύεται ο τρόπος λειτουργίας µίας µηχανής αναζήτησης, οι βασικές επιµέρους διαδικασίες (δεικτοδότηση, ανάλυση, αναζήτηση) και οι βασικές δοµές που χρησιµοποιούνται. Στη δεύτερη υποενότητα γίνεται µία σύντοµη αναφορά στη θεωρία των οντολογιών και στη συνέχεια περιγράφεται η γλώσσα OWL Μηχανές αναζήτησης Μία αρκετά παραστατική περιγραφή της λειτουργίας µίας µηχανής αναζήτησης σε προσωπικό υπολογιστή (desktop search engine) φαίνεται στο παρακάτω σχήµα: 21

22 Σχήµα 2.1: Λειτουργία µίας desktop search engine ύο είναι οι βασικές λειτουργίες µίας µηχανής αναζήτησης: εικτοδότηση (indexing) και αναζήτηση (searching). Σηµαντική υπολειτουργία µίας µηχανής αναζήτησης αποτελεί και η ανάλυση, η οποία όµως πραγµατοποιείται ως κοµµάτι τόσο της δεικτοδότησης, όσο και της αναζήτησης και όχι ως ανεξάρτητη λειτουργία εικτοδότηση(indexing) εικτοδότηση είναι η διαδικασία κατά την οποία η µηχανή αναζήτησης σαρώνει το σκληρό δίσκο του υπολογιστή και δηµιουργεί ένα ευρετήριο µε αντικείµενα που περιέχουν πληροφορίες (κείµενο, µεταδεδοµένα) οι οποίες έχουν εξαχθεί από τα σαρωµένα έγγραφα. Σκοπός και χρησιµότητα αυτής της διαδικασίας είναι να συγκεντρωθούν όλα τα απαιτούµενα για την αναζήτηση δεδοµένα σε µία ευέλικτη και αποδοτική δοµή (ευρετήριο), έτσι ώστε, η φάση της αναζήτησης να µην επιτελείται σε όλο το σκληρό δίσκο, πράγµα που θα ήταν εξαιρετικά χρονοβόρο, αλλά µόνο στα δεδοµένα του ευρετηρίου. Από τη στιγµή που η µηχανή αναζήτησης εγκαθίσταται στον υπολογιστή, αρχίζει, µε τη βοήθεια ενός ή περισσοτέρων crawler που χρησιµοποιεί, να διατρέχει τους φακέλους και τα αρχεία του υπολογιστή και να δεικτοδοτεί τους υποστηριζόµενους από τη µηχανή τύπους αρχείων. Τα αρχεία αυτά µπορεί να είναι word, text, pdf, ps, powerpoint, excel, xml, html, e- mail και γενικά οποιοιδήποτε τύποι αρχείων, από τους οποίους µπορεί να εξαχθεί κάποιας µορφής κείµενο, είτε από τον τίτλο και το περιεχόµενο τους, είτε από τα µεταδεδοµένα που περιέχουν (π.χ. όνοµα συντάκτη). Όταν ένα αρχείο ικανοποιεί τις προϋποθέσεις για να δεικτοδοτηθεί, τότε εξάγεται το κείµενο του από το αντίστοιχο εργαλείο εξαγωγής κειµένου της εφαρµογής για τον συγκεκριµένο 22

23 τύπο αρχείου. Κατόπιν, το κείµενο υφίσταται επεξεργασία (ανάλυση), έτσι ώστε να κρατηθεί από αυτό µόνο η «χρήσιµη» πληροφορία. Για παράδειγµα, και ανάλογα µε το βαθµό ανάλυσης που εφαρµόζεται, γίνεται απαλοιφή κοινών λέξεων όπως άρθρα, απαλοιφή της στίξης, µετατροπή όλων των χαρακτήρων σε πεζούς κ.α. Στη συνέχεια, το επεξεργασµένο κείµενο µετατρέπεται σε µία διατεταγµένη σειρά από λεκτήµατα, κάθε ένα από τα οποία αποθηκεύεται στο ευρετήριο ως όρος (term). Κάθε λέκτηµα περιέχει, εκτός από τους χαρακτήρες της λέξης που αντιστοιχεί, και κάποια µεταδεδοµένα, όπως τις θέσεις (offset) της αρχής και του τέλους της λέξης στο αρχικό κείµενο, τον τύπο του λεκτήµατος και µία τιµή που δίνει τη σχετική του απόσταση από το προηγούµενό του στη σειρά. Η σχετική απόσταση είναι σηµαντική σε περιπτώσεις που, για παράδειγµα, κάποια λέξη απαλείφεται (λόγω ανάλυσης του κειµένου), οπότε η αρχική απόσταση αποτυπώνεται στην τιµή της σχετικής απόστασης του δεξιού λεκτήµατος από το αριστερό: Σχήµα 2.2: Ροή λεκτηµάτων Έτσι, εάν στη σειρά λεκτηµάτων που φαίνεται παραπάνω (σχήµα 8) είχε αγνοηθεί η λέξη brown, τότε θα ίσχυε position increment==2 για τη λεξη fox. Όπως προαναφέρθηκε, το κάθε λέκτηµα αποθηκεύεται ως όρος του ευρετηρίου. Το ευρετήριο µπορεί να είναι ευρετήριο πολλών αρχείων (multifile index) ή σύνθετο ευρετήριο (compound index). Η µορφή ενός ευρετηρίου της πρώτης κατηγορίας φαίνεται στο παρακάτω σχήµα: 23

24 Σχήµα 2.3: Ευρετήριο πολλαπλών αρχείων Συγκεκριµένα, αυτό που φαίνεται είναι ένα τµήµα (segment) του ευρετηρίου, δηλαδή ένα «υποευρετήριο» που οριοθετείται από τα αρχεία deletable και segments. Βλέπουµε ότι υπάρχουν δύο οµάδες αρχείων (lfyc και gabh) µε το ίδιο όνοµα, αλλά µε διαφορετικές καταλήξεις. Τα διαφορετικών τύπων αρχεία κάθε οµάδας περιέχουν πληροφορίες που αντιστοιχούν σε ένα συγκεκριµένο δεικτοδοτηµένο έγγραφο. Παρακάτω θα δούµε ποια είναι ακριβώς η χρησιµότητα κάθε αρχείου. Η χρησιµότητα του χωρισµού του ευρετηρίου σε τµήµατα (segments) έγκειται στην εφαρµογή αυξανόµενης δεικτοδότησης (incremental indexing). ηλαδή, κάθε φορά που δεικτοδοτούνται νέα αρχεία, δε δηµιουργείται το ευρετήριο από την αρχή (κάτι που θα απαιτούσε επαναδεικτοδότηση και των παλαιών αρχείων), αλλά δηµιουργούνται νέα τµήµατα, τα οποία συγχωνεύονται περιοδικά µεταξύ τους. Αυτή η ιδιότητα είναι πολύ σηµαντική όταν η δεικτοδότηση αφορά µεγάλες ποσότητες πληροφορίας, οπότε και η επαναλαµβανόµενη δεικτοδότηση αρχείων είναι ασύµφορη. Η δεύτερη κατηγορία ευρετηρίων είναι τα σύνθετα ευρετήρια. Η διαφορά τους είναι ότι, αντί να αποθηκεύουν την πληροφορία δεικτοδότησης σε πολλαπλά αρχεία (.fdt,.fdx,.frq κ.τ.λ.), την αποθηκεύουν µόνο σε ένα (.cfs). Σχήµα 2.4: Σύνθετο ευρετήριο Με αυτόν τον τρόπο, κατά τη δεικτοδότηση, αρκεί να ανοίγεται µόνο ένα αρχείο, και όχι πολλαπλά, όπως στα ευρετήρια πολλαπλών αρχείων. Έτσι, µε τα σύνθετα ευρετήρια επιτυγχάνεται οικονοµία στη µνήµη κατά τη δεικτοδότηση, αλλά απαιτείται περισσότερος χρόνος σε σχέση µε τα πολλαπλών αρχείων ευρετήρια. Κατά τα άλλα, η υπόλοιπη οργάνωση σε τµήµατα παραµένει ίδια στα σύνθετα ευρετήρια. Η αποθήκευση της πληροφορίας στο ευρετήριο γίνεται µε βάση το ερώτηµα «ποια έγγραφα περιέχουν τη Χ λέξη» και όχι µε βάση το «ποιες λέξεις περιέχονται στο Χ έγγραφο». ηλαδή, το ευρετήριο οργανώνεται µε βάση τους όρους και όχι µε βάση τα έγγραφα που τους περιέχουν. Για αυτό και ευρετήρια µε αυτή την οργάνωση, η οποία προσφέρει αποτελεσµατική εκµετάλλευση του χώρου στο δίσκο, αλλά και βέλτιστους χρόνους αναζήτησης, ονοµάζονται ανεστραµµένα ευρετήρια (inverted indexes). Στο παρακάτω σχήµα, παρουσιάζεται η δοµή του ανεστραµµένου ευρετηρίου. 24

25 Στο (αρχείο).fnm (Field names), αποθηκεύονται όλοι οι τύποι πεδίων που έχουν οριστεί από το χρήστη, καθώς και πληροφορίες σχετικά µε την κατάστασή τους (δεικτοδοτηµένα ή όχι). Για παράδειγµα, στο ευρετήριο µας έχουµε πεδία που τα έχουµε χαρακτηρίσει ως subject, contents, url κ.τ.λ. Σχήµα 2.5: Οργάνωση ευρετηρίου Οι πλειάδες που περιέχουν το όνοµα και την τιµή κάθε δεικτοδοτηµένου πεδίου αποθηκεύονται στο αρχείο.tis (Term dictionary). ίπλα από κάθε πλειάδα αποθηκεύεται και η document frequency της, δηλαδή ο αριθµός των αρχείων που περιέχουν το πεδίο µε τη συγκεκριµένη τιµή. Έτσι, το πεδίο contents µε την τιµή action, βρίσκεται σε τρία έγγραφα µέσα στο ευρετήριο. Για κάθε όρο, δηλαδή για κάθε πλειάδα, του αρχείου.tis, στο αρχείο.frq (Term frequencies), βρίσκεται αποθηκευµένο το όνοµα κάθε εγγράφου που περιέχει τον όρο και η συχνότητα του όρου µέσα στο έγγραφο. Για παράδειγµα, βλέπουµε στο αρχείο.frq, ότι ο όρος junit, που είναι τύπου content (για τον οποίο ξέρουµε από το αρχείο.tis ότι βρίσκεται σε δύο µόνο αρχεία), συναντάται µία φορά στο έγγραφο µε id=5 και δύο φορές στο έγγραφο µε id=6. Τέλος, στο αρχείο.prx (Term positions), αποθηκεύεται η θέση κάθε όρου µέσα στο έγγραφο. Αυτή η πληροφορία είναι απαραίτητη σε περιπτώσεις αναζήτησης φράσεων, ή, γενικότερα, λέξεων που πρέπει να απέχουν συγκεκριµένες αποστάσεις µεταξύ τους. Έτσι, η λέξη junit 25

26 βρίσκεται στη θέση 9 (δηλαδή ένατη λέξη από την αρχή) στο έγγραφο µε id=5 και στις θέσεις 1 και 3 στο έγγραφο µε id= Αναζήτηση(searching) Στο ευρετήριο που δηµιουργείται, εκτελείται πλέον η αναζήτηση από την µηχανή. Ο χρήστης, µέσω ενός UI, εισάγει τις λέξεις ή φράσεις κλειδιά προς αναζήτηση. Η µηχανή τις επεξεργάζεται (ανάλυση), δηµιουργώντας ένα query, µε βάση το οποίο εκτελεί αναζήτηση στο ευρετήριο. Κατόπιν, τα αποτελέσµατα επιστρέφονται πιθανώς επεξεργασµένα (π.χ. στοιχισµένα σύµφωνα µε κάποιο κριτήριο) και εµφανίζονται, µέσω του UI, στο χρήστη. Οι περισσότερες µηχανές αναζήτησης προσφέρουν δυνατότητες κατασκευής αρκετά πιο πολύπλοκων queries από απλές λέξεις ή φράσεις. Στον παρακάτω πίνακα παρουσιάζονται οι κυριότερες από αυτές: Έκφραση Σηµασία java java junit Περιέχει τον όρο java Περιέχει τον όρο java ή τον όρο junit, ή και τους δύο java or junit.+java +junit Περιέχει τον όρο java και τον όρο junit java AND junit title:ant title:extreme subject:sports Περιέχει τον όρο ant στο πεδίο του τίτλου του εγγράφου Περιέχει τον όρο extreme στο πεδίο του τίτλου και δεν περιέχει τον όρο sports στο πεδίο θέµατος (subject) title:extreme AND NOT subject:sports (agile OR extreme) AND methodology title:"junit in action" title:"junit action"~5 java* java~ Περιέχει τον όρο methodology και έναν από τους δύο ή και τους δύο από τους όρους agile και extreme Περιέχει ακριβώς τη φράση junit in action στο πεδίο τίτλου Περιέχει τους όρους junit και action µε απόσταση το πολύ 5 θέσεις µεταξύ τους Περιέχει όρους που αρχίζουν µε java, όπως javaspaces, javaserver Περιέχει όρους που µοιάζουν µε τη λέξη java, όπως lava lastmodified: Έχει τροποποιηµένα πεδία µεταξύ 1/1/2004 και 31/12/2004 [1/1/04 TO 12/31/04] Πίνακας 2.1: Σύνθετα queries αναζήτησης 26

27 2.1.2 Οντολογίες Σηµασιολογικός Ιστός Ο Σηµασιολογικός Ιστός (Semantic Web) είναι ένα σύνολο πληροφοριών, διασυνδεδεµένων µε κατάλληλο τρόπο, ώστε να είναι εύκολα και µε αποδοτικό τρόπο προσβάσιµες και επεξεργάσιµες από προγράµµατα, σε παγκόσµια κλίµακα. Μπορεί να θεωρηθεί ως µία «παγκόσµια βάση δεδοµένων», της οποίας η δοµή και οργάνωση επιτρέπει όχι µόνο στους ανθρώπους, αλλά και στις µηχανές να χρησιµοποιήσουν την αποθηκευµένη πληροφορία. Ο Σηµασιολογικός Ιστός αποτελεί ουσιαστικά µία επέκταση του Παγκόσµιου Ιστού (World Wide Web) η οποία επιτρέπει την αποτελεσµατικότερη συνεργασία ανθρώπων και υπολογιστών, σύµφωνα µε τον εµπνευστή του (και εµπνευστή των WWW, URIs, HTTP και HTML) Tim Berners-Lee. Το πρόβληµα µε τον Παγκόσµιο Ιστό είναι ότι το µεγαλύτερο µέρος της διαθέσιµης πληροφορίας οργανώνεται µε τρόπο που καθιστά δύσκολη την επεξεργασία της από µία µηχανή. Η πληροφορία αποθηκεύεται συνήθως στη µορφή HTML αρχείων, τα οποία προσφέρουν µόνο οπτική απεικόνιση και όχι σηµασιολογική ταξινόµηση της πληροφορίας. Αυτό έχει ως αποτέλεσµα, ένας άνθρωπος, διαβάζοντας µία σελίδα HTML, να µπορεί να διαχωρίσει σηµασιολογικά την πληροφορία που περιέχει, αλλά αυτό να είναι αδύνατο για µία εφαρµογή. Αυτό που επιδιώκεται µε το Σηµασιολογικό Ιστό είναι η ρητή και µε σαφήνεια σηµασιολογική επισηµείωση της πληροφορίας, έτσι ώστε να διευκολύνεται η αυτοµατοποιηµένη επεξεργασία και ολοκλήρωσή της από µία µηχανή. Στηρίζεται στην δυνατότητα ορισµού από την XML (Extensible Markup Language) σχηµάτων προσαρµοσµένων ετικετών, στη δυνατότητα ευέλικτης παρουσίασης δεδοµένων της RDF (Resource Description Framework) και στη δυνατότητα της OWL για τυπική περιγραφή της σηµασιολογίας και ορολογίας ενός εγγράφου. Το παραπάνω πρόβληµα που επιδιώκεται να λυθεί µε το Σηµασιολογικό Ιστό δεν περιορίζεται µόνο στο διαδίκτυο, αλλά αφορά και οποιονδήποτε άλλο τοµέα στον οποίο προκύπτει η ανάγκη για αποθήκευση και ανάσυρση πληροφορίας. Εν προκειµένω, όσον αφορά την αναζήτηση εγγράφων στο σκληρό δίσκο ενός υπολογιστή, η µέχρι στιγµής υπάρχουσα κλασσική αναζήτηση µε λέξεις κλειδιά εµφανίζει διαφόρων ειδών ατέλειες. Για παράδειγµα, ένα έγγραφο µπορεί να αναφέρεται σε µία έννοια, αλλά να µην περιέχει (αρκετές) λέξεις κλειδιά που να περιγράφουν τη συγκεκριµένη έννοια ή και το αντίστροφο, να περιέχει πολλές λέξεις κλειδιά µίας έννοιας στην οποίο όµως δεν αναφέρεται. Επιπλέον, µπορεί διαφορετικά σηµεία του εγγράφου να αναφέρονται σε διαφορετικές έννοιες. 27

28 Με τη χρήση οντολογιών και οντολογικών γλωσσών (OWL), δίνεται η δυνατότητα σηµασιολογικής επισηµείωσης της έννοιας (ή και των εννοιών) κάθε εγγράφου (ή µέρους ενός εγγράφου), έτσι ώστε, η αναζήτηση µε τη βοήθεια της οντολογίας να εξειδικεύεται και να γίνεται πιο έγκυρη και αποτελεσµατική. Παρακάτω περιγράφεται η έννοια της οντολογίας και αναλύεται η γλώσσα OWL (Web Ontology Language) Οντολογία Οντολογία είναι η περιγραφή, µε τη χρησιµοποίηση ενός συγκεκριµένου λεξιλογίου, ενός συνόλου από έννοιες, αντικείµενα και σχέσεις µεταξύ τους που αφορούν µία συγκεκριµένη περιοχή γνώσης. Ουσιαστικά, µία οντολογία είναι µία ιεραρχία από κλάσεις, ιδιότητες και στιγµιότυπα των κλάσεων, που περιγράφουν ένα γνωστικό αντικείµενο Η γλώσσα OWL Η οντολογική γλώσσα OWL σχεδιάστηκε για να χρησιµοποιηθεί από εφαρµογές που στοχεύουν, όχι απλά στην παρουσίαση πληροφορίας, αλλά στην επεξεργασία της. Η OWL διευκολύνει τη διερµηνεία του περιεχοµένου της πληροφορίας περισσότερο από γλώσσες όπως οι XML, RDF, RDFS, παρέχοντας επιπρόσθετο λεξιλόγιο σε συνδυασµό µε τυπική σηµασιολογία. Περιλαµβάνει τρεις υπογλώσσες µε διαφορετική εκφραστικότητα: OWL Lite, OWL DL και OWL Full. Ακολουθεί µία σύντοµη περιγραφή κάθε µίας από αυτές: Η OWL Lite προορίζεται για χρήστες που χρειάζονται πρωτίστως µία ιεραρχία ταξινόµησης και απλούς περιορισµούς. Για παράδειγµα, ενώ υποστηρίζει περιορισµούς πληθικότητας, επιτρέπει τιµές πληθικότητας µόνο 0 και 1. Η δηµιουργία και ο χειρισµός µίας οντολογίας µε αυτή τη γλώσσα είναι σαφώς πιο εύκολα, σε σχέση µε τις άλλες δύο γλώσσες, αφού διαθέτει λιγότερο πολύπλοκο λεξιλόγιο και σύνταξη. Παράλληλα, όµως, προσφέρει µειωµένη εκφραστικότητα σε σχέση µε τις άλλες δύο γλώσσες. Η OWL DL προορίζεται για χρήστες που χρειάζονται µέγιστη εκφραστικότητα, διατηρώντας παράλληλα υπολογιστική πληρότητα (όλα τα συµπεράσµατα είναι υπολογίσιµα) και αποκρισιµότητα (όλοι οι υπολογισµοί τελείωνουν σε πεπερασµένο χρονικό διάστηµα). Περιλαµβάνει όλα τα στοιχεία της γλώσσας OWL, τα οποία, όµως, µπορούν να χρησιµοποιηθούν κάτω από ορισµένους περιορισµούς (για παράδειγµα, µία κλάση µπορεί να είναι υποκλάση πολλών κλάσεων, όχι όµως στιγµιότυπο µίας άλλης κλάσης). Η OWL Full προορίζεται για χρήστες που χρειάζονται µέγιστη εκφραστικότητα και τη συντακτική ελευθερία της RDF, χωρίς να ενδιαφέρονται για την διατήρηση της υπολογιστικής πληρότητας και αποκρισιµότητας. Για παράδειγµα, µία κλάση µπορεί 28

29 υπολογίζεται ως συλλογή στιγµιότυπων, αλλά ταυτόχρονα και η ίδια ως στιγµιότυπο. Η OWL Full επιτρέπει σε µία οντολογία να επεκτείνει τη σηµασία προκαθορισµένου RDF ή OWL λεξιλογίου. Λόγω της µεγάλης εκφραστικότητας, η γλώσσα αυτή αφήνει λίγα περιθώρια για πλήρη συλλογιστική υποστήριξη. Για τις τρεις αυτές υπογλώσσες της OWL ισχύουν οι παρακάτω προτάσεις: Κάθε νόµιµη OWL Lite οντολογία είναι και νόµιµη OWL DL οντολογία. Κάθε νόµιµη OWL DL οντολογία είναι και νόµιµη OWL Full οντολογία. Κάθε έγκυρο OWL Lite συµπέρασµα είναι και έγκυρο OWL DL συµπέρασµα. Κάθε έγκυρο OWL DL συµπέρασµα είναι και έγκυρο OWL Full συµπέρασµα. Η OWL Full µπορούµε να πούµε ότι είναι µία επέκταση της RDF, ενώ οι OWL Lite και OWL DL επεκτάσεις µίας περιορισµένης όψης της RDF. Για αυτό, ισχύουν επιπλέον τα παρακάτω: Κάθε OWL (Lite, DL, Full) έγγραφο είναι και RDF έγγραφο. Κάθε RDF έγγραφο είναι και OWL Full έγγραφο. Μόνο ορισµένα RDF έγγραφα µπορούν να είναι και OWL Lite OWL ή DL έγγραφα. Η επιλογή ανάµεσα στις τρεις εκδοχές της OWL καθορίζεται από τις απαιτήσεις που έχει ο χρήστης από τη γλώσσα. Η επιλογή ανάµεσα στην OWL Lite και στην OWL DL εξαρτάται από το πόσο αναγκαίες είναι οι πιο εκφραστικές δοµές που χρησιµοποιεί η OWL DL. Η επιλογή ανάµεσα στην OWL DL και στην OWL Full εξαρτάται από την ανάγκη για χρήση των διευκολύνσεων όσον αφορά τη µοντελοποίηση που προσφέρει η OWL Full (για παράδειγµα δηµιουργία κλάσεων από κλάσεις, ενσωµάτωση ιδιοτήτων σε κλάσεις). Ακολουθούν τα βασικά δοµικά στοιχεία της OWL. Αρχικά, δίνονται εκείνα τα στοιχεία της OWL Lite που προέρχονται από την RDFS: Class: Μία κλάση (Class) ορίζει µία οµάδα στιγµιότυπων (αντικειµένων) που µοιράζονται κάποιες κοινές ιδιότητες. Οι κλάσεις µπορούν να οργανωθούν σε µία ιεραρχία χρησιµοποιώντας τη subclassof. Υπάρχει µία προκαθορισµένη κλάση, η Thing, που περιέχει όλα τα στιγµιότυπα και είναι υπερκλάση όλων των κλάσεων και η κλάση Nothing, που δεν περιέχει κανένα στιγµιότυπο και είναι υποκλάση όλων των κλάσεων. rdfs:subclassof: Ιεραρχίες κλάσεων µπορούν να δηµιουργηθούν µε τη δήλωση ότι µία κλάση είναι υποκλάση (subclassof) µίας άλλης κλάσης. rdfs:property: Μία ιδιότητα (Property) δηλώνει µία σχέση µεταξύ στιγµιότυπων ή µία σχέση ανάµεσα σε στιγµιότυπο και µία τιµή δεδοµένου. Οι ιδιότητες της πρώτης κατηγορίας ονοµάζονται ιδιότητες αντικειµένων (ObjectProperty), ενώ της δεύτερης 29

30 κατηγορίας ιδιότητες τύπων δεδοµένων (DatatypeProperty). Και οι δύο είναι υποκλάσεις της Property. rdfs:subpropertyof: Ιεραρχίες ιδιοτήτων µπορούν να δηµιουργηθούν µε τη δήλωση ότι µία ιδιότητα είναι υποιδιότητα (subpropertyof) µίας άλλης ιδιότητας. rdfs:domain: Το πεδίο ορισµού (domain) µίας ιδιότητας περιορίζει τα αντικείµενα στα οποία µπορεί να εφαρµοστεί η ιδιότητα. Αν µία ιδιότητα δηλώνει µία σχέση ενός στιγµιότυπου µε ένα άλλο κα έχει ως πεδίο ορισµού µία κλάση, τότε το πρώτο στιγµιότυπο πρέπει να ανήκει σε αυτήν την κλάση. Το πεδίο ορισµού είναι ένας γενικευµένος περιορισµός, αφού χαρακτηρίζει µία ιδιότητα γενικά και όχι µία ιδιότητα που συνδέεται µε µία συγκεκριµένη κλάση. rdfs:range: Το πεδίο τιµών (range) µίας ιδιότητας περιορίζει τα αντικείµενα τα οποία µπορούν να αποτελούν τιµή της ιδιότητας. Αν µία ιδιότητα δηλώνει µία σχέση ενός στιγµιότυπου µε ένα άλλο κα έχει ως πεδίο τιµών µία κλάση, τότε το δεύτερο στιγµιότυπο πρέπει να ανήκει σε αυτήν την κλάση. Το πεδίο τιµών είναι επίσης γενικευµένος περιορισµός. Individual: Το άτοµο (Individual) είναι ένα στιγµιότυπο µίας κλάσης. Οι ιδιότητες µπορούν να χρησιµοποιηθούν για να συσχετίσουν ένα άτοµο µε κάποιο άλλο. Στη συνέχεια, δίνονται εκείνα τα στοιχεία της OWL Lite που σχετίζονται µε ισότητα και ανισότητα: equivalentclass: Ισοδύναµες (equivalentclass) µπορούν να δηλωθούν δύο κλάσεις που έχουν τα ίδια στιγµιότυπα. Με αυτόν τον τρόπο δηµιουργούνται συνώνυµες κλάσεις. equivalentproperty: Ισοδύναµες (equivalentproperty) µπορούν να δηλωθούν δύο ιδιότητες που συνδέουν ένα στιγµιότυπο µε την ίδια οµάδα στιγµιότυπων. Με αυτόν τον τρόπο δηµιουργούνται συνώνυµες ιδιότητες sameas: Ίδια (sameas) µπορούν να δηλωθούν δύο στιγµιότυπα µε σκοπό να δηµιουργηθούν περισσότερα από ένα ονόµατα αναφοράς στο ίδιο στιγµιότυπο. differentfrom: Ένα στιγµιότυπο µπορεί να χαρακτηριστεί διαφορετικό (differentfrom) από ένα άλλο στιγµιότυπο για να δηλωθεί ρητά ότι τα δύο στιγµιότυπα δεν είναι ίδια. Αυτό είναι πολύ σηµαντικό σε γλώσσες όπως η OWL, οι οποίες δεν υποθέτουν ότι κάθε στιγµιότυπο έχει ένα και µόνο όνοµα. AllDifferent: Ένα σύνολο από στιγµιότυπα µπορεί να δηλωθεί AllDifferent, δηλαδή ότι κάθε στιγµιότυπο είναι διαφορετικό από τα υπόλοιπα. Αυτό είναι πολύ σηµαντικό όταν απαιτείται από ένα σύνολο στιγµιότυπων να έχει το καθένα ένα και µόνο όνοµα. 30

31 Ακολουθούν εκείνα τα στοιχεία της OWL Lite που σχετίζονται µε τις ιδιότητες και τις τιµές τους: inverseof: Μία ιδιότητα µπορεί δηλωθεί ως η αντίστροφη (inverseof) µίας άλλης ιδιότητας. Σε αυτήν την περίπτωση αν το στιγµιότυπο Χ συνδέεται µέσω µίας ιδιότητας µε το στιγµιότυπο Υ, τότε το Υ συνδέεται µε το Χ µέσω της αντίστροφης ιδιότητας. TransitiveProperty: Μία ιδιότητα µπορεί δηλωθεί ως η µεταβατική (TransitiveProperty). Σε αυτήν την περίπτωση αν τα ζεύγη (Χ, Υ) και (Υ, Ζ) είναι στιγµιότυπα µίας µεταβατικής ιδιότητας, τότε και το ζεύγος (X, Z) είναι στιγµιότυπο της ίδιας ιδιότητας. Οι OWL Lite και OWL DL επιβάλλουν τον περιορισµό ότι οι µεταβατικές ιδιότητες (και οι υπεριδιότητες τους) δεν µπορούν να έχουν περιορισµό µέγιστης πληθικότητας 1. Σε διαφορετική περίπτωση δεν θα ίσχυε η αποκρισιµότητα της γλώσσας. SymmetricProperty: Μία ιδιότητα µπορεί δηλωθεί ως η συµµετρική (SymmetricProperty). Σε αυτήν την περίπτωση αν το ζεύγος (Χ, Υ) είναι στιγµιότυπο µίας συµµετρικής ιδιότητας, τότε και το ζεύγος (Ζ, Χ) είναι στιγµιότυπο της ίδιας ιδιότητας. FunctionalProperty: Μία ιδιότητα µπορεί δηλωθεί ως η µονότιµη (FunctionalProperty) στην περίπτωση που δεν έχει παραπάνω από µία τιµή για κάθε στιγµιότυπο. InverseFunctionalProperty: Μία ιδιότητα µπορεί δηλωθεί ως η αντιστρόφως µονότιµη (InverseFunctionalProperty) στην περίπτωση που η αντίστροφη της είναι µονότιµη. Στη συνέχεια, δίνονται εκείνα τα στοιχεία της OWL Lite που σχετίζονται περιορισµούς που καθορίζουν πώς µία ιδιότητα µπορεί να χρησιµοποιηθεί από τα στιγµιότυπα µίας κλάσης: allvaluesfrom: Ο περιορισµός allvaluesfrom (όλες οι τιµές από) τίθεται σε µία ιδιότητα, αναφερόµενος σε µία κλάση. Αυτό σηµαίνει ότι η ιδιότητα, για τη συγκεκριµένη κλάση, έχει ένα περιορισµένο πεδίο τιµών. Έτσι, αν ένα στιγµιότυπο Χ της κλάσης συνδέεται µε τη συγκεκριµένη ιδιότητα µε ένα στιγµιότυπο Υ, τότε το Υ ανήκει στην κλάση που προσδιορίζεται από τον αντίστοιχο περιορισµό του πεδίου τιµών. somevaluesfrom: Ο περιορισµός allvaluesfrom (όλες οι τιµές από) τίθεται σε µία ιδιότητα, αναφερόµενος σε µία κλάση. Αυτό σηµαίνει ότι η ιδιότητα, για τη συγκεκριµένη κλάση, για µία τουλάχιστον από τις τιµές της, έχει ένα περιορισµένο πεδίο τιµών. 31

32 mincardinality: Ο περιορισµός ελάχιστης πληθικότητας (mincardinality) τίθεται σε µία ιδιότητα, αναφερόµενος σε µία κλάση. Αν για µία ιδιότητα έχουµε mincardinality 1, τότε κάθε στιγµιότυπο της κλάσης θα πρέπει να συνδέεται τουλάχιστον µε ένα άλλο στιγµιότυπο, µέσω αυτής της ιδιότητας. Με άλλα λόγια, η ιδιότητα θα πρέπει να έχει τουλάχιστον µία τιµή για κάθε στιγµιότυπο της κλάσης. Στην OWL Lite οι τιµές ελάχιστης πληθικότητας που επιτρέπονται είναι 0 και 1. Τιµή 0 σηµαίνει ότι η ιδιότητα είναι προαιρετική για τη συγκεκριµένη κλάση. maxcardinality: Ο περιορισµός µέγιστης πληθικότητας (maxcardinality) τίθεται σε µία ιδιότητα, αναφερόµενος σε µία κλάση. Αν για µία ιδιότητα έχουµε maxcardinality 1, τότε κάθε στιγµιότυπο της κλάσης θα πρέπει να συνδέεται το πολύ µε ένα άλλο στιγµιότυπο, µέσω αυτής της ιδιότητας. Αν έχουµε maxcardinality 0, τότε υποδηλώνουµε ότι κάποια κλάση δεν έχει τιµές για τη συγκεκριµένη ιδιότητα. cardinality: Ο περιορισµός πληθικότητας (maxcardinality) τίθεται σε µία ιδιότητα, αναφερόµενος σε µία κλάση και καθορίζει την ακριβή πληθικότητα της ιδιότητας για αυτήν την κλάση Επίσης, στοιχείο της OWL Lite είναι η τοµή (intersectionof) της οποίας η χρήση περιορίζεται σε επώνυµες κλάσεις και περιορισµούς. Ακολουθούν εκείνα τα στοιχεία που επεκτείνουν την OWL Lite σε OWL DL και OWL Full. oneof: Οι κλάσεις µπορούν να περιγραφούν ως απαρίθµηση των στιγµιότυπων από τα οποία αποτελούνται. Τα µέλη της κλάσης είναι ακριβώς τα απαριθµηµένα στιγµιότυπα και µόνο αυτά. hasvalue: Μία ιδιότητα ενδέχεται να απαιτείται να έχει ως τιµή ένα συγκεκριµένο στιγµιότυπο. disjointwith: Κάποιες κλάσεις µπορούν να δηλωθούν ότι είναι ξένες µεταξύ τους (disjointwith), δηλαδή ότι δεν έχουν ούτε ένα κοινό στοιχείο. Έτσι, αν κάποιο στιγµιότυπο ανήκει σε µία κλάση, αποκλείεται να ανήκει και σε µία ξένη προς αυτήν κλάση. unionof, complementof, intersectionof : Σε OWL DL και OWL Full η ένωση, το συµπλήρωµα και η τοµή αντίστοιχα επιτρέπουν διάφορους συνδυασµούς κλάσεων και περιορισµών. mincardinality, maxcardinality, cardinality : Οι περιορισµοί πληθικότητας επιτρέπεται να παίρνουν τιµές, όχι µόνο 0 και 1, αλλά οποιονδήποτε φυσικό αριθµό. complex classes : Σε πολλές δοµές, η OWL Lite περιορίζει τη σύνταξη σε µοναδικά ονόµατα κλάσεων. Η OWL Full επεκτείνει αυτόν τον περιορισµό στο να επιτρέπει σύνθετες περιγραφές κλάσεων, όπως απαριθµηµένες κλάσεις, περιορισµούς 32

33 ιδιοτήτων και συνδυασµούς λογικών εκφράσεων. Επίσης, η OWL Full επιτρέπει σε κλάσεις να χρησιµοποιούνται ως στιγµιότυπα. 2.2 Σχετικές εργασίες Μηχανές αναζήτησης Τρεις από τις πιο διαδεδοµένες desktop search engines είναι η Google Desktop Search (GDS), η MSN Deskbar και η Yahoo Desktop Search (YDS). Παρακάτω παρουσιάζονται οι συνοπτικά σηµαντικότερες λειτουργίες τους Google Desktop Search Η GDS προσφέρει ένα UI παρόµοιο µε την αντίστοιχη µηχανή αναζήτησης στο διαδίκτυο. Ουσιαστικά, τα δύο εργαλεία ολοκληρώνονται µεταξύ τους και έτσι ο χρήστης µπορεί να επιλέξει να εκτελέσει την αναζήτηση του είτε στο internet, είτε στον υπολογιστή του, είτε και στα δύο. Τα αποτελέσµατα εµφανίζονται όπως φαίνεται στο παρακάτω σχήµα: Σχήµα 2.6: Εµφάνιση της GDS 33

34 Βλέπουµε ότι υπάρχουν δύο επιλογές ταξινόµησης: ανάλογα µε το βαθµό συσχέτισης των αρχείων µε τις λέξεις κλειδιά και ανάλογα µε την ηµεροµηνία. Οι τύποι αρχείων που υποστηρίζονται από το GDS είναι οι εξής: Outlook Outlook Express Word Excel PowerPoint Internet Explorer AOL Instant Messenger Netscape Mail / Thunderbird Firefox / Mozilla / Netscape PDF Music Images Video Text and others MSN Instant Messenger και είναι δυνατόν να επεκταθούν µε διάφορα plug-ins. O χρήστης, µέσω των επιλογών αναζήτησης, µπορεί να επιλέξει για ποιους από αυτούς τους τύπους αρχείων θα εκτελεστεί δεικτοδότηση, ώστε να είναι δυνατή η εύρεση τους και επιπλέον να προσθαφαιρέσει περιοχές του σκληρού δίσκου στο ευρετήριο. Παρόλο που προσφέρει τις παραπάνω επιλογές για δεικτοδότηση και δηµιουργία ευρετηρίου, η GDS δεν διαθέτει προχωρηµένες επιλογές αναζήτησης. ηλαδή, δεν µπορείς να επιλέξεις αναζήτηση ενός συγκεκριµένου τύπου αρχείου, ή αναζήτηση της λέξης κλειδί σε ένα συγκεκριµένο µέρος, π.χ. µόνο στο path της τοποθεσίας του αρχείου. Η µόνη δυνατότητα που δίνεται είναι η χρησιµοποίηση δεσµευµένων λέξεων, όπως AND ή -, για εξειδίκευση της αναζήτησης MSN Deskbar Η MSN Deskbar προσφέρει το UI που φαίνεται στο σχήµα 2.7. Καταρχήν, µπορούµε να παρατηρήσουµε ότι, και εδώ, δίνεται η δυνατότητα αναζήτησης τόσο στο σκληρό δίσκο, όσο και στο διαδίκτυο. Επίσης, όπως και στην GDS, επιτρέπεται η αναζήτηση µε δεσµευµένες λέξεις ( AND, - κ.α.). Επιπλέον, όµως, µπορεί να εκτελεστεί αναζήτηση σε συγκεκριµένους τύπους αρχείων που επιλέγει ο χρήστης. Οι υποστηριζόµενοι τύποι αρχείων είναι αυτοί που φαίνονται στο µενού που έχει ανοιχτεί στο παρακάτω σχήµα, δηλαδή document αρχεία, attachments, contacts, s, pictures, videos, folders κ.α. Αυτό το εύρος τύπων µπορεί να επεκταθεί µε add-ins. Όσον αφορά την παρουσίαση των αποτελεσµάτων, κάθε αρχείο που έχει ευρεθεί χαρακτηρίζεται µε ένα έως τρία αστέρια ανάλογα µε τη συσχέτιση του µε τις λέξεις κλειδιά της αναζήτησης. Τα αποτελέσµατα µπορούν να ταξινοµηθούν µε βάση αυτό το βαθµό 34

35 συσχέτισης, αλλά και µε σύµφωνα µε το όνοµά τους, το όνοµα του συγγραφέα, την ηµεροµηνία, το µέγεθος, τον τύπο τους και το όνοµα του φακέλου στον οποίο περιέχονται. Επιπλέον, είναι διαθέσιµη και προεπισκόπηση για τους περισσότερους τύπους αρχείων. Σχήµα 2.7: Εµφάνιση της MSN Deskbar Yahoo Desktop Search Η YDS προσφέρει το UI που φαίνεται στο σχήµα 2.8. Οι δυνατότητες που προσφέρονται είναι αντίστοιχες της MSN Deskbar: υνατότητα αναζήτησης τόσο στο σκληρό δίσκο, όσο και στο διαδίκτυο, αναζήτηση µε δεσµευµένες λέξεις ( AND, - κ.α.), αναζήτηση σε συγκεκριµένους τύπους αρχείων που επιλέγει ο χρήστης. Οι υποστηριζόµενοι τύποι αρχείων χωρίζονται σε κατηγορίες που φαίνονται στα tabs της εικόνας 4 (documents, attachments, contacts, s, pictures, music). Όσον αφορά την παρουσίαση των αποτελεσµάτων, υποστηρίζεται επίσης προεπισκόπηση για τους περισσότερους τύπους αρχείων. Τα αποτελέσµατα µπορούν να ταξινοµηθούν µε βάση το όνοµά τους, την ηµεροµηνία, το µέγεθος, τον τύπο τους, την τοποθεσία τους στο δίσκο και το όνοµα του φακέλου στον οποίο περιέχονται. Το επιπλέον χαρακτηριστικό που προσφέρεται είναι η εκλέπτυνση των αποτελεσµάτων, µε επιµέρους αναζητήσεις µε λέξεις κλειδιά στα παραπάνω υποπεδία ενός αρχείου. 35

36 Σχήµα 2.8: Εµφάνιση της YDS Εφαρµογές επεξεργασίας οντολογιών Ακολουθεί η σύντοµη παρουσίαση ορισµένων εργαλείων διαχείρισης οντολογιών SWOOP Το SWOOP είναι ένα εργαλείο ανάπτυξης και διαχείρισης οντολογιών, που, όντας σχεδιασµένο στο πρότυπο ενός Web-Browser, στοχεύει στη γρήγορη και εύκολη περιήγηση και ανάπτυξη OWL οντολογιών. Το SWOOP χρησιµοποιεί το Manchester OWL API. Ένα αξιοσηµείωτο στοιχείο σχετικά µε αυτό το εργαλείο είναι ότι στα µελλοντικά πλάνα ανάπτυξής του περιλαµβάνεται και η δηµιουργία ενός αλγόριθµου αναζήτησης που συνδυάζει λέξεις κλειδιά µε δοµές περιγραφικής λογικής για να βρει συσχετιζόµενες έννοιες σε οντολογίες. Στο παρακάτω σχήµα δίνεται µία όψη του SWOOP: 36

37 Σχήµα 2.9: Όψη του SWOOP OilEd Είναι ένα εργαλείο ανάπτυξης και επεξεργασίας οντολογιών που βασίζεται στη γλώσσα DAML+OIL. εν προσφέρει δυνατότητες πλήρους ανάπτυξης, όπως, για παράδειγµα, ανάπτυξη µεγάλης κλίµακας οντολογιών ή ολοκλήρωση οντολογιών, αλλά βασικές λειτουργίες κατασκευής OIL οντολογιών. Στο επόµενο σχήµα δίνεται η όψη του OilEd: 37

38 Σχήµα 2.10: Όψη του OilEd DOE Το DOE είναι ένα απλό εργαλείο σύνταξης οντολογιών, που επιτρέπει στον χρήστη την κατασκευή ιεραρχιών από έννοιες και σχέσεις, οι οποίες µπορούν στη συνέχεια να µεταφραστούν σε κάποια οντολογική γλώσσα (RDFS, OWL, DAML+OIL, OIL) ή να εισαχθούν σε κάποιο άλλο εργαλείο ανάπτυξης οντολογιών για περαιτέρω επεξεργασία. Στο παρακάτω σχήµα δίνεται η όψη του DOE: 38

39 Σχήµα 2.11: Όψη του DOE Protégé Το Protégé είναι µία ανοικτού κώδικα πλατφόρµα η οποία παρέχει ένα σύνολο εργαλείων για κατασκευή και διαχείριση εφαρµογών βάσεων γνώσης και οντολογιών. Εκτός από τον πυρήνα του, που αποτελεί µία πλήρη εφαρµογή ανάπτυξης και διαχείρισης οντολογιών, το Protégé προσφέρει και ένα βασισµένο στη γλώσσα Java API (Protégé-OWL API) για ανάπτυξη εφαρµογών σχετικών µε βάσεις γνώσεις και οντολογίες. Αυτό το API, µάλιστα, χρησιµοποιήθηκε και για την ανάπτυξη της εφαρµογής GoNToggle. Στο παρακάτω σχήµα δίνεται η όψη του Protégé: 39

40 Σχήµα 2.12: Όψη του Protégé 2.3 Στόχος Στόχος της παρούσας διπλωµατικής είναι η ανάπτυξη µίας πλήρους εφαρµογής που θα δίνει τη δυνατότητα στον χρήστη να εκτελεί προχωρηµένη αναζήτηση στα έγγραφα του υπολογιστή του. Ο χρήστης θα µπορεί να δηµιουργεί ένα ευρετήριο µε τα έγγραφα αυτά, αλλά και να χαρακτηρίζει σηµασιολογικά ο ίδιος κάποια από αυτά, ώστε να µπορεί να τα αναζητά, τόσο µε τον κλασικό τρόπο (αναζήτηση µε λέξεις κλειδιά), αλλά και διατρέχοντας τις έννοιες µίας οντολογίας που θα περιέχει τα χαρακτηρισµένα έγγραφα. Με αυτόν τον τρόπο, η αναζήτηση θα γίνεται πιο εξειδικευµένη, καθώς και πιο αποδοτική, αφού ο χρήστης θα µπορεί, επιπλέον, από τα αποτελέσµατα της αναζήτησης, να αντλεί µεταπληροφορίες σηµασιολογικού περιεχοµένου (για παράδειγµα ανάσυρση όµοιων σηµασιολογικά εγγράφων ή ποσοστό σηµασιολογικής ταύτισης ενός εγγράφου µε κάποια έννοια). 40

41 3 Ανάλυση και σχεδίαση Σε αυτό το κεφάλαιο περιγράφεται η ανάλυση και σχεδίαση της εφαρµογής. Αρχικά, γίνεται η ανάλυση απαιτήσεων της εφαρµογής, στη συνέχεια η περιγραφή αρχιτεκτονικού σχεδίου και τέλος η περιγραφή λεπτοµερούς σχεδίου. 3.1 Ανάλυση απαιτήσεων Εισαγωγή Σε αυτή την ενότητα γίνεται η ανάλυση απαιτήσεων της εφαρµογής GoNToggle, δηλαδή περιγράφονται οι λειτουργίες και οι περιορισµοί του συστήµατος. Σκοπός, αυτής της περιγραφής είναι η κατανόηση των δυνατοτήτων που προσφέρει στο χρήστη η εφαρµογή, αλλά και των αντίστοιχων περιορισµών Λειτουργικές Απαιτήσεις Η εφαρµογή αποτελείται από τρία βασικά υποσυστήµατα: 1. Το υποσύστηµα δηµιουργίας ευρετηρίου. 2. Το υποσύστηµα σηµασιολογικού χαρακτηρισµού κειµένων και επεξεργασίας οντολογιών. 3. Το υποσύστηµα αναζήτησης. 41

42 Ακολουθεί η περιγραφή της λειτουργίας κάθε επιµέρους υποσυστήµατος: ηµιουργία ευρετηρίου: Το υποσύστηµα δηµιουργίας ευρετηρίου θα δίνει στο χρήστη τη δυνατότητα να επιλέξει αν θα δηµιουργήσει ένα νέο ευρετήριο ή αν θα επεξεργαστεί ήδη υπάρχον ευρετήριο, να επιλέξει το φάκελο αρχείων που θα δεικτοδοτηθούν και τέλος, να δηµιουργήσει το ευρετήριο πάνω στο οποίο θα εκτελεστεί αργότερα αναζήτηση µε λέξεις κλειδιά. Τα είδη εγγράφων που θα υποστηρίζονται, δηλαδή τα είδη των εγγράφων από τα οποία θα µπορεί να εξαχθεί πληροφορία και να αποθηκευθεί στο ευρετήριο είναι τα εξής: doc, pdf, txt, rtf, xls, html. Η ανάπτυξη αυτού του υποσυστήµατος θα πραγµατοποιηθεί µε τη βοήθεια συναρτήσεων του lucene. ΕΙΣΟ ΟΣ: 1. Επιλέγεται δηµιουργία νέου ευρετηρίου ή όχι. 2. ίνεται το όνοµα του ευρετηρίου. 3. Επιλέγεται ο φάκελος αρχείων που θα δεικτοδοτηθεί. ΕΠΕΞΕΡΓΑΣΙΑ: 1. Προειδοποιείται ο χρήστης σε περίπτωση επιλογής δηµιουργίας νέου ευρετηρίου µε όνοµα ήδη υπάρχοντος ευρετηρίου. ΕΞΟ ΟΣ: 1. ηµιουργείται ο φάκελος του ευρετηρίου. 2. εικτοδοτείται ο επιλεγµένος φάκελος αρχείων και τα αποτελέσµατα αποθηκεύονται στο ευρετήριο Σηµασιολογικός χαρακτηρισµός κειµένων και επεξεργασία οντολογιών: Το υποσύστηµα σηµασιολογικού χαρακτηρισµού κειµένων και επεξεργασίας οντολογιών θα δίνει στο χρήστη δυνατότητα επιλογής ενός εγγράφου, προβολής του κειµένου του και επιλογής όλου του κειµένου ή µόνο ενός µέρους του για σηµασιολογική επισηµείωση. Το σηµασιολογικά χαρακτηρισµένο κείµενο (ή κοµµάτι κειµένου) θα αποθηκεύεται σε µία επιλεγµένη από το χρήστη οντολογία ως στιγµιότυπο µίας ή περισσοτέρων κλάσεων που θα καθορίζει ο χρήστης. Αυτό το στιγµιότυπο θα περιέχει σηµαντική πληροφορία (όνοµα- µονοπάτι του εγγράφου στο δίσκο, έννοιες-κλάσεις µε τις οποίες έχει χαρακτηριστεί) η οποία είναι απαραίτητη για το κοµµάτι της σηµασιολογικής αναζήτησης. Επιπλέον, ο χρήστης θα µπορεί να επιλέγει την οντολογία µε την οποία θα εργαστεί, να επεξεργάζεται την οντολογία και τα στιγµιότυπά της, καθώς και να αποθηκεύσει τις αλλαγές. Συγκεκριµένα, θα είναι δυνατή η επεξεργασία της ιεραρχίας της οντολογίας (προσθαφαίρεση κλάσεων-εννοιών, 42

43 δηµιουργία υπερκλάσεων-υποκλάσεων, προσθαφαίρεση ιδιοτήτων των κλάσεων) καθώς και η επεξεργασία των στιγµιοτύπων που περιγράφηκαν παραπάνω (διαγραφή στιγµιοτύπων, προσθαφαίρεση στιγµιοτύπων από κλάσεις της οντολογίας, σύνδεση στιγµιοτύπων µέσω ιδιοτήτων). Για την ανάπτυξη του υποσυστήµατος θα χρησιµοποιηθούν συναρτήσεις του protégé. ΕΙΣΟ ΟΣ: 1. Επιλέγεται οντολογία προς επεξεργασία. 2. Επιλέγεται έγγραφο για να χαρακτηριστεί σηµασιολογικά. 3. Επιλέγεται και εξάγεται κοµµάτι του εγγράφου (προαιρετικό). 4. Επιλέγεται αν θα χαρακτηριστεί σηµασιολογικά όλο το έγγραφο ή µόνο το εξαγµένο κοµµάτι του. 5. Επιλέγεται η κλάση της οντολογίας µε την οποία θα γίνει ο σηµασιολογικός χαρακτηρισµός. 6. Επιλέγεται το προς επεξεργασία στοιχείο (κλάση, ιδιότητα) της οντολογίας (προαιρετικό). 7. Επιλέγεται το προς επεξεργασία στιγµιότυπο µίας κλάσης της οντολογίας (προαιρετικό). ΕΠΕΞΕΡΓΑΣΙΑ: 1. Φορτώνεται η επιλεγµένη οντολογία 2. Φορτώνεται το επιλεγµένο έγγραφο και εµφανίζεται το κείµενο του. 3. Εξάγεται το επιλεγµένο κοµµάτι σε ξεχωριστό παράθυρο της εφαρµογής (προαιρετικό). 4. Προειδοποιείται ο χρήστης σε περίπτωση που προβαίνει σε οποιουδήποτε είδους αλλαγές στην οντολογία, χωρίς να έχει φορτωθεί κάποια οντολογία.. 5. ηµιουργείται ένα στιγµιότυπο της επιλεγµένης κλάσης της οντολογίας, το οποίο αντιστοιχεί στο επιλεγµένο κείµενο και περιέχει πληροφορίες για αυτό. 6. Εµφανίζεται η ιεραρχία της οντολογίας δίνοντας τη δυνατότητα επεξεργασίας των κλάσεων, ιδιοτήτων και στιγµιοτύπων της. ΕΞΟ ΟΣ: 1. Αποθηκεύονται στην οντολογία όσες αλλαγές πραγµατοποιήθηκαν Αναζήτηση: Το υποσύστηµα αναζήτησης θα δίνει στο χρήστη τη δυνατότητα να εκτελεί αναζήτηση µε λέξεις κλειδιά, αναζήτηση µε ερωτήσεις στην οντολογία και συνδυαστική αναζήτηση. Συγκεκριµένα, µε τη συνδυαστική αναζήτηση, ο χρήστης θα εκτελεί ταυτόχρονα αναζήτηση µε λέξεις κλειδιά στο ευρετήριο και σηµασιολογική αναζήτηση-περιήγηση στις έννοιες της 43

44 οντολογίας, έχοντας τη δυνατότητα να επιλέξει ως αποτέλεσµα την ένωση ή την τοµή των δύο αναζητήσεων. Επίσης, θα µπορεί να εκτελεί αναζήτηση στα αποτελέσµατα προηγούµενης αναζήτησης. Όσον αφορά την αναζήτηση µε λέξεις κλειδιά, θα προσφέρονται κάποιες προχωρηµένες επιλογές, όπως αναζήτηση ολόκληρων φράσεων, αναζήτηση µε AND, OR και ΝΟΤ, αναζήτηση στον τίτλο των εγγράφων κ.α. Με τη σηµασιολογική αναζήτηση, θα δίνεται η δυνατότητα περιήγησης στην ιεραρχία της οντολογίας, επιλογής µίας ή περισσοτέρων κλάσεων-εννοιών και περαιτέρω επιλογής, από τις επιλεγµένες κλάσεις (και τις υποκλάσεις τους), των στιγµιοτύπων των εγγράφων που επιθυµεί ο χρήστης. Επίσης, µε την επιλογή ενός εγγράφου από τη λίστα των αποτελεσµάτων µίας αναζήτησης, θα διατίθενται επιπλέον δυνατότητες: Ο χρήστης θα µπορεί να αναζητήσει έγγραφα τα οποία ανήκουν στις ίδιες κλάσεις της οντολογίας µε το επιλεγµένο έγγραφο αλλά και να αναζητήσει έγγραφα που συνδέονται µε ορισµένες ιδιότητες µε το επιλεγµένο έγγραφο. Η παρουσίαση των αποτελεσµάτων θα γίνεται µε τέτοιο τρόπο ώστε ο χρήστης να αντλεί πληροφορίες σχετικές µε το σκορ του κάθε εγγράφου, το είδος της αναζήτησης από την οποία προήλθε, αλλά και πληροφορίες σηµασιολογικού περιεχοµένου. Το συνολικό σκορ κάθε εγγράφου προέρχεται από έναν συνδυασµό του σκορ που προκύπτει από την αναζήτηση µε λέξεις κλειδιά και του σκορ που προκύπτει από το ποσοστό του κειµένου που έχει χαρακτηριστεί σηµασιολογικά. Επίσης, για κάθε έγγραφο επισηµαίνεται αν είναι ολόκληρο χαρακτηρισµένο µε συγκεκριµένη κλάση, αν είναι κοµµάτια του χαρακτηρισµένα και αν περιέχει συγκεκριµένη λέξη κλειδί, δηλαδή ουσιαστικά καθορίζεται το είδος αναζήτησης από το οποίο προήλθε το συγκεκριµένο αποτέλεσµα. Μάλιστα, σε περίπτωση εγγράφων που προέκυψαν από αναζήτηση στην οντολογία, θα εµφανίζονται και οι κλάσεις που περιέχουν στιγµιότυπα του εγγράφου, για τη συγκεκριµένη αναζήτηση. Τέλος, ο χρήστης θα µπορεί να ανοίξει κάποιο έγγραφο (αρκεί αυτό να ανήκει στους υποστηριζόµενους τύπους) και να δει αναλυτικά στο κείµενό του τις σηµασιολογικές επισηµειώσεις που έχουν πραγµατοποιηθεί στο έγγραφο, µε βάση κάποια οντολογία. Για την ανάπτυξη του υποσυστήµατος θα χρησιµοποιηθούν συναρτήσεις του lucene και του protégé. ΕΙΣΟ ΟΣ: 1. Επιλέγεται οντολογία πάνω στην οποία θα γίνει αναζήτηση. 2. ίνεται η λέξη κλειδί για αναζήτηση. 3. Εκτελείται ερώτηση πάνω στην οντολογία για σηµασιολογική αναζήτηση. 4. Επιλέγεται ο τρόπος αναζήτησης. 5. Εκτελείται σύνθετη αναζήτηση, είτε στα αποτελέσµατα προηγούµενης αναζήτησης, είτε µε σύνθετα ερωτήµατα στην οντολογία. 6. Επιλέγεται προς εµφάνιση έγγραφο από τα αποτελέσµατα. 44

45 ΕΠΕΞΕΡΓΑΣΙΑ: 1. ιατρέχεται το ευρετήριο και/ή η οντολογία, µε εκτέλεση ερωτηµάτων µε βάση τα δεδοµένα που έχει εισάγει ο χρήστης, και συγκεντρώνονται τα αποτελέσµατα. ΕΞΟ ΟΣ: 1. Εµφανίζονται τα αποτελέσµατα µε πληροφορίες, όπως όνοµα, µονοπάτι στο δίσκο, σκορ. 2. Εµφανίζεται το κείµενο ενός επιλεγµένου από τα αποτελέσµατα εγγράφου, τονίζοντας τα σηµασιολογικά επισηµειωµένα κοµµάτια Περιορισµοί Οι περιορισµοί αφορούν κυρίως τη σχεδίαση της εφαρµογής. Συγκεκριµένα, για τη λογισµική πλατφόρµα θα πρέπει να ισχύουν τα παρακάτω: 1. Λειτουργικό σύστηµα Windows. 2. Εγκατεστηµένο j2sdk Εγκατεστηµένο j2re Περιγραφή αρχιτεκτονικού σχεδίου Εισαγωγή Σε αυτήν την ενότητα περιγράφεται η αρχιτεκτονική του συστήµατος. Αρχικά, γίνεται µία σύντοµη αναφορά στην πλατφόρµα υλοποίησης και τη γλώσσα προγραµµατισµού και στη συνέχεια παρουσιάζονται µε τη βοήθεια UML διαγραµµάτων και οθονών οι περιπτώσεις χρήσης, το interface που προσφέρει στο χρήστη και η πλατφορµική και δοµική όψη του συστήµατος Αρχιτεκτονικές αποφάσεις Πλατφόρµα Ως λογισµική πλατφόρµα ανάπτυξης του GoNToggle χρησιµοποιήθηκε το Netbeans 5.0. Η πλατφόρµα αυτή επιλέχθηκε κυρίως λόγω του ότι προσφέρει αρκετές λειτουργίες που διευκολύνουν και ολοκληρώνουν την προγραµµατιστική, όπως για παράδειγµα αυτοµατοποιηµένη δηµιουργία GUI µε σχεδίαση του (αντί για συγγραφή κώδικα). Περισσότερες λεπτοµέρειες θα δοθούν στο κεφάλαιο 4. 45

46 Γλώσσα προγραµµατισµού Ως γλώσσα προγραµµατισµού χρησιµοποιήθηκε η java, µία από τις πιο διαδεδοµένες αντικειµενοστραφείς γλώσσες. Βασικό ρόλο σε αυτήν την επιλογή έπαιξε το γεγονός ότι οι βιβλιοθήκες συναρτήσεων των εφαρµογών Lucene και Protégé, που χρησιµοποιήθηκαν για την ανάπτυξη της εφαρµογής, έχουν υλοποιηθεί σε java Αρχιτεκτονικές όψεις Περιπτώσεις χρήσης (Περιβαλλοντική/Υπηρεσιακή όψη) Όπως προαναφέρθηκε, η εφαρµογή διαιρείται σε τρία βασικά υποσυστήµατα: ηµιουργίας ευρετηρίου, σηµασιολογικού χαρακτηρισµού κειµένων και επεξεργασίας οντολογιών και αναζήτησης. Με αυτό το διαχωρισµό δίνονται και τα διαγράµµατα περιπτώσεων χρήσης (use case) της εφαρµογής: Υποσύστηµα δηµιουργίας ευρετηρίου * Επιλογή δηµιουργίας νέου ευρετηρίου Επιλογή υπάρχοντος ευρετηρίου * * * * Επιλογή φακέλου προς δεικτοδότηση Χρήστης * ηµιουργία ευρετηρίου Σχήµα 3.1: Περιπτώσεις χρήσης για το υποσύστηµα δηµιουργίας ευρετηρίου 46

47 Υποσύστηµα σηµασιολογικού χαρακτηρισµού κειµένων Φόρτωµα οντολογίας * Επεξεργασία οντολογίας * * Επεξεργασία στιγµιοτύπων οντολογίας * * Αποθήκευση αλλαγών στην οντολογία * * * * * Χρήστης * Επιλογή και φόρτωµα κειµένου εγγράφου * Επισηµείωση του εγγράφου * Επισηµείωση µέρους του κειµένου * Επεξεργασία των σηµασιολογικών επισηµειώσεων του εγγράφου Σχήµα 3.2: Περιπτώσεις χρήσης για το υποσύστηµα σηµασιολογικού χαρακτηρισµού κειµένων και επεξεργασίας οντολογιών 47

48 Υποσύστηµα αναζήτησης Αναζήτηση µε λέξεις-κλειδιά * Σηµασιολογική αναζήτηση * Συνδυαστική αναζήτηση * * Αναζήτηση στα αποτελέσµατα * * * * Αναζήτηση σηµασιολογικά όµοιων εγγράφων Χρήστης * Επισκόπηση τρέχοντων αποτελεσµάτων * Άνοιγµα επιλεγµένου εγγράφου Σχήµα 3.3: Περιπτώσεις χρήσης για το υποσύστηµα αναζήτησης Πλατφορµική όψη Η υλισµική πλατφόρµα της εφαρµογή αποτελείται από έναν µόνο υπολογιστή όπως φαίνεται στο παρακάτω σχήµα: PC GoNToggle Σχήµα 3.4: Πλατφορµική όψη 48

49 Χρηστική όψη (Οθόνες της εφαρµογής) Στο παρακάτω διάγραµµα παρουσιάζεται το σύνολο των οθονών που εµφανίζονται στο χρήστη κατά το χειρισµό της εφαρµογής: Αρχική οθόνη (αναζήτησης) Οθόνη δηµιουργίας ευρετηρίου Επιλογή οντολογίας Οθόνη σηµασιολογικού χαρακτηρισµού Επιλογή φακέλου ευρετηρίου Αναζήτηση στην οντολογία Επιλογή εγγράφου Επιλογή φακέλου προς δεικτοδότηση Προβολή σηµασιολογικά παρόµοιων εγγράφων Επιλογή οντολογίας Προβολή εγγράφου Επεξεργασία οντολογίας Προβολή επιλεγµένου στοιχείου οντολογίας Επεξεργασία στιγµιοτύπου οντολογίας Προβολή στιγµιοτύπου οντολογίας Επιλογή κλάσης οντολογίας για σηµασιολογική επισηµείωση Σχήµα 3.5: Σύνολο οθονών του GoNToggle Ακολουθούν εκτυπώσεις για κάθε µία από τις παραπάνω οθόνες: 49

50 Σχήµα 3.6: Αρχική οθόνη GoNToggle-οθόνη αναζήτησης Σχήµα 3.7: Οθόνη επιλογής αρχείου οντολογίας προς φόρτωση 50

51 Σχήµα 3.8: Οθόνη αναζήτησης στην οντολογία- αναζήτησης όµοιων σηµασιολογικά εγγράφων Σχήµα 3.9: Οθόνη προβολής εγγράφου 51

52 Σχήµα 3.10: Οθόνη δηµιουργίας ευρετηρίου Σχήµα 3.11: Οθόνη επιλογής φακέλου ευρετηρίου-επιλογής φακέλου προς δεικτοδότηση 52

53 Σχήµα 3.12: Οθόνη σηµασιολογικού χαρακτηρισµού αρχείων και επεξεργασίας οντολογιών Οι οθόνες επιλογής εγγράφου και επιλογής αρχείου οντολογίας παραλείπονται γιατί είµαι όµοιες µε αυτές των σχηµάτων 3.11 και 3.7 αντίστοιχα. Σχήµα 3.13: Οθόνη επεξεργασίας οντολογίας 53

54 Σχήµα 3.14: Οθόνη προβολής επιλεγµένου στοιχείου οντολογίας Σχήµα 3.15: Οθόνη επεξεργασίας στιγµιότυπου οντολογίας 54

55 Σχήµα 3.16: Οθόνη προβολής στιγµιότυπου οντολογίας Σχήµα 3.17: Οθόνη επιλογής κλάσης οντολογίας για σηµασιολογική επισηµείωση οµική όψη Η δοµική όψη του συστήµατος φαίνεται στο διάγραµµα Όλες οι κλάσεις της εφαρµογής περιέχονται στο συνθέτηµα GoNToggle. Παρόλα αυτά, οι κλάσεις αυτές χρησιµοποιούν συναρτήσεις που βρίσκονται στα πακέτα lucene-core, protégé και protégé-owl. 55

56 GoNToggle Application Specific GoNToggle Lucene-core Protege Protégé-owl Σχήµα 3.18: Οθόνη οµική όψη GoNToggle 3.3 Περιγραφή λεπτοµερούς σχεδίου Εισαγωγή Στην παρακάτω ενότητα δίνεται η περιγραφή της λεπτοµερούς σχεδίασης µέσω της αποσυνθετικής, δεδοµενικής και συνεργατικής όψης της εφαρµογής Αποσυνθετική Στο σχήµα 3.19 δίνεται η αποσύνθεση του συνθετήµατος GoNToggle: GoNToggle NewJFrame IndexJDialog OpenTextJFrame OpenPropJFrame AnnotateJDialog Σχήµα 3.19: Αποσύνθεση του συνθετήµατος GoNToggle 56

57 3.3.3 εδοµενική Ακολουθούν οι κλάσεις που συνθέτουν την εφαρµογή. Αναλυτική περιγραφή των µεθόδων κάθε κλάσης αλλά και των σηµαντικότερων µεταβλητών γίνεται στο κεφάλαιο 4. NewJFrame -public static Project proj = null; -public static KnowledgeBase kbase = null; -public Vector hitsdata = new Vector(); -public Vector hitsowldata = new Vector(); -public Vector finaldata = new Vector(); -public Vector currentdata = new Vector(); -public Vector extradata = new Vector(); -public Vector nextdata = new Vector(); -public static ArrayList acls = new ArrayList(); -public static ArrayList ocls = new ArrayList(); -public static int annotateflag = 0; -public static File annotatefile = null; -public static File openfile = null; -public static String opentext = ""; -public static String openname = ""; -public static Object svalue [] = null; -public static ArrayList oblist = new ArrayList(); -public static ArrayList oelist = new ArrayList(); -public static ArrayList oclist = new ArrayList(); -public static ArrayList onlist = new ArrayList(); -public static String begoff = ""; -public static String endoff = ""; -public static int flag = 0; -public static int ontflag = 0; -public static int keyflag = 0; -public static String index = ""; +public NewJFrame()() +private void IndexItemActionPerformed() +private void annotateactionperformed() +private void loadontactionperformed() +private void searchactionperformed() +private void searchradiobuttonactionperformed() +private void searchkeyword() +private void navigateontactionperformed() +private void navigateontology(collection aclasses)() +private void searchresactionperformed() +private void searchresradiobuttonactionperformed() +private void relatedclassactionperformed() +private void relativeallclassesactionperformed () +private void annotateselectedactionperformed() +private void openfileactionperformed() +public static Collection pickrdfresources 3(Collection allowedclasses)() +private static OWLModel getowlmodel(collection allowedclses)() +private static void handleclose(project project)() +protected String getbody(element rawdoc)() +protected String gettext(node node)() +private static COSDocument parsedocument(inputstream is)() +private void advancedtipsactionperformed() +private void AboutItemActionPerformed() +private void ExitItemActionPerformed() Σχήµα 3.20: Κλάση NewJFrame 57

58 ComplexCellRenderer -protected DefaultListCellRenderer defaultrenderer = new DefaultListCellRenderer(); +public Component getlistcellrenderercomponent(jlist list, Object value,int index, boolean isselected, boolean cellhasfocus)() Σχήµα 3.21: Κλάση ComplexCellRenderer DiamondIcon -private Color color0; -private Color color1; -private Color color2; -private boolean selected; -private int width; -private int height; -private int halfwidth; -private int halfheight; -private Polygon poly; -private Polygon poly1; -private Polygon poly2; -private static final int DEFAULT_WIDTH = 30; -private static final int DEFAULT_HEIGHT = 10; +public DiamondIcon(Color color0, Color color1, Color color2)() +public DiamondIcon(Color color0, Color color1, Color color2, boolean selected)() +public DiamondIcon(Color color0, Color color1, Color color2, boolean selected, int width, int height)() +private void initpolygon ()() +public int geticonheight()() +public int geticonwidth ()() +public void painticon (Component c, Graphics g, int x, int y)() Σχήµα 3.22: Κλάση DiamondIcon IndexJDialog -public static File indexindex = null; -public static File indexdata = null; +public IndexJDialog (JFrame parent, boolean modal)() +private void IndexFileSearchPerformed() +private void DataFileSearchPerformed() +private void IndexActionPerformed() +private void ExitItemActionPerformed() Σχήµα 3.23: Κλάση IndexJDialog OpenTextJFrame -public Vector opendata = new Vector(); -public static String word; -public static Highlighter highlighter = new UnderlineHighlighter(null); -protected Highlighter.HighlightPainter painter; +public OpenTextJFrame()() +private void openpropertyactionperformed() Σχήµα 3.24: Κλάση OpenTextJFrame 58

59 OpenTextJFrame_1 -public Vector opendata = new Vector(); -public static String word; -public static Highlighter highlighter = new UnderlineHighlighter(null); -protected Highlighter.HighlightPainter painter; +public OpenTextJFrame()() +private void openpropertyactionperformed() +private void refreshinstanceslist1() +private void showinstanceslist 1() +private void showparttexts1() +private void openfile(file opfile)() +protected String getbody(element rawdoc)() +protected String gettext(node node)() +private static COSDocument parsedocument(inputstream is)() Σχήµα 3.25: Κλάση OpenTextJFrame_1 UnderlineHighlighter -protected static final Highlighter.HighlightPainter sharedpainter = new UnderlineHighlightPainter(null); -protected Highlighter.HighlightPainter painter; +public UnderlineHighlighter(Color c)() +public Object addhighlight (int p0, int p1)() +public void setdrawslayeredhighlights(boolean newvalue)() Σχήµα 3.26: Κλάση UnderlineHighlighter UnderlineHighlightPainter -protected Color color; +public UnderlineHighlightPainter (Color c)() +public void paint (Graphics g, int offs0, int offs1, Shape bounds, JTextComponent c)() +public Shape paintlayer(graphics g, int offs0, int offs1, Shape bounds, JTextComponent c, View view)() Σχήµα 3.27: Κλάση UnderlineHighlightPainter 59

60 AnnotateJDialog -public static File sfile = null; -public static File searchfile = null; -public static File ontofile = null; -public static Project project = null; -public static KnowledgeBase kb = null; -public Vector superdata = new Vector(); -public String bodytext = ""; -public String name = ""; -public static int aflag = 10; -public static Highlighter highlighter = new UnderlineHighlighter1(null); -protected Highlighter.HighlightPainter painter; +public AnnotateJDialog()() +private void loadontologyperformed() +private void changeontologyperformed() +private void changeinstancesperformed() +private void saveontologyperformed() +private void editdelinstanceactionperformed() +private void refreshinstanceslist() +private void showinstanceslist () +private void showparttexts() +private void searchfileperformed() +private void searchmarkfileactionperformed() +private void annotatefileactionperformed() +private void annotatepartactionperformed() +private void annotateaction() +private void extractfiletext() +protected String getbody(element rawdoc)() +protected String gettext(node node)() +private static COSDocument parsedocument(inputstream is)() Σχήµα 3.28: Κλάση AnnotateJDialog Συνεργατική Παρακάτω δίνονται ενδεικτικά 4 ακολουθιακά διαγράµµατα που συνοψίζουν τις περισσότερες λειτουργίες που µπορεί να επιτελέσει ο χρήστης µέσω της εφαρµογής. Στους κόµβους κάθε διαγράµµατος, εκτός από τις κλάσεις του GoNToggle, που περιγράφησαν παραπάνω, υπάρχουν 3 επιπλέον κόµβοι: lucene-core, protégé και protégé-owl που αντιπροσωπεύουν τα 3 πακέτα συναρτήσεις των οποίων χρησιµοποιήθηκαν από τις κλάσεις του GoNToggle. 60

61 NewJFrame IndexJDialog lucene -core Tools -> Index IndexItemActionPerformed () IndexFileSearchPerformed () DataFileSearchPerformed () Top Package ::User IndexActionPerformed () index () Σχήµα 3.29: ηµιουργία ευρετηρίου NewJFrame AnnotateJDialog protege protege -owl Tools -> Annotate annotateactionperformed () loadontologyperformed () loadprojectfromfile() Top Package ::User changeontologyperformed () changeinstancesperformed () editdelinstanceactionperformed () saveontologyperformed () Σχήµα 3.30: Επεξεργασία οντολογίας 61

62 NewJFrame AnnotateJDialog protege protege -owl Tools -> Annotate annotateactionperformed () loadontologyperformed () loadprojectfromfile() Top Package ::User searchfileperformed () extractfiletext() annotatefileactionperformed () annotatepartactionperformed () annotateaction () createowlindividual () saveontologyperformed () Σχήµα 3.31: Σηµασιολογικός χαρακτηρισµός κειµένου 62

63 NewJFrame protege OpenTextJFrame OpenTextJFrame File -> Load Ontology loadontologyperformed () loadprojectfromfile () navigateontactionperformed () Top Package ::User searchactionperformed () searchresactionperformed () relatedclassactionperformed () relativeallclassesactionperformed () propertyrelatedactionperformed () openfileactionperformed () Σχήµα 3.32: Αναζήτηση και εµφάνιση αποτελεσµάτων 63

64 . 64

65 4 Υλοποίηση Σε αυτό το κεφάλαιο γίνεται αναλυτική περιγραφή της εφαρµογής GoNToggle. Αρχικά, γίνεται µία αναφορά στην πλατφόρµα, τα προγραµµατιστικά εργαλεία και τις βιβλιοθήκες (Lucene, Protégé) που χρησιµοποιήθηκαν. Στη συνέχεια περιγράφονται αναλυτικά οι κλάσεις της εφαρµογής. 4.1 Πλατφόρµες και προγραµµατιστικά εργαλεία Στην ενότητα αυτή περιγράφονται τα χαρακτηριστικά της συγκεκριµένης υλοποίησης, όπως η πλατφόρµα ανάπτυξης και εκτέλεσης, τα προγραµµατιστικά εργαλεία που χρησιµοποιήθηκαν καθώς και οι απαιτήσεις της εφαρµογής Εργαλεία ανάπτυξης Η εφαρµογή GoNToggle αναπτύχθηκε εξ ολοκλήρου σε γλώσσα java 2. Η κύρια πλατφόρµα ανάπτυξης, η οποία στηρίχθηκε στα j2sdk1.4.2_07 και j2re-1_4_2_07 είναι το NetBeans IDE 5.0. Επιπλέον, ειδικά για την ανάπτυξη (µεταβολή, προσαρµογή, δηµιουργία νέων) συναρτήσεων της βιβλιοθήκης lucene χρησιµοποιήθηκαν δευτερεύοντα εργαλεία όπως τα apache-ant-1.6.5, javacc-4.0 και junit

66 4.1.2 Πλατφόρµα ανάπτυξης Στην πλατφόρµα NetBeans IDE 5.0 αναπτύχθηκαν όλες οι κλάσεις της εφαρµογής που περιγράφηκαν στο προηγούµενο κεφάλαιο. Η πλατφόρµα αυτή προτιµήθηκε γιατί αποτελεί ένα εύχρηστο και ολοκληρωµένο περιβάλλον ανάπτυξης εφαρµογών. ιαθέτει στον χρήστη αρκετές επιλογές όσον αφορά την εκτέλεση βασικών λειτουργιών όπως searching, refactoring, building, running κ.α. Επίσης, διαθέτει λειτουργία γραφικού σχεδιασµού φορµών, πράγµα που απαλλάσσει το χρήστη από τη συγγραφή κώδικα για δηµιουργία GUI Εγκατάσταση και εκτέλεση της εφαρµογής Το GoNToggle σχεδιάστηκε για λειτουργία σε περιβάλλον Windows. Για να µπορεί να τρέξει σε έναν υπολογιστή, θα πρέπει να είναι σε αυτόν εγκατεστηµένα τα j2sdk1.4.2_07 και j2re _07. Από εκεί και πέρα, αρκεί ο χρήστης να αντιγράψει τον φάκελο που περιέχει τα αρχεία της εφαρµογής στο δίσκο του υπολογιστή, και να τρέξει την εντολή: java -jar "(Πλήρες µονοπάτι στο δίσκο του jar αρχείου της εφαρµογής)". 4.2 Βιβλιοθήκες Όπως προαναφέρθηκε, για την ανάπτυξη του προγράµµατος χρησιµοποιήθηκαν, είτε ως είχαν, είτε µετά από επεξεργασία, συναρτήσεις από τη βιβλιοθήκη του lucene και το API των protégé και protégé-owl. Παρακάτω, παρουσιάζονται οι σηµαντικότερες από αυτές και εξηγείται η σηµασία τους στην εφαρµογή Βιβλιοθήκη Lucene Γενικά Το lucene είναι µία ολοκληρωµένη βιβλιοθήκη συναρτήσεων για αναζήτηση κειµένων, υλοποιηµένη σε Java. Παρέχει συναρτήσεις για διάσχιση του σκληρού δίσκου, εξαγωγή κειµένου από διάφορους τύπους εγγράφων, ανάλυση του κειµένου και αποθήκευση της εξαγόµενης πληροφορίας σε ευρετήρια και αναζήτηση λέξεων κλειδιών σε αυτά. Η βιβλιοθήκη του lucene χρησιµοποιήθηκε για το κοµµάτι της εφαρµογής µας που αφορά την κλασσική αναζήτηση, δηλαδή τη δηµιουργία ευρετηρίου και την αναζήτηση λέξεων κλειδιών σε αυτό. Ακολουθεί µία σύντοµη περιγραφή των πακέτων από τα οποία αποτελείται, καθώς και σύντοµη παράθεση των αλλαγών που πραγµατοποιήθηκαν στην αρχική µορφή της βιβλιοθήκης, ώστε να ικανοποιεί τις απαιτήσεις του προγράµµατος. 66

67 Πακέτα του lucene Η βιβλιοθήκη του lucene αποτελείται από οκτώ πακέτα: analysis: Περιέχει συναρτήσεις για την ανάλυση κειµένου (απαλοιφή κεφαλαίων, στίξης, κοινών λέξεων κ.α.) και τη µετατροπή του σε κατάλληλες δοµές (λεκτήµατα) που αποθηκεύονται στο ευρετήριο. document: Υλοποιεί τη δοµή (document) µε βάση την οποία αποθηκεύονται τα δεδοµένα στο ευρετήριο. Η συγκεκριµένη δοµή, εκτός από πληροφορίες για λέξεις κλειδιά, περιέχει και πληροφορίες όπως το όνοµα, το µονοπάτι και η ηµεροµηνία τροποποίησης του εκάστοτε αρχείου, αλλά και το σκορ του, δηλαδή πόσες φορές περιέχει κάποια συγκεκριµένη λέξη κλειδί. index: Περιέχει συναρτήσεις για τη δηµιουργία της δοµής του ευρετηρίου καθώς και για την επεξεργασία (εισαγωγή, µεταβολή διαγραφή) των δεδοµένων του. queryparser: Περιέχει συναρτήσεις για τη ανάλυση των λέξεων-κλειδιών που εισάγει ο χρήστης. search: Περιέχει συναρτήσεις για τη µετατροπή των λέξεων κλειδιών που εισάγει ο χρήστης σε κατάλληλα queries και την αναζήτηση αυτών των λέξεων, µέσω των αντίστοιχων queries, στο ευρετήριο. store: Περιέχει συναρτήσεις που υλοποιούν την αποθήκευση των δεδοµένων στο ευρετήριο και την επιλογή του µέσου αποθήκευσης (αποθήκευση στο δίσκο ή στη µνήµη). util: Περιέχει συναρτήσεις που «διευκολύνουν» τη λειτουργία των συναρτήσεων των υπολοίπων πακέτων. handlingtypes: Περιέχει συναρτήσεις για την εξαγωγή κειµένου από διάφορους τύπους αρχείων Αλλαγές που πραγµατοποιήθηκαν Το µόνο πακέτο του lucene οι κλάσεις του οποίου τροποποιήθηκαν είναι το handlingtypes. Σε αυτό, περιέχεται µία οµάδα από κλάσεις (DocumentHandler, FileHandler, ExtensionFileHandler), που εξετάζουν τον τύπο του κάθε αρχείου (σύµφωνα µε την κατάληξη του) και καλούν τον αντίστοιχο εξαγωγέα κειµένου (JTidyHTMLHandler, POIWordDocHandler, PDFBoxPDFHandler, PlainTextHandler), που επίσης περιέχεται στο πακέτο, για να εξάγουν το κείµενό του. Επιπλέον, υπάρχει και η βασική κλάση µε την οποία πραγµατοποιείται η δεικτοδότηση (FileIndexer). 67

68 Ενδεικτικά, παρατίθεται η µέθοδος index(indexwriter writer, File file) της κλάσης FileIndexer, η οποία εκτελεί αναδροµική διάσχιση των φακέλων και, για κάθε έγγραφο που βρίσκει, καλεί τον αντίστοιχο εξαγωγέα κειµένου και αποθηκεύει στο ευρετήριο όλες τις πληροφορίες που εξάγει από το έγγραφο: public void index(indexwriter writer, File file) throws FileHandlerException //Αναδροµική διάσχιση φακέλων και αρχείων if (file.canread()) if (file.isdirectory()) String[] files = file.list(); if (files!= null) for (int i = 0; i < files.length; i++) index(writer, new File(file, files[i])); //Αν είναι αρχείο και όχι φάκελος εκτέλεσε τη δεικτοδότηση else System.out.println("Indexing " + file); try // ηµιουργείται το αντικείµενο Document στο οποίο θα αποθηκευτεί όλη //πληροφορία που θα αντληθεί από το έγγραφο. Με την //filehandler.getdocument(file) εξετάζεται ο τύπος του αρχείου και //καλείται ο αντίστοιχος εξαγωγέας που εξάγει το κείµενο του εγγράφου Document doc = filehandler.getdocument(file); if (doc!= null) //Εάν η παραπάνω διαδικασία είναι πετυχηµένη και το αντικείµενο δεν //είναι κενό, αποθηκεύονται και τα υπόλοιπα δεδοµένα όπως τίτλος, //µονοπάτι στο δίσκο, ηµεροµηνία τροποποίησης doc.add(new Field("path", file.getpath(), Field.Store.YES, Field.Index.UN_TOKENIZED)); doc.add(new Field("title", file.getname(), Field.Store.YES, Field.Index.TOKENIZED)); doc.add(new Field("modified", 68

69 DateTools.timeToString(file.lastModified(), DateTools.Resolution.MINUTE), Field.Store.YES, Field.Index.UN_TOKENIZED)); writer.adddocument(doc); else System.err.println("Cannot handle " + file.getabsolutepath() + "; skipping"); catch (IOException e) System.err.println("Cannot index " + file.getabsolutepath() + "; skipping (" + e.getmessage() + ")"); Protégé Γενικά Το protégé, σε αντίθεση µε το lucene, είναι µία ολοκληρωµένη εφαρµογή διαχείρισης οντολογίων, που απλά προσφέρει API (protégé και protégé-owl) για χρησιµοποίηση από άλλα προγράµµατα. Με τη χρήση συναρτήσεων του protégé καθίσταται δυνατή η δηµιουργία µίας OWL οντολογίας, η επεξεργασία των στοιχείων (κλάσεων, στιγµιοτύπων, ιδιοτήτων) της οντολογίας και η εκτέλεση ερωτηµάτων πάνω στην οντολογία. Αρκετές από αυτές τις λειτουργίες συνοδεύονται από ολοκληρωµένες διαπροσωπείες (GUI), τις οποίες ο χρήστης µπορεί να χρησιµοποιήσει χωρίς αλλαγές. Βέβαια, η βιβλιοθήκη συναρτήσεων του protégé είναι αρκετά µεγαλύτερη και πιο πολύπλοκη από αυτή του lucene. Επιπλέον, οι συναρτήσεις της χρησιµοποιήθηκαν ως είχαν (εκτός από µία περίπτωση που αναλύεται στην ενότητα Λεπτοµέρειες υλοποίησης) χωρίς να χρειαστεί τροποποιηθούν. Για αυτούς τους λόγους, δεν θα είχε νόηµα η παράθεση του συνόλου των πακέτων της, παρά µόνο ορισµένων βασικών κλάσεων, συναρτήσεις των οποίων χρησιµοποιήθηκαν στο GoNToggle. 69

70 Κλάση Project Στο σύστηµα του protégé, σε κάθε OWL (.owl) αρχείο αντιστοιχεί και ένα protégé project (.pprj) αρχείο µέσα από το οποίο το protégé διαχειρίζεται την οντολογία. Η κλάση Project περιέχει όλες εκείνες τις κλάσεις που είναι απαραίτητες για τη διαχείριση των παραπάνω αρχείων. Ενδεικτικά, παραθέτονται ορισµένες µέθοδοι της κλάσης, που χρησιµοποιήθηκαν στο GoNToggle: public static Project loadprojectfromfile(string filename, Collection errors) : Φορτώνει µία οντολογία από το αντίστοιχο αρχείο project public void save(collection errors) : Αποθηκεύει τις αλλαγές που πραγµατοποιήθηκαν στην οντολογία. public JFrame show(instance instance) : Εµφανίζει ένα αντικείµενο (εν προκειµένω ένα στιγµιότυπο) της οντολογίας Κλάση OWLUI Η κλάση αυτή περιέχει µία συλλογή από συναρτήσεις για τη δηµιουργία του γραφικού περιβάλλοντος διασύνδεσης του protégé (ειδικότερα του protégé-owl). Μέσω αυτών, ο χρήστης µπορεί να ανοίξει παράθυρα µε την ιεραρχία της οντολογίας, να επιλέξει αντικείµενα ή στιγµιότυπα της κ.α. Ακολουθούν ορισµένες από τις µεθόδους της. public static RDFResource pickrdfresource(collection allowedclasses) : Εµφανίζει, για κάθε κλάση της οντολογίας, τα στιγµιότυπα της και επιτρέπει την επιλογή ενός από αυτά. public static OWLNamedClass pickowlnamedclass(owlmodel owlmodel, Collection classes, String label): Ανοίγει έναν διάλογο επιλογής µίας κλάσης της οντολογίας Κλάση OWLModel Η κλάση αυτή περιέχει πληθώρα συναρτήσεων που αφορούν το µοντέλο της οντολογίας, δηλαδή το πώς υλοποιείται η οντολογία. Οι συναρτήσεις που περιέχει υλοποιούν όλα τα στοιχεία της οντολογίας (κλάσεις, ιδιότητες, περιορισµούς, στιγµιότυπα κ.α.) 4.3 Λεπτοµέρειες υλοποίησης Ακολουθούν οι κλάσεις του GoNToggle. Για κάθε κλάση περιγράφονται οι σηµαντικότερες µεταβλητές της και το σύνολο των συναρτήσεών της. Για τις βασικότερες από τις συναρτήσεις δίνεται ολόκληρος ο κώδικας µε αναλυτικά σχόλια. 70

71 4.3.1 Κλάση IndexJDialog Είναι η κλάση που αφορά τη δηµιουργία ευρετηρίου. Είναι τύπου JDialog, οπότε, µε την κλήση της, εµφανίζεται στο χρήστη µία φόρµα (διάλογος) για δηµιουργία ευρετηρίου. ιαθέτει τις εξής δύο µεταβλητές: public static File indexindex : Όπου αποθηκεύεται το όνοµα του φακέλου που θα περιέχει το προς δηµιουργία ευρετήριο. public static File indexdata : Όπου αποθηκεύεται το όνοµα του φακέλου που περιέχει τα προς δεικτοδότηση αρχεία. Οι συναρτήσεις της IndexJDialog δίνονται παρακάτω: private void IndexFileSearchPerformed(java.awt.event.ActionEvent evt) Εµφανίζει διάλογο για επιλογή του φακέλου που θα περιέχει το ευρετήριο private void DataFileSearchPerformed(java.awt.event.ActionEvent evt) Εµφανίζει διάλογο για επιλογή του φακέλου που περιέχει τα δεικτοδοτούµενα αρχεία private void ExitItemActionPerformed(java.awt.event.ActionEvent evt) Συνάρτηση εξόδου από το διάλογο δηµιουργίας ευρετηρίου private void IndexActionPerformed(java.awt.event.ActionEvent evt) Η συνάρτηση αυτή εκτελεί τη δεικτοδότηση, δηλαδή δηµιουργεί το ευρετήριο σε συγκεκριµένο φάκελο, διατρέχει τα αρχεία επιλεγµένου φακέλου και γεµίζει το ευρετήριο µε πληροφορίες για αυτά τα έγγραφα. Ακολουθούν κοµµάτια του κώδικα της συνάρτησης µε περιγραφή για τη λειτουργία καθενός: Με τις παρακάτω δύο εντολές φορτώνεται το αρχείο handler.properties που καθορίζει ποιος εξαγωγέας κειµένου αντιστοιχεί σε κάθε τύπο εγγράφου. Properties props = new Properties(); props.load(new FileInputStream("C:\\eggrafa\\Diploma_Baseis\\Lucene1.9\\testclass\\h andler.properties")); Ανάλογα µε την επιλογή του χρήστη, δηµιουργείται ένας νέος φάκελος ευρετηρίου ή ανοίγεται ένας ήδη υπάρχων. Directory dir = null; 71

72 if (createradiobutton.isselected()) dir = FSDirectory.getDirectory( indexfiletextfield.gettext(), true); else if (selectradiobutton.isselected()) dir = FSDirectory.getDirectory( indexfiletextfield.gettext(), false); Αποθηκεύεται το τελευταίο ευρετήριο που υπέστη τροποποίηση, ώστε, αργότερα, η αναζήτηση να εκτελεστεί στο ίδιο ευρετήριο. FileWriter text = new FileWriter( "C:\\eggrafa\\Diploma_Baseis\\Lucene1.9\\testclass\\memory.txt"); text.write(memory); text.close(); Ενηµερώνεται η κλάση NewJFrame για το τελευταίο ευρετήριο που τροποποιήθηκε. NewJFrame.index = indexfiletextfield.gettext(); Επιλέγεται ο αναλυτής που θα επεξεργαστεί το κείµενο κάθε εγγράφου Analyzer analyzer = new StandardAnalyzer(); ηµιουργείται το αντικείµενο writer που θα γεµίσει ή θα συµπληρώσει, ανάλογα µε την επιλογή του χρήστη, το ευρετήριο Ο writer δέχεται ως ορίσµατα τον φάκελο του ευρετηρίου, τον αναλυτή και µία µεταβλητή που καθορίζει την παραπάνω επιλογή IndexWriter writer = null; if (createradiobutton.isselected()) writer = new IndexWriter(dir, analyzer, true); else if (selectradiobutton.isselected()) writer = new IndexWriter(dir, analyzer, false); ηµιουργείται το αντικείµενο indexer που θα εκτελέσει τη δεικτοδότηση FileIndexer indexer = new FileIndexer(props); long start = new Date().getTime(); 72

73 Εκτελείται η δεικτοδότηση µε τη συνάρτηση index και µε ορίσµατα το αντικείµενο writer και τον φάκελο των δεικτοδοτούµενων αρχείων indexer.index(writer, new File( datafiletextfield.gettext())); Βελτιστοποίηση και κλείσιµο του ευρετηρίου writer.optimize(); writer.close(); Κλάση AnnotateJDialog Είναι η κλάση που αφορά το σηµασιολογικό χαρακτηρισµό κειµένων και την επεξεργασία οντολογιών. Είναι τύπου JFrame, οπότε, µε την κλήση της, εµφανίζεται στο χρήστη µία φόρµα (πλαίσιο) που επιτρέπει την εκτέλεση των παραπάνω λειτουργιών. Οι σηµαντικότερες µεταβλητές της είναι: public static File searchfile: Όπου αποθηκεύεται το αρχείο που πρόκειται να χαρακτηριστεί σηµασιολογικά. public static File ontofile: Όπου αποθηκεύεται το αρχείο της οντολογίας που φορτώνεται. public static Project project: Όπου αποθηκεύεται το project της οντολογίας που φορτώνεται. public static KnowledgeBase kb: Όπου αποθηκεύεται όλη η βάση γνώσης της οντολογίας που φορτώνεται. public Vector superdata: Όπου αποθηκεύεται µία λίστα µε τα στιγµιότυπα της οντολογίας που αντιστοιχούν στο ανοιγµένο έγγραφο. public String bodytext: Όπου αποθηκεύεται το εξαγόµενο από το έγγραφο κείµενο. public String name: Όπου αποθηκεύεται το όνοµα του εγγράφου που πρόκειται να χαρακτηριστεί σηµασιολογικά. Οι συναρτήσεις της AnnotateJDialog δίνονται παρακάτω: private void loadontologyperformed(java.awt.event.actionevent evt) Με τη συνάρτηση αυτή φορτώνεται η οντολογία. Ακολουθεί περιγραφή του κώδικα: Εµφάνιση διαλόγου για επιλογή αρχείου µε project οντολογίας JFileChooser filechooser = ComponentFactory.createFileChooser( 73

74 "Project Files", ".pprj"); if (filechooser.showopendialog(null) == JFileChooser.APPROVE_OPTION) File projectfile = filechooser.getselectedfile(); Φορτώνεται στη µεταβλητή project η οντολογία από το επιλεγµένο αρχείο. Σε περίπτωση σφάλµατος, εµφανίζεται αντίστοιχο µήνυµα. project = Project.loadProjectFromFile( projectfile.getabsolutepath(), errors); if (!errors.isempty()) projectfile); OWLUI.showErrorMessageDialog("Could not load " + return; Αποθηκεύεται η βάση γνώσης της οντολογίας στη µεταβλητή kb και γίνεται έλεγχος της ορθότητας του project της οντολογίας. kb = project.getknowledgebase(); if (!(kb instanceof OWLModel)) project."); OWLUI.showErrorMessageDialog("This is not an OWL return; private void changeontologyperformed(java.awt.event.actionevent evt) Η συνάρτηση αυτή δίνει στο χρήστη τη δυνατότητα να επεξεργαστεί τη δοµή της οντολογίας, δηλαδή να προσθαφαιρέσει ή να τροποποιήσει κλάσεις και ιδιότητες. Ακολουθεί περιγραφή του κώδικα: Φορτώνεται ένα νέο πλαίσιο, το οποίο απεικονίζει την ιεραρχία της οντολογίας και επιτρέπει την επιλογή και επεξεργασία στοιχείων της AssertedClassesPanel listpanel = new AssertedClassesPanel( project, hierarchymanager); 74

75 JFrame frame = new JFrame("Ontology"); Container cont = frame.getcontentpane(); cont.setlayout(new BorderLayout()); cont.add(borderlayout.center, listpanel); frame.setbounds(100, 100, 300, 300); frame.setvisible(true); private void changeinstancesperformed(java.awt.event.actionevent evt) Η συνάρτηση αυτή δίνει στο χρήστη τη δυνατότητα να επιλέξει, να προβάλει και να επεξεργαστεί ένα στιγµιότυπο µίας κλάσης της οντολογίας. Ακολουθεί περιγραφή του κώδικα: Εξάγεται το µοντέλο της οντολογίας από τη βάση γνώσης της. OWLModel owlmodel = (OWLModel) kb; Με την κλήση της pickrdfresource εµφανίζεται ένα πλαίσιο µε την ιεραρχία της οντολογίας, αλλά και τα στιγµιότυπα της εκάστοτε επιλεγµένης κλάσης. Από αυτά τα στιγµιότυπα ο χρήστης µπορεί να επιλέξει ένα για επεξεργασία. RDFResource resource = OWLUI.pickRDFResource( Collections.singleton(owlModel.getOWLThingClass())); Εµφανίζεται ένα πλαίσιο µε το επιλεγµένο στιγµιότυπο και τις ιδιότητες του, το οποίο µπορεί να επεξεργαστεί ο χρήστης. if (resource!= null) final Project project1 = resource.getproject(); JFrame frame = project1.show(resource); frame.addwindowlistener(new WindowAdapter() public void windowclosed(windowevent e) ); private void saveontologyperformed(java.awt.event.actionevent evt) Με αυτή τη συνάρτηση γίνεται η αποθήκευση των αλλαγών στην οντολογία. Ουσιατικά, αποτελείται µόνο από την κλήση της συνάρτησης save: 75

76 project.save(errors); if (!errors.isempty()) project."); OWLUI.showErrorMessageDialog("Could not save private void searchfileperformed (java.awt.event.actionevent evt) Με αυτή τη συνάρτηση ανοίγεται ένας διάλογος για επιλογή εγγράφου προς σηµασιολογική επισηµείωση private void extractfiletext () Βοηθητική συνάρτηση που καλείται από την searchfileperformed () για εξαγωγή και προβολή του κειµένου του επιλεγµένου εγγράφου protected String getbody(element rawdoc) Βοηθητική συνάρτηση που καλείται από την extractfiletext() για εξαγωγή κειµένου από html αρχεία protected String gettext(node node) Βοηθητική συνάρτηση που καλείται από την getbody() για εξαγωγή κειµένου από html αρχεία private static COSDocument parsedocument(inputstream is) Βοηθητική συνάρτηση που καλείται από την extractfiletext() για εξαγωγή κειµένου από pdf αρχεία private void searchmarkfileactionperformed(java.awt.event.actionevent evt) Αυτή η συνάρτηση, αρχικά καλεί την searchfileperformed(), ώστε να εµφανιστεί ένας διάλογος επιλογής αρχείου, να εξαχθεί το κείµενο του αρχείου και να προβληθεί στο χρήστη, Επιπλέον, όµως, καλεί και τις συναρτήσεις refreshinstanceslist(), showinstanceslist(), και showparttexts(), οι οποίες περιγράφονται παρακάτω, ώστε να µαρκαριστούν στο προβαλόµενο κείµενο του εγγράφου τα χαρακτηρισµένα µε βάση την οντολογία κοµµάτια, και να εµφανιστούν τα αντίστοιχα στιγµιότυπα σε µία λίστα του πλαισίου. 76

77 private void refreshinstanceslist() Με αυτή τη συνάρτηση αναζητούνται στην οντολογία όλα τα στιγµιότυπα που αντιστοιχούν σε σηµασιολογικές επισηµειώσεις του συγκεκριµένου εγγράφου και δηµιουργείται µία λίστα µε βάση την οποία χρωµατίζεται διαφορετικά κάθε κοµµάτι του κειµένου του. Η συνάρτηση αυτή καλείται στο τέλος οποιασδήποτε άλλης συνάρτησης πραγµατοποιεί κάποια αλλαγή στα στιγµιότυπα, ώστε να ανανεωθεί η λίστα. Ακολουθεί περιγραφή του κώδικα. ιατρέχονται όλα τα στιγµιότυπα της οντολογίας superdata.removeallelements(); Collection instances = omodel.getowlindividuals(); for (Iterator jt = instances.iterator(); jt.hasnext();) OWLIndividual ind = (OWLIndividual) jt.next(); Για κάθε στιγµιότυπο εξάγεται η πληροφορία που µεταφέρει και ελέγχεται, µέσω του filepath, αν αντιστοιχεί στο επιλεγµένο έγγραφο: if (ind!= null) OWLDatatypeProperty prop = ind.getowlmodel().getowldatatypeproperty("rdfs:comment"); ename = ((String) ind.getbrowsertext()); tname = ((String) ind.getpropertyvalue(prop)); sname = tname.substring(tname.indexof("\n") + 1, tname.indexof("\n\n")); // nclass = tname.substring(tname.indexof("\n\n") + 2, tname.indexof("\n\n\n")); tname = tname.substring(0, tname.indexof("\n")); pname = tname.substring(tname.indexof("c")); Collection aclasses = ind.getrdftypes(); ArrayList lclass = new ArrayList(); lclass.addall(aclasses); Κάθε στιγµιότυπο που ικανοποιεί την παραπάνω συνθήκη προστίθεται σε µία λίστα, η οποία, για κάθε στιγµιότυπο, περιέχει το όνοµα και µονοπάτι του αντίστοιχου εγγράφου, τα offset 77

78 του κειµένου που έχουν χαρακτηριστεί και τις κλάσεις της οντολογίας µε βάση τις οποίες έχουν χαρακτηριστεί: if (pname.equals((string) searchfile.getabsolutepath())) begsum = 0; endsum = 0; if ((tname.indexof("-") < tname.indexof("c"))&&(tname.indexof("-") >= 0)) begoff = tname.substring(0, tname.indexof("-")); endoff = tname.substring(tname.indexof("- ") + 1, tname.indexof("c") - 1); tname = tname.substring(tname.indexof("c")); char[] begar = begoff.tochararray(); for (int k = 0; k < begar.length; k++) begsum += (((int) begar[k]) - 48)*(Math.pow(10.0, (double)(begar.length - k - 1))); char[] endar = endoff.tochararray(); for (int l = 0; l < endar.length; l++) endsum += (((int) endar[l]) - 48)*(Math.pow(10.0, (double)(endar.length - l - 1))); else begsum = 0; endsum = 0; 78

79 Object elements[] = sname, tname, new Integer(begSum), new Integer(endSum), lclass, null, ename, null, null; superdata.add(elements); Κατόπιν, στη λίστα που δηµιουργήθηκε παραπάνω, σε κάθε στιγµιότυπο, ανάλογα µε τις κλάσεις µε τις οποίες είναι χαρακτηρισµένο, προστίθεται ένα συγκεκριµένο χρώµα, το οποίο διαχωρίζει τα στιγµιότυπα µεταξύ τους: ArrayList nlist = new ArrayList(); ArrayList n2 = new ArrayList(); for (int m = 0; m < superdata.size(); m++) Object value[] = (Object []) superdata.get(m); if (!nlist.contains((arraylist) value[4])) nlist.add((arraylist) value[4]); tc = nlist.size(); for (int m = 0; m < superdata.size(); m++) Object value[] = (Object []) superdata.get(m); for (int n = 0; n < nlist.size(); n++) value[4])) if (((ArrayList) nlist.get(n)).equals((arraylist) value[5] = new Integer((int) ((50 + (200*n)/(nlist.size())))); value[7] = new Integer((int) ((50 + (200*n)/(nlist.size())))); value[8] = new Integer((int) ((50 + (200*n)/(nlist.size())))); 79

80 // value[5] = new Integer((int) ((1 - Math.random())*(50 + (200*n)/(nlist.size())))); // value[7] = new Integer((int) ((1 - Math.random())*(50 + (200*n)/(nlist.size())))); // value[8] = new Integer((int) ((1 - Math.random())*(50 + (200*n)/(nlist.size())))); // value[5] = new Integer(50 + (200*n)/(nlist.size())); superdata.set(m, value); // System.out.println("\n" + n + " GEIA " + ((Integer) value[5]).intvalue()); break; private void showinstanceslist() Με αυτή τη συνάρτηση επιλέγεται προβάλλεται σε περιοχή του πλαισίου η λίστα στιγµιοτύπων που δηµιουργήθηκε παραπάνω, µε διαφορετικό χρώµα για κάθε στιγµιότυπο, ανάλογα µε τις κλάσεις του. Η συνάρτηση αυτή καλείται στο τέλος οποιασδήποτε άλλης συνάρτησης πραγµατοποιεί κάποια αλλαγή στα στιγµιότυπα, ώστε να ανανεωθεί η λίστα private void showparttexts() Με αυτή τη συνάρτηση µαρκάρονται κοµµάτια του ανοιγµένου εγγράφου, µε διαφορετικό χρώµα, ανάλογα µε το στιγµιότυπο της λίστας στο οποίο αντιστοιχούν. Η συνάρτηση αυτή καλείται στο τέλος οποιασδήποτε άλλης συνάρτησης πραγµατοποιεί κάποια αλλαγή στα στιγµιότυπα, ώστε να ανανεωθούν τα µαρκαρισµένα κοµµάτια του κειµένου private void annotatefileactionperformed(java.awt.event.actionevent evt) Με αυτή τη συνάρτηση ενηµερώνεται µία σηµαία της κλάσης, υποδηλώνοντας ότι πρόκειται να γίνει σηµασιολογικός χαρακτηρισµός ολόκληρου του εγγράφου, και στη συνέχεια καλείται η συνάρτηση σηµασιολογικού χαρακτηρισµού annotateaction() private void annotatepartactionperformed(java.awt.event.actionevent evt) Με αυτή τη συνάρτηση ενηµερώνεται µία σηµαία της κλάσης, υποδηλώνοντας ότι πρόκειται να γίνει σηµασιολογικός χαρακτηρισµός µέρους του κειµένου του εγγράφου, και στη συνέχεια καλείται η συνάρτηση σηµασιολογικού χαρακτηρισµού annotateaction(). 80

81 private void annotateaction() Με αυτή τη συνάρτηση πραγµατοποιείται ο σηµασιολογικός χαρακτηρισµός ενός εγγράφου. Ακολουθεί περιγραφή του κώδικα: Φορτώνεται το µοντέλο της οντολογίας OWLModel owlmodel = (OWLModel) kb; Επιλέγεται από την οντολογία η κλάση, ως στιγµιότυπο της οποίας θα χαρακτηριστεί σηµασιολογικά το επιλεγµένο έγγραφο. Με την κλήση της pickowlnamedclass εµφανίζεται ένας διάλογος ο οποίος περιέχει την ιεραρχία της οντολογίας και επιτρέπει την επιλογή αυτής της κλάσης. OWLNamedClass pickclass = owlmodel.getowlnamedclass("owl:thing"); OWLNamedClass newtype = OWLUI.pickOWLNamedClass(owlModel, from Ontology"); Collections.singleton(pickClass), "Select Class ίνεται στο στιγµιότυπο ένα µοναδικό όνοµα το οποίο ικανοποιεί τους περιορισµούς της οντολογίας και παραπέµπει στο όνοµα του εγγράφου. Αρχικά, ως κοµµάτι του ονόµατος του στιγµιότυπου δίνεται το µονοπάτι στο δίσκου του εγγράφου, µε κάποιες αλλαγές (π.χ. απαλοιφή των \) ώστε να ικανοποιούνται οι περιορισµοί. if (newtype!= null) path = searchfile.getabsolutepath(); path = path.replacefirst("c:", "C"); ptext = annotatetextarea.getselectedtext(); st = annotatetextarea.getselectionstart(); en = annotatetextarea.getselectionend(); while (path.indexof("\\") > 0) path = path.substring(0, path.indexof("\\")) + " " + path.substring(path.indexof("\\") + 1, path.length()); name = path; Αν πρόκειται για σηµασιολογικό χαρακτηρισµό κοµµατιού και όχι όλου του κειµένου, στο προστίθενται στο όνοµα του στιγµιότυπου τα όρια του κοµµατιού µπροστά από το µονοπάτι. 81

82 if (aflag == 1) name = "_" + st + "-" + en + "-" + name; Τέλος, στην αρχή του ονόµατος του στιγµιότυπου προστίθεται το όνοµα του εγγράφου. Έτσι, η δοµή του ονόµατος κάθε στιγµιότυπου είναι τελικά: (όνοµα εγγράφου) (όρια σηµασιολογικά χαρακτηρισµένου κοµµατιού αν υπάρχει)_(µονοπάτι εγγράφου). name = searchfile.getname() + " " + name; if (name!= null) Εισάγεται το στιγµιότυπο στην οντολογία OWLIndividual individual = newtype.createowlindividual(name); Αν το επιθυµεί ο χρήστης, χαρακτηρίζει το στιγµιότυπο και µε άλλες κλάσεις της οντολογίας. while (JOptionPane.showConfirmDialog(null, "Annotate with another concept?", "", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) OWLNamedClass newtype1 = OWLUI.pickOWLNamedClass(owlModel, Collections.singleton(pickClass), "Select Class from Ontology"); individual.addrdftype((rdfsclass) newtype1); ηµιουργείται ένα String που περιέχει πληροφορία σχετικά µε το χαρακτηρισµένο έγγραφο (µονοπάτι στο δίσκο, όνοµα, κλάση µε την οποία χαρακτηρίστηκε) tsize = annotatetextarea.gettext().length(); String tname = searchfile.getabsolutepath() + "\n"; tname = tname + tname.substring(tname.lastindexof("\\") + 1, tname.indexof("\n")) + "\n\n"; tname = tname + newtype.getname() + "\n\n\n"; tname = tname + tsize + "\n\n\n\n"; Αν πρόκειται για σηµασιολογικό χαρακτηρισµό κοµµατιού και όχι όλου του κειµένου, αποθηκεύονται στο String και τα όρια του κοµµατιού και οι πρώτοι 50 χαρακτήρες του 82

83 if (aflag == 1) tname = st + "-" + en + "-" + tname; ptext.length())); tname = tname + ptext.substring(0, Math.min(50, Το παραπάνω String αποθηκεύεται ως περιεχόµενο της ιδιότητας rdfs:comment του στιγµιότυπου. Έτσι, το κάθε στιγµιότυπο µεταφέρει την παραπάνω πληροφορία η οποία είναι ιδιαίτερα χρήσιµη κατά την αναζήτηση, όπως θα φανεί παρακάτω. OWLDatatypeProperty prop1 = individual.getowlmodel().getowldatatypeproperty("rdfs:comment"); individual.setpropertyvalue(prop1, tname); private void editdelinstanceactionperformed(java.awt.event.actionevent evt) Με αυτή τη συνάρτηση, ανάλογα µε την εργασία που επιλέγει να επιτελέσει ο χρήστης πάνω σε ένα στιγµιότυπο, πραγµατοποιείται εισαγωγή στα στοιχεία του, προσθαφαίρεση κλάσεων µε τις οποίες είναι χαρακτηρισµένο και διαγραφή ολόκληρου του στιγµιότυπου. Ακολουθεί περιγραφή του κώδικα: Πραγµατοποιείται η εισαγωγή στα στοιχεία ενός στιγµιότυπου. Ουσιαστικά επιτελείται η ίδια διαδικασία µε τη συνάρτηση changeinstancesperformed(). Object source = evt.getsource(); if (source == deleditpopupmenu.getcomponent(0)) Object value[] = (Object []) instanceslist.getselectedvalue(); String nc = ((OWLNamedClass) ((ArrayList) value[4]).get(0)).getbrowsertext(); String en = (String) value[6]; OWLModel owlmodel = (OWLModel) kb; RDFResource resource = owlmodel.getrdfresourcebybrowsertext(en); if (resource!= null) 83

84 final Project project1 = resource.getproject(); JFrame frame = project1.show(resource); frame.addwindowlistener(new WindowAdapter() public void windowclosed(windowevent e) ); Πραγµατοποιείται η προσθήκη µίας κλάσης στο σύνολο των κλάσεων που το χαρακτηρίζουν. Αρχικά, εµφανίζεται στον χρήστη ένα πλαίσιο µε την ιεραρχία της οντολογίας, για να επιλέξει την επιθυµητή κλάση. Στη συνέχεια εντοπίζεται το στιγµιότυπο στην οντολογία και προστίθεται σε αυτό η επιλεγµένη κλάση. Η διαδικασία επαναλαµβάνεται όσες φορές επιθυµεί ο χρήστης. else if (source == deleditpopupmenu.getcomponent(1)) do Object value[] = (Object []) instanceslist.getselectedvalue(); String en = (String) value[6]; OWLModel owlmodel = (OWLModel) kb; OWLNamedClass pickclass = owlmodel.getowlnamedclass("owl:thing"); OWLNamedClass newtype = OWLUI.pickOWLNamedClass(owlModel, Collections.singleton(pickClass), "Select Class from Ontology"); if (newtype!= null) RDFResource resource = owlmodel.getrdfresourcebybrowsertext(en); resource.addrdftype(newtype); 84

85 while (JOptionPane.showConfirmDialog(null, "Add another Concept?", "", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION); Πραγµατοποιείται παρόµοια διαδικασία µε την παραπάνω, µόνο που εδώ αφαιρούνται κλάσεις από το στιγµιότυπο. else if (source == deleditpopupmenu.getcomponent(2)) ArrayList nc = new ArrayList(); do Object value[] = (Object []) instanceslist.getselectedvalue(); nc.clear(); nc.addall((arraylist) value[4]); if (nc.size() > 1) String en = (String) value[6]; OWLModel owlmodel = (OWLModel) kb; OWLNamedClass pickclass = OWLUI.pickOWLNamedClass(owlModel, (Collection) nc, "Select Class from Ontology"); if (pickclass!= null) RDFResource resource = owlmodel.getrdfresourcebybrowsertext(en); resource.removerdftype(pickclass); while ((nc.size() > 1)&&(JOptionPane.showConfirmDialog(null, "Delete another Concept?", "", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)); 85

86 Εντοπίζεται και διαγράφεται από την οντολογία το επιλεγµένο στιγµιότυπο. else if (source == deleditpopupmenu.getcomponent(3)) Object value[] = (Object []) instanceslist.getselectedvalue(); String en = (String) value[6]; OWLModel owlmodel = (OWLModel) kb; RDFResource resource = owlmodel.getrdfresourcebybrowsertext(en); owlmodel.deleteinstance((instance) resource); Κλάση NewJFrame Είναι η βασική κλάση του προγράµµατος. Είναι τύπου JFrame, οπότε, µε την κλήση της, δηλαδή µε την έναρξη του προγράµµατος, εµφανίζεται στο χρήστη µία φόρµα (πλαίσιο) που επιτρέπει την εκτέλεση αναζήτησης. Επιπλέον, µέσα από αυτή τη φόρµα, ο χρήστης µπορεί να καλέσει τις IndexJDialog και AnnotateJDialog. Οι σηµαντικότερες µεταβλητές της είναι: public static Project proj: Όπου αποθηκεύεται το project της οντολογίας που φορτώνεται. public static KnowledgeBase kbase: Όπου αποθηκεύεται όλη η βάση γνώσης της οντολογίας που φορτώνεται. public Vector hitsdata: Όπου αποθηκεύονται τα τρέχοντα αποτελέσµατα της αναζήτησης µε λέξεις κλειδιά. public Vector hitsowldata: Όπου αποθηκεύονται τα τρέχοντα αποτελέσµατα της αναζήτησης στην οντολογία. public Vector finaldata: Όπου αποθηκεύονται τα τρέχοντα αποτελέσµατα της συνδυαστικής αναζήτησης (µε λέξεις κλειδιά και σε οντολογία). public Vector currentdata: Όπου αποθηκεύονται τα τρέχοντα αποτελέσµατα της τελευταίας αναζήτησης (οποιουδήποτε είδους) που πραγµατοποιήθηκε. public Vector extradata: Βοηθητική µεταβλητή που χρησιµοποιείται στην αναζήτηση πάνω σε αποτελέσµατα προηγούµενης αναζήτησης. 86

87 public Vector nextdata: Βοηθητική µεταβλητή που χρησιµοποιείται στην αναζήτηση πάνω σε αποτελέσµατα προηγούµενης αναζήτησης. public static ArrayList acls: Βοηθητική µεταβλητή που χρησιµοποιείται για να κρατηθούν οι τιµές των κλάσεων πάνω στις οποίες έχει πραγµατοποιηθεί αναζήτηση. public static ArrayList ocls: Βοηθητική µεταβλητή που χρησιµοποιείται για να κρατηθούν οι τιµές των κλάσεων πάνω στις οποίες έχει πραγµατοποιηθεί αναζήτηση. public static File openfile: Όπου αποθηκεύεται το έγγραφο που επιλέχθηκε να ανοιχθεί. public static String opentext: Όπου αποθηκεύεται το κείµενο του εγγράφου που πρόκειται να ανοιχθεί. public static String openname: Όπου αποθηκεύεται το όνοµα του εγγράφου που επιλέχθηκε να ανοιχθεί. public static ArrayList oblist: Όπου αποθηκεύονται τα offset αρχής των σηµασιολογικά χαρακτηρισµένων κοµµατιών του εγγράφου που πρόκειται να ανοιχθεί. public static ArrayList oelist: Όπου αποθηκεύονται τα offset τέλους των σηµασιολογικά χαρακτηρισµένων κοµµατιών του εγγράφου που πρόκειται να ανοιχθεί. public static ArrayList oclist: Όπου αποθηκεύονται οι κλάσεις της οντολογίας µε τις οποίες έχουν χαρακτηριστεί σηµασιολογικά τα κοµµάτια του εγγράφου που πρόκειται να ανοιχθεί. public static ArrayList onlist: Όπου αποθηκεύονται οι κλάσεις της οντολογίας µε τις οποίες έχουν χαρακτηριστεί σηµασιολογικά τα κοµµάτια του εγγράφου που πρόκειται να ανοιχθεί. public static String index: Όπου αποθηκεύονται το όνοµα του φακέλου του ευρετηρίου στο οποίο εκτελείται αναζήτηση. Οι συναρτήσεις της AnnotateJDialog δίνονται παρακάτω: private void loadontactionperformed(java.awt.event.actionevent evt) Με τη συνάρτηση αυτή φορτώνεται η οντολογία. Η συνάρτηση αυτή είναι όµοια µε την αντίστοιχη της κλάσης AnnotateJDialog private void searchactionperformed(java.awt.event.actionevent evt) Είναι η βασική συνάρτηση αναζήτησης, η οποία εκτελείται όταν ο χρήστης πατήσει το κουµπί search του πλαισίου. Ανάλογα µε την επιλογή (αναζήτηση µε λέξεις κλειδιά, αναζήτηση στην οντολογία ή συνδυαστική αναζήτηση) καλεί διαφορετικές συναρτήσεις και εµφανίζει τα ανάλογα αποτελέσµατα στο πεδίο των αποτελεσµάτων. Ακολουθεί περιγραφή του κώδικα: 87

88 Εάν έχει επιλεγεί µόνο αναζήτηση µε λέξεις κλειδιά, καλείται η αντίστοιχη συνάρτηση αναζήτησης (searchkeyword()). if (searchradiobutton1.isselected()) try keyflag = 0; searchkeyword(); catch (Exception ex) ex.printstacktrace(); Στη συνέχεια, τα αποτελέσµατα της αναζήτησης, που βρίσκονται στην hitsdata, αντιγράφονται στην currentdata, η οποία περιέχει κάθε φορά τα αποτελέσµατα της τελευταίας αναζήτησης και σηµειώνεται επίσης το σκορ µε συντελεστή 20%, που αντιστοιχεί στην αναζήτηση µε λέξεις κλειδιά: finally currentdata.removeallelements(); currentdata.removeallelements(); for (int i = 0; i < hitsdata.size(); i++) hitsdata.get(i); Object ovalue[] = (Object []) String tname = (String) ovalue[1]; String sname = (String) ovalue[0]; String c0 = (String) ovalue[5]; String c1 = (String) ovalue[6]; String c2 = (String) ovalue[7]; Float fscore = (Float) ovalue[11]; Object elements[] = sname, tname, null, null, null, c0, c1, c2, new Integer(i + 1), null, null, new Float((fscore.floatValue())*20), new Float((fscore.floatValue())*20); currentdata.add(elements); 88

89 Τέλος, τα αποτελέσµατα προβάλλονται µέσω της λίστας jlist2. jlist2.setlistdata(currentdata); ListCellRenderer renderer = new ComplexCellRenderer(); jlist2.setcellrenderer(renderer); Εάν έχει επιλεγεί µόνο αναζήτηση στην οντολογία, αρχικά ελέγχεται αν έχει φορτωθεί κάποια οντολογία και στη συνέχεια καλείται η αντίστοιχη συνάρτηση αναζήτησης (navigateontology). Η τιµή 0 για τη σηµαία keyflag υποδηλώνει ότι πρόκειται για νέα αναζήτηση και όχι αναζήτηση στα αποτελέσµατα προηγούµενης αναζήτησης. else if (searchradiobutton2.isselected()) try keyflag = 0; if (ontflag == 0) if (kbase!= null) OWLModel owlmodel = (OWLModel) kbase; navigateontology(collections.singleton( owlmodel.getowlthingclass())); catch (Exception ex) ex.printstacktrace(); Εντελώς όµοια µε την πρώτη περίπτωση, τα αποτελέσµατα αντιγράφονται στην currentdata: finally if (innererror == 0) currentdata.removeallelements(); 89

90 for (int i = 0; i < hitsowldata.size(); i++) Object ovalue[] = (Object []) hitsowldata.get(i); String tname = (String) ovalue[1]; String sname = (String) ovalue[0]; String ptext = (String) ovalue[4]; String c0 = (String) ovalue[5]; String c1 = (String) ovalue[6]; String c2 = (String) ovalue[7]; Float fsize = (Float) ovalue[10]; ArrayList blist = new ArrayList(); ArrayList elist = new ArrayList(); ArrayList clist = new ArrayList(); blist.addall((arraylist) ovalue[2]); elist.addall((arraylist) ovalue[3]); clist.addall((arraylist) ovalue[9]); Object elements[] = sname, tname, elist, ptext, c0, c1, c2, null, clist, fsize, null, null; blist, currentdata.add(elements); Κατόπιν, σηµειώνεται το σκορ κάθε αποτελέσµατος µε συντελεστή 80%, που αντιστοιχεί στη σηµασιολογική αναζήτηση: for (int m = 0; m < currentdata.size(); m++) float csize = 0; Object value[] = (Object []) currentdata.get(m); Float fsize = (Float) value[10]; if (((String)value[5]).equals("red")) if (((String) value[6]).equals("blue")) 90

91 value[12] = new Float((fsize.floatValue())*80); else value[12] = new Float((fsize.floatValue())*80); else value[12] = new Float((fsize.floatValue())*80); value[8] = new Integer(m + 1); currentdata.set(m, value); Τέλος, η λίστα ταξινοµείται και τα προβάλλεται µέσω της jlist2: for (int m = 0; m < currentdata.size() - 1; m++) for (int n = m; n < currentdata.size(); n++) Object value1[] = (Object []) currentdata.get(m); Object value2[] = (Object []) currentdata.get(n); if (((Float) value1[12]).floatvalue() < ((Float) value2[12]).floatvalue()) currentdata.set(m, value2); currentdata.set(n, value1); for (int m = 0; m < currentdata.size(); m++) 91

92 Object value[] = (Object []) currentdata.get(m); value[8] = new Integer(m + 1); currentdata.set(m, value); jlist2.setlistdata(currentdata); ListCellRenderer renderer = new ComplexCellRenderer(); jlist2.setcellrenderer(renderer); Εάν έχει επιλεγεί συνδυαστική αναζήτηση, καλούνται και οι δύο συναρτήσεις αναζήτησης: else if (searchradiobutton3.isselected()) int innererror = 0; try keyflag = 0; if (ontflag == 0) if (kbase!= null) OWLModel owlmodel = (OWLModel) kbase; navigateontology(collections.singleton( owlmodel.getowlthingclass())); else OWLUI.showErrorMessageDialog("Please Ontology: File -> Load Ontology", "No Ontology Found"); load innererror = 1; searchkeyword(); 92

93 catch (Exception ex) ex.printstacktrace(); finally Εάν έχει επιλεγεί συνδυαστική αναζήτηση, στην οποία αναζητούνται έγγραφα που ικανοποιούν και τα δύο ήδη αναζήτησης (AND), τότε, διατρέχονται οι δύο λίστες (hitsdata για αναζήτηση µε λέξεις κλειδιά και hitsowldata για αναζήτηση στην οντολογία) και αποθηκεύονται στην finaldata µόνο εκείνα τα έγγραφα που ανήκουν και στις δύο παραπάνω λίστες. Επιπλέον, για αυτά τα έγγραφα, εµπλουτίζονται τα πεδία τους, ώστε να υποδηλώνουν ότι είναι αποτελέσµατα και των δύο ειδών αναζήτησης: if (((String) andorcombobox.getselecteditem()).equals("and")) finaldata.removeallelements(); String data = "a"; String odata = "b"; int count = 0; for (int i = 0; i < hitsdata.size(); i++) Object value[] = (Object []) hitsdata.get(i); data = (String) value[1]; for (int j = 0; j < hitsowldata.size(); j++) Object ovalue[] = (Object []) hitsowldata.get(j); odata = (String) ovalue[1]; if (data.equals(odata)) String tname = (String) ovalue[1]; String sname = (String) ovalue[0]; String ptext = (String) ovalue[4]; String c0 = (String) ovalue[5]; String c1 = (String) ovalue[6]; String c2 = (String) value[7]; 93

94 Float fsize = (Float) ovalue[10]; Float fscore = (Float) value[11]; ArrayList blist = new ArrayList(); ArrayList elist = new ArrayList(); ArrayList clist = new ArrayList(); blist.addall((arraylist) ovalue[2]); elist.addall((arraylist) ovalue[3]); clist.addall((arraylist) ovalue[9]); Object elements[] = sname, tname, blist, elist, ptext, c0, c1, c2, null, clist, fsize, fscore, null; finaldata.add(elements); Εάν έχει επιλεγεί συνδυαστική αναζήτηση, στην οποία αναζητούνται έγγραφα που ικανοποιούν ένα τουλάχιστον από τα δύο ήδη αναζήτησης (OR), τότε, διατρέχονται οι δύο λίστες (hitsdata και hitsowldata) και αποθηκεύονται στην finaldata όλα τα έγγραφα που ανήκουν είτε στη µία, είτε στην άλλη λίστα(από µία φορά το καθένα): else if (((String) andorcombobox.getselecteditem()).equals("or")) finaldata.removeallelements(); String data = "a"; String odata = "b"; int count = 0; int fl = 0; Στην κορυφή της finaldata τοποθετούνται όλα τα έγγραφα που προέρχονται από αναζήτηση στην οντολογία, είτε συµπτίπτουν µε έγγραφα από αναζήτηση µε λέξεις κλειδιά, είτε όχι. for (int i = 0; i < hitsowldata.size(); i++) fl = 0; Object ovalue[] = (Object []) 94

95 hitsowldata.get(i); odata = (String) ovalue[1]; for (int j = 0; j < hitsdata.size(); j++) Object value[] = (Object []) hitsdata.get(j); data = (String) value[1]; if (data.equals(odata)) fl = 1; String tname = (String) ovalue[1]; String sname = (String) ovalue[0]; String ptext = (String) ovalue[4]; String c0 = (String) ovalue[5]; String c1 = (String) ovalue[6]; String c2 = (String) value[7]; Float fsize = (Float) ovalue[10]; Float fscore = (Float) value[11]; ArrayList blist = new ArrayList(); ArrayList elist = new ArrayList(); ArrayList clist = new ArrayList(); blist.addall((arraylist) ovalue[2]); elist.addall((arraylist) ovalue[3]); clist.addall((arraylist) ovalue[9]); Object elements[] = sname, tname, blist, elist, ptext, c0, c1, c2, null, clist, fsize, fscore, null; finaldata.add(elements); if (fl == 0) String tname = (String) ovalue[1]; String sname = (String) ovalue[0]; String ptext = (String) ovalue[4]; String c0 = (String) ovalue[5]; 95

96 String c1 = (String) ovalue[6]; String c2 = (String) ovalue[7]; Float fsize = (Float) ovalue[10]; ArrayList blist = new ArrayList(); ArrayList elist = new ArrayList(); ArrayList clist = new ArrayList(); blist.addall((arraylist) ovalue[2]); elist.addall((arraylist) ovalue[3]); clist.addall((arraylist) ovalue[9]); Object elements[] = sname, tname, blist, elist, ptext, c0, c1, c2, null, clist, fsize, null, null; finaldata.add(elements); Στη συνέχεια, στην finaldata τοποθετούνται τα υπόλοιπα έγγραφα που προέρχονται από αναζήτηση µε λέξεις κλειδιά, και δεν έχουν ήδη αποθηκευτεί µε την προηγούµενη διαδικασία. for (int i = 0; i < hitsdata.size(); i++) fl = 0; Object value[] = (Object []) hitsdata.get(i); data = (String) value[1]; for (int j = 0; j < hitsowldata.size(); j++) Object ovalue[] = (Object []) hitsowldata.get(j); odata = (String) ovalue[1]; if (data.equals(odata)) fl = 1; if (fl == 0) 96

97 String tname = (String) value[1]; String sname = (String) value[0]; String c0 = (String) value[5]; String c1 = (String) value[6]; String c2 = (String) value[7]; Float fscore = (Float) value[11]; Object elements[] = sname, tname, null, null, null, c0, c1, c2, null, null, null, fscore, null; finaldata.add(elements); Εντελώς όµοια µε τις προηγούµενες 2 περιπτώσεις, τα αποτελέσµατα αντιγράφονται στην currentdata: currentdata.removeallelements(); for (int i = 0; i < finaldata.size(); i++) Object ovalue[] = (Object []) finaldata.get(i); currentdata.add(ovalue); Στη συνέχεια, υπολογίζεται το συνολικό σκορ κάθε αποτελέσµατος, από τα επιµέρους σκορ της κάθε αναζήτησης, και µε αντίστοιχη βαρύτητα (20% για αναζήτηση µε λέξεις κλειδιά και 80% για σηµασιολογική αναζήτηση): for (int m = 0; m < currentdata.size(); m++) float csize = 0; Object value[] = (Object []) currentdata.get(m); Float fsize = (Float) value[10]; Float fscore = (Float) value[11]; if (((String) value[5]).equals("red")) if (((String) value[6]).equals("blue")) 97

98 if (((String) value[7]).equals("green")) value[12] = new Float((fsize.floatValue())*80 + fscore.floatvalue()*20); else value[12] = new Float((fsize.floatValue())*80); else if (((String) value[7]).equals("green")) value[12] = new Float((fsize.floatValue())*80 + fscore.floatvalue()*20); else value[12] = new Float((fsize.floatValue())*80); else if (((String) value[6]).equals("blue")) if (((String) value[7]).equals("green")) value[12] = new Float((fsize.floatValue())*80 + fscore.floatvalue()*20); else value[12] = new Float((fsize.floatValue())*80); else if (((String) value[7]).equals("green")) value[12] = new Float(fscore.floatValue()*20); else value[12] = new Float((float) 0); 98

99 value[8] = new Integer(m + 1); currentdata.set(m, value); Τέλος, ταξινοµείται η λίστα µε τα αποτελέσµατα, µε βάση το σκορ κάθε εγγράφου, και προβάλλεται µέσω της jlist2: for (int m = 0; m < currentdata.size() - 1; m++) for (int n = m; n < currentdata.size(); n++) Object value1[] = (Object []) currentdata.get(m); Object value2[] = (Object []) currentdata.get(n); if (((Float) value1[12]).floatvalue() < ((Float) value2[12]).floatvalue()) currentdata.set(m, value2); currentdata.set(n, value1); for (int m = 0; m < currentdata.size(); m++) Object value[] = (Object []) currentdata.get(m); value[8] = new Integer(m + 1); currentdata.set(m, value); jlist2.setlistdata(currentdata); ListCellRenderer renderer = new ComplexCellRenderer(); 99

100 jlist2.setcellrenderer(renderer); private void searchkeyword() Είναι η συνάρτηση µε την οποία πραγµατοποιείται η αναζήτηση µε λέξεις κλειδιά. Ακολουθεί περιγραφή του κώδικα: Φορτώνεται από το αρχείο memory.txt το όνοµα του τελευταίου τροποποιηµένου ευρετηρίου, και αποθηκεύεται στην µεταβλητή index, ώστε να εκτελεστεί σε αυτό η αναζήτηση. FileReader text = new FileReader( "C:\\eggrafa\\Diploma_Baseis\\Lucene1.9\\testclass\\memory.txt"); String memory = ""; int mem = text.read(); while (mem!= -1) memory += (char)mem; mem = text.read(); text.close(); index = memory; ηµιουργείται το αντικείµενο reader το οποίο θα «διαβάσει» το ευρετήριο και τοποθετείται ως όρισµα στο αντικείµενο searcher, το οποίο θα εκτελέσει την αναζήτηση. IndexReader reader = IndexReader.open(index); if (normsfield!= null) reader = new OneNormsReader(reader, normsfield); Searcher searcher = new IndexSearcher(reader); Επιλέγεται ο αναλυτής µε τον οποίο θα αναλυθεί το query που θα εισάγει προς αναζήτηση ο χρήστης. Analyzer analyzer = new StandardAnalyzer(); ιαχωρίζεται η απλή αναζήτηση, από αναζήτηση σε προηγούµενα αποτελέσµατα µε τη βοήθεια της keyflag. 100

101 String line = ""; if (keyflag == 0) line = keywordfield.gettext(); else if (keyflag == 1) line = keywordfield2.gettext(); Αναλύεται το query που εισάγει προς αναζήτηση ο χρήστης, και στη συνέχεια, µε την κλήση της search, συγκεντρώνονται τα αποτελέσµατα στο αντικείµενο hits. QueryParser parser = new QueryParser(field, analyzer); parser.setoperator(queryparser.default_operator_and); Query query = parser.parse(line, field, analyzer); Hits hits = searcher.search(query); Με τη βοήθεια του αντικειµένου hits, γεµίζουµε τη λίστα αποτελεσµάτων hitsdata. Πρώτα την αδειάζουµε από τυχόν στοιχεία προηγούµενης αναζήτησης και στη συνέχεια, για κάθε έγγραφο που υπάρχει στο αντικείµενο hits, προσθέτουµε στην hitsdata ένα αντικείµενο που περιέχει πληροφορίες όπως, τον τίτλο, το µονοπάτι στο δίσκο, το σκορ του, έναν αύξοντα καθώς και ένα διακριτικό (το String green ) που υποδηλώνει αποτέλεσµα αναζήτησης µε λέξεις κλειδιά. hitsdata.removeallelements(); try for (int i = 0; i < hits.length(); i++) doc = hits.doc(i); float score = hits.score(i); path = doc.get("path"); title1 = path.substring(path.lastindexof("\\") + 1); if (path!= null) title = title1; Object elements[] = title, path, null, null, null, "", "", "green", new Integer(i + 1), null, new Float(score*50); hitsdata.add(elements); 101

102 private void navigateontology(collection aclasses) Είναι η συνάρτηση µε την οποία πραγµατοποιείται η αναζήτηση στην οντολογία. Ακολουθεί περιγραφή του κώδικα: Με την κλήση της pickrdfresource3 εµφανίζεται ένα πλαίσιο µε την ιεραρχία της οντολογίας, αλλά και τα στιγµιότυπα της εκάστοτε επιλεγµένης κλάσης. Είναι σχεδόν όµοια µε την pickrdfresource µε τη διαφορά ότι αρχικά εµφανίζει επιλεγµένα όλα τα στιγµιότυπα της επιλεγµένης κλάσης. Από αυτά τα στιγµιότυπα ο χρήστης µπορεί να επιλέξει οποιαδήποτε επιθυµεί. Τα στιγµιότυπα αποθηκεύονται στη συλλογή instances. if (kbase!= null) OWLModel owlmodel = (OWLModel) kbase; ontflag = 1; Collection resource = pickrdfresources3(aclasses); if (resource!= null) RDFResource res = (RDFResource) CollectionUtilities.getFirstItem(resource); OWLIndividual individual; Collection instances = resource; Στη συνέχεια, για το κάθε στιγµιότυπο, διαβάζεται το πεδίο rdfs:comment και αποθηκεύονται στις µεταβλητές sname, conceptlist, nclass, ptext, begsum, endsum και fsize το όνοµα, το µονοπάτι, η λίστα των κλάσεων σηµασιολογικού χαρακτηρισµού, τυχόν κείµενο και τα offset αν ο χαρακτηρισµός αφορά ένα κοµµάτι µόνο του κειµένου και τέλος το µέγεθος σε χαρακτήρες του εγγράφου που αντιστοιχεί στο στιγµιότυπο. hitsowldata.removeallelements(); int i = 0; String tname = ""; String sname = ""; String ptext = ""; String nclass = ""; ArrayList conceptlist = new ArrayList(); 102

103 String ssize = ""; int fsize = 0; int begsum = 0; int endsum = 0; int flg = 0; for (Iterator jt = instances.iterator(); jt.hasnext();) individual = (OWLIndividual) jt.next(); OWLDatatypeProperty prop = individual.getowlmodel().getowldatatypeproperty("rdfs:comment"); tname = ((String) individual.getpropertyvalue(prop)); ptext = tname.substring(tname.indexof("\n\n\n\n") + 4); ssize = tname.substring(tname.indexof("\n\n\n") + 3, tname.indexof("\n\n\n\n")); nclass = tname.substring(tname.indexof("\n\n") + 2, tname.indexof("\n\n\n")); sname = tname.substring(tname.indexof("\n") + 1, tname.indexof("\n\n")); tname = tname.substring(0, tname.indexof("\n")); Collection acls = individual.getrdftypes(); ArrayList lclass = new ArrayList(); lclass.addall(acls); if (!conceptlist.contains((arraylist) conceptlist.add((arraylist) lclass); lclass)) fsize = 0; 103

104 begsum = 0; endsum = 0; char[] sizar = ssize.tochararray(); for (int k = 0; k < sizar.length; k++) fsize += (((int) sizar[k]) - 48)*(Math.pow(10.0, (double)(sizar.length - k - 1))); System.out.println("SIZE" + fsize); flg = 0; if ((tname.indexof("-") < tname.indexof("c"))&&(tname.indexof("-") >= 0)) flg = 1; begoff = tname.substring(0, tname.indexof("-")); endoff = tname.substring(tname.indexof("- ") + 1, tname.indexof("c") - 1); tname = tname.substring(tname.indexof("c")); char[] begar = begoff.tochararray(); for (int k = 0; k < begar.length; k++) begsum += (((int) begar[k]) - 48)*(Math.pow(10.0, (double)(begar.length - k - 1))); char[] endar = endoff.tochararray(); for (int l = 0; l < endar.length; l++) endsum += (((int) endar[l]) - 48)*(Math.pow(10.0, (double)(endar.length - l - 1))); 104

105 else begsum = 0; endsum = 0; ArrayList blist = new ArrayList(); ArrayList elist = new ArrayList(); ArrayList clist = new ArrayList(); Αφού έχουν εξαχθεί από το στιγµιότυπο οι πληροφορίες που περιγράφηκαν παραπάνω, αποθηκεύονται στη λίστα hitsowldata ως πεδία ενός αντικειµένου που αντιστοιχεί στο στιγµιότυπο. Η αποθήκευση γίνεται µε τέτοιο τρόπο, ώστε κάθε έγγραφο, ακόµα και αν έχει πολλά στιγµιότυπα (π.χ. πολλά διαφορετικά κοµµάτια του κειµένου του σηµασιολογικά χαρακτηρισµένα) να αποθηκεύεται µόνο µία φορά στην hitsowldata και το αντικείµενο της hitsowldata που θα αντιστοιχεί στο έγγραφο αυτό να έχει συγκεντρωτικές πληροφορίες από όλα τα στιγµιότυπα του εγγράφου (π.χ., να περιέχει σε δύο λίστες όλα τα offsets αρχής και τέλους σηµασιολογικά χαρακτηρισµένων κοµµατιών όλων των στιγµιοτύπων του εγγράφου). if (hitsowldata.isempty()) blist.add(new Integer(begSum)); elist.add(new Integer(endSum)); clist.add(lclass); Object elements[] = sname, tname, blist, elist, ptext, "", "", "", null, clist, new Float((float)fsize); hitsowldata.add(elements); else int compf = 0; for (int m = 0; m < hitsowldata.size(); m++) 105

106 Object value[] = (Object []) hitsowldata.get(m); if (tname.equals((string) value[1])) compf = m+10; break; if (compf == 0) blist.add(new Integer(begSum)); elist.add(new Integer(endSum)); clist.add(lclass); Object elements[] = sname, tname, blist, elist, ptext, "", "", "", null, clist, new Float((float)fsize); hitsowldata.add(elements); else if (compf!= 0) Object value[] = (Object []) hitsowldata.get(compf - 10); blist = (ArrayList) value[2]; elist = (ArrayList) value[3]; blist.add(new Integer(begSum)); elist.add(new Integer(endSum)); clist.add(lclass); Object elements[] = sname, tname, blist, elist, ptext, "", "", "", null, clist, new Float((float)fsize); hitsowldata.set(compf - 10, elements); 106

107 Επιπλέον, στο κάθε αντικείµενο της hitsowldata που αντιστοιχεί σε ένα έγγραφο τοποθετούνται και πεδία που υποδηλώνουν αν το έγγραφο έχει χαρακτηριστεί ολόκληρο σηµασιολογικά (String red ) ή αν έχουν χαρακτηριστεί µόνο κοµµάτια του (String blue ) ή και τα δύο. Επίσης, υπολογίζεται το σκορ του κάθε εγγράφου µε βάση το ποσοστό του κειµένου του (σε χαρακτήρες) που έχει χαρακτηριστεί σηµασιολογικά. for (int m = 0; m < hitsowldata.size(); m++) float csize = 0; Object value[] = (Object []) hitsowldata.get(m); ArrayList bt = new ArrayList(); ArrayList et = new ArrayList(); ArrayList ct = new ArrayList(); bt = (ArrayList) value[2]; et = (ArrayList) value[3]; ct = (ArrayList) value[9]; ArrayList tl = new ArrayList(); for (int n = 0; n < ((ArrayList) value[9]).size(); n++) for (int k = 0; k < ((ArrayList) ((ArrayList) value[9]).get(n)).size(); k++) if (!tl.contains((owlnamedclass) ((ArrayList) ((ArrayList) value[9]).get(n)).get(k))) tl.add((owlnamedclass) ((ArrayList) ((ArrayList) value[9]).get(n)).get(k)); int fg = 0; for (int n = 0; n < bt.size(); n++) 107

108 if ((((Integer) bt.get(n)).equals(new Integer(0)))&&(((Integer) et.get(n)).equals(new Integer(0)))) fg = 1; csize += (((Float) value[10]).floatvalue()); else csize += ((float)(((integer) et.get(n)).intvalue() - ((Integer) bt.get(n)).intvalue())); if (fg == 0) value[6] = "blue"; value[10] = new Float((float)((csize / (((Float) value[10]).floatvalue())) / tl.size())); else if (fg == 1) if (bt.size() > 1) value[6] = "blue"; value[5] = "red"; value[10] = new Float((float)((csize / (((Float) value[10]).floatvalue())) / tl.size())); hitsowldata.set(m, value); private void relatedclassactionperformed(java.awt.event.actionevent evt) Με αυτή τη συνάρτηση, ο χρήστης µπορεί να επιλέξει ένα από τα έγγραφα των αποτελεσµάτων (που να έχει προέλθει από σηµασιολογική αναζήτηση) και να εµφανίσει προς επιλογή στιγµιότυπα µόνο εκείνων των κλάσεων της οντολογίας µε τις οποίες έχει 108

109 χαρακτηριστεί το συγκεκριµένο έγγραφο και οι οποίες ανήκουν στη σηµασιολογική αναζήτηση που έχει ήδη εκτελέσει. ηλαδή, ουσιαστικά µε τη συνάρτηση αυτή εκτελείται αναζήτηση στην οντολογία «όµοιων σηµασιολογικά» εγγράφων µε κάποιο συγκεκριµένο έγγραφο. Ακολουθεί περιγραφή του κώδικα. Φορτώνονται στη λίστα n2 τα ονόµατα των κλάσεων µε τις οποίες έχει χαρακτηριστεί σηµασιολογικά το επιλεγµένο έγγραφο για τη συγκεκριµένη αναζήτηση. ηλαδή, επιλέγονται, από εκείνες τις κλάσεις στις οποίες έγινε αναζήτηση (acls), όσες χαρακτηρίζουν το επιλεγµένο έγγραφο (n1) και εκτελείται αναζήτηση για αυτές µόνο τις κλάσεις της οντολογίας. Object cvalue[] = (Object []) jlist2.getselectedvalue(); if ((cvalue[9])!= null) OWLModel owlmodel = (OWLModel) kbase; ArrayList n1 = new ArrayList(); ArrayList n2 = new ArrayList(); n1 = (ArrayList) cvalue[9]; n2.clear(); for (int n = 0; n < n1.size(); n++) for (int m = 0; m < ((ArrayList) n1.get(n)).size(); m++) if ((acls.contains((owlnamedclass) ((ArrayList) n1.get(n)).get(m)))&& (!n2.contains((owlnamedclass) ((ArrayList) n1.get(n)).get(m)))) n2.add((owlnamedclass) ((ArrayList) n1.get(n)).get(m)); navigateontology((collection) n2); 109

110 Στη συνέχεια, γίνεται απόδοση του σκορ κάθε αποτελέσµατος, ταξινόµηση µε βάση το σκορ και προβολή των αποτελεσµάτων, µε τον ίδιο ακριβώς τρόπο που είδαµε στη συνάρτηση searchactionperformed() private void relativeallclassesactionperformed( java.awt.event.actionevent evt) Με αυτή τη συνάρτηση, ο χρήστης µπορεί να επιλέξει ένα από τα έγγραφα των αποτελεσµάτων (που να έχει προέλθει από σηµασιολογική αναζήτηση) και να εµφανίσει προς επιλογή στιγµιότυπα µόνο εκείνων των κλάσεων της οντολογίας µε τις οποίες έχει χαρακτηριστεί το συγκεκριµένο έγγραφο. ηλαδή, ουσιαστικά µε τη συνάρτηση αυτή εκτελείται αναζήτηση στην οντολογία «όµοιων σηµασιολογικά» εγγράφων µε κάποιο συγκεκριµένο έγγραφο. Ακολουθεί περιγραφή του κώδικα. ιατρέχονται όλα τα στιγµιότυπα της οντολογίας και εξετάζεται αν αντιστοιχούν στο επιλεγµένο έγγραφο. Αν ισχύει αυτό, τότε προστίθενται στη λίστα n1 οι κλάσεις που χαρακτηρίζουν το συγκεκριµένο στιγµιότυπο. Object cvalue[] = (Object []) jlist2.getselectedvalue(); if ((cvalue[9])!= null) OWLModel owlmodel = (OWLModel) kbase; Collection instances = owlmodel.getowlindividuals(); ArrayList n1 = new ArrayList(); for (Iterator jt = instances.iterator(); jt.hasnext();) OWLIndividual ind = (OWLIndividual) jt.next(); System.out.println(" Instance: " + ind.getname()); if (ind!= null) OWLDatatypeProperty prop = ind.getowlmodel().getowldatatypeproperty("rdfs:comment"); String tname = ((String) ind.getpropertyvalue(prop)); tname = tname.substring(0, 110

111 tname.indexof("\n")); tname = tname.substring(tname.indexof("c")); if (tname.equals((string) cvalue[1])) System.out.println(" Instance11: " + ind.getname()); ArrayList n2 = new ArrayList(); n2.addall(ind.getprotegetypes()); for (int n = 0; n < n2.size(); n++) System.out.println("ANTEEEEEE" + ((OWLNamedClass) n2.get(n)).getbrowsertext()); for (int m = 0; m < n2.size(); m++) if (!n1.contains((owlnamedclass) n2.get(m))) n1.add((owlnamedclass) n2.get(m)); Στη συνέχεια, γίνεται απόδοση του σκορ κάθε αποτελέσµατος, ταξινόµηση µε βάση το σκορ και προβολή των αποτελεσµάτων, µε τον ίδιο ακριβώς τρόπο που είδαµε στη συνάρτηση searchactionperformed() private void openfileactionperformed(java.awt.event.actionevent evt) Συνάρτηση µε την οποία ανοίγεται ένα επιλεγµένο από τα αποτελέσµατα κείµενο. Ανάλογα µε τον τύπο του επιλεγµένου εγγράφου, η συνάρτηση καλεί τον αντίστοιχο εξεγωγέα κειµένου και εξάγει το κείµενό του. Κατόπιν, καλείται η κλάση OpenTextJFrame, και εµφανίζεται το αντίστοιχο πλαίσιο, που περιέχει το όνοµα και το κείµενο του εγγράφου. 111

112 Επιπλέον, εάν το έγγραφο διαθέτει σηµασιολογικά χαρακτηρισµένα κοµµάτια, αυτά τονίζονται µε υπογράµµιση σε σχέση µε το υπόλοιπο κείµενο private void searchresactionperformed(java.awt.event.actionevent evt) Όµοια µε την searchactionperformed, µόνο που εκτελεί αναζήτηση πάνω στα αποτελέσµατα της τελευταίας αναζήτησης private void searchradiobuttonactionperformed( java.awt.event.actionevent evt) Συνάρτηση αρχικοποίησης του UI της NewJFrame private void searchresradiobuttonactionperformed(java.awt.event. ActionEvent evt) Συνάρτηση αρχικοποίησης του UI της NewJFrame protected String getbody(element rawdoc) Βοηθητική συνάρτηση που καλείται από την openfileactionperformed() για εξαγωγή κειµένου από html αρχεία protected String gettext(node node) Βοηθητική συνάρτηση που καλείται από την getbody() για εξαγωγή κειµένου από html αρχεία private static COSDocument parsedocument(inputstream is) Βοηθητική συνάρτηση που καλείται από την openfileactionperformed() για εξαγωγή κειµένου από pdf αρχεία public static Collection pickrdfresources3(collection allowedclasses) Με την κλήση της εµφανίζεται ένα πλαίσιο µε την ιεραρχία της οντολογίας, αλλά και τα στιγµιότυπα της εκάστοτε επιλεγµένης κλάσης. Είναι σχεδόν όµοια µε την pickrdfresource µε τη διαφορά ότι αρχικά εµφανίζει επιλεγµένα όλα τα στιγµιότυπα της επιλεγµένης κλάσης. Από αυτά τα στιγµιότυπα ο χρήστης µπορεί να επιλέξει οποιαδήποτε επιθυµεί private static OWLModel getowlmodel(collection allowedclses) Βοηθητική συνάρτηση που καλείται από την pickrdfresources3(). 112

113 private void annotateactionperformed(java.awt.event.actionevent evt) Συνάρτηση µε την οποία ο χρήστης ανοίγει το πλαίσιο σηµασιολογικού χαρακτηρισµού κειµένων και επεξεργασίας οντολογιών private void IndexItemActionPerformed(java.awt.event.ActionEvent evt) Συνάρτηση µε την οποία ο χρήστης ανοίγει το πλαίσιο δηµιουργίας ευρετηρίου Κλάση ComplexCellRenderer Κλάση που µορφοποιεί την εµφάνιση των αποτελεσµάτων αναζήτησης στη λίστα jlist2 στο πλαίσιο της NewJFrame. Η µορφή του κάθε αποτελέσµατος (από αριστερά προς τα δεξιά) είναι η εξής: Τρία εικονίδια που δηλώνουν αν το έγγραφο είναι ολόκληρο σηµασιολογικά χαρακτηρισµένο, αν είναι κοµµάτια του χαρακτηρισµένα, ή αν περιέχει συγκεκριµένες λέξεις κλειδιά. εξιότερα, το όνοµα του εγγράφου, το σκορ του και τέλος το µονοπάτι του στο δίσκο Κλάση DiamondIcon Υλοποιεί τα εικονίδια που χρησιµοποιεί η ComplexCellRenderer Κλάση OpenTextJFrame Είναι τύπου JFrame, οπότε µε την κλήση της από τη συνάρτηση NewJFrame. openfileactionperformed, ανοίγει ένα πλαίσιο, που περιέχει το όνοµα και το κείµενο του επιλεγµένου εγγράφου. Επιπλέον, εάν το έγγραφο διαθέτει σηµασιολογικά χαρακτηρισµένα κοµµάτια, αυτά τονίζονται µε υπογράµµιση σε σχέση µε το υπόλοιπο κείµενο µε τη βοήθεια της κλάσης UnderlineHighlighter. Με την αρχικοποίηση της, εκτελούνται οι παρακάτω εντολές: Εµφανίζεται το κείµενο και αρχικοποιείται το αντικείµενο υπογράµµισης highlighter. opentextarea.settext(newjframe.opentext); opentextarea.sethighlighter(highlighter); try Στη συνέχεια, διατρέχεται η λίστα που περιέχει τα offsets των χαρακτηρισµένων κοµµατιών του εγγράφου και, σύµφωνα µε αυτήν, υπογραµµίζεται στο κείµενο το κάθε κοµµάτι µε διαφορετικό χρώµα, ανάλογα µε τις κλάσεις που το χαρακτηρίζουν. Επιπλέον, δηµιουργείται, για κάθε χαρακτηρισµένο κοµµάτι, ένα αντικείµενο που περιέχει τα παραπάνω offsets, τις 113

114 κλάσεις που αντιστοιχούν στο συγκεκριµένο κοµµάτι και το αντίστοιχο χρώµα, ώστε να προβληθεί µία λίστα, από την οποία ο χρήστης θα µπορεί, επιλέγοντας ένα στιγµιότυπο, να µετακινήσει τον κέρσορα του κειµένου στο αντίστοιχο (και ίδιου χρώµατος) χαρακτηρισµένο κοµµάτι του κειµένου. opendata.removeallelements(); if (NewJFrame.oblist!= null) for (int n = 0; n < NewJFrame.oblist.size(); n++) int co1 = 0; int co2 = 0; int co3 = 0; for (int m = 0; m < NewJFrame.onlist.size(); m++) if (((ArrayList) NewJFrame.onlist.get(m)).equals((ArrayList) NewJFrame.oclist.get(n))) co1 = (int) (50 + (200*m)/(NewJFrame.oblist.size())); co2 = (int) (180 + (200*m)/(NewJFrame.oblist.size())); if (co2 > 255) co2 = co2-255; co3 = (int) (210 + (200*m)/(NewJFrame.oblist.size())); if (co3 > 255) co3 = co3-255; Color c1 = new Color(co1, co2, co3); painter = new UnderlineHighlighter.UnderlineHighlightPainter(c1); Highlighter highlighter = opentextarea.gethighlighter(); highlighter.addhighlight(((integer) NewJFrame.oblist.get(n)).intValue(), ((Integer) NewJFrame.oelist.get(n)).intValue(), painter); 114

115 Object elements[] = new Integer(((Integer) NewJFrame.oblist.get(n)).intValue()), new Integer(((Integer) NewJFrame.oelist.get(n)).intValue()), ((ArrayList) NewJFrame.oclist.get(n)), new Integer(co1), new Integer(co2), new Integer(co3); opendata.add(elements); openinstancelist.setlistdata(opendata); ListCellRenderer renderer = new ComplexCellRenderer2(); openinstancelist.setcellrenderer(renderer); private void openpropertyactionperformed(java.awt.event.actionevent evt) Με την κλήση της συνάρτησης αυτής, ο ανοίγει το πλαίσιο της OpenTextJFrame_1 µε το οποίο αναζητούνται σχέσεις (π.χ. σχετίζεται_µε ή είναι_περίληψη_του) µεταξύ δύο επισηµειωµένων κοµµατιών κειµένου Κλάση OpenTextJFrame_1 Είναι τύπου JFrame και αποτελεί επέκταση της OpenTextJFrame. Έχοντας ήδη ανοικτό ένα παράθυρο µε το σηµασιολογικά επισηµειωµένο κείµενο ενός εγγράφου, ο χρήστης µπορεί να επιλέξει κάποια από τις επισηµειώσεις και να εξετάσει αν συνδέεται µε τις επισηµειώσεις κάποιου άλλου εγγράφου. Τότε, µε την κλήση της OpenTextJFrame_1, ανοίγει ένα νέο παράθυρο, από το οποίο ο χρήστης µπορεί να δει όλες τις ιδιότητες που αφορούν το συγκεκριµένο στιγµιότυπο (επισηµείωση) και τα στιγµιότυπα που συνδέονται µέσω των ιδιοτήτων µε αυτό. Επιλέγοντας ένα από αυτά, εµφανίζεται το κείµενο του αντίστοιχου εγγράφου, σηµασιολογικά επισηµειωµένο 115

116 . 116

117 5 Έλεγχος 5.1 Μεθοδολογία ελέγχου Σε αυτό το κεφάλαιο πραγµατοποιείται ο έλεγχος της εφαρµογής µε τη µέθοδο «µαύρου κουτιού». Ακολουθούµε ένα λεπτοµερές σενάριο χρήσης της εφαρµογής που περιλαµβάνει όλες τις διαθέσιµες λειτουργίες που προσφέρει στο χρήστη το GoNToggle. Όσον αφορά την αναζήτηση µε λέξεις κλειδιά, για να ελέγξουµε αν όλα τα έγγραφα του σεναρίου έχουν δεικτοδοτηθεί σωστά, εκτελούµε αναζητήσεις µε κατάλληλες λέξεις κλειδιά. Για να ελέγξουµε αν όλες οι αλλαγές που πραγµατοποιούµε στην οντολογία (π.χ. σηµασιολογικός χαρακτηρισµός) αποθηκεύονται σωστά, ανοίγουµε την ιεραρχία και τα στιγµιότυπα της οντολογίας, ή επιτελούµε σηµασιολογική αναζήτηση. 5.2 Αναλυτική παρουσίαση ελέγχου Η διαδικασία του ελέγχου χωρίζεται σε τρεις ενότητες, ανάλογες µε τα υποσυστήµατα της εφαρµογής: ηµιουργία ευρετηρίου, σηµασιολογικός χαρακτηρισµός και αναζήτηση ηµιουργία ευρετηρίου Για να δηµιουργήσουµε το ευρετήριο πάνω στο οποίο θα εκτελείται αναζήτηση µε λέξεις κλειδιά, ανοίγουµε τον αντίστοιχο διάλογο που φαίνεται στο παρακάτω σχήµα. Επιλέγουµε 117

118 αν θα δηµιουργήσουµε νέο ευρετήριο ή θα συµπληρώσουµε ένα ήδη υπάρχον καθώς και το φάκελο των αρχείων που θα δεικτοδοτηθούν. Σχήµα 5.1: ιάλογος για δηµιουργία ευρετηρίου Εάν έχουµε επιλέξει δηµιουργία νέου ευρετηρίου, το σύστηµα µας προειδοποιεί ότι όλα τα παλιά δεδοµένα του συγκεκριµένου ευρετηρίου θα χαθούν: Σχήµα 5.2: Προειδοποίηση διαγραφής των παλιών δεδοµένων του ευρετηρίου Για να µπορέσουµε να ελέγξουµε την ορθή δεικτοδότηση των εγγράφων, επιλέξαµε να δεικτοδοτήσουµε κάποια συγκεκριµένα έγγραφα: 37 pdf έγγραφα που είναι σχετικά µε βάσεις δεδοµένων (δηλαδή είναι σχετικά µε την οντολογία που θα χρησιµοποιήσουµε) και από ένα έγγραφο από τους εξής τύπους: txt, rtf, doc, xls, html, για να ελέγξουµε αν δεικτοδοτούνται όλα τα διαφορετικά είδη εγγράφων. Κάθε ένα από τα πέντε τελευταία έγγραφα περιέχει τη λέξη κλειδί colour, ενώ κάθε ένα από τα pdf έγγραφα έχει τίτλο που αρχίζει από TR. Με αυτά τα δεδοµένα, πραγµατοποιούµε τον έλεγχο: 118

119 Ανοίγουµε το πλαίσιο αναζήτησης της εφαρµογής (αρχική οθόνη) και εκτελούµε αναζήτηση µόνο µε λέξεις κλειδιά µε τη λέξη colour : Σχήµα 5.3: Αναζήτηση µε τη λέξη colour για έλεγχο ορθής δηµιουργίας ευρετηρίου Βλέπουµε ότι τα 5 έγγραφα που γνωρίζαµε ότι περιέχουν τη λέξη κλειδί colour εµφανίζονται στα αποτελέσµατα της αναζήτησης, άρα, έχουν δεικτοδοτηθεί σωστά. Στη συνέχεια, εκτελούµε αναζήτηση, ψάχνοντας για έγγραφα µε τίτλο που ξεκινάει από TR : 119

120 Σχήµα 5.4: Αναζήτηση µε το title:tr* για έλεγχο ορθής δηµιουργίας ευρετηρίου Βλέπουµε ότι βρέθηκαν και τα 37 pdf έγγραφα που περιµέναµε, οπότε έχουν και αυτά δεικτοδοτηθεί σωστά Σηµασιολογικός χαρακτηρισµός Ανοίγουµε το πλαίσιο σηµασιολογικού χαρακτηρισµού και φορτώνουµε µία οντολογία. Ο διάλογος που ανοίγει (σχήµα 5.5) επιτρέπει το άνοιγµα µόνο κατάλληλων αρχείων οντολογίας. Στη συνέχεια, ανοίγουµε ένα έγγραφο για να το χαρακτηρίσουµε σηµασιολογικά. Το κείµενο του εγγράφου προβάλλεται στην αντίστοιχη περιοχή του πλαισίου (σχήµα 5.6). Από το κείµενο, επιλέγουµε ένα κοµµάτι και, µε δεξί κλικ, επιλέγουµε να χαρακτηρίσουµε αυτό το κοµµάτι (σχήµα 5.6) 120

121 Σχήµα 5.5: Φόρτωµα οντολογίας µόνο από επιτρεπόµενα αρχεία οντολογίας (.owl) Σχήµα 5.6: Επιλογή κοµµατιού του κειµένου για σηµασιολογική επισηµείωση 121

122 Με την παραπάνω επιλογή, εµφανίζεται ένας διάλογος που περιέχει την ιεραρχία της οντολογίας και ζητάει από το χρήστη να επιλέξει µία από τις κλάσεις της οντολογίας για να χαρακτηριστεί το κοµµάτι του κειµένου. Από αυτές, διαλέγουµε την SpatialDBs: Σχήµα 5.7: Επιλογή κλάσης για σηµασιολογικό χαρακτηρισµό Το σύστηµα ρωτάει αν επιθυµούµε χαρακτηρισµό µε επιπλέον κλάση: Σχήµα 5.8: ιάλογος για επιλογή επιπλέον κλάσης Με την ίδια διαδικασία, επιλέγουµε επιπλέον την κλάση QueryProcessing. Το αποτέλεσµα του σηµασιολογικού χαρακτηρισµού φαίνεται στο σχήµα 5.9. Το χαρακτηρισµένο κοµµάτι του κειµένου έχει υπογραµµιστεί µε συγκεκριµένο χρώµα και αντιστοιχεί στο αντικείµενο της λίστας που φαίνεται κάτω από το κείµενο. Τα αντικείµενο αυτό προβάλλει στο χρήστη τις κλάσεις χαρακτηρισµού και τα offset του συγκεκριµένου κοµµατιού και είναι µαρκαρισµένο µε το ίδιο χρώµα υπογράµµισης. Επιπλέον, αν ο χρήστης επιλέξει το αντικείµενο από τη 122

123 λίστα, τότε ο κέρσορας του κειµένου θα µετακινηθεί αυτόµατα στην αρχή του χαρακτηρισµένου κοµµατιού. Σχήµα 5.9: Προβολή των χαρακτηρισµένων κοµµατιών του κειµένου, µε υπογράµµιση στο κείµενο και ως στιγµιότυπα της οντολογίας στη λίστα Αν, αντί για κοµµάτι του κειµένου, θέλουµε να χαρακτηρίσουµε ολόκληρο το έγγραφο, τότε επιλέγουµε File->Annotate (σχήµα 5.10) και ακολουθούµε την ίδια διαδικασία (επιλογή κλάσεων από οντολογία. Έστω ότι το χαρακτηρίζουµε µε την κλάση StructuredDM. Τότε, στη λίστα µε τα στιγµιότυπα εµφανίζεται ένα νέο, µε την παραπάνω κλάση και, αντί για το offset του χαρακτηρισµένου κοµµατιού (που εν προκειµένω είναι όλο το έγγραφο), την πληροφορία ότι η σηµασιολογική επισηµείωση αφορά όλο το έγγραφο (σχήµα 5.11). 123

124 Σχήµα 5.10: Σηµασιολογική επισηµείωση ολόκληρου του εγγράφου Σχήµα 5.11: Αποτέλεσµα σηµασιολογικής επισηµείωσης ολόκληρου του εγγράφου 124

125 Αν επιλέξουµε να ανοίξουµε ένα στιγµιότυπο, µε τη λειτουργία Edit Selected Instance, τότε ανοίγει το πλαίσιο του σχήµατος Σχήµα 5.12: Άνοιγµα στιγµιότυπου Σχήµα 5.13: Πλαίσιο στιγµιότυπου 125

126 Από το πλαίσιο του στιγµιότυπου, µπορούµε να ανοίξουµε το πεδίο comment (σχήµα 14) και, από τα στοιχεία που περιέχει (τα οποία εισάγονται κατά τη σηµασιολογική επισηµείωση) να επιβεβαιώσουµε ότι το στιγµιότυπο έχει εισαχθεί σωστά, µιας και τα στοιχεία ου εγγράφου είναι σωστά, όπως και οι αρχικοί χαρακτήρες του χαρακτηρισµένου κοµµατιού. Επίσης, από το πλαίσιο του στιγµιότυπου (σχήµα 13), µπορούµε να διακρίνουµε τις δύο κλάσεις SpatialDBs και QueryProcessing, µε τις οποίες το είχαµε χαρακτηρίσει. Σχήµα 5.14: Πεδίο comment του στιγµιότυπου Μάλιστα, από το πλαίσιο του στιγµιότυπου, µπορούµε να το συσχετίσουµε (µέσω των διαθέσιµων ιδιοτήτων (isrelatedto, isabstractof) µε κάποιο άλλο στιγµιότυπο, µε αποτέλεσµα τη σηµασιολογική συσχέτιση δύο διαφορετικών (κοµµατιών) εγγράφων. Στη συνέχεια, µπορούµε να επιλέξουµε προσθήκη ή αφαίρεση µίας κλάσης της οντολογίας σε ένα στιγµιότυπο: 126

127 Σχήµα 5.15: Χαρακτηρισµός στιγµιότυπου µε επιπλέον κλαση Σχήµα 5.16: Επιλογή επιπλέον κλάσης για σηµασιολογικό χαρακτηρισµό 127

128 Εµφανίζεται ο διάλογος επιλογής επιπλέον κλάσης (σχήµα 5.16), και αφού επιλεγεί η QueryProccessing, βλέπουµε (σχήµα 5.17) ότι οι κλάσεις του αντίστοιχου στιγµιότυπου στη λίστα έχουν ανανεωθεί. Το ίδιο θα διαπιστώναµε και αν ανοίγαµε το στιγµιότυπο. Σχήµα 5.17: Αποτέλεσµα σηµασιολογικής επισηµείωσης µε επιπλέον κλάση Αντίστοιχα, µπορούµε να «αποχαρακτηρίσουµε» ένα κοµµάτι κειµένου από µία κλάση. Η διαδικασία είναι ανάλογη µε την προηγούµενη (µε την επιλογή της λειτουργίας Delete Concept ), µόνο που προφανώς, στο διάλογο επιλογής κλάσης, εµφανίζονται µόνο οι κλάσεις οι οποίες χαρακτηρίζουν το στιγµιότυπο και όχι όλες οι κλάσεις της οντολογίας: 128

129 Σχήµα 5.18: ιαγραφή κλάσης από στιγµιότυπο Τέλος, µπορούµε να διαγράψουµε ένα στιγµιότυπο µε την επιλογή Delete Selected Instance, όπως φαίνεται στα επόµενα δύο σχήµατα. Τότε το στιγµιότυπο αφαιρείται από την οντολογία και το αντίστοιχο κοµµάτι κειµένου παύει να είναι υπογραµµισµένο. Σχήµα 5.19: ιαγραφή στιγµιότυπου 129

130 Επίσης, κάνοντας Edit την οντολογία (σχήµα 5.21) µπορούµε να µπούµε στην ιεραρχία της οντολογίας και να επεξεργαστούµε τις κλάσεις και τις ιδιότητες τους. Σχήµα 5.20: Επιλογή εισαγωγής στην οντολογία Για παράδειγµα, επιλέγοντας από το διάλογο µε την ιεραρχία των κλάσεων (σχήµα 5.21) την DataManagement, µπορούµε να ανοίξουµε την κλάση, να δούµε και να επεξεργαστούµε τις ιδιότητες και τους περιορισµούς της (σχήµα 5.22). 130

131 Σχήµα 5.21: Επιλογή κλάσης για επεξεργασία Σχήµα 5.22: Η κλάση DataManagement 131

132 Σχήµα 5.23: Ιδιότητες της κλάσης DataManagement Μπορούµε, επιπλέον, να προσθαφαιρέσουµε κλάσεις σε οποιοδήποτε σηµείο της ιεραρχίας της οντολογίας 132

133 Σχήµα 5.24: Προσθήκη υποκλάσεων στην κλάση DataWarehousing Σχήµα 5.25: Προσθήκη υποκλάσεων στην κλάση DataWarehousing Θα πρέπει να αναφέρουµε ότι, αν επιχειρηθεί οποιαδήποτε από τις παραπάνω λειτουργίες αφορά την οντολογία, χωρίς να έχει φορτωθεί η οντολογία, τότε εµφανίζεται το ακόλουθο µήνυµα σφάλµατος: 133

134 Σχήµα 5.26: Μήνυµα σφάλµατος Τέλος, εάν, µετά το πέρας των αλλαγών στην οντολογία και τα στιγµιότυπα, πατηθεί το κουµπί save, τότε όλες οι αλλαγές αποθηκεύονται στην οντολογία Αναζήτηση Αρχικά, πραγµατοποιούµε µία απλή αναζήτηση µε λέξεις κλειδιά. Χρησιµοποιούµε τη λέξη model υποθέτοντας ότι θα έχει µεγάλη συχνότητα σε κείµενα σχετικά µε βάσεις δεδοµένων. Πράγµατι, 33 από τα 37 σχετικά pdf κείµενα εµφανίζονται στα αποτελέσµατα: Σχήµα 5.27: Αναζήτηση µε λέξεις κλειδιά Αν εκτελέσουµε µία πιο σύνθετη αναζήτηση µε title:tr* AND -spatial, το οποίο σηµαίνει όλα τα αρχεία που ο τίτλος τους αρχίζει µε TR, (δηλαδή εν προκειµένω όλα τα αρχεία, αφού όλα αρχίζουν µε TR ), αλλά δεν περιέχουν τη λέξη spatial, τότε παίρνουµε: 134

135 Σχήµα 5.28: Αναζήτηση µε title:tr* AND -spatial Αν προσπαθήσουµε να εκτελέσουµε σηµασιολογική αναζήτηση χωρίς να έχουµε φορτώσει οντολογία, τότε εµφανίζεται το αντίστοιχο µήνυµα σφάλµατος: Σχήµα 5.29: Μήνυµα σφάλµατος Εφόσον φορτώσουµε την οντολογία και ξαναδοκιµάσουµε, µε το πάτηµα του search και µε επιλεγµένη µόνο τη σηµασιολογική αναζήτηση, εµφανίζεται ένας διάλογος µε την ιεραρχία της οντολογίας στο αριστερό του παράθυρο και τα στιγµιότυπα των εκάστοτε επιλεγµένω κλάσεων στο δεξί παράθυρο: 135

136 Σχήµα 5.30: ιάλογος σηµασιολογικής αναζήτησης Με την επιλογή των κλάσεων Modelling και SpatialDBs, ως αποτελέσµατα (σχήµα 5.31) εµφανίζονται όλα τα έγγραφα τα οποία έχουν χαρακτηριστεί σηµασιολογικά µε κάποια από αυτές τις κλάσεις. Στα αποτελέσµατα, ο κόκκινος ρόµβος συµβολίζει ότι το συγκεκριµένο έγγραφο, για κάποια από τις κλάσεις, έχει χαρακτηριστεί στο σύνολό του, ενώ ο µπλε, ότι έχουν χαρακτηριστεί κοµµάτια του. ίπλα από το όνοµα του κάθε εγγράφου εµφανίζονται και οι κλάσεις που του αντιστοιχούν, στη συγκεκριµένη αναζήτηση. 136

137 Σχήµα 5.31: Αποτελέσµατα σηµασιολογικής αναζήτησης Στη συνέχεια, µπορούµε να εκτελέσουµε συνδυαστική αναζήτηση (µε λέξεις κλειδιά και οντολογία). Η συνδυαστική αναζήτηση προσφέρει δύο επιλογές: Με AND, οπότε παίρνουµε την τοµή των αποτελεσµάτων (σχήµα 5.32) των δύο αναζητήσεων και µε OR, οπότε παίρνουµε την ένωση των αποτελεσµάτων (σχήµα 5.33). Παρατηρούµε ότι, στη συνδυαστική αναζήτηση, το σκορ των ίδιων εγγράφων αλλάζει σε σχέση µε την σηµασιολογική αναζήτηση που εκτελέσαµε προηγουµένως. Αυτό συµβαίνει γιατί συνυπολογίζεται πλέον και το σκορ από την αναζήτηση µε λέξεις κλειδιά στο τελικό σκορ. 137

138 Σχήµα 5.32: Αποτελέσµατα συνδυαστικής αναζήτησης µε AND Σχήµα 5.33: Αποτελέσµατα συνδυαστικής αναζήτησης µε OR 138

139 Έστω µία νέα αναζήτηση. Αν επιλέξουµε ένα έγγραφο από τα αποτελέσµατα και το ανοίξουµε (σχήµα 5.34), τότε εµφανίζεται ένα νέο πλαίσιο (σχήµα 5.35) µε το κείµενο του εγγράφου και υπογραµµισµένα τα σηµασιολογικά κοµµάτια του µε διαφορετικά χρώµατα ανάλογα µε την κλάση χαρακτηρισµού. Επιπλέον, κάτω από το κείµενο υπάρχει µία λίστα µε στιγµιότυπα που αντιστοιχούν στα χαρακτηρισµένα κοµµάτια. Σχήµα 5.34: Άνοιγµα εγγράφου από τα αποτελέσµατα Αν, τώρα, επιλέξουµε ένα από αυτά τα στιγµιότυπα και πατήσουµε Find Documents Related by Properties, τότε ανοίγει το πλαίσιο του σχήµατος 5.36, από το οποίο µπορούµε εξετάσουµε ποιες από τις ιδιότητες του συγκεκριµένου στιγµιότυπου το συσχετίζουν µε άλλα στιγµιότυπα. Έτσι, επιλέγοντας την ιδιότητα isrelatedto, και στη συνέχεια το στιγµιότυπο που αυτή περιέχει, εµφανίζεται στο πλαίσιο το κείµενο ενός άλλου εγγράφου, το οποίο σχετίζεται σηµασιολογικά µε το προηγούµενο µε τη συγκεκριµένη ιδιότητα. 139

140 Σχήµα 5.35: Κείµενο εγγράφου σηµασιολογικά µαρκαρισµένο Σχήµα 5.36: Κείµενο εγγράφου σηµασιολογικά συσχετισµένου µε το προηγούµενο έγγραφο µέσω της ιδιότητας isrelatedto 140

141 Μία επιπλέον δυνατότητα σηµασιολογικής αναζήτησης προσφέρεται µε την επιλογή Find Similar Documents (σχήµατα 5.37, 5.38). Με αυτήν την επιλογή, εµφανίζεται ένας διάλογος σηµασιολογικής αναζήτησης, ο οποίος όµως, αντί να περιέχει όλη την ιεραρχία των κλάσεων της οντολογίας, περιέχει µόνο τις κλάσεις της προηγούµενης αναζήτησης οι οποίες χαρακτηρίζουν το επιλεγµένο έγγραφο, πάνω στο οποίο εκτελείται αυτή η λειτουργία. Έτσι, ο χρήστης µπορεί να επιλέξει στιγµιότυπα µόνο από αυτές τις κλάσεις. Στο συγκεκριµένο παράδειγµα, οι κλάσεις της προηγούµενης αναζήτησης είναι οι SpatiaDBs και Modelling, αλλά το επιλεγµένο έγγραφο χαρακτηρίζεται µόνο από την δεύτερη κλάση. Έτσι, µόνο η Modelling είναι διαθέσιµη στη νέα αναζήτηση. Σχήµα 5.37: Σηµασιολογική αναζήτηση παρόµοιων εγγράφων µε το επιλεγµένο κείµενο 141

142 Σχήµα 5.38: Σηµασιολογική αναζήτηση παρόµοιων εγγράφων µε το επιλεγµένο κείµενο Τα αποτελέσµατα της παραπάνω αναζήτησης, όπως είναι αναµενόµενα, αφορούν µόνο την κλάση Modelling: 142

143 Σχήµα 5.39: Αποτελέσµατα σηµασιολογικής αναζήτησης παρόµοιων εγγράφων µε το επιλεγµένο κείµενο Μία ακόµα δυνατότητα σηµασιολογικής αναζήτησης προσφέρεται µε την επιλογή Find Related Documents (σχήµατα 5.40, 5.41). Με αυτήν την επιλογή, εµφανίζεται ένας διάλογος σηµασιολογικής αναζήτησης, ο οποίος όµως, αντί να περιέχει όλη την ιεραρχία των κλάσεων της οντολογίας, περιέχει µόνο τις κλάσεις οι οποίες χαρακτηρίζουν οποιοδήποτε στιγµιότυπο του επιλεγµένου εγγράφου µέσα στην οντολογία. Έτσι, ο χρήστης µπορεί να επιλέξει στιγµιότυπα µόνο από αυτές τις κλάσεις. Στο συγκεκριµένο παράδειγµα, οι κλάσεις της προηγούµενης αναζήτησης είναι οι SpatiaDBs και Modelling, αλλά το επιλεγµένο έγγραφο χαρακτηρίζεται (σε ολόκληρη την οντολογία) από τις κλάσεις που παρουσιάζονται στο διάλογο του σχήµατος Στο σχήµα 5.41 φαίνονται τα αποτελέσµατα αυτής της σηµασιολογικής αναζήτησης. 143

144 Σχήµα 5.40: Σηµασιολογική αναζήτηση σχετικών εγγράφων µε το επιλεγµένο κείµενο Σχήµα 5.41: Σηµασιολογική αναζήτηση σχετικών εγγράφων µε το επιλεγµένο κείµενο 144

145 Σχήµα 5.42: Αποτελέσµατα σηµασιολογικής αναζήτησης σχετικών εγγράφων µε το επιλεγµένο κείµενο Τέλος, µπορούµε να εκτελέσουµε αναζήτηση πάνω στα αποτελέσµατα προηγούµενης αναζήτησης. Έστω ότι έχουµε τα αποτελέσµατα του σχήµατος 5.43, που αντιστοιχούν, όπως φαίνεται σε διάφορες κλάσεις της οντολογίας. Αν επιλέξουµε, πάνω σε αυτά τα αποτελέσµατα, να αναζητήσουµε µόνο αυτά τα έγγραφα που χαρακτηρίζονται ως SpatialDBs, τότε τα αποτελέσµατα περιορίζονται σε αυτά του σχήµατος 5.44: 145

146 Σχήµα 5.43: Σηµασιολογικής αναζήτηση πάνω στα αποτελέσµατα προηγούµενης αναζήτησης Σχήµα 5.44: Αποτελέσµατα σηµασιολογικής αναζήτησης πάνω στα αποτελέσµατα προηγούµενης αναζήτησης 146

ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: ΣΥΓΓΡΑΦΕΑΣ:

ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: ΣΥΓΓΡΑΦΕΑΣ: ΤΙΤΛΟΣ ΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΠΕΡΙΟΧΗ ΕΡΕΥΝΑΣ: Υπολογιστικά Συστήµατα & Τεχνολογίες Πληροφορικής ΣΥΓΓΡΑΦΕΑΣ: Γιώργος Γιαννόπουλος, διδακτορικός φοιτητής

Διαβάστε περισσότερα

GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ

GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ: GoNToggle: ΕΞΥΠΝΗ ΜΗΧΑΝΗ ΑΝΑΖΗΤΗΣΗΣ ΜΕ ΧΡΗΣΗ ΟΝΤΟΛΟΓΙΩΝ ΣΠΟΥ ΑΣΤΗΣ: Γιαννόπουλος Γεώργιος ΕΠΙΒΛΕΠΩΝ: Καθ. Ι. Βασιλείου ΒΟΗΘΟΙ: Α. ηµητρίου, Θ. αλαµάγκας Γενικά Οι µηχανές αναζήτησης

Διαβάστε περισσότερα

Σημασιολογικός Ιστός RDF(S) OWL Οντολογίες. Pervasive Computing Research Group

Σημασιολογικός Ιστός RDF(S) OWL Οντολογίες. Pervasive Computing Research Group Σημασιολογικός Ιστός RDF(S) OWL Οντολογίες Ο Παγκόσμιος Ιστός Εφαρμογή του Internet Δημοσίευση εγγράφων και υπερσύνδεσμοι Δυναμικό περιεχόμενο Αναζήτηση πληροφοριών - Κατανοητός μόνο από ανθρώπους (έμφαση

Διαβάστε περισσότερα

Αναπαράσταση Γνώσης και Αναζήτηση στον Σηµασιολογικό Ιστό

Αναπαράσταση Γνώσης και Αναζήτηση στον Σηµασιολογικό Ιστό Αναπαράσταση Γνώσης και Αναζήτηση στον Σηµασιολογικό Ιστό Αλέξανδρος Βαλαράκος (alexv@iit.demokritos.gr) (alexv@aegean.gr) Υποψήφιος ιδάκτορας Τµήµα Μηχανικών Υπολογιστικών και Πληροφοριακών Συστηµάτων.

Διαβάστε περισσότερα

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

1 Συστήματα Αυτοματισμού Βιβλιοθηκών 1 Συστήματα Αυτοματισμού Βιβλιοθηκών Τα Συστήματα Αυτοματισμού Βιβλιοθηκών χρησιμοποιούνται για τη διαχείριση καταχωρήσεων βιβλιοθηκών. Τα περιεχόμενα των βιβλιοθηκών αυτών είναι έντυπα έγγραφα, όπως βιβλία

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧ/ΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ ΕΚΠΟΝΗΣΗ ΕΡΓΑΣΙΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧ/ΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ ΕΚΠΟΝΗΣΗ ΕΡΓΑΣΙΑΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧ/ΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ 2010-2011 2011-2012 ΕΚΠΟΝΗΣΗ ΕΡΓΑΣΙΑΣ Στα πλαίσια της εργασίας θα δημιουργήσετε μια οντολογία που να αναπαριστά

Διαβάστε περισσότερα

Σχεδιασµός Ανάπτυξη Οντολογίας

Σχεδιασµός Ανάπτυξη Οντολογίας Σχεδιασµός Ανάπτυξη Οντολογίας ΈλεναΜάντζαρη, Γλωσσολόγος, Ms.C. ΙΑΤΡΟΛΕΞΗ: Ανάπτυξη Υποδοµής Γλωσσικής Τεχνολογίας για το Βιοϊατρικό Τοµέα Τι είναι η οντολογία; Μιαοντολογίαείναιέναλεξικόόρωνπου διατυπώνονται

Διαβάστε περισσότερα

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων

ΑΣΚΗΣΗ. Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος ΑΣΚΗΣΗ Δημιουργία Ευρετηρίων Συλλογής Κειμένων Σκοπός της άσκησης είναι η υλοποίηση ενός συστήματος επεξεργασίας

Διαβάστε περισσότερα

Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου

Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου 3.1.1.1 Άνοιγμα (και κλείσιμο) της εφαρμογής Εγγράφου Κειμένου Ως επί το πλείστον δεν υπάρχουν διαφορές στη χρήση του Εγγράφου Κειμένου στα λειτουργικά Windows ή Linux. Η σημαντικότερη διαφορά παρουσιάζεται

Διαβάστε περισσότερα

OWL. Μανόλης Γεργατσούλης. Ομάδα Βάσεων Δεδομένων και Πληροφοριακών Συστημάτων, Τμήμα Αρχειονομίας Βιβλιοθηκονομίας Ιόνιο Πανεπιστήμιο

OWL. Μανόλης Γεργατσούλης. Ομάδα Βάσεων Δεδομένων και Πληροφοριακών Συστημάτων, Τμήμα Αρχειονομίας Βιβλιοθηκονομίας Ιόνιο Πανεπιστήμιο OWL Μανόλης Γεργατσούλης Χρήστος Παπαθεοδώρου Ομάδα Βάσεων Δεδομένων και Πληροφοριακών Συστημάτων, Τμήμα Αρχειονομίας Βιβλιοθηκονομίας Ιόνιο Πανεπιστήμιο W3C s Web Ontology Language (OWL) Η DAML+OIL εξελίχθηκε

Διαβάστε περισσότερα

Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της διαδικασίας δημιουργίας εγγράφων από το χρήστη. Παρακάτω προτείνεται μια

Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της διαδικασίας δημιουργίας εγγράφων από το χρήστη. Παρακάτω προτείνεται μια Δημιουργία Εγγράφων Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της διαδικασίας δημιουργίας εγγράφων από το χρήστη. Παρακάτω προτείνεται μια αλληλουχία ενεργειών την οποία ο

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Εξαγωγή γεωγραφικής πληροφορίας από δεδομένα παρεχόμενα από χρήστες του

Διαβάστε περισσότερα

Απεικόνιση Οντολογιών Σε Σχήµατα Σχεσιακών Βάσεων εδοµένων Με Σκοπό Την Ανάκτηση εδοµένων Σηµασιολογικού Περιεχοµένου ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Απεικόνιση Οντολογιών Σε Σχήµατα Σχεσιακών Βάσεων εδοµένων Με Σκοπό Την Ανάκτηση εδοµένων Σηµασιολογικού Περιεχοµένου ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Απεικόνιση Οντολογιών Σε Σχήµατα Σχεσιακών Βάσεων εδοµένων

Διαβάστε περισσότερα

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Όνοµα: Νικολαΐδης Αντώνιος Επιβλέπων: Τ. Σελλής Περίληψη ιπλωµατικής Εργασίας Συνεπιβλέποντες: Θ. αλαµάγκας, Γ. Γιαννόπουλος

Διαβάστε περισσότερα

«Ανάπτυξη μηχανής παραγωγής φυσικής γλώσσας για οντολογίες OWL»

«Ανάπτυξη μηχανής παραγωγής φυσικής γλώσσας για οντολογίες OWL» «Ανάπτυξη μηχανής παραγωγής φυσικής γλώσσας για οντολογίες OWL» Διπλωματική εργασία ΜΠΣ «Επιστήμη Υπολογιστών» Γαλάνης Δημήτριος Επιβλέπων: Ι. Ανδρουτσόπουλος Δεύτερος Αξιολογητής: Π. Κωνσταντόπουλος Παραγωγή

Διαβάστε περισσότερα

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2010-2011 ΑΣΚΗΣΗ Συγκομιδή και δεικτοδότηση ιστοσελίδων Σκοπός της άσκησης είναι η υλοποίηση ενός ολοκληρωμένου συστήματος συγκομιδής και δεικτοδότησης ιστοσελίδων.

Διαβάστε περισσότερα

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams Αλέκα Σεληνιωτάκη Ηράκλειο, 26/06/12 aseliniotaki@csd.uoc.gr ΑΜ: 703 1. Περίληψη Συνεισφοράς

Διαβάστε περισσότερα

Μεταπτυχιακή Εξειδίκευση στα Πληροφοριακά Συστήµατα. Ανάπτυξη Μοντέλου και Πρωτότυπου Συστήµατος Context-Aware E-learning. Βασίλειος Κ.

Μεταπτυχιακή Εξειδίκευση στα Πληροφοριακά Συστήµατα. Ανάπτυξη Μοντέλου και Πρωτότυπου Συστήµατος Context-Aware E-learning. Βασίλειος Κ. ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Μεταπτυχιακή Εξειδίκευση στα Πληροφοριακά Συστήµατα ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη Μοντέλου και Πρωτότυπου Συστήµατος Context-Aware E-learning

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 6. Σχήµατα ιαλειτουργικότητας Μεταδεδοµένων. Το RDF Το Warwick Framework. Ιόνιο Πανεπιστήµιο - Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας

ΜΑΘΗΜΑ 6. Σχήµατα ιαλειτουργικότητας Μεταδεδοµένων. Το RDF Το Warwick Framework. Ιόνιο Πανεπιστήµιο - Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας ΜΑΘΗΜΑ 6 195 Σχήµατα ιαλειτουργικότητας Μεταδεδοµένων Το RDF Το Warwick Framework 196 1 Resource Data Framework RDF Τα πολλαπλά και πολλαπλής προέλευσης σχήµατα παραγωγής δηµιουργούν την ανάγκη δηµιουργίας

Διαβάστε περισσότερα

Η ΟΝΤΟΛΟΓΙΑ ΤΟΥ ΕΛΛΗΝΙΚΟΥ ΚΤΗΜΑΤΟΛΟΓΙΟΥ. Μελέτη υλοποίησης στο Protégé-2000

Η ΟΝΤΟΛΟΓΙΑ ΤΟΥ ΕΛΛΗΝΙΚΟΥ ΚΤΗΜΑΤΟΛΟΓΙΟΥ. Μελέτη υλοποίησης στο Protégé-2000 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΑΓΡΟΝΟΜΩΝ ΤΟΠΟΓΡΑΦΩΝ ΜΗΧΑΝΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΧΑΡΤΟΓΡΑΦΙΑΣ Η ΟΝΤΟΛΟΓΙΑ ΤΟΥ ΕΛΛΗΝΙΚΟΥ ΚΤΗΜΑΤΟΛΟΓΙΟΥ Μελέτη υλοποίησης στο Protégé-2000 Μαρίνος Κάβουρας Αν. Καθηγητής ΕΜΠ ευκαλίων

Διαβάστε περισσότερα

SilverPlatter WebSPIRS 4.1.

SilverPlatter WebSPIRS 4.1. WebSPIRS 4.1. Η υπηρεσία WebSPIRS από τη SilverPlatter αποτελεί ένα φιλικό εργαλείο πρόσβασης και αναζήτησης σε περιεχόμενα βάσεων δεδομένων. Η Βιβλιοθήκη και Κέντρο Πληροφόρησης του Πανεπιστημίου Θεσσαλίας

Διαβάστε περισσότερα

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS Ακαδημαϊκό Έτος 2016-2017, Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS A. Εισαγωγή στις βάσεις δεδομένων - Γνωριμία με την ACCESS B. Δημιουργία Πινάκων 1. Εξήγηση των

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΖΩΓΡΑΦΟΥ 157 73, ΑΘΗΝΑ ΕΒΓ - ΙΠΛ-2003-1 20 Ιανουαρίου 2003 Σύγκριση Αλγορίθµων

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥ ΩΝ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. ιπλωµατική Εργασία Μεταπτυχιακού ιπλώµατος Ειδίκευσης

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥ ΩΝ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. ιπλωµατική Εργασία Μεταπτυχιακού ιπλώµατος Ειδίκευσης ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥ ΩΝ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ιπλωµατική Εργασία Μεταπτυχιακού ιπλώµατος Ειδίκευσης «Χρήση υπαρχουσών οντολογιών και βάσεων δεδοµένων στο

Διαβάστε περισσότερα

Δημιουργία Ευρετηρίων Συλλογής Κειμένων

Δημιουργία Ευρετηρίων Συλλογής Κειμένων Γλωσσική Τεχνολογία Ακαδημαϊκό Έτος 2011-2012 - Project Σεπτεμβρίου Ημερομηνία Παράδοσης: Στην εξέταση του μαθήματος Εξέταση: Προφορική, στο τέλος της εξεταστικής. Θα βγει ανακοίνωση στο forum. Ομάδες

Διαβάστε περισσότερα

. « : 12: Protégé

. « : 12: Protégé ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΠΡΑΞΗ «ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΩΝ, ΗΧΟΥ ΚΑΙ ΓΛΩΣΣΑΣ» στο πλαίσιο του ΜΕΤΡΟΥ 3.3 «Έρευνα και Τεχνολογική Ανάπτυξη στην Κοινωνία της Πληροφορίας» ΕΡΓΟ - 9: ΙΑΤΡΟΛΕΞΗ

Διαβάστε περισσότερα

e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση

e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση - 0 - Πίνακας Περιεχοµένων 1 Εισαγωγή.. 2 1.1 Σχολές/Τµήµατα

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

EBSCOhost Research Databases

EBSCOhost Research Databases Η EBSCOhost είναι ένα online σύστημα αναζήτησης σε έναν αριθμό βάσεων δεδομένων, στις οποίες είναι συμβεβλημένο κάθε φορά το ίδρυμα. Διαθέτει πολύγλωσσο περιβάλλον αλληλεπίδρασης (interface) με προεπιλεγμένη

Διαβάστε περισσότερα

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38 Περιεχόμενα ΠΡΟΛΟΓΟΣ... 11 ΔΙΑΔΙΚΤΥΟ... 13 1. ΙΣΤΟΡΙΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ... 15 2. ΤΙ ΕΙΝΑΙ ΤΟ ΔΙΑΔΙΚΤΥΟ INTERNET;... 16 3. ΤΙ ΠΡΟΣΦΕΡΕΙ ΤΟ ΔΙΑΔΙΚΤΥΟ, ΤΙ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙ ΚΑΝΕΙΣ... 19 4. ΤΙ ΑΠΑΙΤΕΙΤΑΙ ΓΙΑ ΝΑ

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μιας προσαρμοστικής πολιτικής αντικατάστασης αρχείων, με χρήση

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Σημασιολογική Συσταδοποίηση Αντικειμένων Με Χρήση Οντολογικών Περιγραφών.

Διαβάστε περισσότερα

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 002: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

Εργαστήριο Σημασιολογικού Ιστού

Εργαστήριο Σημασιολογικού Ιστού Εργαστήριο Σημασιολογικού Ιστού Ενότητα 6: RDF Schema (RDFS) Μ.Στεφανιδάκης 21-3-2016. Τι μπορούμε να εκφράσουμε με την RDF; Δηλώσεις σε μορφή τριάδων (s,p,o) Χωρίς οποιαδήποτε έννοια δομής... Παράδειγμα:

Διαβάστε περισσότερα

Javascript. του project /software/web_tools/webapps/search_engine/.

Javascript. του project  /software/web_tools/webapps/search_engine/. ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΠΡΑΞΗ «ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΩΝ, ΗΧΟΥ ΚΑΙ ΓΛΩΣΣΑΣ» στο πλαίσιο του ΜΕΤΡΟΥ 3.3 «Έρευνα και Τεχνολογική Ανάπτυξη στην Κοινωνία της Πληροφορίας» ΕΡΓΟ - 9: ΙΑΤΡΟΛΕΞΗ

Διαβάστε περισσότερα

...στις µέρες µας, όσο ποτέ άλλοτε, οι χώρες καταναλώνουν χρόνο και χρήµα στη µέτρηση της απόδοσης του δηµόσιου τοµέα...(oecd)

...στις µέρες µας, όσο ποτέ άλλοτε, οι χώρες καταναλώνουν χρόνο και χρήµα στη µέτρηση της απόδοσης του δηµόσιου τοµέα...(oecd) Κατηγορία Καλύτερης Εφαρµογής 4-delta: ηµιουργία & ιαχείριση ιαδικασιών Αξιολόγησης στο ηµόσιο τοµέα Χονδρογιάννης Θεόδωρος Εθνικό Καποδιστριακό Πανεπιστήµιο Αθηνών Αλεξόπουλος Χαράλαµπος Πανεπιστήµιο

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιο λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους

Διαβάστε περισσότερα

Κεφάλαιο 16 Εφαρμογές Αυτοματισμού Γραφείου

Κεφάλαιο 16 Εφαρμογές Αυτοματισμού Γραφείου Κεφάλαιο 16 Εφαρμογές Αυτοματισμού Γραφείου 1 Εισαγωγή Αυτοματισμός γραφείου (office automation) είναι το υλικό και το λογισμικό που χρησιμοποιείται για τη διαχείριση της πληροφορίας που παράγεται, λαμβάνεται

Διαβάστε περισσότερα

Software Production Company

Software Production Company Ανάπτυξη Υποδοµής Γλωσσικής Τεχνολογίας για το Βιοϊατρικό Τοµέα Neurosoft A.E. --- ΕΑΙΤΥ ΓΓΕΤ, ΚτΠ, Πρόγραµµα «ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΩΝ, ΗΧΟΥ ΚΑΙ ΓΛΩΣΣΑΣ» Προϋπολογισµός: 561.240 ιάρκεια: 18 µήνες ΕπιστηµονικόςΥπεύθυνος:

Διαβάστε περισσότερα

Σημασιολογική Ολοκλήρωση Δεδομένων με τη χρήση Οντολογιών

Σημασιολογική Ολοκλήρωση Δεδομένων με τη χρήση Οντολογιών Σημασιολογική Ολοκλήρωση Δεδομένων με τη χρήση Οντολογιών Λίνα Μπουντούρη - Μανόλης Γεργατσούλης Ιόνιο Πανεπιστήμιο 15ο Πανελλήνιο Συνέδριο Ακαδημαϊκών Βιβλιοθηκών Διαδίκτυο και Επίπεδα ετερογένειας δεδομένων

Διαβάστε περισσότερα

ΥΠΗΡΕΣΙΑ. Ηλεκτρονική ιαχείριση Τάξης. Οδηγίες χρήσης για τον µαθητή.

ΥΠΗΡΕΣΙΑ. Ηλεκτρονική ιαχείριση Τάξης. Οδηγίες χρήσης για τον µαθητή. ΥΠΗΡΕΣΙΑ Ηλεκτρονική ιαχείριση Τάξης Οδηγίες χρήσης για τον µαθητή http://eclass.sch.gr Η υπηρεσία ηλεκτρονικής διαχείρισης τάξης αναπτύχθηκε από το Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών για λογαριασµό

Διαβάστε περισσότερα

Ανάκτηση Πληροφορίας (Information Retrieval IR) ιδακτικό βοήθηµα 2. Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων

Ανάκτηση Πληροφορίας (Information Retrieval IR) ιδακτικό βοήθηµα 2. Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων Ανάκτηση Πληροφορίας (Information Retrieval IR) Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων Ακαδηµαϊκό Έτος 2005-2006 ιδακτικό βοήθηµα 1 Καλύπτει το 60% του 510 σελίδες 1η

Διαβάστε περισσότερα

Ανάκτηση Πληροφορίας (Information Retrieval IR)

Ανάκτηση Πληροφορίας (Information Retrieval IR) Ανάκτηση Πληροφορίας (Information Retrieval IR) Πανεπιστήµιο Θεσσαλίας Πολυτεχνική Σχολή Τµήµα Μηχ. Η/Υ, Τηλ/νιών & ικτύων Ακαδηµαϊκό Έτος 2005-2006 ιδακτικό βοήθηµα 1 Καλύπτει το 60% του αντικειµένου

Διαβάστε περισσότερα

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο Το περιβάλλον εργασίας Ανοίγοντας την Ελληνική Έκδοση του FrontPage, για πρώτη φορά, η εικόνα που θα συναντήσουμε είναι αυτή της Εικόνας 1 με τα Μενού Εντολών και τη Γραμμή Εργαλείων, στο πάνω μέρος της

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο 2016-2017 Υποχρεωτική εργασία Τα τελευταία χρόνια, λόγω της τεράστιας αύξησης της ποσότητας της πληροφορίας που έχουμε

Διαβάστε περισσότερα

Οντολογία για την περιγραφή των προσωπικοτήτων της Σάμου, την κατηγοριοποίηση και τις σχέσεις τους

Οντολογία για την περιγραφή των προσωπικοτήτων της Σάμου, την κατηγοριοποίηση και τις σχέσεις τους Οντολογία για την περιγραφή των προσωπικοτήτων της Σάμου, την κατηγοριοποίηση και τις σχέσεις τους Επιμέλεια: Καρανικολάου Θεοδώρα Επιβλέπων καθηγητής: Δενδρινός Μάρκος Αθήνα, 2017 Σκοπός Στόχος της πτυχιακής

Διαβάστε περισσότερα

World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών

World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών Περιεχόµενα World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών Εισαγωγή Ιστορική Αναδροµή Το ιαδίκτυο και το WWW Υπερκείµενο Εντοπισµός πληροφοριών στο WWW Search Engines Portals Unicode Java Plug-Ins 1 2

Διαβάστε περισσότερα

Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0

Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0 Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0 Πνευματικά Δικαιώματα 2007 Ίδρυμα ECDL (ECDL Foundation www.ecdl.org) Όλα τα δικαιώματα είναι κατοχυρωμένα. Κανένα μέρος αυτού του εγγράφου δεν μπορεί να αναπαραχθεί

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Εισαγωγή ΣΔΒΔ Σύνολο από προγράµµατα για τη διαχείριση της ΒΔ Αρχεία ευρετηρίου Κατάλογος ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ Αρχεία δεδοµένων συστήµατος Σύστηµα Βάσεων Δεδοµένων (ΣΒΔ)

Διαβάστε περισσότερα

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ Draft version Θεσσαλονίκη, Ιούλιος 2016 ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 4 1. ΓΕΝΙΚΑ... 5 1.1. Πρόσβαση... 5 1.2. Χρήστες... 5 2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ ΗΜΑ... 6 2.1.

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Βάσεις εδοµένων Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης v.vescoukis@cs.ntua.gr ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ Συστήµατα ιαχείρισης Βάσεων

Διαβάστε περισσότερα

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Μεταπτυχιακό Δίπλωμα Ειδίκευσης Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές Δρ. Κακαρόντζας Γεώργιος Επίκουρος Καθηγητής Τμ. Μηχανικών Πληροφορικής Τ.Ε. Μηχανική Λογισμικού για Διαδικτυακές

Διαβάστε περισσότερα

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Πτυχιιακή Εργασίία Φοιτητής: Δημήτριος Παπαοικονόμου ΑΜ: 36712

Διαβάστε περισσότερα

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA Διαδικτυακές Εφαρμογές Ενότητα 1: JPA Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Βάσεις Δεδομένων (Using Databases)

Βάσεις Δεδομένων (Using Databases) Βάσεις (Using Databases) Σεπτέμβριος 2017 Έκδοση 6.0 PEOPLECERT Ελλάς A.E - Φορέας Πιστοποίησης Ανθρώπινου Δυναμικού Κοραή 3, 105 64 Αθήνα, Τηλ.: 210 372 9100, Fax: 210 372 9101, e-mail: info@peoplecert.org,

Διαβάστε περισσότερα

Αντικειµενοστραφής Προγραµµατισµός

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

ιαχείριση Γνώσης σε Ενδοεπιχειρισιακά ίκτυα και το ιαδίκτυο (ΗΥ-566)

ιαχείριση Γνώσης σε Ενδοεπιχειρισιακά ίκτυα και το ιαδίκτυο (ΗΥ-566) ιαχείριση Γνώσης σε Ενδοεπιχειρισιακά ίκτυα και το ιαδίκτυο (ΗΥ-566) Άσκηση 3 - Αναφορά "Κατασκευή Οντολογίας σε DAML+OIL για την Περιγραφή του Παραδείγµατος που εκφράστηκε σε RDFS στην Άσκηση 2" Γιαννακόπουλος

Διαβάστε περισσότερα

Διασύνδεση και Άνοιγμα Δεδομένων του Α.Π.Θ. Καραογλάνογλου Κωνσταντίνος Μονάδα Σημασιολογικού Ιστού Α.Π.Θ 18/3/2014

Διασύνδεση και Άνοιγμα Δεδομένων του Α.Π.Θ. Καραογλάνογλου Κωνσταντίνος Μονάδα Σημασιολογικού Ιστού Α.Π.Θ 18/3/2014 Διασύνδεση και Άνοιγμα Δεδομένων του Α.Π.Θ. Καραογλάνογλου Κωνσταντίνος Μονάδα Σημασιολογικού Ιστού Α.Π.Θ 18/3/2014 Ανοικτά και Συνδεδεμένα Δεδομένα Ανοικτά Δεδομένα Πληροφορίες, δημόσιες ή άλλες, στις

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Περιεχόμενα. Κατάλογος εικόνων 13. Πρόλογος 15. 1 Το όραμα του Σημασιολογικού Ιστού 19

Περιεχόμενα. Κατάλογος εικόνων 13. Πρόλογος 15. 1 Το όραμα του Σημασιολογικού Ιστού 19 Περιεχόμενα Κατάλογος εικόνων 13 Πρόλογος 15 1 Το όραμα του Σημασιολογικού Ιστού 19 1.1 Ο σημερινός Ιστός 19 1.2 Από το σημερινό Ιστό στο Σημασιολογικό Ιστό: παραδείγματα 22 1.3 Τεχνολογίες Σημασιολογικού

Διαβάστε περισσότερα

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

Διαβάστε περισσότερα

Διαδικτυακές Υπηρεσίες Αναζήτησης, Απεικόνισης και Απευθείας Πρόσβασης στα δεδομένα ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Έκδοση 0.1.

Διαδικτυακές Υπηρεσίες Αναζήτησης, Απεικόνισης και Απευθείας Πρόσβασης στα δεδομένα ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Έκδοση 0.1. Κομβικό Σημείο Επαφής Υπουργείου Εσωτερικών Διαδικτυακές Υπηρεσίες Αναζήτησης, Απεικόνισης και Απευθείας Πρόσβασης στα δεδομένα ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ Έκδοση 0.1. Νοέμβρης 2014 Περιεχόμενα 1. ΕΙΣΑΓΩΓΗ... 2 2.

Διαβάστε περισσότερα

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ TRAVIS-V1-2012 TRAVIS Λογισμικό Διαχείρισης Παραβάσεων Φωτοεπισήμανσης Το σύστημα διαχείρισης παραβάσεων φωτοεπισήμανσης

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ Κεφάλαιο 2. Το περιβάλλον του παγκόσμιου Ιστού Επιμέλεια: Καραγιάννης Σπύρος Καθηγητής ΠΕ19 Πλεονεκτήματα παγκόσμιου Ιστού Εξυπηρετητής Ιστού & Ιστοσελίδες Κύριες

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ Δρ. Κουζαπάς Δημήτριος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Μηχανές Αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες

Διαβάστε περισσότερα

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων Βάσεις εδοµένων 2003-2004 Ευαγγελία Πιτουρά 1 ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Επεξεργασία Ερωτήσεων Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL)

Διαβάστε περισσότερα

ΟΝΤΟΛΟΓΙΕΣ, ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΔΙΑΚΥΒΕΡΝΗΣΗΣ

ΟΝΤΟΛΟΓΙΕΣ, ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΔΙΑΚΥΒΕΡΝΗΣΗΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΟΝΤΟΛΟΓΙΕΣ, ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΔΙΑΚΥΒΕΡΝΗΣΗΣ ΣΩΤΗΡΙΟΣ ΓΟΥΔΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ Κ.ΤΑΡΑΜΠΑΝΗΣ ΕΞΕΤΑΣΤΗΣ

Διαβάστε περισσότερα

Τίτλος Πακέτου Certified Computer Expert-ACTA

Τίτλος Πακέτου Certified Computer Expert-ACTA Κωδικός Πακέτου ACTA - CCE - 002 Τίτλος Πακέτου Certified Computer Expert-ACTA Εκπαιδευτικές Ενότητες Επεξεργασία Κειμένου - Word Δημιουργία Εγγράφου Προχωρημένες τεχνικές επεξεργασίας κειμένου & αρχείων

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΥΠΟΣΥΣΤΗΜΑΤΟΣ ΑΓΡΟΠΕΡΙΒΑΛΛΟΝΤΙΚΩΝ ΕΝΙΣΧΥΣΕΩΝ. Μέτρο 2.2.1

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΥΠΟΣΥΣΤΗΜΑΤΟΣ ΑΓΡΟΠΕΡΙΒΑΛΛΟΝΤΙΚΩΝ ΕΝΙΣΧΥΣΕΩΝ. Μέτρο 2.2.1 On line ΔΗΛΩΣΗ ΕΦΑΡΜΟΓΗΣ Μέτρο 2.2.1 ΙΑΝΟΥΑΡΙΟΣ 2017 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1 ΓΕΝΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ... 3 1.1 Υποχρεωτικά Πεδία... 3 1.2 Βοηθητική Λίστα Τιμών (drop down list)... 3 1.3 Αναζήτηση... 3 1.3.1

Διαβάστε περισσότερα

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL:  στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση Αναζήτηση στον Ιστό Χρήση μιας μηχανής αναζήτησης Επιλογή συγκεκριμένης μηχανής αναζήτησης Είναι συχνό το φαινόμενο να θέλει ο χρήστης να εντοπίσει πληροφορίες στο διαδίκτυο και να μην ξέρει που να κοιτάξει.

Διαβάστε περισσότερα

ΗΛΕΚΤΡΟΝΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΝΗΟΛΟΓΗΣΗΣ ΠΛΟΙΩΝ

ΗΛΕΚΤΡΟΝΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΝΗΟΛΟΓΗΣΗΣ ΠΛΟΙΩΝ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΝΑΥΤΙΛΙΑΣ ΚΑΙ ΑΙΓΑΙΟΥ ΗΛΕΚΤΡΟΝΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΝΗΟΛΟΓΗΣΗΣ ΠΛΟΙΩΝ «Ηλεκτρονική Υποβολή & Παρακολούθηση της Ενοποιημένης Αίτησης σχετικά με τη Νηολόγηση Πλοίου στην Ελληνική Σημαία

Διαβάστε περισσότερα

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας Περιεχόμενα Κεφάλαιο 1 Microsoft Excel 2010... 7 Κεφάλαιο 2 Η δομή ενός φύλλου εργασίας... 19 Κεφάλαιο 3 ημιουργία νέου βιβλίου εργασίας και καταχώριση δεδομένων... 24 Κεφάλαιο 4 Συμβουλές για την καταχώριση

Διαβάστε περισσότερα

ΘΕΜΑ 1 Τεχνικές Εξαγωγής Συµφράσεων από εδοµένα Κειµένου και Πειραµατική Αξιολόγηση

ΘΕΜΑ 1 Τεχνικές Εξαγωγής Συµφράσεων από εδοµένα Κειµένου και Πειραµατική Αξιολόγηση ΘΕΜΑ 1 Τεχνικές Εξαγωγής Συµφράσεων από εδοµένα Κειµένου και Πειραµατική Αξιολόγηση Οι συµφράσεις είναι ακολουθίες όρων οι οποίοι συνεµφανίζονται σε κείµενο µε µεγαλύτερη συχνότητα από εκείνη της εµφάνισης

Διαβάστε περισσότερα

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer Protocol)

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία FTP (File Transfer Protocol) Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας-Βιβλιοθηκονοµίας Κέρκυρα ίκτυα - Internet 2 Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) ΜηχανέςΑναζήτησηςστοWeb Ηλεκτρονική Αλληλογραφία (E-mail) Υπηρεσία

Διαβάστε περισσότερα

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0 Εθνικό & Καποδιστριακό Πανεπιστήµιο Αθηνών Τµήµα Μεθοδολογίας, Ιστορίας & Θεωρίας της Επιστήµης ιαπανεπιστηµιακό Πρόγραµµα Μεταπτυχιακών Σπουδών «Βασική και Εφαρµοσµένη Γνωσιακή Επιστήµη» Σύντοµο Εγχειρίδιο

Διαβάστε περισσότερα

ECDL Module 5 Χρήση Βάσεων εδοµένων Εξεταστέα Ύλη, έκδοση 5.0 (Syllabus Version 5.0)

ECDL Module 5 Χρήση Βάσεων εδοµένων Εξεταστέα Ύλη, έκδοση 5.0 (Syllabus Version 5.0) ECDL Module 5 Χρήση Βάσεων εδοµένων Εξεταστέα Ύλη, έκδοση 5.0 (Syllabus Version 5.0) (Module 5 Using Databases) Συνολική ιάρκεια: Προτεινόµενο * Χρονοδιάγραµµα Εκπαίδευσης 10-16 (δέκα έως δεκαέξι) ώρες

Διαβάστε περισσότερα

GOOGLE DRIVE & WEB 2.0

GOOGLE DRIVE & WEB 2.0 GOOGLE DRIVE & WEB 2.0 ΚΕ.ΠΛΗ.ΝΕ.Τ ΑΡΤΑΣ ΑΠΟΣΤΟΛΟΣ ΤΕΡΖΟΓΛΟΥ ΤΙ ΕΊΝΑΙ ΤΟ GOOGLE DRIVE Διαδικτυακός χώρος αποθήκευσης, διαμοίρασης και συγχρονισμού αρχείων Χώρος συνεργατικής επεξεργασίας εγγράφων, υπολογιστικών

Διαβάστε περισσότερα

Υποστήριξη στη ιαχείριση Γνώσης

Υποστήριξη στη ιαχείριση Γνώσης Υποστήριξη στη ιαχείριση Γνώσης Νίκος Καρακαπιλίδης Industrial Management & Information Systems Lab MEAD, University of Patras, Greece nikos@mech.upatras.gr Βασικές έννοιες ιάρθρωση ενότητας Γνώση και

Διαβάστε περισσότερα

Εθνική Υποδομή ΓΕωχωρικών Πληροφοριών

Εθνική Υποδομή ΓΕωχωρικών Πληροφοριών Εθνική Υποδομή ΓΕωχωρικών Πληροφοριών Οργανισμός Κτηματολογίου & Χαρτογραφήσεων Ελλάδας Διαδικτυακές Υπηρεσίες Αναζήτησης και Απεικόνισης ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ Διεύθυνση Γεωπληροφορικής Δεκέμβριος 2012 Περιεχόμενα

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ MODULE: ΠΡΟΚΗΡΥΞΕΙΣ

ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ MODULE: ΠΡΟΚΗΡΥΞΕΙΣ ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ MODULE: ΠΡΟΚΗΡΥΞΕΙΣ VERSION CMS 4.0 ΕΚ ΟΣΗ ΕΓΧΕΙΡΙ ΙΟΥ 4-2010 Το παρόν εγχειρίδιο διατίθεται µαζί µε την πλατφόρµα ηλεκτρονικού επιχειρείν altab2x και η χρήση του προορίζεται για τους

Διαβάστε περισσότερα

Διαγράμματα Κλάσεων στη Σχεδίαση

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

Διαβάστε περισσότερα

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής Εισαγωγή στις Βάσεις Δεδομένων Εισαγωγή στις Βάσεις Δεδομένων Ορισμός Βάσης Δεδομένων Σύστημα Διαχείρισης Βάσης Δεδομένων ΣΔΒΔ (DBMS) Χαρακτηριστικά προσέγγισης συστημάτων αρχειοθέτησης Χαρακτηριστικά

Διαβάστε περισσότερα

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr ..χτίζουµε την ιστοσελίδα σας στο Internet www.kalliergea.gr Λάουρα Π. Καζακράντε «Καλλιεργαία» Πληροφορική - Internet - ιαφήµιση - Μεταφράσεις Τηλ.: 211 0104925, 695 6118589 Email: info@kalliergea.gr

Διαβάστε περισσότερα

01 SOLUTIONS HELLAS Ε.Π.Ε. Χελμού 20, 151 25 Μαρούσι Αττικής Τηλ 215 55 00 880 FAX 215 55 00 883. Ηλεκτρονικό Πρωτόκολλο & Διακίνηση Εγγράφων

01 SOLUTIONS HELLAS Ε.Π.Ε. Χελμού 20, 151 25 Μαρούσι Αττικής Τηλ 215 55 00 880 FAX 215 55 00 883. Ηλεκτρονικό Πρωτόκολλο & Διακίνηση Εγγράφων 01 SOLUTIONS HELLAS Ε.Π.Ε. Χελμού 20, 151 25 Μαρούσι Αττικής Τηλ 215 55 00 880 FAX 215 55 00 883 e Prtcl-01 Ηλεκτρονικό Πρωτόκολλο & Διακίνηση Εγγράφων Συνοπτική Παρουσίαση Το σύστημα e Prtcl-01 Το σύστημα

Διαβάστε περισσότερα

Εργαστήριο Σημασιολογικού Ιστού

Εργαστήριο Σημασιολογικού Ιστού Εργαστήριο Σημασιολογικού Ιστού Ενότητα 8: Εισαγωγή στη SPARQL Βασική Χρήση Μ.Στεφανιδάκης 3-5-2015. Η γλώσσα ερωτημάτων SPARQL Ερωτήσεις (και ενημερώσεις) σε σετ δεδομένων RDF Και σε δεδομένα άλλης μορφής

Διαβάστε περισσότερα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

Διαβάστε περισσότερα

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr Εγχειρίδιο Χρήσης Μελών ΔΕΠ Αναζήτηση Δημόσιου Περιεχομένου Η διεύθυνση ιστού της νεάς πλατφόρμας διαχείρισης βιντεοδιαλέξεων Δήλος είναι: http://delos.uoa.gr

Διαβάστε περισσότερα

ΣΥΝΤΟΜΟΣ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΔΙΑΚΙΝΗΣΗΣ ΕΓΓΡΑΦΩΝ (ΣΗΔΕ) ΤΟΥ ΥΠΟΥΡΓΕΙΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΚΑΙ ΕΝΕΡΓΕΙΑΣ

ΣΥΝΤΟΜΟΣ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΔΙΑΚΙΝΗΣΗΣ ΕΓΓΡΑΦΩΝ (ΣΗΔΕ) ΤΟΥ ΥΠΟΥΡΓΕΙΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΚΑΙ ΕΝΕΡΓΕΙΑΣ ΣΥΝΤΟΜΟΣ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΔΙΑΚΙΝΗΣΗΣ ΕΓΓΡΑΦΩΝ (ΣΗΔΕ) ΤΟΥ ΥΠΟΥΡΓΕΙΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΚΑΙ ΕΝΕΡΓΕΙΑΣ Yπηρεσία υποστήριξης χρηστών τυ Συστήματος Ηλεκτρονικής Διακίνησης Εγγράφων (helpdesk):

Διαβάστε περισσότερα

Διαχείριση Αξιόγραφων

Διαχείριση Αξιόγραφων Διαχείριση Αξιόγραφων 1 Το συγκεκριμένο εγχειρίδιο δημιουργήθηκε για να βοηθήσει την κατανόηση της διαδικασίας Διαχείρισης Αξιόγραφων στην εφαρμογή extra Λογιστική Διαχείριση. Παρακάτω προτείνεται μια

Διαβάστε περισσότερα

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1 ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Ηλεκτρονικές Υπηρεσίες Υποβολή Αναλώσιµων Υλικών Σελίδα 1 Πίνακας περιεχομένων 1.1 Συμβατότητα Browser... 3 1.2 Διεύθυνση πρόσβασης... 3 2 Υποβολή Αναλώσιμων Υλικών... 4 2.1 Σύνδεση με

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Μηχανές αναζήτησης ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Μηχανές αναζήτησης Στόχοι 1 Να εξηγήσουμε για ποιον λόγο μας είναι απαραίτητες οι μηχανές αναζήτησης στον Παγκόσμιο Ιστό. Να περιγράψουμε κάποιους από τους

Διαβάστε περισσότερα

Posting File. D i. tf key1 [position1 position2 ] D j tf key2... D l.. tf keyl

Posting File. D i. tf key1 [position1 position2 ] D j tf key2... D l.. tf keyl ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΗΥ463 Συστήµατα Ανάκτησης Πληροφοριών Εργασία: Ανεστραµµένο Ευρετήριο Εισαγωγή Σκοπός της εργασίας είναι η δηµιουργία ενός ανεστραµµένου ευρετηρίου για τη µηχανή αναζήτησης Μίτος, το

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS WWW.OPENSMS.GR

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS WWW.OPENSMS.GR ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΛΑΤΦΟΡΜΑΣ OPENSMS WWW.OPENSMS.GR Τηλέφωνο: 2810-211111 Διαδικασία εισόδου στο opensms Η πρόσβαση στην πλατφόρμα του opensms πραγματοποιείται με την εισαγωγή του Ονόματος χρήστη και του

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΥΜΠΛΗΡΩΜΑΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ ΛΟΓΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ (III) ΙΖΑΜΠΩ ΚΑΡΑΛΗ ΑΘΗΝΑ 2008 Σύγχρονεςανάγκες για αναπαράσταση γνώσης

Διαβάστε περισσότερα