ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη Εφαρμογής Συνεργατικών Συστάσεων Βιβλίων Βασισμένη σε Οντολογίες για Κινητές Συσκευές Δημοπούλου Μερκουρία ΑΜ 4710 Επιβλέπων Καθηγητής: κ. Γαροφαλάκης Ιωάννης Οκτώβριος 2016
ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη Εφαρμογής Συνεργατικών Συστάσεων Βιβλίων Βασισμένη σε Οντολογίες για Κινητές Συσκευές Δημοπούλου Μερκουρία ΑΜ 4710 Επιβλέπων Καθηγητής: κ. Γαροφαλάκης Ιωάννης Οκτώβριος 2016
Ευχαριστίες Καταρχήν θα ήθελα να ευχαριστήσω θερμά τον καθηγητή και πρόεδρο του τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών κ.γαροφαλάκη Ιωάννη για την ανάθεση και επίβλεψη της παρούσας διπλωματικής εργασίας. Επίσης ευχαριστώ ιδιαίτερα την υποψήφια διδάκτωρ Λάγιου Ειρήνη για την καθοδήγηση και την εξαιρετική συνεργασία που είχαμε καθ όλη τη διάρκεια υλοποίησης της εργασίας. Τέλος οφειλω ενα μεγάλο ευχαριστώ στην οικογένεια μου για τη στήριξη και συμπαράσταση που μου προσέφερε σε όλο το διάστημα των σπουδων μου. i
Περίληψη Στην παρούσα εργασία, αναπτύξαμε την εφαρμογή «MyBookApp» για Android κινητές συσκευές. Η εφαρμογή αυτή προτείνει βιβλία στους χρήστες της βασιζόμενη στις οντολογίες, καθώς όλη η πληροφορία που διαχειρίζεται αποτελεί μια οντολογία. Οι οντολογίες είναι μία από τις κύριες τεχνολογίες του Σημασιολογικού Ιστού, ο οποίος χαρακτηρίζεται ως η εξέλιξη του σημερινού Παγκόσμιου Ιστού. Συνεπώς έγινε μια μελέτη των βασικών αρχών και της αρχιτεκτονικής του και αναλύθηκαν η έννοια και τα συστατικά των οντολογιών, τονίζοντας τα πλεονεκτήματα της χρήσης τους. Οσον άφορα τις προτάσεις βιβλίων, αυτές προκύπτουν από τις θεματικές κατηγορίες που προτιμά ο χρήστης, τα χαρακτηριστικά των βιβλίων (βαθμολογία, δημοτικότητα κτλ) αλλά και μελετώντας τη συμπεριφορά άλλων χρηστών με τις ίδιες προτιμήσεις. Ο αλγόριθμος που υλοποιεί, στηρίζεται στα Συστήματα Συστάσεων (Recommender Systems) (ΣΣ) και συγκεκριμένα στα Συνεργατικά Συστήματα Συστάσεων (Collaborative Filtering Recommender Systems). Επομένως, παρουσιάζονται τα ΣΣ και οι διάφορες τεχνικές που χρησιμοποιούν. Σημαντικό επίσης κομμάτι της εργασίας αποτελούν τα πλεονεκτήματα της ενσωμάτωσης των τεχνολογιών του Σημασιολογικού Ιστού στα ΣΣ. Ακολουθεί μια παρουσίαση της εφαρμογής και των λειτουργιών της. Τέλος, προκύπτουν τα συμπεράσματα από τα σενάρια χρήσης της και προτείνονται μελλοντικές επεκτάσεις που θα μπορούσαν να υλοποιηθούν. Λέξεις κλειδιά: Σημασιολογικός Ιστός, Οντολογίες, Συστήματα Συστάσεων, Συνεργατικά Συστήματα Συστάσεων, Android εφαρμογή, Μοντέλο Πελάτη-Διακομιστή, Servlet, PHP/Java bridge iii
Abstract In this thesis we developed the android mobile application "MyBookApp". The application suggests books to users and is based on ontologies, since the information it manages constitutes an ontology. Ontologies are one of the basic technologies of the Semantic Web, which is described as an extension of the today s Web. Therefore, a study for its principles and architecture was conducted and also the concept and the components of ontologies were analyzed, emphasizing the advantages of their use. As regards to the book suggestions set forth to the application users, they are derived from the genres preferred by the user, the books characteristics (rating, popularity etc.) and from a study of the behavior of other users with similar preferences. The algorithm that is implemented is based on Recommender Systems (RS) and specifically on Collaborative Filtering (CF) RS. Hence RS and the various techniques they use are presented. Moreover, this analysis constitutes the advantages of the integration of Semantic Web technologies in the RS. A presentation of the application and the functions it performs comes afterwards. Finally, the conclusions arising from the use cases are presented and future extensions that could be implemented are proposed. Keywords: Semantic Web, Ontologies, Recommender Systems, Collaborative filtering Recommender Systems, Android application, Client Server model, Servlet, PHP/Java bridge v
Περιεχόμενα Ευχαριστίες Περίληψη Abstract Κατάλογος Σχημάτων/Εικόνων Κατάλογος Πινάκων i iii v ix xi 1 Εισαγωγή 1 1.1 Αντικείμενο διπλωματικής εργασίας.................... 1 1.2 Διάρθρωση κειμένου διπλωματικής εργασίας............... 2 2 Σημασιολογικός Ιστός και Συστήματα Συστάσεων 3 2.1 Σημασιολογικός Ιστός........................... 3 2.1.1 Ιστορική αναδρομή......................... 3 2.1.2 Τι είναι Σημασιολογικός Ιστός.................. 4 2.1.3 Τεχνολογίες Σημασιολογικού Ιστού............... 4 2.1.4 Αρχιτεκτονική του Σημασιολογικού Ιστού............ 5 2.2 Οντολογίες................................. 8 2.2.1 Ορισμός οντολογίας........................ 8 2.2.2 Τα οφέλη της χρήσης των οντολογιών.............. 9 2.2.3 Συστατικά μιας οντολογίας.................... 9 2.2.4 Γλώσσα Οντολογιών Ιστού OWL................ 10 2.2.5 Γλώσσα Ερωτημάτων SPARQL.................. 12 2.2.6 Εργαλείο ανάπτυξης οντολογιών Protégé............ 12 2.2.7 Εργαλεία Συμπερασμού Οντολογιών............... 12 2.3 Συστήματα Συστάσεων.......................... 13 2.3.1 Ιστορική αναδρομή......................... 14 2.3.2 Ταξινόμηση Συστημάτων Συστάσεων............... 15 2.3.3 Γνωστά Συστημάτων Συστάσεων................. 18 2.3.4 Συστημάτα Συστάσεων και Σημασιολογικός Ιστός........ 19 3 Υλοποίηση εφαρμογής 21 3.1 Το λειτουργικό σύστημα Android.................... 21 3.2 Αρχιτεκτονική του συστήματος...................... 22 3.3 Server side................................. 22 3.3.1 Δημιουργία οντολογίας...................... 23 vii
viii ΠΕΡΙΕΧΟΜΕΝΑ 3.3.2 Servlet............................... 29 3.3.2.1 Επεξεργασία της οντολογίας.............. 30 3.3.2.2 Ανάπτυξη αλγορίθμου για προτάσεις βιβλίων..... 31 3.3.3 PHP files............................. 32 3.3.4 Η τεχνολογία PHP/Java Bridge................. 33 3.4 Client side................................. 34 3.5 Ανασκόπηση εφαρμογής.......................... 35 4 Επίλογος 49 4.1 Σύνοψη και συμπεράσματα........................ 49 4.2 Μελλοντικές επεκτάσεις.......................... 50 Βιβλιογραφία 51
Κατάλογος Σχημάτων/Εικόνων 2.1 Η βασική αρχιτεκτονική του Σημασιολογικου Ιστού........... 5 2.2 Τέσσερις εκδοχές της αρχιτεκτονικής του Σημασιολογικού Ιστού... 6 3.1 Η αρχιτεκτονική του συστήματος..................... 22 3.2 Server-side του συστήματος........................ 23 3.3 Οι κλάσεις της οντολογίας όπως παρουσιάζονται στο γραφικό περιβάλλον του Protégé 3.5............................ 24 3.4 Οπτικοποίηση των κλάσεων της οντολογίας μέσω του plugin OWLViz. 25 3.5 Οι ιδιότητες της οντολογίας όπως παρουσιάζονται στο γραφικό περιβάλλον του Protégé 3.5.......................... 25 3.6 Οπτικοποίηση της οντολογίας μέσω του plugin VOWL......... 29 3.7 Client-side του συστήματος....................... 34 3.8 Βασικό διάγραμμα ροής πλοήγησης των δραστηριοτήτων της εφαρμογής 36 3.9 Γραφικό περιβάλλον της δραστηριότητας MainActivity, η οποία ενεργοποιείται κατά την εκκίνηση της εφαρμογής............... 37 3.10 Γραφικό περιβάλλον της δραστηριότητας MainActivity για την περίπτωση εισαγωγής λανθασμένων στοιχείων ταυτοποίησης.......... 37 3.11 Γραφικό περιβάλλον της δραστηριότητας HomeActivity η οποία αποτελεί την αρχική σελίδα της εφαρμογής................... 38 3.12 Το sliding menu της εφαρμογής..................... 39 3.13 Γραφικό περιβάλλον της αρχικής σελίδας η οποία διαθέτει 4 λίστες βιβλίων για προβολή............................. 40 3.14 Γραφικό περιβάλλον της δραστηριότητας BookListActivity, η οποία περιέχει σε μορφή λίστας τα βιβλία που ανήκουν στην κατηγορία που επιλέχθηκε.................................. 41 3.15 Γραφικό περιβάλλον της δραστηριότητας BookActivity, η οποία παρουσιάζει τις πληροφορίες ενός βιβλίου.................... 43 3.16 Παραδείγματα διαχείρησης ενός βιβλίου στη reading list του χρήστη.. 44 3.17 Παράδειγματα διαχείρησης της βαθμολογίας ενός βιβλίου........ 45 3.18 Γραφικό περιβάλλον της δραστηριότητας CategoryActivity, η οποία περιέχει τις κατηγορίες που έχει δηλώσει ο χρήστης ότι προτιμά..... 46 3.19 Παράδειγματα διαχείρισης των θεματικών κατηγοριών των βιβλίων... 47 3.20 Γραφικό περιβάλλον της δραστηριότητας InfoActivity, η οποία περιέχει γενικές πληροφορίες της εφαρμογής................... 48 ix
Κατάλογος Πινάκων 3.1 Ιδιότητες κλάσης book.......................... 26 3.2 Ιδιότητες κλάσης user........................... 27 3.3 Ιδιότητες κλάσης author......................... 27 3.4 Ιδιότητες κλάσης category........................ 28 3.5 Ιδιότητες κλάσης publisher........................ 28 xi
Κεφάλαιο 1 Εισαγωγή 1.1 Αντικείμενο διπλωματικής εργασίας Σήμερα, η ραγδαία εξέλιξη διαδικτύου και η ταχύτητα με την οποία εξαπλώνεται ο όγκος πληροφορίας που διαθέτει έχουν οδηγήσει στο φαινόμενο της υπερπληροφόρησης. Μέσα σε αυτόν τον όγκο πληροφοριών οι χρήστες δυσκολεύονται ολοένα και περισσότερο να ξεχωρίσουν το περιεχόμενο που τους ενδιαφέρει γρήγορα και αποτελεσματικά. Ετσι δημιουργήθηκε η ανάγκη για την ανάπτυξη των Συστημάτων Συστάσεων. Τέτοια συστήματα χρησιμοποιούνται σε διάφορους τομείς όπου είναι απαραίτητο το φιλτράρισμα της πληροφορίας. Τις περισσότερες φορές χρησιμοποιούνται σε περιπτώσεις εύρεσης προιόντων ή υπηρεσιών που ανταποκρίνονται στις ανάγκες της ψυχαγωγίας όπως βιβλία, μουσική, νέα, ταινίες κ.α. Πολλές είναι οι φορές που η διαδικασία αυτή γίνεται μέσω των κινητών τηλεφώνων, καθώς αποτελούν αναπόσπαστο πλέον κομμάτι της καθημερινότητας. Με την ευκολία της χρήσης τους και την άμεση πρόσβασή τους στο διαδίκτυο μπορεί οποιοσδήποτε χρήστης να είναι διαρκώς συνδεδεμένος και να αναζητά πληροφορίες ανα πάσα στιγμή. Ετσι δημιουργείται η ανάγκη για ανάπτυξη εφαρμογών για κινητά τηλέφωνα που υλοποιούν συστήματα προτάσεων για προιόντα η υπηρεσίες ψυγαχωγίας στους χρήστες τους. Από την άλλη πλευρά, οι οντολογίες αποτελούν ένα νέο ευέλικτο εργαλείο αναπαράστασης της γνώσης που εκμεταλλεύεται τη σημασιολογία των δεδομένων. Η πληροφορία γίνεται κατανοήσιμη και επεξεργάσιμη από ανθρώπους αλλά και υπολογιστές, έτσι ώστε να δημιουργηθούν πιο αποτελεσματικοί τρόποι επεξεργασίας της. Οπως είναι αναμενόμενο, πολλοί τομείς της επιστήμης των υπολογιστών έχουν επωφεληθεί από τις δυνατότητες του. Τα Συστήματα Συστάσεων αποτελούν έναν από αυτούς, τα οποία εφαρμόζοντας τις τεχνικές του μπορούν να βελτιώσουν την ποιότητα των συστάσεων που παράγουν. Σκοπός της παρούσας διπλωματικής εργασίας είναι η ανάδειξη της χρησιμότητας και των πλεονεκτημάτων που διαθέτουν οι οντολογίες σε συνδυασμό με τα Συστημάτα Συστάσεων. Η εργασία αποτελεί την υλοποίηση της εφαρμογής «MyBookApp» για Android κινητά τηλέφωνα, η οποία προτείνει βιβλία στους χρήστες της, χρησιμοποιώντας τεχνολογίες του Σημασιολογικού Ιστού και συγκεκριμένα τις οντολογίες. Ολη η πληροφορία που διαχειρίζεται το σύστημα της εφαρμογής είναι αποθηκευμένη σε μια οντολογία. Επίσης βασίζεται στα Συνεργατικά Συστήματα Συστάσεων, τα οποία παράγουν εξατομικευμένες προτάσεις στηριζόμενα στη γνώμη και τις προτιμήσεις των μελών της, καθώς οι προτάσεις βιβλίων που εξάγει γίνονται ανάλογα με τα ενδιαφέροντα του χρήστη αλλά και με ομοιότητες ενδιαφερόντων που έχει με άλλους χρήστες. Συ- 1
2 ΚΕΦΑΛΑΙΟ 1. ΕΙΣΑΓΩΓΗ νεπώς, το κίνητρο συγγραφής της παρούσας μεταπτυχιακής εργασίας σε συνδυασμό με την υλοποίησης της εφαρμογής «MyBookApp», είναι η ανάγκη που έχουν οι χρήστες για ευκολότερη και ταχύτερη εύρεση βιβλίων που να ανταποκρίνονται στο προσωπικό τους γούστο. 1.2 Διάρθρωση κειμένου διπλωματικής εργασίας Το κείμενο της παρούσας εργασίας διαθέτει την εξής δομή: Στο Κεφάλαιο 1 γίνεται μια εισαγωγή στο θέμα της διπλωματικής εργασίας όπου περιγράφεται το αντικείμενο της, τα κίνητρα και ο σκοπός που οδήγησαν στην συγγραφή και υλοποίηση της. Στο Κεφάλαιο 2 γίνεται μία συνοπτική και περιεκτική αναφορά στο όραμα, τις βασικές αρχές και την αρχιτεκτονική του Σημασιολογικού Ιστού. Επίσης ορίζεται η έννοια της οντολογίας και αναλύονται τα οφέλη και τα συστατικά της. Ακολουθεί μία σύντομη περιγραφή των γλωσσών OWL και SPARQL και των εργαλείων ανάπτυξης και συμπερασμού οντολογιών. Το κεφάλαιο συνεχίζεται με την ανάλυση των Συστημάτων Συστάσεων και την ταξινόμησή τους. Κλείνοντας γίνεται μια αναφορά στα πλεονεκτήματα της ενσωμάτωσης των οντολογιών στα Συστήματα Συστάσεων. Το Κεφάλαιο 3 αφορά την υλοποίηση της εφαρμογής «MyBookApp». Αρχικά γίνεται μια σύντομη αναφορά στο λειτουργικό σύστημα Android. Υστερα παρουσιάζεται η αρχιτεκτονική του συστήματος και γίνεται μια επισκόπηση των τεχνολογιών που χρησιμοποιήθηκαν. Αναλύονται τα στάδια της δημιουργίας της οντολογίας και περιγράφεται πως λειτουργεί ο αλγόριθμος που υλοποιεί τις προτάσεις των βιβλίων. Ακολουθεί η ανασκόπηση της εφαρμογής με την παρουσίαση του γραφικού της περιβάλλοντος, συνοδευόμενη από την επεξήγηση των λειτουργιών που εκτελεί. Τέλος, στο Κεφάλαιο 4 αναφέρονται τα συμπεράσματα της εργασιας καθώς και μελλοντικές επεκτάσεις που θα μπορούσαν να υλοποιηθούν.
Κεφάλαιο 2 Σημασιολογικός Ιστός και Συστήματα Συστάσεων 2.1 Σημασιολογικός Ιστός «... Ο Σημασιολογικός Ιστός είναι ένα διαδίκτυο των δεδομένων, κατά κάποιο τρόπο σαν μια παγκόσμια βάση δεδομένων...» - Tim Berners-Lee, Semantic Web Road map [58] Η ιδέα του Σημασιολογικού Ιστού συνελήφθη από τον Tim Berners-Lee και διαδίδεται από την κοινοπραξία World Wide Web (W3C) 1, μια κύρια οργάνωση διεθνών προτύπων για το Παγκόσμιο Ιστό η οποία Ιδρύθηκε και διευθύνεται από τον ίδιο.αποτελεί επέκταση του σημερινού Παγκόσμιου Ιστού. 2.1.1 Ιστορική αναδρομή Ο Παγκόσμιος Ιστός (World Wide Web ή WWW) είναι η πιο σημαντική και δημοφιλής υπηρεσία του διαδικτύου. Η ιδέα για τη δημιουργία του Παγκόσμιου Ιστού συνελήφθη το 1989 από τον Βρετανό Tim Berners-Lee, που εκείνη την εποχή εργαζόταν στον Ευρωπαϊκό Οργανισμό Πυρηνικών Ερευνών (CERN) στην Γενεύη της Ελβετίας. Βασικός του σκοπός ήταν να προσφέρει στους επιστήμονες ένα μέσο προκειμένου να ανταλλάσσουν επιστημονικά δεδομένα και μελέτες παγκοσμίως, μέσω του διαδικτύου. Η επιτυχία του όμως ήταν τόσο μεγάλη, ώστε πολύ γρήγορα ενσωματώθηκε στις υπηρεσίες του διαδικτύου γνωρίζοντας τεράστια απήχηση και μετατράπηκε σε μία από τις μεγαλύτερες - αν όχι η μεγαλύτερη - πηγές πληροφοριών. Η αναζήτηση και διαχείριση πληροφοριών αποτελεί την κυριότερη δραστηριότητα των χρηστών του διαδικτύου, η οποία αρχικά υλοποιούταν με την πλοήγηση μεταξύ υπερσυνδέσμων και με τη χρήση καταλόγων των ιστοσελίδων. Πλέον, ο πιο πετυχημένος και δημοφιλής τρόπος αναζήτησης είναι η χρήση των μηχανών αναζήτησης (search engines) που βασίζονται σε λέξεις κλειδιά. Ωστόσο, παρά τη ραγδαία ανάπτυξη των τεχνολογιών των μηχανών, υπάρχουν συγκεκριμένες δυσκολίες που σχετίζονται με την αποδοτικότητα τους, όπως για παράδειγμα ευαισθησία στο λεξιλόγιο, μικρή ακρίβεια επιστρέφοντας πολλά άσχετα αποτελέσματα, ύπαρξη πολυσημίας 2 και συνωνυμίας στα δεδομένα, πληθώρα επικαλυπτόμενων θεματικά εγγράφων, κ.α. Ακόμα και 1 https://www.w3.org 2 Χρησιμοποιείται η ίδια λέξη για να περιγράψει διαφορετικά αντικείμενα 3
4ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ αν μια αναζήτηση είναι επιτυχής, ο χρήστης είναι αυτός που πρέπει να διατρέξει και να μελετήσει τα έγγραφα για να εξάγει τις συγκεκριμένες πληροφορίες που ψάχνει. Οι παραπάνω δυσκολίες παρουσιάζονται λόγω της έλλειψης κοινής ορολογίας και οργάνωσης στα δεδομένα που διακινούνται και της αδυναμίας των μηχανών να αντιλαμβάνονται τη σημασία των λέξεων. Αν σε όλα αυτά προστεθεί η εκθετική αύξηση του όγκου της πληροφορίας που δημοσιεύεται στον παγκόσμιο ιστό η διαδικασία της αναζήτησης και επεξεργασίας των δεδομένων και καθίσταται χρονοβόρα και επίπονη [15]. Παρά τις έντονες προσπάθειες για βελτίωση και αυτοματοποίηση της συλλογής και της επεξεργασίας της πληροφορίας στο Διαδίκτυο, η πρόοδος που έχει σημειωθεί μέχρι σήμερα στον τομέα αυτό είναι πολύ μικρή. Στο σημείο αυτό έρχεται ο Σημασιολογικός Ιστός (Semantic Web) ο οποίος σύμφωνα με τον εμπνευστή του, Tim Berners-Lee, θα αποτελέσει τη νέα γενιά του διαδικτύου [59]. 2.1.2 Τι είναι Σημασιολογικός Ιστός Ο Σημασιολογικός Ιστός, είναι μια ομάδα μεθόδων και τεχνολογιών που σκοπεύουν να δώσουν τη δυνατότητα στις μηχανές να μπορούν πλέον να επεξεργάζονται καλύτερα τα δεδομένα, τα οποία μέχρι σήμερα απλώς παρουσιάζουν. Ορισμός κατά Tim Berners-Lee [60]: «Ο Σημασιολογικός Ιστός είναι μια επέκταση του σημερινού ιστού όπου η πληροφορία έχει καλά καθορισμένο νόημα, καθιστώντας τη συνεργασία μεταξύ ανθρώπων και υπολογιστών πιο αποτελεσματική» Ο Σημασιολογικός Ιστός, λοιπόν, δεν είναι ένας ξεχωριστός ιστός αλλά εξέλιξη του παγκόσμιου ιστού όπως τον γνωρίζουμε μέχρι σήμερα. Η διαδικτυακή πληροφορία αποκτά συγκεκριμένη μορφή με σαφώς προσδιορισμένη σημασία ώστε να γίνεται κατανοήσιμη και ευκολότερα επεξεργάσιμη από τις μηχανές. Ο απώτερος στόχος του, είναι να επιτρέψει στους υπολογιστές να αναπτύξουν αυτόνομα συστήματα που μπορούν να υποστηρίξουν αξιόπιστες αλληλεπιδράσεις μέσω του διαδικτύου. Οι τεχνολογίες του Σημασιολογικού Ιστού επιτρέπουν στους ανθρώπους να δημιουργούν τα δεδομένα στο διαδίκτυο, να κατασκευάζουν λεξιλόγια και να δημιουργούν κανόνες για το χειρισμό τους. [68] Δηλαδή ο Σημασιολογικός Ιστός στρέφεται στην ανάλυση της σημασίας της πληροφορίας, γεγονός που δικαιολογεί τον όρο «σημασιολογικός» [15]. 2.1.3 Τεχνολογίες Σημασιολογικού Ιστού Οι κύριες τεχνολογίες του Σημασιολογικού Ιστού που είναι απαραίτητες για την υποστήριξη και την επίτευξη του οράματος του είναι τα μεταδεδομένα (metadata), οι οντολογίες (ontologies), η λογική (logic) και οι πράκτορες (agents) [60]. Συγκεκριμένα, τα μεταδεδομένα αποτελούν δεδομένα που περιέχουν επιπλέον πληροφορίες για άλλα δεδομένα. Αποθηκεύουν μέρος του νοήματος των δεδομένων, σε αντίθεση με τη μέχρι τώρα απλή παρουσίαση τους, μέσω της γλώσσας HTML. Για την περιγραφή τους στον σημασιολογικό ιστό χρησιμοποιείται η γλώσσα RDF (Resource Description Framework). Οι οντολογίες, οι οποίες θα αναλυθούν εκτενώς στη συνέχεια, διαθέτουν μια κοινή κατανόηση και εννοιολογική περιγραφή ενός πεδίου ενδιαφέροντος. Η λογική παρέχει ορισμένες αρχές συλλογισμού και συμπερασμών
2.1. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ 5 που εφαρμόζονται στην υπάρχουσα γνώση για την εξαγωγή χρήσιμων συμπερασμάτων. Τέλος οι πράκτορες είναι εφαρμογές λογισμικού που λειτουργούν αυτόνομα για να εξυπηρετήσουν τους χρήστες, συλλέγοντας πληροφορίες και εκτελώντας τις απαραίτητες διαδικασίες για την εξαγωγή διαθέσιμων επιλογών προς αυτούς. [60, 41, 15]. 2.1.4 Αρχιτεκτονική του Σημασιολογικού Ιστού Η εξέλιξη του Σημασιολογικού Ιστού πραγματοποιείται σταδιακά με στόχο την υλοποίηση του πλήρες οράματος του Tim Berners-Lee. Η αρχιτεκτονική του αποτελεί αντικείμενο διαλόγου και υφίσταται συνεχής τροποποιήσεις ακολουθούμενες από δύο βασικές αρχές, ώστε να επιτευχθεί μια ομοφωνία. Συμβατότητα προς τα κάτω (downward compatibility): Οι πράκτορες που αντιλαμβάνονται πλήρως ένα επίπεδο πρέπει να είναι σε θέση να ερμηνεύουν και να χρησιμοποιούν πληροφορίες των χαμηλότερων επιπέδων Μερική κατανόηση προς τα πάνω (upward partial understanding): Οι πράκτορες που αντιλαμβάνονται πλήρως ένα επίπεδο πρέπει να είναι σε θέση να εκμεταλλευτούν μερικώς τις πληροφορίες των ανώτερων επεπέδων. Αναπαρίσταται γραφικά από ένα σχήμα που ονομάζεται στοίβα επιπέδων του Σημασιολογικού Ιστού (Semantic Web Stack/Semantic Web layer-cake). Σύμφωνα με τον Lee, η στοίβα αυτή περιγράφει τα κύρια επίπεδα της σχεδίασης του και βασίζεται στην ενίσχυση του ήδη υπάρχοντος Παγκόσμιου Ιστού. Τα επίπεδα αποτελούν σύνολα τεχνολογιών και γλωσσών προγραμματισμού, τα οποία υποστηρίζονται από τις τεχνολογίες των κατωτέρων επιπέδων. [60] Στην Εικόνα 2.1 παρουσιάζεται η βασική εκδοχή της αρχιτεκτονικής του Σημασιολογικού Ιστού, που προτάθηκε από τον Tim Berners-Lee. Εικόνα 2.1: Η βασική αρχιτεκτονική του Σημασιολογικου Ιστού Η επόμενη Εικόνα 3.5 δείχνει κάποιες εναλλακτικές και πιο πρόσφατες απεικόνισεις. Σημείο αναφοράς των επιμέρους προσπαθειών αποτελεί ο βαθμός στον οποίο θα ενοποιηθούν τα επίπεδα οντολογιών και κανόνων της στοίβας των επιπέδων του. Παρόλα αυτά, νέες βελτιώσεις ή/και τροποποιήσεις είναι πιθανό να προκύψουν στο μέλλον σχετικά με την αρχιτεκτονική του Σημασιολογικού Ιστού.
6ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ (αʹ) (βʹ) (γʹ) (δʹ) Εικόνα 2.2: Τέσσερις εκδοχές της αρχιτεκτονικής του Σημασιολογικού Ιστού Κάθε επίπεδο υλοποιεί μια λειτουργικότητα, χρησιμοποιώντας και επεκτείνοντας τη λειτουργικότητα και τις τεχνολογίες που παρέχονται από τα χαμηλότερα στρώματα [15, 41, 56]. Στα χαμηλότερα επίπεδα υλοποιούνται λειτουργίες οι οποίες είναι πολύ κοντά στη δομή του Παγκόσμιου Ιστού, όπως είναι το πρωτόκολλο HTTP, οι τεχνολογίες που ασχολούνται με τον καθορισμό και την αναγνώριση των URIs και η κωδικοποίηση Unicode. Πιο συγκεκριμένα: Unicode και URIs: Στο πρώτο επίπεδο βρίσκονται τα URIs (Uniform Resource Identifiers) τα ο- ποία παρέχουν ένα πρότυπο τρόπο αναφοράς σε οντότητες και το Unicode, που πρόκειται για ένα σύστημα κωδικοποίησης χαρακτήρων που σχεδιάστηκε για να υποστηρίζει την ανταλλαγή, επεξεργασία και εμφάνιση κειμένων σε οποιαδήποτε γλώσσα του κόσμου (αντιστοιχώντας ένα μοναδικό αριθμό σε κάθε χαρακτήρα). XML: Στο δεύτερο επίπεδο βρίσκεται η XML και τα σχετιζόμενα πρότυπα όπως οι Χώροι Ονομάτων (Namespaces-NS) και τα Σχήματα (Schemas). Η XML (extensible Markup Language) είναι μια γλώσσα σήμανσης όπως και η HTML, δηλαδή ένα σύνολο κανόνων για το σχεδιασμό μορφών κειμένου που διευκολύνουν τη δόμηση ενός εγγράφου με τέτοιο τρόπο ώστε να είναι εύκολο να διαβαστούν και να επεξεργαστούν από ανθρώπους και προγράμματα. Ομως δεν επιβάλλει κανέναν σημασιολογικό περιορισμό στην έννοια αυτών των εγγράφων. Κατ επέκταση, το XML Schema είναι μια γλώσσα που περιορίζει τη δομή των XML εγγράφων. Καθορίζει τη γραμματική για τη δημιουργία έγκυρων XML αρχείων. Συνεπώς η XML και τα σχετιζόμενα πρότυπα διαμορφώνουν έναν κοινό τρόπο για την δόμηση των δεδομένων στοδιαδίκτυο αλλά χωρίς την μεταφορά
2.1. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ 7 της σημασιολογίας των δεδομένων. Στη συνέχεια ακολουθούν πέντε επιπλέον επίπεδα τα οποία αναφέρονται αποκλειστικά στο Σημασιολογικό Ιστό: RDF: Στο τρίτο επίπεδο βρίσκεται το RDF (Resource Description Framework) που είναι ουσιαστικά το πρώτο επίπεδο που ασχολείται με τη σημασιολογία των δεδομένων. Πρόκειται για μια γλώσσα που αποτελεί βασικό μοντέλο δεδομένων, δηλαδή ένα μοντέλο αναπαράστασης, περιγραφής και επεξεργασίας δεδομένων. Χρησιμοποιεί τα URIs για την αναγνώριση διαδικτυακών πόρων καθώς και ένα μοντέλο κατευθυνόμενου ψευδο-γράφου με ετικέτες για την περιγραφή των σχέσεων μεταξύ αυτών των πόρων. Διαθέτει σύνταξη βασισμένη στην XML. Η RDFS (RDF Schema), μια προέκταση του RDF, παρέχει θεμελιώδη στοιχεία μοντελοποίησης για την οργάνωση των αντικειμένων του ιστού σε ιεραρχίες. Πρόκειται για μια γλώσσα με βασικά στοιχεία τις κλάσεις, τις ιδιότητες, τις σχέσεις μεταξύ κλάσεων και ιδιοτήτων και τους και περιορισμούς πεδίου/εμβέλειας για τις ιδιότητες. Ουσιαστικά είναι ένα λεξιλόγιο για την περιγραφή των ιδιοτήτων και των κλάσεων RDF αντικειμένων, με μια σημασιολογία για τις γενικευμένες ιεραρχίες τέτοιων ιδιοτήτων και κλάσεων. Αποτελεί τη σημασιολογική επέκταση της RDF και μπορεί να θεωρηθεί ως θεμελιώδης για τη συγγραφή οντολογιών. Οντολογίες (Ontologies): Στο επόμενο επίπεδο βρίσκονται οι Οντολογίες. Υπάρχουν διάφορες γλώσσες αναπαράστασης οντολογιών οι οποίες όμως παρουσιάζουν ομοιότητες. Περιλαμβάνουν ένα σύνολο εννοιών, μια ιεραρχία καθώς και ορισμένες συσχετίσεις μεταξύ τους. Οι γλώσσες αυτές παρέχουν πιο πολύπλοκους περιορισμούς στους τύπους των πόρων και τις ιδιότητές τους σε σύγκριση με την RDF Schema. Λογική (Logic): Το επίπεδο της Λογικής χρησιμοποιείται για να ενισχύσει τη γλώσσα οντολογιών που παρέχει τη δυνατότητα αυτοματοποιημένου συλλογισμού βάσει των πληροφοριών που δομούνται σε μία οντολογία. Η λογική χρησιμοποιείται για τη λήψη αποφάσεων από εφαρμογές. Απόδειξη (Proof): Στο έκτο επίπεδο βρίσκεται η Απόδειξη. Τα συμπεράσματα που έχουν εξαχθεί θα πρέπει να οδηγούν πίσω στις υποθέσεις που τα προκάλεσαν, δηλαδή πραγματοποιείται μια διαδικασία επαλήθευσης. Εμπιστοσύνη (Trust): Το τελικό επίπεδο της στοίβας απευθύνεται σε θέματα Εμπιστοσύνης. Με τη χρήση της τεχνολογίας των ψηφιακών υπογραφών, θα πρέπει να εξασφαλιστεί ότι οι πληροφορίες που διακινούνται, επεξεργάζονται και συμπεραίνονται στο Σημασιολογικό Ιστό είναι αξιόπιστες.
8ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ 2.2 Οντολογίες Οι οντολογίες, όπως ορίστηκε στο προηγούμενο υποκεφάλαιο, αποτελούν δομικό στοιχείο του Σημασιολογικού Ιστού. Καθώς η εφαρμογή που αναπτύχθηκε στα πλαίσια της διπλωματικής εργασίας βασίζεται εξ ολοκλήρου στην ανάπτυξη μιας οντολογίας, κρίνεται σκόπιμο να γίνει μια αναφορά στα χαρακτηριστικά μιας οντολογίας και σε ορισμένες τεχνολογίες που χρησιμοποιούνται για τη διαχείριση τους. 2.2.1 Ορισμός οντολογίας Η λέξη «οντολογία» είναι ένας όρος που προέρχεται από τον κλάδο της φιλοσοφίας, ο οποίος αναφέρεται στη φιλοσοφική αναζήτηση που ερευνά τα όντα και την ύπαρξη (εξετάζει τις αρχές της ύπαρξης και συγκρότησης του όντος) [54]. Σύμφωνα με τους Barry Smith και Christopher Welty, η οντολογία επιδιώκει να παρέχει μια οριστική και πλήρης ταξινόμηση των οντοτήτων σε όλες οι σφαίρες της ύπαρξης [7]. Μελετά και εξετάζει ζητήματα σχετικά με τη φύση και τη δομή των όντων, ανεξάρτητα αν υπάρχουν ή όχι, το πώς μπορούν να ομαδοποιηθούν, να ιεραρχηθούν, και να υποδιαιρεθούν σύμφωνα με ομοιότητες και διαφορές καθώς και τις σχέσεις που υπάρχουν μεταξύ τους. Με απλά λόγια είναι ένας εναλλακτικός τρόπος για να αναπαρασταθεί η γνώση [34]. Στον τομέα της πληροφορικής οι οντολογίες έχουν καθιερωθεί ως δομημένα πλαίσια για την οργάνωση πληροφορίας και χρησιμοποιούνται κυρίως στην Τεχνητή Νοημοσύνη, στον Σημασιολογικό Ιστό, στη Βιοπληροφορική, στην επιστήμη Βιβλιοθηκονομίας και σε άλλους κλάδους ως μια μορφή αναπαράστασης γνώσης για τον κόσμο. Στη διεθνή βιβλιογραφία έχουν διατυπωθεί πολλοί διαφορετικοί ορισμοί για το τι είναι οντολογία, μερικοί από τους οποίους παρατίθενται παρακάτω. Ισως ο πιο διαδεδομένος και αξιόπιστος ορισμός, όσον αφορά τη χρήση της στην επιστήμη των υπολογιστών, είναι αυτός που δόθηκε πρώτα από τον Thomas R. Gruber [57]: Ορισμός κατά Gruber: «Οντολογία είναι ο προσδιορισμός μιας εννοιολογικής σύλληψης.» Το 1997, ο W. N. Borst όρισε την οντολογία ως [65]: Ορισμός κατά Borst: «Οντολογία είναι μια σαφή προδιαγραφή μια κοινής σύλληψης» προσθέτοντας δηλαδή ότι η σύλληψη θα πρέπει να εκφράζει μια κοινή, και όχι μεμονωμένη άποψη καθώς και ότι θα πρέπει να έχει σαφή μορφή ώστε να είναι αναγνώσιμη και από μηχανές. Ετσι ο Rudi Studer et al. το 1998 συγχώνευσε τους αυτούς ορισμούς και διατύπωσε έναν νέο [51]: Ορισμός κατά Studer: «Οντολογία είναι μια ρητή και τυπική προδιαγραφή μιας διαμοιρασμένης εννοιολογικής σύλληψης.»
2.2. ΟΝΤΟΛΟΓΙΕΣ 9 Ο ορισμός αυτός όμως αποτελεί μια γενική προσέγγιση που έχει άμεση σχέση με τη φιλοσοφική της σημασία της οντολογίας. Το 1998 ο Nicola Guarino προσπάθησε να απλοποιήσει τον παραπάνω ορισμό [42]: Ορισμός κατά Nicola Guarino: «Μια οντολογία είναι μια λογική θεωρία η οποία ερμηνεύει την επιδιωκόμενη έννοια ενός τυπικού λεξιλογίου, δηλαδή την οντολογική του δέσμευση για μια συγκεκριμένη σύλληψη του κόσμου. Τα επιδιωκόμενα πρότυπα μιας λογικής γλώσσας που χρησιμοποιεί ένα τέτοιο λεξιλόγιο περιορίζονται από αυτή την ο- ντολογική δέσμευση. Μια οντολογία απεικονίζει έμμεσα αυτήν την υποχρέωση (και την υποκείμενη εννοιολογική σύλληψη), με το να προσεγγίζει αυτά τα επιδιωκόμενα πρότυπα.» Οι παραπάνω ορισμοί αποτελούνται από σύνθετες και δυσνόητες λέξεις, δυσχερένοντας την έννοια της οντολογίας. Ακολουθεί ο ορισμός που διατυπώνει ο διεθνής οργανισμός W3C, ο οποίος περιγράφει με απλά λόγια τι είναι μια οντολογία [67]: Ορισμός κατά W3C: «Μια οντολογία καθορίζει τους όρους που χρησιμοποιούνται για να περιγράψουν και να αναπαραστήσουν ένα πεδίο γνώσης. Οι οντολογίες χρησιμοποιούνται από ανθρώπους, βάσεις δεδομένων και εφαρμογές που μοιράζονται πληροφορίες σχετικά με ένα γνωστικό αντικείμενο. Περιλαμβάνουν ορισμούς, ικανούς να χρησιμοποιηθούν από τους υπολογιστές, για βασικές έννοιες του συγκεκριμένου πεδίου γνώσης και για τις σχέσεις μεταξύ τους. Επίσης κωδικοποιούν τη γνώση, καθιστώντας την επαναχρησιμοποιήσιμη.» 2.2.2 Τα οφέλη της χρήσης των οντολογιών Τα τελευταία χρόνια οι οντολογίες γνωρίζουν τεράστια ανάπτυξη και χρησιμοποιούνται συχνά στον Παγκόσμιο Ιστό. Αποτελούν έναν από τους πιο απλούς τρόπους περιγραφής των διαφόρων πεδίων γνώσεων που έχει σαν αποτέλεσμα, καθώς η αναπαράσταση της γνώσης γίνεται με ξεκάθαρο και δομημένο τρόπο, να γίνεται κατανοητή και εύκολα επεξεργάσιμη από διαφορετικές ομάδες ανθρώπων αλλά και από υπολογιστές [48, 4]. Επιπλέον, ένας από τους πιο βασικούς σκοπούς της χρήσης οντολογιών είναι ο διαμοιρασμός πληροφοριών. Οι οντολογίες καθιστούν εφικτό τον άμεσο διαμοιρασμό της γνώσης μεταξύ ανθρώπων ή πρακτόρων λογισμικού. Μπορεί επίσης να επιτευχθεί μεγάλη συλλογή δεδομένων για διάφορους τομείς ενδιαφέροντος, με αποτέλεσμα οι πράκτορες να ανακτούν και να συνθέτουν πληροφορίες από όλες αυτές τις διαφορετικές πηγές. Η επαναχρησιμοποίηση της γνώσης αποτελεί και αυτή ένα από τα κίνητρα για τη δημιουργία οντολογιών [38, 48]. Μια ήδη υπάρχουσα οντολογία μπορεί να επαναχρησιμοποιηθεί με σκοπό να επεκταθεί η να βελτιωθεί, ή ακόμα και να ενσωματωθει σε μια άλλη [39], ώστε να περιγράφει καλύτερα ένα συγκεκριμένο πεδίο ενδιαφέροντος 2.2.3 Συστατικά μιας οντολογίας Οι περισσότερες οντολογίες έχουν πολλές δομικές ομοιότητες, ανεξάρτητα από τη γλώσσα από την οποία εκφράζονται. Σχεδόν σε όλες τις οντολογίες συναντώνται
10ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ κοινά συστατικά όπως οι κλάσεις (classes), τα στιγμιότυπα (individuals), οι ιδιότητες (properties) και οι σχέσεις (relations). Κάθε οντολογία περιγράφει διακριτά στιγμιότυπα. Τα στιγμιότυπα ομαδοποιούνται σε κλάσεις, δηλαδή η κάθε κλάση αποτελεί σύνολα αντικειμένων με ίδια χαρακτηριστικά. Μια κλάση, που αποτελεί το επίκεντρο των περισσότερων οντολογιών, μπορεί να περιέχει απευθείας στιγμιότυπα ή και άλλες κλάσεις, δημιουργώντας μια ιεραρχική δομή στην οντολογία. Επιπλέον, σε κάθε κλάση αντιστοιχούν ιδιότητες, οι οποίες περιγράφουν χαρακτηριστικά γνωρίσματα που τα στιγμιότυπα μπορεί να έχουν. Τέλος μέσω των ιδιοτήτων ορίζονται επίσης οι σχέσεις, οι οποίες καθορίζουν τους τρόπους με τους οποίους τα στιγμιότυπα διάφορων κλάσεων συσχετίζονται μεταξύ τους [63]. 2.2.4 Γλώσσα Οντολογιών Ιστού OWL Στην επιστήμη της πληροφορικής, οι γλώσσες οντολογιών είναι τυπικές γλώσσες που χρησιμοποιούνται για την κατασκευή και διαχείρηση οντολογιών. Επιτρέπουν την κωδικοποίηση της γνώσης για τις οντολογίες και περιλαμβάνουν συχνά κανόνες συλλογισμού που υποστηρίζουν την επεξεργασία της. Υπάρχει ένας μεγάλος αριθμός από γλώσσες έχουν χρησιμοποιηθεί για αυτό το σκοπό. Ομως τα τελευταία χρόνια η επιθυμία για σημασιολογική σήμανση στο Διαδίκτυο, οδήγησαν σε μια νέα γενιά γλωσσών, κατάλληλων για αναπαράσταση οντολογιών στον Ιστό όπως οι SHOE, XOL, RDF, DAML, OIL, DAML+OIL, OWL και RDFS [15]. Η OWL 3 είναι η πιο πρόσφατη εξέλιξη στις γλώσσες οντολογιών για το Σημασιολογικό Ιστό. Αναπτύχθηκε από την ομάδα εργασίας OWL Working Group του W3C 4 το 2004 και αποτελεί μία γλώσσα σήμανσης με σημασιολογικο χαρακτήρα για τη δημιουργία και τη διανομή οντολογιών στο διαδίκτυο. Εχει δεχτεί επιρροές από αρκετές προηγούμενες γλώσσες περιγραφής οντολογιών, αλλά ιδιαίτερα η DAML+OIL είναι αυτή που αποτέλεσε το σημείο εκκίνησης για την ανάπτυξη της γλώσσας. Αναπτύχθηκε, όπως και οι προκάτοχοί της, ως επέκταση του RDFS και ενσωμάτωσε λύσεις για προβλήματα που εμφανίστηκαν κατά τον ορισμό και τη χρησιμοποίηση της γλώσσας DAML+OIL. Ακολουθεί το συντακτικό της RDFS, εμπλουτίζοντας όμως το λεξιλόγιο της για την περιγραφή των κλάσεων και των ιδιοτήτων προσθέτοντας, όπως για παράδειγμα, σχέσεις μεταξύ των κλάσεων (π.χ. disjointness), αριθμός στοιχείων συνόλου (π.χ. ακριβώς ένα), λογικούς συνδυασμούς κλάσεων (π.χ. ένωση, τομή, συμπλήρωμα), ισότητες, πλουσιότερους τύπους ιδιοτήτων, χαρακτηριστικά ιδιοτήτων (π.χ. συμμετρία, μοναδικότητα, μεταβατικότητα) και απαριθμημένες κλάσεις. Η OWL διαθέτει τη μεγαλύτερη εκφραστικότητα η οποία είναι αναγκαία για το Σημασιολογικό Ιστό καθώς επιτρέπει τη χρήση συστημάτων συλλογισμού για την διεξαγωγή αποτελεσματικών συμπερασμών πάνω στις οντολογίες που αναπαρίσταται στον Ιστό με αυτή τη γλώσσα. Γενικά ισχύει ότι μεγαλύτερη εκφραστική δύναμη μιας γλώσσας συνεπάγεται τη διεξαγωγή συμπερασμών αυξανόμενης πολυπλοκότητας έως και μη αποφασισιμότητα. Για το λόγο αυτό, η OWL ορίζεται ως τρείς υπογλώσσες (OWL Lite, OWL DL, OWL Full) με διαφορετική εκφραστική ισχύ [66, 46]. Κάθε υπογλώσσα αποτελεί επέκταση της υπογλώσσας με την αμέσως μικρότερη εκφραστική ισχύ. OWL Lite Η OWL Lite υποστηρίζει κυρίως μια ιεραρχία ταξινόμησης και απλούς περιο- 3 https://www.w3.org/owl/ 4 https://www.w3.org/2007/owl/wiki/owl_working_group
2.2. ΟΝΤΟΛΟΓΙΕΣ 11 ρισμούς. Η έκδοση αυτή είναι η απλούστερη από τις τρεις εκδόσεις της OWL και πιο εύκολη στην εκμάθηση από τους χρήστες. Αποτελεί ένα αρχικό επίπεδο της γλώσσας που στοχεύει στο να είναι εύκολα κατανοητό και υλοποιήσιμο. Χρησιμοποιεί μόνο μερικά από τα γλωσσικά χαρακτηριστικά της OWL και έχει περισσότερους περιορισμούς στη χρήση των χαρακτηριστικών αυτών από την O- WL DL ή την OWL Full. Παραδείγματος χάριν, στην OWL Lite οι κλάσεις μπορούν μόνο να οριστούν σε σχέση με κατονομασμένες υπερκλάσεις και μόνο ορισμένα είδη περιορισμών κλάσεων μπορούν να χρησιμοποιηθούν. Η ισοδυναμία μεταξύ κλάσεων και σχέσεων υποκλάσεων επιτρέπεται μόνο μεταξύ των κατονομασμένων κλάσεων και όχι μεταξύ αυθαίρετων εκφράσεων κλάσης. Ομοια, οι περιορισμοί στην OWL Lite χρησιμοποιούν μόνο κατονομασμένες κλάσεις. Η OWL Lite έχει επίσης μια περιορισμένη έννοια του αριθμού στοιχείων συνόλου - τα μόνα όρια πλήθους που επιτρέπονται για να δηλωθούν ρητά είναι 0 ή 1. Επίσης έχει χαμηλότερη πολυπλοκότητα από την OWL DL. Τέλος, έχει την ιδιότητα να μπορεί να γίνεται αντικείμενο αποδοτικής επεξεργασίας από αλγόριθμους εξαγωγής συμπερασμάτων (inference algorithms). Το σημαντικότερο μειονέκτημα της είναι ασφαλώς η περιορισμένη εκφραστικότητα. OWL DL Η OWL DL υποστηρίζει τη μέγιστη δυνατή εκφραστικότητα διατηρώντας την υπολογιστική πληρότητα. Με τον όρο αυτό εννοούμε ότι όλα τα συμπεράσματα είναι εγγυημένα να είναι υπολογίσιμα και ότι όλοι οι υπολογισμοί θα τελειώσουν σε πεπερασμένο χρόνο. Περιλαμβάνει όλα τα OWL γλωσσικά κατασκευάσματα, αλλά μπορούν να χρησιμοποιηθούν μόνο κάτω από ορισμένους περιορισμούς (παραδείγματος χάριν, ενώ μια κλάση μπορεί να είναι υποκλάση πολλών κλάσεων, όμως δεν μπορεί να είναι αντικείμενο μιας άλλης κλάσης). Η OWL DL ονομάζεται έτσι λόγω της αντιστοιχίας της με την Περιγραφική Λογική (Description Logic-DL), έναν τομέα της έρευνας υπολογιστών που αποτελεί τη βάση της O- WL. Με τον όρο Περιγραφική Λογική αναφερόμαστε σε μια δομημένη μέθοδο αναπαράστασης γνώσης, με τη βοήθεια της οποίας μπορούμε να αναπαραστήσουμε έννοιες και συσχετίσεις ενός πεδίου εφαρμογής με φορμαλιστικό τρόπο που επιτρέπει εξαγωγή συμπερασμάτων μέσω συλλογιστικής. Τα βασικά στοιχεία που απαρτίζουν μια τέτοια γλώσσα είναι οι έννοιες, οι ρόλοι, τα χαρακτηριστικά καθώς και τα στιγμιότυπά τους. Οι OWL DL και OWL Full χρησιμοποιούν το ίδιο λεξιλόγιο αν και η πρώτη υπόκειται σε μερικούς περιορισμούς. Κατά προσέγγιση, η OWL DL απαιτεί χωρισμό τύπων (μια κλάση δεν μπορεί να είναι επίσης άτομο ή ιδιότητα ή όπως επίσης ότι μια ιδιότητα δεν μπορεί να είναι επίσης άτομο ή κλάση). Αυτό υπονοεί ότι οι περιορισμοί δεν μπορούν να εφαρμοστούν στα γλωσσικά στοιχεία της, κάτι που επιτρέπεται στην OWL Full. Επιπλέον, η OWL DL απαιτεί οι ιδιότητες να είναι είτε ObjectProperties είτε DatatypeProperties. Πιο συγκεκριμένα οι DatatypeProperties ιδιότητες συνδέουν στιγμιότυπα με τύπους δεδομένων, ενώ οι ObjectProperties ιδιότητες αποτελούν τις σχέσεις μεταξύ στιγμιότυπων δύο διαφορετικών κλάσεων. Η OWL DL έχει την ικανότητα να μπορεί να γίνεται αντικείμενο αποδοτικής επεξεργασίας από εργαλεία συμπερασμού, τα οποία θα αναλυθούν στη συνέχεια, που βασίζονται στην Περιγραφική Λογική. OWL Full Η OWL Full υποστηρίζει μέγιστη εκφραστικότητα και τη συντακτική ελευθερία της RDF χωρίς όμως υπολογιστικές εγγυήσεις. Επιτρέπει σε μια οντολογία να
12ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ αυξήσει την έννοια του προκαθορισμένου (RDF ή OWL) λεξιλογίου. Ομως ή κύρια επίπτωση αποτελεί το γεγονός ότι κανένα εργαλείο συλλογισμού δεν εγγυάται ότι θα είναι σε θέση να υποστηρίξει τον πλήρη συλλογισμό της. Η επιλογή της κατάλληλης υπο-γλώσσας OWL για την ανάπτυξη μιας οντολογίας εξαρτάται κάθε φορά από τις ανάγκες που έχει να ικανοποιήσει ο κάθε κατασκευαστής οντολογιών [66]. 2.2.5 Γλώσσα Ερωτημάτων SPARQL Οι γλώσσες ερωτημάτων (query languages) αποτελούν γλώσσες προγραμματισμού οι οποίες χρησιμοποιούνται για τη διαχείριση της πληροφορίας που διατίθεται σε βάσεις δεδομένων. Συγκεκριμένα για την επεξεργασία της πληροφορίας που βρίσκεται σε μία οντολογία, έχουν αναπτυχθεί διάφορες γλώσσες ερωτημάτων όπως οι RQL, SquishQL, RDFQL, SPARQL, VERSA, TRIPLE, κ.ά. Η SPARQL (Simple Protocol and RDF Query Language) 5 είναι μια από τις πιο διαδεδομένες τεχνολογίες που χρησιμοποιούνται στον σημασιολογικό ιστό η οποία ορίστηκε ως πρότυπο από την RDF DAWG (Data Access Working Group) του W3C. Είναι ένα σύνολο προδιαγραφών που παρέχει γλώσσες και πρωτόκολλα ερωτήσεων και χειρισμού γράφων RDF. Ουσιαστικά πρόκειται για μία γλώσσα ερωτημάτων που εφαρμόζεται για εξαγωγή πληροφορίας σε δεδομένα που είναι κωδικοποιημένα σε RDF μορφή [29]. Με τη χρήση της SPARQL ένας χρήστης έχει τη δυνατότητα να εκτελέσει όλα τα δυνατά ερωτήματα σε RDF δεδομένα, όπως θα έκανε κάποιος με χρήση της SQL πάνω σε μία κλασσική σχεσιακή βάση δεδομένων. Η δομή της έχει μεγάλη ομοιότητα με τη σύνταξη των SQL ερωτημάτων. 2.2.6 Εργαλείο ανάπτυξης οντολογιών Protégé Εκτός από γλώσσες ορισμού οντολογιών υπάρχουν και λογισμικά με γραφικό περιβάλλον που διευκολύνουν την ανάπτυξη οντολογιών. Μερικά από αυτά είναι τα Protégé, WebODE, Swoop κ.ά. Το Protégé 6 αποτελεί μία δημοφιλή πλατφόρμα «ανοιχτού κώδικα» βασισμένη στη γλώσσα προγραμματισμού Java, η οποία παρέχει ένα σύνολο από εργαλεία για την επεξεργασία οντολογιών και για τη διαχείρηση του πεδίου γνώσης τους. Εχει αναπτυχθεί από το Stanford Center for Biomedical Informatics Research 7 του τμήματος Ιατρικής του Πανεπιστήμιου Stanford (University School of Medicine, Stanford University) και χρησιμοποιείται από μια μεγάλη κοινότητα χρηστών. Η ευρεία χρήση του Protégé σε συνδυασμό με την ανοικτή του αρχιτεκτονική έχει οδηγήσει στην δημιουργία ενός μεγάλου αριθμού από πρόσθετα λογισμικά (plug-ins) που επεκτείνουν τις δυνατότητές του και το καθιστούν ένα ολοκληρωμένο γραφικό περιβάλλον ανάπτυξης, διαχείρισης και απεικόνισης οντολογιών [26]. 2.2.7 Εργαλεία Συμπερασμού Οντολογιών Για την εξαγωγή συμπερασμάτων στον Σημασιολογικό Ιστό αλλά και σε εφαρμογές Τεχνητής Νοημοσύνης γενικότερα υπάρχουν δύο βασικοί τύποι εργαλείων, οι μηχανές 5 https://www.w3.org/tr/rdf-sparql-query/ 6 http://protege.stanford.edu/ 7 http://med.stanford.edu/
2.3. ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ 13 κανόνων(rule engines) και οι μηχανές συμπερασμού(reasoners). Η διαφοροποίησή τους έγκειται στους φορμαλισμούς αναπαράστασης γνώσης που μπορούν να χειριστούν, στον τρόπο λειτουργίας τους, καθώς και στο είδος των νέων συμπερασμάτων που μπορούν να παράγουν. Μια μηχανή κανόνων, εν γένει, διαχειρίζεται μια βάση γνώσης, η οποία περιέχει τόσο το μοντέλο της γνώσης που μας ενδιαφέρει όσο και τους κανόνες με βάση τους οποίους γίνεται η συλλογιστική (reasoning). Παραδείγματα τέτοιων εργαλείων είναι οι μηχανές Jess, Bossam και dlvhex. Αντίθετα, οι μηχανές συμπερασμού προορίζονται για το χειρισμό γνώσης εκφρασμένης με τη μορφή Περιγραφικών Λογικών (π.χ. γλώσσα OWL). Οι πλέον δημοφιλείς μηχανές συμπερασμού είναι οι Hermit, RacerPro, Fact++, Pellet και Jena2. 2.3 Συστήματα Συστάσεων Καθημερινά όλοι ερχόμαστε αντιμέτωποι με την ανάγκη λήψης αποφάσεων που αφορούν διάφορους τομείς της ανθρώπινης ζωής. Ενας από αυτούς, αποτελεί η λήψη α- ποφάσεων σχετικά με το ποια από τα διαθέσιμα προϊόντα ή υπηρεσίες ανταποκρίνονται στις ανάγκες και τις προτιμήσεις μας. Ετσι πολλές φορές καταφεύγουμε σε συστάσεις από άλλους ανθρώπους, ειδικούς ή μη, ώστε να ανακαλύψουμε νέο υλικό που μας ενδιαφέρει [44]. Οπως είναι εύκολα κατανοητό, οι συστάσεις αυτές είναι περιορισμένες. Επίσης όσο ο όγκος των πληροφοριών μεγαλώνει ολοένα και περισσότερο στον παγκόσμιο ιστό και γενικά στην καθημερινή ζωή, τόσο δυσχεραίνεται η δυνατότητα των ανθρώπων να εντοπίσουν τα αντικείμενα που τους ενδιαφέρουν. Η διαθεσιμότητα μιας τεράστιας ποικιλίας πληροφοριών, μια κατάσταση στην οποία κύριο ρόλο έχουν διαδραματίσει οι τεχνολογικές εξελίξεις, σε συνδυασμό με τη δυσκολία της επιλογής, λέγεται υπερφόρτωση πληροφορίας (information overload). Για τους λόγους αυτούς δημιουργήθηκε η ανάγκη για την ανάπτυξη Συστημάτων Συστάσεων (Recommendation/Recommender Systems). Τα συστήματα συστάσεων αποτελούν τον τομέα που ασχολείται με τον σχεδιασμό και την υλοποίηση τεχνικών για την πρόβλεψη των προτιμήσεων των χρηστών. Περιγράφουν ευφυείς τεχνικές που παρέχουν υπηρεσίες, γνώσεις η συμβουλές, οι οποίες εκτιμάται ότι θα ικανοποιήσουν τις απαιτήσεις τους. Παράγουν προτάσεις, στηριζόμενα σε δεδομένα των χρηστών και των προϊόντων, αλλά και σε γνώσεις από προηγούμενες συμπεριφορές των χρηστών. Τα δεδομένα και οι πληροφορίες που άμεσα (βαθμολογία ή κατάταξη προϊόντος βάσει κάποιας κλίμακας) ή έμμεσα (πλοήγηση σε συγκεκριμένη σελίδα προϊόντος δηλώνει έμμεσα ενδιαφέρον) παρέχει ο χρήστης αποθηκεύονται στην βάση δεδομένων του συστήματος και χρησιμοποιούνται για την δημιουργία συστάσεων στην επόμενη αλληλεπίδραση του χρήστη με το σύστημα, βελτιώνοντας την απόδοση της διαδικασίας προβλέψεων και εμπνέοντας έτσι την εμπιστοσύνη των χρηστών. Στις μέρες μας τα συστήματα συστάσεων είναι πλέον δημοφιλή, τόσο στο εμπόριο όσο και στις ερευνητικές κοινότητες, όπου πολλές προσεγγίσεις έχουν προταθεί για την παροχή βελτιωμένων συστάσεων. Τέτοια συστήματα δραστηριοποιούνται αρκετά στο χώρο του ηλεκτρονικού επιχειρείν και των ηλεκτρονικών καταστημάτων [21]. Επίσης υπάρχουν πολλές εμπορικές ιστοσελίδες και εφαρμογές που προτείνουν προϊόντα από έναν τομέα ψυχαγωγίας όπως ταινίες, μουσική ή βιβλία ή ενσωματώνονται σε υπηρεσίες κοινωνικής δικτύωσης ώστε να συνεισφέρουν αύξηση της ενασχόλησης και της ενεργής συμμετοχής των ήδη υπαρχόντων χρηστών όσο και να ωθήσουν νέους χρήστες να εμπλακούν με τις ιστοσελίδες των κοινωνικών μέσων [14]. Τέλος, υπάρχουν πλέον συνέδρια, μελέτες και εργαστήρια αφιερωμένα στον συγκεκριμένο τομέα. Επιπλέον,
14ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ σε πανεπιστημιακά ιδρύματα όλου του κόσμου υπάρχουν πλέον μαθήματα στα οποία διδάσκονται τα συστήματα συστάσεων, ενώ σε ακαδημαϊκά περιοδικά υπάρχουν άρθρα που ενημερώνουν τους αναγνώστες για τις εξελίξεις που λαμβάνουν χώρα. 2.3.1 Ιστορική αναδρομή Η ικανότητα των ηλεκτρονικών υπολογιστών να παρέχουν προτάσεις έγινε εμφανής από νωρίς στην ιστορία της πληροφορικής [37, 30]. Το Grundy [12], ένα σύστημα προτάσεων για βιβλία που παρουσιάστηκε το 1979, αποτέλεσε ένα από τα πρώτα βήματα για τη δημιουργία των αυτόματων συστημάτων συστάσεων. Λειτουργούσε με βάση την κατηγοριοποίηση χρηστών σε ομάδες, πραγματοποιώντας μια σύντομη συνέντευξη για τη συλλογή των προτιμήσεων τους όσον αφορά τα βιβλία. Λίγο αργότερα, το 1992, το Tapestry [10] ορίστηκε ένα πρώιμο συνεργατικό σύστημα συστάσεων με ανθρώπινη παρέμβαση, ως μια πιθανή λύση για το πρόβλημα της υπερφόρτωσης πληροφορίας. Το συνεργατικό σύστημα αποτελεί μια κατηγοριοποίηση των συστημάτων συστάσεων το οποίο θα αναλυθεί στη συνέχεια. Αφορούσε την εκτέλεση ερωτημάτων για την απόσπαση πληροφοριών που είχε σαν στόχο την ταξινόμηση emails σε mailing lists για την εύκολη διαχείριση τους. Στη συνέχεια ακολούθησαν τα αυτόματα συνεργατικά συστήματα που συγκέντρωναν τις απόψεις των χρηστών ώστε να παρέχουν εύστοχες προτάσεις. Ενα από αυτά ήταν το GroupLens [45], το οποίο χρησιμοποιούσε αυτή την τεχνική για να εξυπηρετήσει το χρήστη στο να βρίσκει άρθρα, τα οποία πιθανώς να του αρέσουν ανάμεσα σε ένα τεράστιο αριθμό από άλλα διαθέσιμα. Οι χρήστες είχαν τη δυνατότητα να εισάγουν βαθμολογίες ώστε το σύστημα να παράγει εξατομικευμένες προτάσεις. Ωστόσο δεν γνώριζαν τον αριθμό και τις απόψεις των υπόλοιπων χρηστών. Από εκείνη την περίοδο και έπειτα, τα συστήματα συστάσεων απέκτησαν μεγάλο ενδιαφέρον από τους ερευνητές. Αυτό είχε σαν αποτέλεσμα να αναπτυχθούν και άλλα συστήματα προτάσεων που αφορούσαν διάφορους τομείς, όπως για παράδειγμα το Ringo [62, 30] το οποίο πρότεινε άλμπουμ μουσικής, το BellCore Video [69] για προτάσεις ταινιών και το Jester [30] σχετικά με προτάσεις που αφορούσαν ανέκδοτα. Επιπλέον τα Συστήματα Συστάσεων χρησιμοποιήθηκαν και στο πεδίο του marketing αυξάνοντας τις πωλήσεις και βελτιώνοντας την εμπειρία των καταναλωτών. Στα τέλη της δεκαετίας του 1990 ξεκίνησαν να αναπτύσσονται τα εμπορικά συστήματα προτάσεων. Ισως η πιο ευρέως γνωστή εφαρμογή αποτελεί το Amazon 8, ο αλγόριθμος της οποίας ήταν βασιζόμενος επιπλέον στο ιστορικό των αγορών και της αναζήτησης. Ακολούθησε η ενσωμάτωση τέτοιων συστημάτων, κυρίως συνεργατικών, σε ένα μεγάλο αριθμό από ιστοσελίδες ηλεκτρονικού εμπορίου. Ακολούθως προτάθηκαν διάφορες νέες τεχνικές δημιουργίας προτάσεων και προέκυψαν υβριδικά συστήματα στα οποία συνδυάζονται πολλαπλοί αλγόριθμοι προτάσεων ώστε να σχηματιστούν συστήματα που αποδίδουν καλύτερα. Αξίζει να σημειωθεί, ότι το 2006 η εταιρία πωλήσεων και ενοικιάσεων βιντεοταινιών και παροχής video streaming Netflix 9 προκήρυξε έναν διαγωνισμό ώστε να βελτιώσει τον αλγόριθμο προτάσεων που χρησιμοποιούσε [40, 23]. Αυτό αποτέλεσε σημαντικό γεγονός στην έρευνα των συστημάτων προτάσεων. Ο στόχος του διαγωνισμού ήταν να αναπτυχθεί ένας συνεργατικός αλγόριθμος προτάσεων που θα μπορούσε να βελτιώσει τον υπάρχων αλγόριθμο της εταιρίας «CineMatch algorithm» κατά 10%, ανταμείβοντας τον νικητή με ένα αρκετά μεγάλο χρηματικό έπαθλο αποδεικνύοντας το ενδιαφέρον των εμπορικών εταιριών για 8 https://www.amazon.com/ 9 https://www.netflix.com/gr/
2.3. ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ 15 τον τομέα των συστημάτων προτάσεων [61]. Τα συστήματα προτάσεων αποτελούν πλέον ένα σημαντικό κομμάτι στον τομέα της επιστήμης των υπολογιστών. Τις τελευταίες δύο δεκαετίες έχει καταγραφεί σημαντική πρόοδος και προβλέπεται να συνεχιστεί με τους ίδιους γρήγορους ρυθμούς, αν αναλογιστεί κανείς την πορεία από τις πρώτες προσπάθειες που σημειώθηκαν έως τα σημερινά πολύπλοκα συστήματα. 2.3.2 Ταξινόμηση Συστημάτων Συστάσεων Μια ποικιλία τεχνικών έχουν προταθεί ως βάση για τα συστήματα συστάσεων. Κάθε μια από αυτές έχει όπως είναι φυσικό πλεονεκτήματα και μειονεκτήματα. Ακολουθεί μια βασική ταξινόμηση με βάση τον τρόπο που παρέχουν τις προτάσεις στον χρήστη [14, 22, 27]: Δημογραφικά Συστήματα (Demographic Systems) Τα Δημογραφικά Συστήματα Συστάσεων βασίζονται σε ένα δημογραφικό 10 προφιλ του χρήστη. Αναλύουν τα διάφορα δημογραφικά δεδομένα των χρηστών, όπως για παράδειγμα στο φύλο, την ηλικία, το επάγγελμα ή τη χώρα διαμονής τους. Στηρίζονται στο γεγονός ότι χρήστες με παρόμοια δημογραφικά δεδομένα θα έχουν και παρόμοιες προτιμήσεις [31]. Τα συστήματα συστάσεων που εφαρμόζουν αυτή την τεχνική είναι λίγα, καθώς τα δημογραφικά δεδομένα δεν είναι συνήθως διαθέσιμα για λόγους ιδιωτικότητας. Ενα κύριο πρόβλημα του συστήματος είναι η γενικότητα των συστάσεων, καθώς αφού βασίζονται μόνο στα δημογραφικά χαρακτηριστικά αντιπροσωπεύουν μια μεγάλη ομάδα ατόμων, στα οποία εξάγονται οι ίδιες οι προτάσεις παρά τα διαφορετικά τους ενδιαφέροντα. Επιπλέον στο σύστημα αυτό υπάρχει η αδυναμία ελέγχου των αλλαγών προτιμήσεων των χρηστών με το πέρασμα του χρόνου και έτσι ο χρήστης δεσμεύεται με τις αρχικές του προτιμήσεις. Συστήματα με βάση το περιεχόμενο (Content-Based Systems) Τα συστήματα αυτά βασίζονται στα χαρακτηριστικά και τις ιδιότητες των αντικειμένων. Οι τεχνικές που χρησιμοποιούν βασίζονται στον ακριβή προσδιορισμό των διακριτών χαρακτηριστικών των αντικειμένων, ώστε να εντοπίσουν αυτά που μπορεί να αρέσουν στον κάθε χρήστη. Παράλληλα μελετούν τις πληροφορίες που αντλούνται από το ιστορικό του χρήστη, τεχνική που εφαρμόζεται σχεδόν σε όλα τα συστημάτων συστάσεων. Οι πληροφορίες αυτές αφορούν την άντληση των χαρακτηριστικών των αντικειμένων που έχει προτιμήσει στο παρελθόν, δημιουργώντας έτσι ένα προφίλ με βάση τα χαρακτηριστικά που προτιμά. Αρχικά, τα συστήματα αυτά πραγματοποιούν μία ανάλυση του περιεχομένου, δηλαδή αναλύουν τα χαρακτηριστικά από τα οποία αποτελείται ένα αντικείμενο. Στη συνέχεια, τα δεδομένα αυτής της ανάλυσης αποτελούν την είσοδο του αλγορίθμου για την εκμάθηση του προφίλ του χρήστη. Το τελευταίο στάδιο είναι το ταίριασμα των αντικειμένων με το προφίλ του χρήστη για να αποφασιστεί αν το αντικείμενο είναι υποψήφιο προς σύσταση. Το κύριο πλεονέκτημα των συστημάτων συστάσεων με βάση το περιεχόμενο είναι ότι οι προτάσεις χαρακτηρίζονται εύστοχες αφού υπάρχει μεγάλη πιθανότητα 10 Η δημογραφία αποτελεί στατιστική μελέτη των χαρακτηριστικών του πληθυσμού μιας περιοχής ή μιας χώρας
16ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ να αρέσουν αντικείμενα με παρόμοια χαρακτηριστικά. Ωστόσο, το γεγονός αυτό ίσως αποτελέσει αργότερα πρόβλημα, καθώς θα εμφανίζονται συνεχώς αναμενόμενα αποτελέσματα αποτρέποντας την περίπτωση να προταθεί ένα αντικείμενο με χαρακτηριστικά που δεν ανήκουν στο προφίλ του χρήστη και πιθανώς να του αρέσει [50, 33]. Συνεργατικά Συστήματα (Collaborative Filtering Systems) Τα συστήματα αυτά προτείνουν αντικείμενα στους χρήστες τους στηριζόμενα στη γνώμη και στις προτιμήσεις των υπολοίπων χρηστών. Η μέθοδος αυτή είναι η πιο ευρέως χρησιμοποιούμενη στα Κοινωνικά Μέσα Δικτύωσης αλλά και γενικότερα στα συστήματα προτάσεων. Λαμβάνεται υπόψη η συνολική συμπεριφορά όλων των χρηστών του συστήματος. Δηλαδή συλλέγουν και αναλύουν ένα μεγάλο ποσοστό της συμπεριφοράς κάθε χρήστη για την εύρεση ομοιοτήτων που μπορεί να έχει με άλλους [33, 37, 5, 11]. Διακρίνονται στα Συστήματα Προσανατολισμένα Στην Μνήμη (Memory Based Systems) και στα Συστήματα Προσανατολισμένα Στο Μοντέλο (Model Based Systems) [28, 14]. Memory-Based Filtering Systems Βασίζονται σε μια ολόκληρη συλλογή από πληροφορίες που διαθέτει το σύστημα. Με τα δεδομένα που ήδη έχει στην μνήμη του, υπολογίζει άμεσα τις ομοιότητες ανάμεσα σε προϊόντα ή χρήστες για να εξάγει κατάλληλες προτάσεις. Στην κατηγορία αλγορίθμων με βάση τη μνήμη υπάγονται οι προσεγγίσεις φιλτραρίσματος με βάση το χρήστη (User-based Collaborative Filtering Systems) και με βάση το αντικείμενο (Item-based Collaborative Filtering Systems) [37]. Στην πρώτη προσέγγιση το σύστημα αναζητά το υποσύνολο χρηστών που χαρακτηρίζονται από μεγάλη ομοιότητα με τον ενεργό χρήστη (παρόμοιο προφίλ, κοινά ενδιαφέροντα ή δραστηριότητες) και προτείνει αντικείμενα που έχουν επιλεχθεί από αυτούς. Λόγω της συσχέτισης τους με το χρήστη, είναι πιθανό τα αντικείμενα αυτά να ανταποκρίνονται στο γούστο ή στις ανάγκες του [35]. Από την άλλη πλευρά το Item-based Filtering σύστημα επικεντρώνεται στο συσχετισμό των αντικειμένων που επιλέγονται από τον χρήστη με άλλα παρόμοια αντικείμενα [5]. Η προσέγγιση αυτή, αντί να ερευνά τις ομοιότητες μεταξύ των χρηστών, ανακαλύπτει τις ομοιότητες που υπάρχουν ανάμεσα στα διάφορα αντικείμενα του συστήματος. Παρατηρείται πως αυτή μέθοδος είναι παρόμοια με τη μέθοδο που χρησιμοποιούν τα Content-Based συστήματα, αλλά η διαφορά τους είναι ότι ο συσχετισμός των αντικειμένων έχει παραχθεί από συνολικά πρότυπα δραστηριοτήτων του συνόλου των χρηστών (π.χ. αντικείμενα που επιλέγουν κάποιοι χρήστες μαζί) και όχι από πληροφορία που εξάγεται από τα δεδομένα. Το User-Based Collaborative Filtering System, ενώ είναι αποτελεσματικό, χαρακτηρίζεται από προβλήματα κλιμάκωσης όσο η βάση δεδομένων των χρηστών αυξάνεται. Το Item-Based Collaborative Filtering System αντιμετωπίζει αυτό το πρόβλημα, καθώς οι συσχετίσεις καθορίζονται μεταξύ ενός περιορισμένου αριθμού προϊόντων, αντί για ένα δυνητικά πολύ μεγάλο αριθμό χρηστών. Συνήθως ο αριθμός των αντικειμένων είναι από τη φύση του μικρότερος από τον αριθμό των χρηστών, άρα προτιμάται η χρήση του Item-Based [14]. Τα αντικείμενα, τέλος, κατηγοριοποιούνται ευκολότερα από τις ενέργειες των χρηστών, οι οποίες πρέπει να εξετάζονται και να α-
2.3. ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ 17 ναλύονται. Model-Based Filtering Systems Οι αλγόριθμοι που λειτουργούν βάσει μοντέλου συστάσεων χρησιμοποιούν τα δεδομένα των προτιμήσεων που είναι αποθηκευμένα στο σύστημα, ως σύνολο εκπαίδευσης τεχνικών και αλγόριθμων μηχανικής μάθησης για τη δημιουργία ενός μοντέλου πρόβλεψης. Πιο συγκεκριμένα, η προσέγγιση χρησιμοποιεί τις πληροφορίες που είναι αποθηκευμένες ήδη στο σύστημα, στατιστικές και μηχανικές μεθόδους μάθησης, για να δημιουργηθεί από πριν το μοντέλο πρόβλεψης το οποίο χρησιμοποιείται στη συνέχεια για προτείνει συστάσεις [28, 11, 6]. Η γενική ιδέα είναι να μοντελοποιηθούν οι αλληλεπιδράσεις χρηστών-προϊόντων με παράγοντες που εκπροσωπούν τα ελλιπή χαρακτηριστικά των χρηστών και των προϊόντων στο σύστημα, όπως μια κατηγορία προτιμήσεων του χρήστη ή μια κλάση κατηγορίας στην οποία ανήκει το προϊόν. Δηλαδή διαθέτει έναν έμμεσο τρόπο για την εξαγωγή προτάσεων, σε αντίθεση με τους Memory-Based αλγορίθμους που διατρέχουν την ίδια στιγμή τα δεδομένα για να αποφασίσουν [11]. Αν και η βασική ιδέα πίσω από τα Model-Based Filtering Systems είναι η ίδια, υπάρχουν διαφορετικές προσεγγίσεις για την κατασκευή του μοντέλου και την χρήση του. Η προσέγγιση αυτή προσφέρει οφέλη τόσο στην ταχύτητα όσο και στην κλιμάκωση, καθώς το μοντέλο έχει δημιουργηθεί πριν την online διαδικασία σύστασης, οπότε έχει υψηλότερη απόδοση από τη Memory-Based προσέγγιση [6]. Επίσης μπορεί να οδηγήσει σε μεγαλύτερη ακρίβεια των συστάσεων [28], ανάλογα με την τεχνική μάθησης που χρησιμοποιείται για τη δημιουργία του μοντέλου, και ειδικότερα σε εφαρμογές που περιλαμβάνουν μεγάλα σύνολα δεδομένων. Από την άλλη πλευρά όμως υπάρχει και το μειονέκτημα ότι τα αποτελέσματα σύστασης δεν προσαρμόζονται αυτόματα στις αλλαγές δεδομένων. Σε αυτή την περίπτωση το μοντέλο πρέπει να ξαναδημιουργηθεί για να διαθέτει τα ενημερωμένα δεδομένα και να εξάγει τις προτάσεις σύμφωνα και με αυτά [11]. Σε αντίθεση με τα προηγούμενα συστήματα συστάσεων, τα συνεργατικά συστήματα δεν στηρίζονται στην ακριβή ανάλυση του περιεχομένου των πληροφοριών, δηλαδή δεν προσπαθούν να «καταλάβουν» τα μεμονωμένα χαρακτηριστικά που εξάγονται άμεσα ή έμμεσα και τα οποία προτιμούν οι χρήστες [28]. Επίσης αντικείμενα για τα οποία είναι πολύπλοκο ή αδύνατο να ανακτηθούν τα χαρακτηριστικά τους μπορούν πλέον να προταθούν με αυτή τη μέθοδο. Τέλος μειώνονται οι πιθανότητες να προταθεί ένα αντικείμενο κακής ποιότητας μόνο και μόνο ε- πειδή κάποιο χαρακτηριστικό του προτιμάται από το χρήστη, καθώς αν δεν έχει επιλεχθεί από τους υπόλοιπους δε θα προταθεί [33]. Το κύριο μειονέκτημα τους είναι ότι επηρεάζονται περισσότερο από όλα τα άλλα συστήματα από το πρόβλημα της Ψυχρής Εκκίνησης (Cold-Start Problem). Τα συστήματα συστάσεων αντιμετωπίζουν το συγκεκριμένο πρόβλημα όταν νέα αντικείμενα ή χρήστες εισέρχονται στο σύστημα και για τους οποίους διατίθεται ελάχιστη ή καθόλου πληροφορία. Αυτό οδηγεί σε κακή απόδοση του συστήματος μέχρι να αποκτηθεί η κατάλληλη γνώση για την καινούργια οντότητα (αντικείμενο ή χρήστη) και να ξεπεραστεί. Το πρόβλημα της Ψυχρής Εκκίνησης συναντάται συχνά σε όλα τα συστήματα συστάσεων, σε διαφορετικό όμως βαθμό [53].
18ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ Υβριδικά συστήματα (Hybrid Systems) Υβριδικά συστήματα συστάσεων αποτελούν τα συστήματα που συνδυάζουν πολλαπλές τεχνικές συστάσεων [37]. Σκοπός της δημιουργίας τους είναι ότι μπορούν να εκμεταλλευτούν τα προτερήματα της μιας τεχνικής για καλύψουν τα μειονεκτήματα μιας άλλης [33]. Υπάρχουν διάφορες κατηγορίες υβριδικών συστημάτων ανάλογα με τον τρόπο που συνδυάζουν τις τεχνικές συστάσεων. Η κατηγορία αυτή συστημάτων χρησιμοποιεί ένα συνδυασμό των μεθόδων που αναφέραμε παραπάνω, εκμεταλλευόμενα τα προτερήματα τις μίας τεχνικής για να καλύψουν τα μειονεκτήματα της άλλης [14]. Υπάρχουν πολλοί διαφορετικοί τρόποι με τους οποίους συνδυάζονται δύο ή και περισσότερες τεχνικές συστημάτων προτάσεων για να δημιουργηθεί ένα υβριδικό σύστημα. Στόχος του συνδυασμού διαφορετικών μεθόδων είναι η βελτίωση της απόδοσής τους [49]. 2.3.3 Γνωστά Συστημάτων Συστάσεων Τα τελευταία χρόνια πολλές εταιρίες πώλησης ή προώθησης αγαθών και υπηρεσιών μέσω του Διαδικτύου, έχουν εφαρμόσει στα συστήματα τους διάφορες μεθόδους σύστασης για τα προϊόντα τους προς τους χρήστες. Τα πιο διαδεδομένα συστήματα συστάσεων εντοπίζονται σε ιστοσελίδες και εφαρμογές ηλεκτρονικών αγορών και αποτελούν συνήθως συνεργατικά ή υβριδικά συστήματα. Μερικά παραδείγματα αποτελούν: Amazon Η ιστοσελίδα της εταιρίας Amazon.com, Inc η οποία δραστηριοποιείται στο η- λεκτρονικό εμπόριο πάσης φυσεως προϊόντων και υπηρεσιών, είναι ένα χαρακτηριστικό παράδειγμα συστημάτων συστάσεων που χρησιμοποιεί ένα πολύ ισχυρό αλγόριθμο συστάσεων. Βασίζεται στο Item-Based Collaborative Filtering. Το σύστημα αναζητά παρόμοια προϊόντα με αυτά που έχει ήδη αγοράσει η βαθμολογήσει ο χρήστης και τα αποθηκεύει σε μια λίστα. Για να ενισχυθούν οι προτάσεις, η λίστα των παρόμοιων προϊόντων συσχετίζεται με μια άλλη λίστα που διαθέτει τα προϊόντα τα οποία οι υπόλοιποι χρήστες τείνουν να αγοράζουν μαζί με τα επιλεγόμενα προϊόντα του χρήστη [17]. Το amazon.com ήταν από τις πρώτα συστήματα που εφάρμοσαν σύστημα συστάσεων μέσω της συνεργατικής συμπεριφοράς των χρηστών του. Netflix Η Netflix, όπως αναφέρθηκε προηγουμένως, αποτελεί μια εταιρία πωλήσεων και ενοικιάσεων βιντεοταινιών. Χρησιμοποιεί μια ποικιλία αλγορίθμων που ανήκουν στα συνεργατικά συστήματα συστάσεων. Βασίζεται στις βαθμολογίες που καταχωρούν οι χρήστες για τις ταινίες και τις τηλεοπτικές σειρές που παρακολουθούν, σε συνδυασμό με ομοιότητες που έχουν μεταξύ τους (είδος ταινίας, βαθμολογία κτλ). Ειδικότερα, πέρα από τις προτάσεις με βάση το είδος και τις βαθμολογίες των ταινιών, στηρίζεται και στα κοινά ενδιαφέροντα που έχουν μεταξύ τους οι χρήστες της υπηρεσίας. Χρησιμοποιώντας αυτές τις πληροφορίες και με βάση τις δραστηριότητες των χρηστών (βαθμολογίες, ιστορικό κτλ), εξάγει εξατομικευμένες προτάσεις για κάθε χρήστη [71, 9]. hulu Ενα ακόμα παράδειγμα συνεργατικού συστήματος συστάσεων είναι αυτό της εταιρίας hulu 11. Το Hulu LLC διαθέτει ιστοσελίδα για την παροχή video strea- 11 http://www.hulu.com/
2.3. ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ 19 ming τηλεοπτικών σειρών και ταινιών. Μελετά το προφίλ και τις δραστηριότητες του κάθε χρήστη (βαθμολογία, προσθήκη αγαπημένων, ιστορικό αναζητήσεων) και φιλτράροντας αυτά τα δεδομένα εξάγει προτάσεις. Επίσης διαθέτει και ένα off-line μοντέλο που στηρίζεται στα Item-Based και Content-Based συστήματα για να επεξεργάζεται και να συσχετίζει τους συνολικούς χρήστες με τις ταινίες [32]. Άλλες εμπορικές εφαρμογές συνεργατικών συστημάτων αποτελούν οι εξής: ebay, διαδικτυακή πύλη ηλεκτρονικού εμπορίου MovieLens, ιστοσελίδα για προτάσεις ταινιών στο χρήστη Google News, υπηρεσία της Google που παρέχει εξατομικευμένη ενημέρωση IMDB (Internet Movie Database), ιστοσελίδα για παροχή πληροφοριών και προτάσεων ταινιών Pandora, υπηρεσία music streaming για προτάσεις μουσικών κομματιών Spotify, διαδικτυακή υπηρεσία για streaming μουσικών κομματιών Last.fm, διαδικτυακό ραδιόφωνο κ.ά. 2.3.4 Συστημάτα Συστάσεων και Σημασιολογικός Ιστός Ο Σημασιολογικός Ιστός, όπως αναλύθηκε προηγουμένως, αποτελεί ένα νέο ευέλικτο εργαλείο αναπαράστασης της γνώσης που εκμεταλλεύεται τη σημασιολογία των δεδομένων. Με αυτόν τον τρόπο η πληροφορία χαρακτηρίζεται ως κατανοήσιμη και επεξεργάσιμη από τους ανθρώπους αλλά και τους υπολογιστές, γεγονός που έχει ως συνέπεια να καθίσταται κατάλληλη για διαμοιρασμό και επεξεργασία με πιο αποτελεσματικούς τρόπους [20]. Οπως είναι αναμενόμενο, πολλοί τομείς της επιστήμης των υπολογιστών έχουν επωφεληθεί από τις δυνατότητες του. Τα Συστήματα Συστάσεων αποτελούν έναν από αυτούς, τα οποία εφαρμόζοντας τις τεχνικές του μπορούν να ξεπεράσουν τους σημερινούς περιορισμούς που αντιμετωπίζουν και να βελτιώσουν την ποιότητα των συστάσεων που παράγουν. Οι πιο κοινοί περιορισμοί στα Συστημάτων Συστάσεων είναι αυτοί που προέρχονται από προβλήματα όπως η Ψυχρή Εκκίνηση (Cold Start) όπου νέα αντικείμενα ή χρήστες εισέρχονται στο σύστημα και για τα ο- ποία διατίθεται ελάχιστη ή καθόλου πληροφορία, τα Αραιά Δεδομένα (Data Sparsity) όπου για παράδειγμα ένας χρήστης βαθμολογεί ή έχει επιλέξει ελάχιστα αντικείμενα, η Υπερειδίκευση (Overspecialization) όπου προτείνονται μόνο αντικείμενα που είναι παρομοια με αυτά που έχουν προταθεί στο παρελθόν κ.α. [72, 18]. Αν και μερικοί συνδυασμοί των τεχνικών Σύστασης μπορούν να αντιμετωπίσουν εν μέρει τα προβληματα που παρουσιάζονται, κανένας δεν εγγυάται την πλήρη λύση τους. Για παράδειγμα τα συστήματα που χρησιμοποιούν Content-Based αλγορίθμους συστάσεων, οι οποίοι βασίζονται στη μελετη της ομοιότητας των αντικειμένων, αξιοποιουν τις λέξεις που έχουν σημανθεί στα αντικείμενα ως χαρακτηριστικά. Χωρίς τη χρήση του Σημασιολογικού Ιστού οι λέξεις αυτές δεν έχουν κάποιο νόημα. Στην αντίθετη περίπτωση όπου χρησιμοποιούνται οι τεχνολογίες του Σημασιολογικού Ιστού οι λέξεις αυτές αποκτούν σημασία και συνεπώς μετατρέπονται σε έννοιες. Ετσι οι προτάσεις που παράγονται είναι γρηγορότερες και πιο ακριβής, δεδομενου ότι δε χρειάζεται να εξεταστούν όλα τα χαρακτηριστικά και ειπλέον, σε αντίθεση με τις λέξεις, οι έννοιες
20ΚΕΦΑΛΑΙΟ 2. ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΚΑΙ ΣΥΣΤΗΜΑΤΑ ΣΥΣΤΑΣΕΩΝ δεν είναι διφορούμενες. Τέτοια συστήματα μπορούν να χαρακτηριστούν ως Semantic- Based Recommendation Systems [70]. Το κλειδί για ένα αποτελεσματικό Σύστημα Συστάσεων είναι μια βαθύτερη κατανόηση της πληροφορίας που επεξεργάζεται. Ολα τα παραδοσιακά Συστήματα Συστάσεων στηρίζονται σε περιορισμένα δεδομένα (π.χ βαθμολογήσεις, λέξεις κλειδειά (keywords)) και σε ομοιότητες μεταξύ αυτών για να εξάγουν τις προβλέψεις. Πολλές φορές όμως, τα δεδομένα είναι ανεπαρκή και τα συστήματα δεν μπορούν να λάβουν υπόψιν ορισμένους παράγοντες όπως για παράδειγμα τους λόγους επιλογής ενός συγκεκριμένου αντικειμένου προιόντος από έναν χρήστη. Η έλευση του Σημασιολογικού Ιστού όρισε μια νέα γενιά στα συστηματων συστασεων, δίνοντας τη δυνατότητα στην πληροφορία να αποκτήσει σημασιολογικό χαρακτήρα [19]. Σήμερα έχουν προταθεί αρκετά Συστήματα Συστάσεων που στηρίζονται στις τεχνολογίες του Σημασιολογικού Ιστου και συγκεκριμένα στις οντολογίες, ώστε να αντιμετωπίσουν τα προβληματα που παρουσιάζουν και βελτιώσουν την ποιότητα των προτάσεων τους [25, 1, 20, 70, 64]. Διαπιστώνοντας την ολοένα και αυξανόμενη προσοχή που αποκτούν οι οντολογίες από τους ερευνητές, προβλέπεται ότι θα χρησιμοποιηθούν σε πολλά γνωστικά πεδία και κατά συνέπεια σε μελλοντικές εφαρμογές υπολογιστικών συστημάτων [47].
Κεφάλαιο 3 Υλοποίηση εφαρμογής Σε αυτό το κεφάλαιο θα παρουσιαστεί η εφαρμογή που αναπτύχθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας. Οπως έχει αναφερθεί, πρόκειται για μία Android εφαρμογή η οποία χρησιμοποεί τεχνολογίες του Σημασιολογικού Ιστού. Συγκεκριμένα θα γίνει μία συνοπτική περιγραφή της αρχιτεκτονικής του συστήματος πάνω στο οποίο στηρίχθηκε η ανάπτυξη και υλοποίηση της και μια σύντομη παρουσίαση των τεχνολογιών που χρησιμοποιήθηκαν. Το κεφάλαιο θα ολοκληρωθεί με την αναλυτική περιγραφή της εφαρμογής και την ανασκόπηση της λειτουργίας της εφαρμογής. 3.1 Το λειτουργικό σύστημα Android Το Android είναι ένα λειτουργικό σύστημα (Operating System - OS) ανοιχτού κώδικα (open-source software) για συσκευές κινητής τηλεφωνίας το οποίο τρέχει τον πυρήνα του λειτουργικού Linux (Linux kernel). Ανήκει στην Open Handset Alliance (OHA) 1 και προωθείται από την Google [2]. Εχει σχεδιαστεί κυρίως για οθόνες αφής φορητών συσκευών όπως smartphones και tablets, με εξειδικευμένες διεπαφές χρήστη για τηλεοράσεις (Android TV), αυτοκίνητα (Android Auto) και ρολόγια χειρός (Android Wear). Η εμφάνιση και η ακόλουθη εξέλιξη του λειτουργικού συστήματος Android άρχισε με την απελευθέρωση του Android beta το Νοέμβριο 2007 [43]. Η πρώτη εμπορική έκδοση ήταν το Android 1.0, το οποίο κυκλοφόρησε το Σεπτέμβριο 2008. Το Android βρίσκεται υπό συνεχή ανάπτυξη, καθώς υφίσταται συνεχείς αναβαθμίσεις και μια σειρά από ενημερώσεις στη βάση του λειτουργικού του συστήματος από την Google και την OHA, προσθέτοντας νέα χαρακτηριστικά και πραγματοποιώντας διορθώσεις σφαλμάτων των προηγούμενων εκδόσεων. Μεγάλο τμήμα του λειτουργικού Android αποτελούν οι εφαρμογές (applications) που αναπτύσσονται. Οι εφαρμογές αυτές, επεκτείνουν τη λειτουργικότητα των συσκευών και καλύπτουν ένα ευρύ φάσμα αναγκών και διασκέδασης των χρηστών. Το Android διαθέτει πλέον μια μεγάλη ποικιλία εφαρμογών, οι οποίες μπορούν να αποκτηθούν από τους χρήστες, με μια απλή εγκατάσταση του αρχείου.apk της εφαρμογής στη συσκευή, είτε με τη λήψη τους χρησιμοποιώντας ένα από τα υπάρχοντα καταστήματα του διαδικτύου (online stores). Το Google Play Store είναι το πρωταρχικό κατάστημα εφαρμογών, το οποίο είναι εγκατεστημένο στις συσκευές Android οι οποίες συμμορφώνονται με τις απαιτήσεις συμβατότητας της Google και την άδεια χρήσης του λογισμικού της Google Mobile Services. Το Google Play Store επιτρέπει στους 1 http://www.openhandsetalliance.com/ 21
22 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ χρήστες να αναζητήσουν, να κατεβάσουν και να ενημερώσουν τις εφαρμογές που δημοσιεύονται από την Google ή από προγραμματιστές [3]. Η γλώσσα προγραμματισμού που χρησιμοποιείται για την ανάπτυξη των εφαρμογών είναι η Java σε συνδυασμό με την υποστήριξη διάφορων βιβλιοθηκών λογισμικού ανεπτυγμένων από την Google [43]. 3.2 Αρχιτεκτονική του συστήματος Η εφαρμογή που αναπτύχθηκε ανήκει στο μοντέλο λογισμικού πελάτης διακομιστής (client - server). Το μοντέλο πελάτη-διακομιστή αποτελεί μία συνήθη μέθοδο ανάπτυξης λογισμικού στην οποία ο πελάτης, ένα τμήμα λογισμικού, ζητά κάτι (π.χ. έναν πόρο, τα αποτελέσματα ενός υπολογισμού κ.ο.κ.) και ο διακομιστής (ή εξυπηρετητής), ένα άλλο τμήμα λογισμικού του το επιστρέφει. Κάθε διακομιστής μπορεί να εξυπηρετεί πολλαπλούς πελάτες. Η αρχιτεκτονική του συστήματος ορίζει δύο μέρη, την εφαρμογή-πελάτη (client) και την εφαρμογή-διακομιστή (server). Στη μεριά του διακομιστή (server side) συναντούμε την οντολογία καθώς και διάφορες τεχνολογίες που είναι απαραίτητες για την υλοποίηση της εφαρμογής. Στην μεριά του πελάτη (client side) βρίσκεται η κάθε Android συσκευή στην οποία έχει εγκατασταθεί η εφαρμογή και επιθυμεί να συνδεθεί με τον server κατά την εκτέλεση της. Για την επικοινωνία και τη μεταφορά δεδομένων μεταξύ του server και της συσκευής έγινε χρήση του Πρωτοκόλλου μεταφοράς Υπερκειμένου (HyperText Transfer Protocol, HTTP). Στην Εικόνα 3.1 παρουσιάζεται η αρχιτεκτονική του συστήματος που υλοποιήσαμε. Εικόνα 3.1: Η αρχιτεκτονική του συστήματος Ακολουθεί η περιγραφή της αρχιτεκτονικής του συστήματος και των τεχνολογιών που χρησιμοποιήθηκαν. 3.3 Server side Οπως φαίνεται και στο παρακάτω σχήμα, στον server βρίσκονται:
3.3. SERVER SIDE 23 Εικόνα 3.2: Server-side του συστήματος η οντολογία, η οποία περιέχει όλη την πληροφορία που χρειάζεται η εφαρμογή (στοιχεία χρηστών, βιβλία με τα χαρακτηριστικά τους, θεματικές κατηγορίες κτλ) ο servlet, ο οποίος περιέχει τον αλγόριθμο των προτάσεων και διάφορους μεθόδους επεξεργασίας της οντολογίας τα php files, μέσω των οποίων γίνεται ουσιαστικά η επικοινωνία της συσκευής με το διακομιστή 3.3.1 Δημιουργία οντολογίας Στην παράγραφο αυτή θα γίνει μία συνοπτική παρουσίαση της οντολογίας που αναπτύχθηκε, περιγράφοντας το πεδίο γνώσης που αναπαριστά. Αρχικά, να σημειωθεί ότι για την ανάπτυξη της οντολογίας χρησιμοποιήθηκε το εργαλείο ανάπτυξης Protégé 3.5. Η γλώσσα που επιλέχθηκε είναι η γλώσσα οντολογιών ιστού OWL DL, έτσι ώστε να υπάρχει η μέγιστη δυνατή εκφραστικότητα διατηρώντας όμως την υπολογιστική πληρότητα και την αποφασισιμότητα. Η οντολογία που κλήθηκε να δημιουργηθεί στα πλαίσια της παρούσας διπλωματικής εργασίας αποτελεί ένα πεδίο γνώσης μιας εφαρμογής που προτείνει βιβλία στους χρήστες της. Για την περιγραφή του πεδίου γνώσης της οντολογίας χρειάστηκε να οριστούν κάποιες βασικές έννοιες καθώς και οι σχέσεις μεταξύ τους. Βασικό κομμάτι
24 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ της οντολογίας αποτελούν τα βιβλία και οι χρήστες του συστήματος. Οι προτάσεις γίνονται με βάση τις θεματικές κατηγορίες βιβλίων που αρέσουν στους χρήστες αλλά και μελετώντας τις ενέργειες των υπόλοιπων χρηστών του συστήματος. Επομένως πρέπει να οριστούν οι κατηγορίες των βιβλίων όπως επίσης και κάποιες ιδιότητες των χρηστών που να φανερώνουν τις προτιμήσεις και τη συμπεριφορά τους. Επίσης απαραίτητες πληροφορίες για τη λειτουργία του συστήματος αποτελούν και τα διάφορα χαρακτηριστικά των βιβλίων όπως για παράδειγμα ο συγγραφέας, οι εκδόσεις, η βαθμολογία τους, κ.α. Ακολουθεί μια αναλυτικότερη επεξήγηση των κλάσεων και των ιδιοτήτων που δημιουργήθηκαν, περιγράφοντας έτσι τη δομή της οντολογίας. Η οντολογία αποτελείται συνολικά από 5 κλάσεις: την κλάση book η οποία αντιπροσωπεύει τα βιβλία που έχουν καταχωρηθεί στο σύστημα, την κλάση user η οποία αντιπροσωπεύει τους εγγεγραμένου χρήστες, την κλάση author, η οποία αντιπροσωπεύει τους συγγραφείς των βιβλίων, την κλάση category η οποία αντιπροσωπεύει τις κατηγορίες των βιβλίων και την κλάση publisher η οποία αντιπροσωπεύει τις εκδόσεις των βιβλίων. Εικόνα 3.3: Οι κλάσεις της οντολογίας όπως παρουσιάζονται στο γραφικό περιβάλλον του Protégé 3.5 Ολες οι κλάσεις είναι πρωταρχικές (καμία δεν αποτελεί συμπέρασμα κανόνα), ξένες (disjoint) μεταξύ τους και οι οποίες κληρονομούν τις ιδιότητες τους απευθείας από την κλάση owl:thing, όπως φαίνεται στην επόμενη εικόνα χρησιμοποιώντας το plugin εργαλείο OWLViz 2. 2 http://protegewiki.stanford.edu/wiki/owlviz
3.3. SERVER SIDE 25 Εικόνα 3.4: Οπτικοποίηση των κλάσεων της οντολογίας μέσω του plugin OWLViz Οσον αφορά τις ιδιότητες, η οντολογία αποτελείται από 21 ιδιότητες, από τις οποίες οι 9 είναι ObjectProperties και υπόλοιπες 12 είναι DatatypeProperties: (αʹ) ObjectProperties (βʹ) DatatypeProperties Εικόνα 3.5: Οι ιδιότητες της οντολογίας όπως παρουσιάζονται στο γραφικό περιβάλλον του Protégé 3.5
26 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ Στους παρακάτω πίνακες παρουσιάζονται οι κλάσεις μαζί με τις ιδιότητες που έχουν οριστεί στην καθεμία: Κλάση book DatatypeProperties Ιδιότητα Τύπος δεδομένων Περιγραφή has_title String Αντιπροσωπεύει τον τίτλο του βιβλίου has_summary String Αντιπροσωπεύει την περίληψη του βιβλίου has_pages int Αντιπροσωπεύει τις σελίδες του βιβλίου has_rating float Αντιπροσωπεύει τη γενική βαθμολογία του βιβλίου has_year int Αντιπροσωπεύει το έτος κυκλοφορίας του βιβλίου is_best_seller boolean Αντιπροσωπεύει το αν το βιβλίο είναι best seller has_cover String Αντιπροσωπεύει την εικόνα του εξωφύλλου του βιβλίου (αʹ) DatatypeProperties της κλάσης book ObjectProperties Ιδιότητα Κλάση αντικείμενο Περιγραφή writen_by author Ορίζει το συγγραφέα του βιβλίου belongs category Ορίζει την κατηγορία ή τις κατηγορίες που ανήκει το βιβλίο published_by publisher Ορίζει τις εκδόσεις του βιβλίου read_by user Ορίζει το χρήστη ή τους χρήστες που έχουν επιλέξει το βιβλίο (βʹ) ObjectProperties της κλάσης book Πίνακας 3.1: Ιδιότητες κλάσης book
3.3. SERVER SIDE 27 Κλάση user DatatypeProperties Ιδιότητα Τύπος δεδομένων Περιγραφή has_password String Αντιπροσωπεύει τον κωδικό πρόσβασης κάθε χρήστη για τη σύνδεση του στο σύστημα rates String Αντιπροσωπεύει τη βαθμολογία που δίνει ο χρήστης για ένα βιβλίο (αʹ) DatatypeProperties της κλάσης user ObjectProperties Ιδιότητα Κλάση αντικείμενο Περιγραφή likes category Ορίζει τις κατηγορίες βιβλίων που αρέσουν στο χρήστη reading_list book Ορίζει τα βιβλία που ο χρήστης έχει αποθηκεύσει σε λίστα για μελλοντικό διάβασμα (βʹ) ObjectProperties της κλάσης user Πίνακας 3.2: Ιδιότητες κλάσης user Κλάση author DatatypeProperties Ιδιότητα Τύπος δεδομένων Περιγραφή has_name String Αντιπροσωπεύει το ονοματεπώνυμο του συγγραφέα (αʹ) DatatypeProperties της κλάσης author ObjectProperties Ιδιότητα Κλάση αντικείμενο Περιγραφή writes book Ορίζει τα βιβλία που έχει συγγράψει ο συγγραφέας (βʹ) ObjectProperties της κλάσης author Πίνακας 3.3: Ιδιότητες κλάσης author
28 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ Κλάση category DatatypeProperties Ιδιότητα Τύπος δεδομένων Περιγραφή has_category_name String Αντιπροσωπεύει το όνομα της κατηγορίας Πίνακας 3.4: Ιδιότητες κλάσης category Κλάση publisher DatatypeProperties Ιδιότητα Τύπος δεδομένων Περιγραφή has_publisher_name String Αντιπροσωπεύει το όνομα των εκδόσεων (αʹ) DatatypeProperties της κλάσης publisher ObjectProperties Ιδιότητα Κλάση αντικείμενο Περιγραφή publishes book Ορίζει τα βιβλία των εκδόσεων (βʹ) ObjectProperties της κλάσης publisher Πίνακας 3.5: Ιδιότητες κλάσης publisher
3.3. SERVER SIDE 29 Χρησιμοποιώντας το plugin εργαλείο VOWL 3, το οποίο παρουσιάζει γραφικά τις και τις ιδιότητες της οντολογίας καθώς και τις μεταξύ τους σχέσεις, προκύπτει το παρακάτω γράφημα: Εικόνα 3.6: Οπτικοποίηση της οντολογίας μέσω του plugin VOWL Τέλος, την οντολογία ολοκληρώνουν τα διάφορα διακριτά στιγμιότυπα. 3.3.2 Servlet Για τη συγγραφή του κώδικα του διακομιστή (server-side programming), ο οποίος ε- πικοινωνεί με την οντολογία της εφαρμογής και εκτελεί τις απαραίτητες λειτουργίες για την επεξεργασία της, επιλέχθηκε η γλώσσα προγραμματισμού Java και συγκεκριμένα υλοποιήθηκε ένα java servlet. Με τον όρο servlet (μικροεφαρμογή διακομιστή) εννοούμε μια εφαρμογή ή ένα σενάριο (script) γραμμένο σε γλώσσα Java το οποίο εκτελείται σε έναν εξυπηρετητή (π.χ Ιστού). Τα servlets παρέχουν μια μέθοδο για την ανάπτυξη διαδικτυακών εφαρμογών (web applications ή web apps) (εφαρμογές οι οποίες είναι διαθέσιμες μέσω του Διαδικτύου και ο χρήστης χρησιμοποιεί μόνο τον περιηγητή του για να τις εκτελέσει) βασισμένα αποκλειστικά στις τεχνολογίες της Java. Αποτελούν τμήματα λογισμικού (Java δυναμικές κλάσεις) που επεκτείνουν τις δυνατότητες των servers δημιουργώντας δυναμικό περιεχόμενο (συνήθως html) μέσω του προγραμματιστικού μοντέλου ερωτήσεων απαντήσεων. Εκμεταλλεύονται όλα τα προτερήματα που προσφέρει η Java συμπεριλαμβανομένων της αντικειμενοστρέφειας και της ευκολίας 3 http://vowl.visualdataweb.org/
30 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ ανάπτυξης και της ανεξαρτησίας πλατφόρμας. Επίσης μπορούν να έχουν πρόσβαση σε ένα μεγάλο σύνολο από APIs που είναι διαθέσιμα για την προγραμματιστική πλατφόρμα της. Η επικοινωνία στηρίζεται στο τυποποιημένο πρωτόκολλο επικοινωνίας Java Server API, που υποστηρίζεται από πολλούς servers [24]. Στην παρούσα εργασία χρησιμοποιήθηκε ως διακομιστής εφαρμογής ο Apache Tomcat 4 και συγκεκριμένα η έκδοση Tomcat 7.0.65. Ο Apache Tomcat είναι ένας διακομιστής διαδικτύου ανοιχτού κώδικα που αναπτύχθηκε από την Apache Software Foundation (ASF) 5. Υλοποιεί διάφορες τεχνολογίες της Java EE, όπως για παράδειγμα Java Servlet, JavaServer Pages (JSP), Java WebSocket και επίσης αποτελεί έναν web server όπου μπορεί να εκτελεστεί κώδικας υλοποιημένος αποκλειστικά στη γλώσσα προγραμματισμού Java. Ο servlet που δημιουργήθηκε στην παρούσα εργασία, αναπτύχθηκε στο ολοκληρωμένο περιβάλλον ανάπτυξης (integrated development environment - IDE) Eclipse 6 και συγκεκριμένα στην έκδοση Eclipse Kepler 4.3.2. Υλοποιεί τις λειτουργίες που απαιτούνται για την επεξεργασία της οντολογίας στα πλαίσια της εφαρμογής καθώς και τον αλγόριθμο προτάσεων των βιβλίων. Πιο συγκεκριμένα: 3.3.2.1 Επεξεργασία της οντολογίας Ο κώδικας που αναπτύχθηκε για την επεξεργασία της οντολογίας περιλαμβάνει τις εξής κύριες λειτουργίες: Εύρεση και φόρτωση του αρχείου.owl της οντολογίας Προσθήκη, επεξεργασία και διαγραφή στιγμιότυπων Προσθήκη, επεξεργασία και διαγραφή ιδιοτήτων Εκτέλεση SPARQL ερωτημάτων Αποθήκευση των αλλαγών που πραγματοποιούνται Τεχνολογίες που χρησιμοποιήθηκαν Στην παράγραφο αυτή θα περιγραφούν σύντομα κάποιες τεχνολογίες, που χρησιμοποιήθηκαν για την υλοποίηση των λειτουργιών που αναφέρθηκαν. Συγκεκριμένα, θα γίνει επισκόπηση των προγραμματιστικών διεπαφών OWL API και της διεπαφής που περιλαμβάνει το Jena όπως επίσης και του μηχανισμού συλλογισμού Pellet, τα οποία ενσωματώθηκαν στο Eclipse μέσω της εισαγωγής των κατάλληλων βιβλιοθηκών. Jena Το Apache Jena 7 αποτελεί ένα προγραμματιστικό εργαλείο ανοιχτού κώδικα για την ανάπτυξη εφαρμογών Σημασιολογικού Ιστού σε Java. Παρέχει ένα προγραμματιστικό περιβάλλον για το χειρισμό γλωσσών οντολογιών όπως RDF, RDFS, OWL αλλά και της γλώσσας ερωτημάτων SPARQL [55]. Το πλαίσιο εργασίας (framework) Jena έχει αναπτυχθεί από το τμήμα έρευνας του Σημασιολογικού Ιστού της Hewlett Packard Labs 8 της εταιρίας Hewlett Packard. Συγκεκριμένα 4 http://tomcat.apache.org/ 5 https://www.apache.org/ 6 https://eclipse.org/ 7 https://jena.apache.org/ 8 http://www8.hp.com/us/en/hp-labs/index.html
3.3. SERVER SIDE 31 διαθέτει μια εσωτερική διεπαφή για εισαγωγή και εξαγωγή πληροφοριών με τη χρήση RDF γραφημάτων. Επίσης ενσωματώνει ένα βασικό εργαλείο εξαγωγής συμπερασμάτων το οποίο βασίζεται σε κανόνες υποστηρίζοντας σχεδόν κάθε έκφραση της RDFS. OWL API Το OWL API 9 είναι μια διεπαφή, υλοποιημένη σε Java (Java interface and i- mplementation) για την για την πρόσβαση και τον χειρισμό οντολογιών μέσω της γλώσσας οντολογιών ιστού OWL. Αναπτύχθηκε και συντηρείται κυρίως από το πανεπιστήμιο του Manchster, αλλά υπήρξαν και σημαντικές συνεισφορές από διάφορες ομάδες και επιχειρήσεις όπως την Clark & Parsia LLC και το Πανεπιστήμιο του Ulm. Αποτελείται από προγραμματιστικές βιβλιοθήκες και μεθόδους, οι οποίες παρέχουν μια υψηλού επιπέδου διεπαφή για την πρόσβαση και τον χειρισμό OWL οντολογιών [36]. Το OWL API είναι ανοικτού κώδικα και είναι διαθέσιμο με LGPL ή Apache άδειες. Περά από τις δυνατότητες για την απλή επεξεργασία της οντολογίας που παρέχει το OWL API, χρησιμοποιήθηκε και η δυνατότητα αλληλεπίδρασης με reasoners. Με τον όρο reasoner περιγράφουμε ένα προγραμματιστικό εργαλείο για την εκτέλεση συλλογισμών στις οντολογίες, όπως αναφέρθηκε στο προηγούμενο κεφάλαιο. Το OWL API περιλαμβάνει διάφορες διεπαφές για την πρόσβαση σε OWL reasoners. Pellet reasoner Ενας από τους πλέον γνωστούς μηχανισμούς συλλογισμού είναι ο Pellet 10. Πρόκειται για ένα λογισμικό ανοιχτού κώδικα, υλοποιημένο σε Java και συντηρείται από την Clark & Parsia LLC. Μπορεί να λειτουργήσει ως αυτόνομη εφαρμογή ώστε να διαχειριστεί απευθείας έγγραφα OWL ή να ενσωματωθεί σε διάφορες άλλες εφαρμογές. Συγκεκριμένα μπορεί να χρησιμοποιηθεί σε συνδυασμό με άλλες διεπαφές όπως το Jena και το OWL API, όπως στην παρούσα εργασία. Εχει τη δυνατότητα να ελέγχει τη συνέπεια των οντολογιών, να α- ντιλαμβάνεται την ιεραρχία των κλάσεων, να εξάγει συμπεράσματα καθώς και να ανταποκρίνεται σε ερωτήματα SPARQL. Οι αλγόριθμοι συλλογιστικής που χρησιμοποιεί ο Pellet, βασίζονται στους αλγόριθμους ταμπλό (tableau) που αναπτύχθηκαν για τις εκφραστικές Περιγραφικές λογικές [13]. Οι βιβλιοθήκες του Pellet είναι επίσης ενσωματωμένες στο εργαλείο SWOOP και στο Protégé 4. 3.3.2.2 Ανάπτυξη αλγορίθμου για προτάσεις βιβλίων Ο αλγόριθμος που αναπτύχθηκε στη παρούσα εργασία, αποτελεί ένα σύστημα προτάσεων βιβλίων σε χρήστες μιας εφαρμογής για κινητά τηλέφωνα. Στόχος του είναι τα προτεινόμενα βιβλία να ανταποκρίνονται στις προτιμήσεις του κάθε χρήστη. Οι προτάσεις προκύπτουν από τις θεματικές κατηγορίες βιβλίων που προτιμά ο ίδιος, τις βαθμολογίες των βιβλίων που έχουν καταχωρηθεί αλλά και μελετώντας τη συμπεριφορά των άλλων χρηστών με τις ίδιες προτιμήσεις. Επίσης προτείνει βιβλία που μπορεί να ανήκουν σε κάποιες από τις υπόλοιπες κατηγορίες αλλά υπάρχει πιθανότητα να του 9 http://owlapi.sourceforge.net/ 10 http://pellet.owldl.com/
32 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ αρέσουν. Το σύστημα επεξεργάζεται τις πληροφορίες των βιβλίων και σε συνδυασμό με τις προτιμήσεις και τη δραστηριότητα όλων των μελών του συστήματος, εκτελεί υπολογισμούς για την εξαγωγή συμπερασμάτων. Συνεπώς πρόκειται για ένα υβριδικό σύστημα συστάσεων που βασίζεται κυρίως στα συνεργατικά και Content-Based συστήματα. Οι προτάσεις γίνονται με βάση τις θεματικές κατηγορίες βιβλίων που αρέσουν στο χρήστη αλλά και με βάση τις κοινές κατηγορίες που μπορεί να έχει με τους υπόλοιπους. Μπορούν να ιεραρχηθούν σε 3 ομάδες: 1η ομάδα προτάσεων - Προτάσεις από επιλεγμένες κατηγορίες Προτείνονται βιβλία που ανήκουν στις κατηγορίες που έχει δηλώσει ο χρήστης ότι του αρέσουν, με βάση τη βαθμολογία τους σε φθίνουσα σειρά. 2η ομάδα προτάσεων - Προτάσεις από κοινές κατηγορίες με άλλους χρήστες Προτείνονται βιβλία που έχουν διαβαστεί από συγκεκριμένους χρήστες οι οποίοι επιλέγονται με την εξής διαδικασία: Υπολογίζονται οι κοινές κατηγορίες του χρήστη με κάθε έναν από τους υπόλοιπους, όπως επίσης και το ποσοστό των κοινών κατηγοριών σε σχέση με τις συνολικές κατηγορίες του. Αν το ποσοστό είναι πάνω από 50% τότε προτείνονται τα βιβλία που ο εκάστοτε χρήστης έχει βαθμολογήσει με πάνω από 3,5 στα 5 αστέρια και ανήκουν στις κοινές κατηγορίες τους. 3η ομάδα προτάσεων - Προτάσεις από τις υπόλοιπες κατηγορίες Από τους χρήστες που επιλέχθηκαν από την προηγούμενη διαδικασία, υπολογίζονται επιπλέον τα ποσοστά των κοινών κατηγοριών τους (με τον χρήστη) σε σχέση με τις δικές τους συνολικές κατηγορίες. Αν το ποσοστό αυτό είναι πάνω από 70%, τότε προτείνονται τα βιβλία που ο κάθε ένας έχει βαθμολογήσει με πάνω από 3,5 στα 5 αστέρια και τα οποία ανήκουν σε κατηγορίες που δεν έχει επιλέξει ο χρήστης. Ο σκοπός αυτών των προτάσεων είναι ότι αφού υπάρχει μεγάλο ποσοστό ομοιότητας και από τις δυο πλευρές (ποσοστό κοινών κατηγοριών σε σχέση με τις συνολικές κατηγορίες του χρήστη και ποσοστό κοινών κατηγοριών σε σχέση με τις συνολικές κατηγορίες των υπολοίπων χρηστών) τότε υπάρχει μεγάλη πιθανότητα να βρεθούν βιβλία που να αρέσουν στο χρήστη, ακόμα και από κατηγορίες που δεν έχει προσθέσει. Στην παρούσα έκδοση της εφαρμογής προτείνονται 20 βιβλία. Τα πρώτα 10 προέρχονται από την 3η ομάδα προτάσεων, τα επόμενα 6 από την 2η ομάδα και τα υπόλοιπα 4 από την 1η ομάδα. Σε περίπτωση που τα αποτελέσματα κάποιας ομάδας δεν φτάσουν τον απαιτούμενο αριθμό, τότε συμπληρώνονται βιβλία από τις αμέσως προηγούμενες ομάδες. 3.3.3 PHP files Στον server υπάρχουν επίσης τα αρχεία.php, τα οποία μεσολαβούν για την πραγματοποίηση της επικοινωνίας client server χρησιμοποιώντας το HTTP πρωτόκολλο. Επικοινωνούν με τον servlet και είναι υπεύθυνα για την αποστολή και λήψη δεδομένων μεταξύ αυτού και της android εφαρμογής. Είναι υλοποιημένα με τη χρήση της PHP γλώσσας προγραμματισμού.
3.3. SERVER SIDE 33 Η PHP 11 είναι μία γενικού σκοπού server-side γλώσσα προγραμματισμού που βασίζεται στη δημιουργία σενάριων (scripts) και σχεδιάστηκε για τη χρήση της σε διαδικτυακό προγραμματισμό και την παραγωγή δυναμικών ιστοσελίδων. Αποτελεί την πιο διαδεδομένη scripting γλώσσα για εφαρμογές που εκτελούνται σε servers. Τα PHP scripts τοποθετούνται στον server και μπορούν να κληθούν από όποιον client τα χρειαστεί. Στα πλαίσια της εργασίας ο client είναι η κάθε Android συσκευή που διαθέτει τη συγκεκριμένη εφαρμογή και πρόκειται να συνδεθεί με τον server για να λάβει και να στείλει δεδομένα. Συνεπώς, τα PHP αρχεία χρησιμοποιήθηκαν ως ο ενδιάμεσος κρίκος μεταξύ της Android εφαρμογής και των δεδομένων που υπάρχουν στον server, παρέχοντας πληροφορίες από την οντολογία ή γράφοντας σε αυτήν. Οι πληροφορίες αυτές χρησιμοποιούνται για την υλοποίηση των διαφόρων δραστηριοτήτων που καλείται να εκτελέσει η εφαρμογή, τις οποίες θα αναλύσουμε στη συνέχεια. Η κλήση ενός script γίνεται απευθείας μέσω του url του. Η κλήση αυτή μπορεί να περιέχει και τον ορισμό κάποιον παραμέτρων εάν αυτό είναι απαραίτητο. Η έκδοση PHP που χρησιμοποιείται στην εφαρμογή είναι η 5.5.12 και για την α- νάπτυξη των PHP scripts χρησιμοποιήθηκε ο επεξεργαστής κειμένου Notepad ++. Τα δεδομένα που αποστέλλει ο server μέσω των php αρχείων είναι κωδικοποιημένα σε μορφή JSON (JSON format). Γενικά σε μία client-server επικοινωνία χρησιμοποιούνται δύο μέθοδοι κωδικοποίησης των δεδομένων, η XML και η JSON. Και οι δύο θεωρούνται αποτελεσματικές και βρίσκουν χρήση σε πληθώρα εφαρμογών. Ομως στις εφαρμογές κινητών τηλεφώνων προτιμάται η κωδικοποίηση JSON, καθώς έχει μεγαλύτερη αποδοτικότητα στην οικονομία της μνήμης, χαρακτηριστικό που είναι σημαντικό για τις κινητές συσκευές όπου υπάρχουν περιορισμοί. Το JSON (JavaScript Object Notation) 12 αποτελεί ένα ελαφρύ πρότυπο ανταλλαγής δεδομένων. Είναι τελείως ανεξάρτητο από γλώσσες προγραμματισμού αλλά χρησιμοποιεί πρακτικές οι οποίες είναι γνωστές στους προγραμματιστές της οικογένειας προγραμματισμού C, συμπεριλαμβανομένων των C, C++, C#, Java, JavaScript, Perl, Python, και πολλών άλλων. Αυτές οι ιδιότητες κάνουν το JSON μια ιδανική γλώσσα προγραμματισμού ανταλλαγής δεδομένων. Εχει στόχο τη διευκόλυνση των ανθρώπων και των μηχανών, παρέχοντας εύκολη αναγνωσιμότητα και επεξεργασία και από τις δύο πλευρές. Μπορεί να χτιστεί πάνω σε δύο δομές: στα απλά αντικείμενα (JSON objects) και στους πίνακες αντικειμένων (JSON Arrays). Το κάθε αντικείμενο περιέχει πληροφορίες οι οποίες περιγράφονται σε ζευγάρια ονομάτων/τιμών, ενώ ο πίνακας μπορεί να περιέχει πολλά αντικείμενα [8]. Το JSON είναι ουσιαστικά ένας δομημένος και οργανωμένος τρόπος αποθήκευσης δεδομένων οποιουδήποτε τύπου. 3.3.4 Η τεχνολογία PHP/Java Bridge Οπως βλέπουμε στο σχήμα της αρχιτεκτονικής του συστήματος της παρούσας εργασίας, έχει χρησιμοποιηθεί εκτός των άλλων, και η τεχνολογία PHP/Java Bridge. Ο servlet και οι τεχνολογίες που χρησιμοποιεί αποτελούν, όπως επισημάνθηκε παραπάνω, εφαρμογές ανοικτού κώδικα υλοποιημένες σε Java. Από την άλλη πλευρά, τα αρχεία PHP αναπτύχθηκαν με τη χρήση της γλώσσας PHP. Το πρόβλημα που προέκυψε ήταν πως μπορούσαν ο servlet και τα αρχεία PHP να «επικοινωνούν» μεταξύ τους και να «συνεργάζονται». Τη λύση στο πρόβλημα έδωσε η PHP/Java Bridge. Η PHP/Java Bridge είναι μια εφαρμογή ενός διαδικτυακού πρωτοκόλλου ροής βασισμένο στην XML, 11 https://secure.php.net/ 12 http://www.json.org/
34 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ το οποίο μπορεί να χρησιμοποιηθεί για να συνδέσει μια εγγενή μηχανή εγγράφων (native script engine), παραδείγματος χάριν γλώσσαςphp, Scheme ή Python, με μια Java εικονική μηχανή (virtual engine) [52]. Η PHP/Java Bridge διανέμεται ως τυποποιημένη JEE (Java Platform, Enterprise Edition - ευρέως διαδεδομένη πλατφόρμα για server-side programming που στηρίζεται στη Java) εφαρμογή Ιστού. Μπορεί να επεκταθεί σε οποιοδήποτε τυποποιημένη μηχανή servlet ή διακομιστή εφαρμογών της Java. Σύμφωνα με την Oracle 13,δύο PHP/Java Bridge είναι διαθέσιμες. Η μία είναι ένα εμπορικό προϊόν διαθέσιμο από την εταιρία Zend Technologies Ltd, ενώ η δεύτερη αποτελεί ένα τμήμα ανοικτού κώδικα, που χορηγείται με άδεια LGPL, που «φιλοξενείται» στη διαδικτυακή υπηρεσία SourceForge [16]. Για την υλοποίηση της εφαρμογής που αναπτύχθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας, χρησιμοποιείται η δεύτερη διαθέσιμη υλοποίηση της PHP/Java Bridge. 3.4 Client side Οπως αναλύθηκε σε προηγούμενη παράγραφο, κάθε Android συσκευή η οποία διαθέτει την εφαρμογή αποτελεί τον client του συστήματος: Εικόνα 3.7: Client-side του συστήματος 13 https://www.oracle.com/index.html
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 35 Για την ανάπτυξη της εφαρμογής χρησιμοποιήθηκε το IDE περιβάλλον προγραμματισμού Android Studio, το Android SDK Tools το οποίο περιέχει όλα τα απαραίτητα εργαλεία για ανάπτυξη και αποσφαλμάτωση μιας Android εφαρμογής και φυσικά η γλώσσα προγραμματισμού Java. Το Android Studio 14 παρέχει έναν γρήγορο και εξελιγμένο editor βασισμένο στην τεχνολογία IntelJ IDEA. Παρέχει επίσης ένα γραφικό περιβάλλον ειδικό για την σύνθεση γραφικών διεπαφών για τις εφαρμογές, το οποίο επιτρέπει με απλό γραφικό τρόπο να δημιουργηθεί το γραφικό περιβάλλον κάθε οθόνης. Το Android Studio έχει επίσης ενσωματωμένο Android SDK Manager το οποίο μας επιτρέπει να κατεβάσουμε APIs, drivers καθώς χρήσιμες βιβλιοθήκες και υπηρεσίες για την ανάπτυξη των εφαρμογών. Ιδιαίτερα χρήσιμο είναι επίσης και το Android Device Manager το οποίο προσφέρει τη δημιουργία προσομοιωτών για την αποσφαλμάτωση σε εικονικές Android συσκευές με διαφορετικές εκδόσεις λογισμικού και διαφορετικά τεχνικά χαρακτηριστικά. Για την ανάπτυξη της εφαρμογής χρησιμοποιήθηκε το Android Studio 1.5.1 και το SDK version 15. 3.5 Ανασκόπηση εφαρμογής Για τις ανάγκες της παρούσας διπλωματικής εργασίας δημιουργήθηκε η εφαρμογή My- BookApp. Πρόκειται για Android εφαρμογή που προτείνει βιβλία στους χρήστες της. Το σύστημα προτάσεων της βασίζεται στα συνεργατικά Συστήματα Συστάσεων και η πληροφορία που διαχειρίζεται αποτελεί μια οντολογία. Σε αυτήν την ενότητα θα γίνει μια παρουσίαση της εφαρμογής, μέσω της ανασκόπησης του γραφικού περιβάλλοντος και των λειτουργιών της. Θα περιγραφούν όλες οι διαφορετικές «οθόνες» της εφαρμογής, ο τρόπος σύνδεσης μεταξύ τους και όλες οι δυνατές επιλογές που έχει ο χρήστης όταν βρίσκεται σε συγκεκριμένη οθόνη. Οι «οθόνες» της εφαρμογής, υλοποιούνται μέσω των δραστηριοτήτων (activities), οι οποίες αποτελούν το πιο βασικό δομικό στοιχείο των Android εφαρμογών. Κάθε δραστηριότητα λοιπόν ορίζει κάθε «οθόνη» με τις λειτουργίες της εφαρμογής, δηλαδή το γραφικό περιβάλλον χρήστη (Graphical User Interface, GUI) με το οποίο αλληλεπιδρά ο χρήστης. Στην Εικόνα 3.8 παρουσιάζεται το βασικό διάγραμμα ροής πλοήγησης των δραστηριοτήτων της εφαρμογής. 14 https://developer.android.com/studio/index.html
36 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ Εικόνα 3.8: Βασικό διάγραμμα ροής πλοήγησης των δραστηριοτήτων της εφαρμογής Η εφαρμογή ξεκινά όταν ο χρήστης πιέσει στη συσκευή το εικονίδιο της εφαρμογής (Application launched). Αξίζει να σημειωθεί ότι για κάθε βέλος ισχύει και η ροή προς τα πίσω ή σε μερικές περιπτώσεις η ροή σε διαφορετική δραστηριότητα. Στην πρώτη περίπτωση η πίεση του πλήκτρου «πίσω» (back) της συσκευής κλείνει την τρέχουσα δραστηριότητα και η ροή επιστρέφει σε αυτήν που την κάλεσε, ενώ στη δεύτερη περίπτωση η μετάβαση σε διαφορετική δραστηριότητα γίνεται μέσω ενός μενού πλοήγησης (sliding menu) το οποίο υπάρχει στις περισσότερες δραστηριότητες και ο- δηγεί στη συγκεκριμένη που επιλέγεται από τον χρήστη. Στη συνέχεια ακολουθεί μία αναλυτική περιγραφή της κάθε δραστηριότητας, του γραφικού περιεχομένου και των λειτουργιών που εκτελεί καθώς και της ροής μετάβασης μεταξύ τους. Μόλις ο χρήστης εγκαταστήσει την εφαρμογή στη συσκευή του και πιέσει το εικονίδιο της για να ξεκινήσει, ενεργοποιείται η δραστηριότητα MainActivity. Το γραφικό της περιβάλλον φαίνεται στην παρακάτων εικόνα:
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 37 Εικόνα 3.9: Γραφικό περιβάλλον της δραστηριότητας MainActivity, η οποία ενεργοποιείται κατά την εκκίνηση της εφαρμογής Αποτελείται από το λογότυπο της εφαρμογής και μία φόρμα υποβολής στην οποία ο χρήστης καλείται να εισάγει το username και τον κωδικό του ώστε να γίνει η ταυτοποίηση των στοιχείων του. Σε περίπτωση λάθους username ή κωδικού, εμφανίζονται τα κατάλληλα μηνύματα: (αʹ) Περίπτωση λανθασμένου username (βʹ) Περίπτωση λανθασμένου κωδικού Εικόνα 3.10: Γραφικό περιβάλλον της δραστηριότητας MainActivity για την περίπτωση εισαγωγής λανθασμένων στοιχείων ταυτοποίησης
38 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ Αν τα στοιχεία του χρήστη είναι έγκυρα τότε εισέρχεται στο σύστημα. Καλείται η δραστηριότητα HomeActivity, η οποία αποτελεί την αρχική σελίδα της εφαρμογής και εμφανίζεται έναν μήνυμα καλωσορίσματος του χρήστη: Εικόνα 3.11: Γραφικό περιβάλλον της δραστηριότητας HomeActivity η οποία αποτελεί την αρχική σελίδα της εφαρμογής Ξεκινώντας την ανάλυση του γραφικού της περιβάλλοντος, βλέπουμε ότι υπάρχει μια μπάρα (action bar), η οποία εμφανίζεται σε όλες τις δραστηριότητες. Στη μπάρα της συγκεκριμένης δραστηριότητας, βρίσκονται το κουμπί που αποτελεί το μενού και η λέξη «Αρχική», που ενημερώνει το χρήστη ότι βρίσκεται στην αρχική σελίδα της εφαρμογής. Το μενού, το οποίο εμφανίζεται στο δεξί μέρος της οθόνης πατώντας το κουμπί ενεργοποίησης του ή ολισθαίνοντας την οθόνη από αριστερά, φαίνεται στην επόμενη εικόνα.
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 39 Εικόνα 3.12: Το sliding menu της εφαρμογής Στο πάνω μέρος υπάρχει το λογότυπο της εφαρμογής ακολουθούμενο από το username του χρήστη που είναι συνδεδεμένος. Ακολουθεί η λίστα του μενού της εφαρμογής, η οποία περιλαμβάνει τις εξής ενέργειες: Αρχική Μετάβαση στην αρχική σελίδα Προτάσεις Μετάβαση στη δραστηριότητα BooListActivity, η οποία περιέχει μια λίστα με τα βιβλία που προτείνει το σύστημα συστάσεων της εφαρμογής Οι κατηγορίες μου Μετάβαση στη δραστηριότητα CategoryActivity, η οποία περιέχει τη λίστα με τις κατηγορίες προτίμησης του χρήστη Βαθμολογημένα Μετάβαση στη δραστηριότητα BookListAcivity, η οποία αυτή τη φορά περιέχει τη λίστα με τα βιβλία που έχει βαθμολογήσει ο χρήστης Reading List Μετάβαση στη δραστηριότητα BookListAcivity, η οποία περιέχει τη λίστα με τα βιβλία που έχει αποθηκεύσει ο χρήστης για μελλοντικό διάβασμα (reading list) Πληροφορίες Οδηγεί στη δραστηριότητα InfoActivity στην οποία προβάλλονται κάποιες πληροφόρίες της εφαρμογής καθώς και τρόποι επικοινωνίας Αποσύνδεση Γίνεται η αποσύνδεση του χρήστη από το σύστημα και επιστροφη στη δραστηριότητα MainActivity
40 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ Η αρχική σελίδα περιλαμβάνει επίσης τέσσερεις λίστες βιβλίων σε οριζόντια μορφή (Προτάσεις, Best Sellers, Νέες κυκλοφορίες, Top 50): (αʹ) Οι λίστες «Προτάσεις» και «Best Sellers» (βʹ) Οι λίστες «Νέες κυκλοφορίες» και «Top 50» Εικόνα 3.13: Γραφικό περιβάλλον της αρχικής σελίδας η οποία διαθέτει 4 λίστες βιβλίων για προβολή Τα στοιχεία των βιβλίων που εμφανίζονται είναι το εξώφυλλο και ο τίτλος τους. Κάθε λίστα διαθέτει μέχρι και 10 βιβλία. Ο αριθμός των βιβλίων που προβάλλονται ποικίλει ανάλογα με το μέγεθος της οθόνης της συσκευής. Αν δεν χωρέσουν και τα 10 βιβλία, τότε για να δει ο χρήστης τα υπόλοιπα μπορεί να ολισθήσει τη λίστα προς τα αριστερά για να τα διατρέξει. Οι τέσσερεις λίστες περιλαμβάνουν βιβλία που ανήκουν στις εξής κατηγορίες: Προτάσεις Αποτελείται από τα βιβλία που προτείνει το σύστημα συστάσεων της εφαρμογής Best Sellers Αποτελείται από τα βιβλία που αποτελούν best sellers Νέες κυκλοφορίες Αποτελείται από τα βιβλία που έχουν ημερομηνία κυκλοφορίας το 2016 Top50 Αποτελείται από τα 50 πρώτα βιβλία που διαθέτουν την υψηλότερη βαθμολογία Δεξιά από το τίτλο της κάθε λίστας υπάρχει ένα κουμπί «Περισσότερα». Αυτό οδηγεί σε μια νέα δραστηριότητα, την BookListActivity η οποία περιέχει σε μορφή κάθετης λίστας όλα τα βιβλία που ανήκουν στην κατηγορία που επιλέχθηκε. Επίσης υπάρχει η δυνατότητα επιλογής ενός βιβλίου από μια λίστα για προβολή των πληροφοριών του, ενεργοποιώντας τη δραστηριότητα BookActivity.
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 41 Οσον αφορά τη δραστηριότητα BookListActivity, η επόμενη εικόνα παρουσιάζει ενδεικτικά παραδείγματα του γραφικού της περιβάλλοντος: (αʹ) (βʹ) (γʹ) (δʹ) Εικόνα 3.14: Γραφικό περιβάλλον της δραστηριότητας BookListActivity, η οποία περιέχει σε μορφή λίστας τα βιβλία που ανήκουν στην κατηγορία που επιλέχθηκε Η δραστηριότητα διαθέτει στη μπάρα της, όπως και η HomeActivity, το κουμπί του μενού και τον τίτλο της κατηγορίας των βιβλίων που επιλέχθηκαν για προβολή. Ακολουθεί η λίστα με τα βιβλία. Για το κάθε βιβλίο εμφανίζεται το εξώφυλλο, ο τίτλος, ο συγγραφέας και η βαθμολογία του. Αν στη λίστα υπάρχουν βιβλία τα οποία
42 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ ο χρήστης έχει βαθμολογήσει ή έχει προσθέσει στη reading list του, τότε ενημερώνεται κατάλληλα. Στην περίπτωση που έχει βαθμολογήσει ένα βιβλίο, τότε κάτω από τη γενική βαθμολογία του βιβλίου εμφανίζεται επιπλέον η δική του βαθμολογία. Στη δεύτερη περίπτωση, για κάθε βιβλίο που έχει προσθέσει στη reading list εμφανίζεται το εικονίδιο πάνω αριστερά στην εικόνα του εξωφύλλου, το οποίο αντιπροσωπεύει έναν σελιδοδείκτη. Επίσης υπάρχει η δυνατότητα επιλογής ενός βιβλίου για προβολή των υπολοίπων πληροφοριών του, μέσω της BookActivity δραστηριότητας. Η δραστηριότητα BookActivity ενεργοποιείται κάθε φορά που επιλέγεται ένα βιβλίο από μια λίστα των δραστηριοτήτων HomeActivity ή BookListActivity. Ακολουθούν μερικά στιγμιότυπα παραδειγμάτων της δραστηριότητας:
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 43 (αʹ) (βʹ) (γʹ) (δʹ) Εικόνα 3.15: Γραφικό περιβάλλον της δραστηριότητας BookActivity, η οποία παρουσιάζει τις πληροφορίες ενός βιβλίου Αρχικά στη μπάρα της δραστηριότητας υπάρχει το κουμπι, το οποίο επιστρέφει τον χρήστη στην προηγούμενη δραστηριότητα που κάλεσε την BookActivity. Ακολουθεί ο τίτλος του βιβλίου και ένα εικονίδιο όπου δηλώνει αν το βιβλίο βρίσκεται ή όχι στη reading list. Αν το εικονίδιο που εμφανίζεται είναι το τότε το βιβλίο δεν ανήκει στη λίστα και δηλώνει την προσθήκη σε αυτήν. Στην αντίθετη περίπτωση εμφανίζεται το, με το πάτημα του οποίου το βιβλίο διαγράφεται από τη reading list. Στην εικόνα
44 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ που ακολουθεί παρουσιάζονται αυτές οι λειτουργίες: (αʹ) Προσθήκη στη reading list (βʹ) Αφαίρεση από τη reading list Εικόνα 3.16: Παραδείγματα διαχείρησης ενός βιβλίου στη reading list του χρήστη Στη συνέχεια παρουσιάζεται το εξώφυλλο του βιβλίου. Αν το βιβλίο ανήκει στα best seller, τότε εμφαανίζεται το εικονίδιο στο πάνω αριστερό μέρος του εξωφύλλου. Δίπλα ακολουθούν ορισμένες πληροφορίες για το βιβλίο. Αυτές αποτελούν ο τίτλος, ο συγγραφέας και η γενική βαθμολογία του. Αν ο χρήστης δεν έχει βαθμολογήσει το συγκεκριμένο βιβλίο, τότε εμφανίζεται το κουμπι με τη λέξη «Βαθμολογείστε», το οποίο τον προτρέπει να καταχωρήσει τη βαθμολογία του για το συγκεκριμένο βιβλίο. Η βαθμολόγηση γίνεται με την ενεργοποίηση ενός αναδυόμενου παραθύρου (pop up window) όπου περιέχει 5 αστεράκια και τις επιλογές «Βαθμολογήστε» ή «Καθαρισμός». Ο χρήστης έχει τη δυνατότητα να καταχωρήσει τη βαθμολογία του η οποία εκφράζεται με τη μορφή μιας κλίμακας από το 1 έως το 5, πατώντας τον αντίστοιχο αριθμό από αστεράκια και στη συνέχεια το κουμπί «Βαθμολογήστε». Αν ο χρήστης έχει ήδη βαθμολογήσει το συγκεκριμένο βιβλίο, τότε στη θέση του πλέον υπάρχει το που δηλώνει ότι έχει καταχωρηθεί βαθμολογία. Δίπλα ακριβώς φαίνεται και ο αριθμός της. Για να διαγράψει τη βαθμολογία του αρκεί να πιέσει το κουμπί και να επιλέξει την επιλογή «Καθαρισμός» του pop up window. Ακολουθούν στιγμιότυπα της διαδικασίας βαθμολόγησης ενός βιβλίου:
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 45 (αʹ) pop up window βαθμολόγησης (βʹ) Επιλογή της κλίμακας βαθμολογίας (γʹ) Καταχώρηση της βαθμολογίας (δʹ) Διαγραφή βαθμολογίας Εικόνα 3.17: Παράδειγματα διαχείρησης της βαθμολογίας ενός βιβλίου Σειρά έχει ένα πλαίσιο με δυνατότητα κύλισης (scrollable frame), το οποίο περιέχει την περίληψη του βιβλίου. Ακολουθούν κάποιες επιπλέον πληροφορίες, όπως ο αριθμός των σελίδων, οι εκδόσεις, η ημερομηνία κυκλοφορίας και η κατηγορία ή οι κατηγορίες που ανήκει το βιβλίο. Παρατηρούμε ότι η γραμματοσειρά συγκεκριμένων πληροφοριών είναι χρωματισμένη με μπλε χρώμα. Αυτό υποδεικνύει το πάτημα τους και οδηγεί σε ενεργοποίηση της δραστηριότητας BookListActivity, με την παρουσίαση ορισμένων βιβλίων που έχουν κάποια κοινά χαρακτηριστικά. Αυτή η δυνατότητα εντοπίζεται στον
46 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ συγγραφέα, στις εκδόσεις και στις κατηγορίες. Συγκεκριμένα, αν ο χρήστης πατήσει το όνομα του συγγραφέα, τότε θα οδηγηθεί στην BookListActivity, η οποία περιλαμβάνει μια λίστα με τα βιβλία που έχει γράψει ο συγκεκριμένος συγγραφέας. Αντίστοιχα λειτουργούν και οι εκδόσεις, όπου θα εμφανίστεί η λίστα με τα βιβλία που εκδίδονται από το συγκεκριμένο εκδότη και οι κατηγορίες, όπου εμφανίζονται τα βιβλία που ανήκουν στην κατηγορία που επιλέχθηκε από το χρήστη, μέσω του πατήματος της ονομασίας της. Στη συνέχεια παρουσιάζεται το γραφικό περιβάλλον και οι λειτουργίες της δραστηριότητας CategoryActivity. Ο χρήστης μπορεί να μεταβεί σε αυτήν πατώντας την επιλογή «Οι κατηγορίες μου» του sliding menu. Τότε στην οθόνη του κινητού εμφανίζεται κάτι αντίστοιχο με το επόμενο screenshot: (αʹ) (βʹ) Εικόνα 3.18: Γραφικό περιβάλλον της δραστηριότητας CategoryActivity, η οποία περιέχει τις κατηγορίες που έχει δηλώσει ο χρήστης ότι προτιμά Σε αυτή τη δραστηριότητα παρουσιάζονται σε μορφή λίστας οι κατηγορίες βιβλίων που έχει δηλώσει ότι προτιμά ο χρήστης. Διαθέτει την ίδια μπάρα που έχουν οι δραστηριότητες HomeActivity και BookListActivity. Περιέχει τη λίστα των προτιμώμενων κατηγοριών, κάθε μία από τις οποίες ακολουθείται από το εικονίδιο, το οποίο υ- ποδηλώνει την αφαίρεση της συγκεκριμένες κατηγορίας. Επίσης στο πάνω μέρος της οθόνης εμφανίζεται η περιγραφή «Προσθηκη νέας κατηγορίας» και το κουμπί με το πάτημα του οποίου καλείται μια άλλη δραστηριότητα, η OtherCategoriesActivity, που περιέχει τις υπόλοιπες κατηγορίες βιβλίων, με τη δυνατότητα επιλογής μία η περισσοτέρων για προσθήκη. Ακολουθεί ένα παράδειγμα:
3.5. ΑΝΑΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΗΣ 47 (αʹ) Οι κατηγορίες του χρήστη (βʹ) Διαγραφή μιας κατηγορίας (γʹ) Επιλογή νέων κατηγοριών μέσω της δραστηριότητας OtherCategoriesActivity (δʹ) Προσθήκη των νέων κατηγοριών Εικόνα 3.19: Παράδειγματα διαχείρισης των θεματικών κατηγοριών των βιβλίων Τέλος, υπάρχει και η δραστηριότητα InfoActivity στην οποία ο χρήστης μεταβαίνει μέσω της επιλογής «Πληροφορίες» του sliding menu. Στο γραφικό της περιβάλλον υπάρχουν τα πλαίσια «Σχετικά» με μια περιληπτική περιγραφή της εφαρμογής και «Εκδοση εφαρμογής» με την τρέχουσα έκδοση της. Στο τελευταίο πλαίσιο «Επικοινωνία» υπάρχουν δύο τρόποι επικοινωνίας (μέσω τηλεφώνου και ηλεκτρονικού ταχυδρομείου) συνοδευόμενοι από ένα κουμπί, το οποίο οδηγεί στην εκτέλεση της αντίστοιχης ενέρ-
48 ΚΕΦΑΛΑΙΟ 3. ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ γειας από τη συσκευή. Εικόνα 3.20: Γραφικό περιβάλλον της δραστηριότητας InfoActivity, η οποία περιέχει γενικές πληροφορίες της εφαρμογής