Java Topic Maps Project Manager Report

12
Αναπαράσταση εμπειρογνώσης με χρήση Θεματικών Χαρτών 1 Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ∆ικτύων Ειδικά Θέματα-Εργασίες Θέμα: Αναπαράσταση εμπειρογνώσης με χρήση θεματικών χαρτών (Topic Maps) Επιβλέπων καθηγητής:Βασίλειος Σ. Βερύκιος Παππάς Λάμπρος ΑΕΜ: 1701028 Εαρινό Εξάμηνο 2006 Λάμπρος Παππάς Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Transcript of Java Topic Maps Project Manager Report

Page 1: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 1

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ∆ικτύων

Ειδικά Θέµατα-Εργασίες Θέµα: Αναπαράσταση εµπειρογνώσης µε χρήση θεµατικών χαρτών (Topic Maps) Επιβλέπων καθηγητής:Βασίλειος Σ. Βερύκιος Παππάς Λάµπρος ΑΕΜ: 1701028

Εαρινό Εξάµηνο 2006

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 2: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 2

Περιεχόµενα Περιεχόµενα 2 Πρόλογος 3 Τεχνικές Αναπαράστασης Γνώσης 3 RDF - OWL 5 Topic Maps (Θεµατικοί Χάρτες) 5 Σχεδίαση Λογισµικού 6 Η εφαρµογή 7 Υλοποίηση 8 RDF-OWL vs Topic Maps Συµπεράσµατα – Απολογισµός 10 Βιβλιογραφία 11 Screenshots 12

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 3: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 3

Πρόλογος

Η εργασία έγινε στα πλαίσια του µαθήµατος Ειδικά Θέµατα/Εργασίες για το εαρινό εξάµηνο του ακαδηµαϊκού έτους 2005-2006. Επιβλέπων ήταν ο κ. Β. Βερύκιος.

Στα πλαίσια της εργασίας µελετήθηκαν µέθοδοι αναπαράστασης γνώσης και ειδικά τα Topic Maps (Θεµατικοί Χάρτες). Με χρήση των Topic Maps και του Java API τους (tm4j) ανέπτυξα µια εφαρµογή για διαχείριση του χρονοδιαγράµµατος ανάπτυξης λογισµικού από οµάδα προγραµµατιστών. Η εφαρµογή για την ώρα αφορά σχεδιασµό ανάπτυξης λογισµικού σε Java και στερείται γραφικού περιβάλλοντος. Είναι όµως ένα καλό παράδειγµα χρήσης µεθόδων αναπαράστασης γνώσης (και συγκεκριµένα των Topic Maps ) , ενώ υλοποιεί και ένα πολύ σηµαντικό κοµµάτι της σχεδίασης λογισµικού: τον υπολογισµό του χρόνου έναρξης, λήξης αλλά και του αδρανούς χρόνου (πλεόνασµα – float – slack-time [1]) ανάπτυξης κάθε κοµµατιού του σχεδιαζόµενου λογισµικού (Project Component). Φυσικά µπορούν να υλοποιηθούν πολύ περισσότερες δυνατότητες για τις οποίες θα µιλήσουµε στο σχετικό κεφάλαιο.

Σε αυτή τη γραπτή αναφορά θα παρουσιάσω, εκτός από λεπτοµέρειες για την εφαρµογή και την υλοποίηση της, κάποιες γενικές πληροφορίες για την αναπαράσταση γνώσης, κάποιες συγκεκριµένες µεθόδους (Topic Maps/ OWL / RDF) και µία µηχανή γραφικής αναπαράστασης Topic Maps (tmnav), που αποτελεί επέκταση του tm4j ΑΡΙ.

Τεχνικές Aναπαράστασης Γνώσης

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας

Το Internet και κυρίως ο παγκόσµιος ιστός (World Wide Web) αποτελούν αναµφισβήτητα τεράστια προσφορά της Επιστήµης της Πληροφορικής στην παγκόσµια κοινότητα. Το παραδοσιακό web στηρίζεται στα προτόκολλα επικοινωνίας του Internet και σε µια γλώσσα αναπαράστασης δεδοµένων , την HTML. Τα πρώτα χρόνια χρήσης του web όλοι ήταν ευχαριστηµένοι: Το web ήταν το τέλειο µέσο για την παρουσίαση πληροφορίας από οποιοδήποτε µέρος του κόσµου σε οποιοδήποτε µέρος του

κόσµου. Εκατοµµύρια άνθρωποι άρχισαν να επικοινωνούν, να δηµοσιεύουν αλλά και να διαβάζουν απόψεις, έρευνες , ειδήσεις και ένα σωρό άλλα χρήσιµα ή άχρηστα πράγµατα.

Όσο όµως η ποσότητα των «δηµοσιευµένων» στο web πληροφοριών αύξανε, τόσο πιο δύσκολα κάποιος µπορούσε να βρεί τις συγκεκριµένες πληροφορίες που ο ίδιος, εκείνη τη στιγµή , χρειαζόταν. Επιπλέον δεν υπήρχε καµµία ένδειξη για την εγκυρότητα ή έστω το βαθµό αποδοχής κάθε δηµοσιευµένης πληροφορίας. Οι πρώτες µηχανές αναζήτησης δεν έλυσαν αποτελεσµατικά το πρόβληµα . Ο χρήστης εισήγαγε κάποιες λέξεις οι οποίες τον ενδιέφεραν και η µηχανή επέστρεφε όλες τις ιστοσελίδες που περιείχαν αυτές τις λέξεις, χωρίς καµµία ένδειξη για το πόσο έγκυρη ήταν η ιστοσελίδα και χωρίς να λαµβάνει υπ’οψη τη λογική σχέση των λέξεων της επερώτησης µε την ιστοσελίδα.

Το 1998 [2]οι Larry Page και Sergey Brin έκαναν την πρώτη µεγάλη επανάσταση στον τοµέα της αναζήτησης πληροφορίας στο web, δηµιουργόντας τη µηχανή αναζήτησης google [3]. Το καινούριο σε αυτή τη µηχανή αναζήτησης ήταν η ενσωµάτωση του αλγορίθµου page-rank για την αξιολόγηση κάθε ιστοσελίδας. Ο αλγόριθµος αυτός απονέµει «βαθµούς σηµαντικότητας» σε κάθε ιστοσελίδα ανάλογα µε το πόσες και πόσο σηµαντικές ιστοσελίδες έχουν σύνδεσµο προς αυτή. Πλέον ο χρήστης αφού δώσει το query (ερώτηµα – λέξεις που περιλαµβάνονται στην αναζήτηση) που τον ενδιαφέρει, παίρνει ως αποτέλεσµα όλες τις ιστοσελίδες που περιέχουν τις λέξεις του query , αυτή τη φορά όµως διατεταγµένες κατά σειρά σηµαντικότητας/εγκυρότητας. Η αποτελεσµατικότητα της αναζήτησης ανέβηκε κατακόρυφα. Οι χρήστες του google γνωρίζουν πλέον ότι όταν εκτελούν ένα query, οι πρώτες σελίδες αποτελεσµάτων που επιστρέφει η µηχανή είναι οι πιό διάσηµες , αρα και οι πιό έγκυρες, άρα και οι πιο πιθανές να περιέχουν χρήσιµη πληροφορία. Οι εκατοµµύρια χρήστες που επισκέπτονται καθηµερινά την ιστοσελίδα, εκτελώντας αναζητήσεις, αποδεικνύουν την αποτελεσµατικότητα του google . Η ιστοσελίδα είναι αυτή µε τα περισσότερα hits (επισκέψεις) ανά ηµέρα, παγκοσµίως, ενώ η εταιρεία “google.com” είναι από τις πιο κερδοφόρες αλλά και καινοτόµες εταιρείες στον τοµέα της

Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 4: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 4 πληροφορικής. Χώρίς “το google” όλοι οι χρήστες του web θα αφιέρωναν πολύ περισσότερες ώρες στην αναζήτηση πληροφορίας ανάµεσα σε αταξινόµητες, πιθανώς άσχετες, ιστοσελίδες και ίσως ολόκληρο το web να µην είχε γνωρίσει τέτοια επιτυχία και να µην είχε τον όγκο των πληροφοριών που διαθέτει σήµερα.

Παρ’όλα αυτά το google δεν έλυσε όλα τα προβήµατα της αναζήτησης πληροφορίας στο web. Τα queries, αλλά και οι ιστοσελίδες, δεν περιέχουν καµµιά ένδειξη για το πραγµατικό περιεχόµενο τους (σε επίπεδο γνώσης) . Ένα παράδειγµα : Έστω ότι σε κάποια ιστοσελίδα αναγράφεται : “Ο Λάµπρος Παππάς δεν είναι καρδιολόγος”. Έστω τώρα ότι κάποιος χρήστης αναζητεί ιστοσελίδες καρδιολόγων. Η µόνη επιλογή που έχει είναι να εισάγει σε κάποια µηχανή αναζήτησης τη λέξη “καρδιολόγος”. Θα του επιστραφεί λοιπόν και η προαναφερθείσα ιστοσελίδα (µάλιστα άν αυτή βρίσκεται σε κάποιο έγκυρο site µπορεί να επιστραφεί και σε πρώτες θέσεις) , η οποία θα περιέχει άχρηστη για το χρήστη πληροφορία, γεγονος το οποίο ο ίδιος θα καταλάβει µόνο αφού διαβάσει ολόκληρη τη φράση: “Ο Λάµπρος Παππάς δεν είναι καρδιολόγος”. Το παράδειγµα είναι εξαιρετικά απλοικό. Αν αναλογιστούµε την ειδική σηµασία που έχουν πάρα πολλές λέξεις ή η σύνταξή τους µέσα σε µιά πρόταση, τις διαφορές στην γλώσσα , τα ορθογραφικά λάθη, τις συνώνυµες και αντίθετες λέξεις θα καταλάβουµε ότι η αναζήτηση γνώσης , ιδίως για έναν άπειρο χρήστη, είναι εξαιρετικά δύσκολη υπόθεση.

Κάποιες προσπάθειες για αναπαράσταση γνώσης µετά από επεξεργασία ενός κειµένου έκαναν οι επιστήµονες του τοµέα της Τεχνητής Νοηµοσύνης. Τα αποτελέσµατα βέβαια δεν ήταν πολύ ενθαρρυντικά. Η εξόρυξη της λογικής σχέσης µεταξύ των οντοτήτων που αναφέρονται σε ένα κείµενο, µελετώντας απλά τα strings (συµβολοσειρές) που αποτελούν το κείµενο είναι εξαιρετικά δύσκολη υπόθεση για έναν ηλεκτονικό υπολογιστή.

Που βρίσκεται λοιπόν το πραγµατικό πρόβληµα της αναπαράστασης και αναζήτησης γνώσης; Μα φυσικά στην ίδια τη βάση του web, στη γλώσσα αναπαράστασης του. Η HTML είναι απλά µια γλώσσα µορφοποίησης κειµένου. ∆εν είναι γλώσσα αναπαράστασης αντικειµένων/οντοτήτων και σχέσεων µεταξύ τους! Η εκ των υστέρων ανακάλυψη των

αντικειµένων και των σχέσεων που τα συνδέουν , από ένα html κείµενο είναι ακόµη πρακτικά, και σε καθολικό επίπεδο, αδύνατη – µια µορφή reverse engineering .

Ο εµνευστής του Web , ο Tim Berners Lee , µαζί µε άλλους ερευνητές αντιλήφθηκαν το πρόβληµα. Πρότειναν λοιπόν τη µετατροπή/επέκταση του Web σε Semantic Web (Σηµασιολογικός Ιστός) [4] [5] . Το semantic web είναι µια προσπάθεια αναπαράστασης της γνώσης του Web µε τρόπο που να είναι προσβάσιµη ,αλλά κυρίως επεξεργάσιµη από µηχανές. Με λίγα λόγια προσπαθούµε να αναπαραστήσουµε τα αντικείµενα/οντότητες του πραγµατικού κόσµου σε µια µορφή που θα είναι “αναγνώσιµη” από ηλεκτρονικούς υπολογιστές χωρίς νοηµοσύνη (Βασικά αυτός είναι ένας πολύ καλός ορισµός της Αναπαράστασης Γνώσης που είναι το κύριο θέµα της εργασίας...).

Οι τεχνολογίες που ενσωµατώνονται στο Semantic Web είναι φυσικά τεχνικές αναπαράστασης γνώσης. Μερικές από τις πιο σηµαντικές παραθέτονται παρακάτω:

ΧML : Μια markup language (γλώσσα αναπαράστασης) πιό γενική από την HTML η οποία χρησιµοποιείται για τη δηµιουργία δοµηµένων κειµένων µε µόνο περιορισµό στα tabs τους , τις επιλογές του δηµιουργού τους. ∆εν είναι τεχνική αναπαράστασης γνώσης, είναι απλά µια γλώσσα την οποία χρησιµοποιούν οι διάφορες τεχνικές αναπαράστασης γνώσης.

ΧML Schema :Μία γλώσσα για περιορισµό της δοµής ενός ΧΜL εγγράφου.

RDF (Resource Description Framework) : Ένα απλό data model (µοντέλο δεδοµένων) για αναφορά σε αντικείµενα και στις σχέσεις µεταξύ τους. Μπορεί να αναπαρασταθει σε ΧΜL. (Περισσότερα σε επόµενο κεφάλαιο της εργασίας)

RDF Schema: Γλώσσα αναπαράστασης ενός vocabulary µε ιδιότητες και κλάσεις για RDF αντικείµενα. Ορίζονται και γενικευµένες ιεραρχίες ιδιοτήτων κλάσσεων (οντολογίες).

ΟWL (Web Ontology Language) : Επέκταση του RDF Schema. Παρέχει περισσότερες δυνατότητες για περιγραφή των οντολογιών. (Περισσότερα σε επόµενο κεφάλαιο της εργασίας).

Εκτός όµως από τις τεχνολογίες που έχουν ενσωµατωθεί στο “επίσηµο”(όπως ορίζεται από το W3C ) Semantic Web , έχουν δηµιουργηθεί αρκετές άλλες τεχνολογίες που σαφέστατα

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 5: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 5 χαρακτηρίζονται ως ταχνικές αναπαράστασης γνώσης. Μερικά παραδείγµατα:

• Semantic Networks [6] • Concept Maps [7] • Mind Maps [8]

Παρόµοια τεχνική µε τις παραπάνω , αλλά σαφέστατα πιο ολοκληρωµένη και επεκτεταµένη είναι η τεχνική των Topic Maps, η οποία έχει υιοθετηθεί από αρκετές εταιρείες και χρησιµοποιείται σε αρκετές εφαρµογές. Περισσότερα για τα Topic Maps , που είναι από τα κεντρικά κοµµάτια στην παρούσα εργασία, σε επόµενο κεφάλαιο.

Οι τεχνικές αναπαράστασης γνώσης γίνονται συνεχώς πιο αποτελεσµατικές . Όµως όπως αναφέρει και ο James Hendler στο [10], δεν αρκεί µια καλή γλώσσα αναπαράστασης οντολογιών. Πρέπει να αναπτυχθούν τα κατάλληλα εργαλεία και οι κατάλληλες εφαρµογές, ούτως ώστε οι δηµιουργοί περιεχοµένου/γνώσης να µπορούν εύκολα να το αναπαραστήσουν και να το δηµοσιεύσουν σε µία µηχανικά αναγνώσιµη µορφή µέσω αυτής της γλώσσας.

RDF - OWL

Με την RDF µπορούµε να αναπαραστήσουµε αντικείµενα/οντότητες του φυσικού κόσµου και τις σχέσεις ή ιδιότητες που τα διέπουν µε τη µορφή τριάδων Κάθε τριάδα έχει υποκείµενο , ενέργεια και αντικείµενο. Π.χ. η έκφραση This article is authored by Lampros Pappas είναι µία RDF Statement (δήλωση RDF) µε υποκείµενο:This article ,ενέργεια:is authored by και αντικείµενο: Lampros Pappas .

Μία πολύ κοινή µορφή αναπαράστασης RDF statements είναι η αναπαράσταση σε XML. Η παραπάνω τριάδα σε µορφή XML θα µπορούσε να γραφτεί κάπως έτσι : <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://schemas.uche.ogbuji.net/rdfexample/"> <rdf:Description about="http://www.inf.uth.gr/~lapappas/thisarticle "> <authored-by> <rdf:Description ID="Lampros.pappas.net"> <name>Lampros Pappas</name> </rdf:Description> </authored-by> </rdf:De ription> sc</rdf:RDF>

Μπορεί η RDF µε την πρώτη µατιά να µη φαίνεται κάτι ιδιαίτερο. Η αναπαράσταση όµως όλης της γνώσης που υπάρχει στο web σε τέτοια ή παρόµοια µορφή θα καθιστούσε το περιεχόµενο το

web εύκολα επεξεργάσιµο από οποιοδήποτε πρόγραµµα-πράκτορα (agent) .

Περισσότερα για την RDF στο 3ο κεφάλαιο του [5] και στα [13] [14] [15].

Η OWL είναι ουσιαστικά το λεξικό της RDF

. Είναι µια επέκταση του RDF Schema. Αναπαριστά όπως και το RDF Schema ιεραρχίες κλάσσεων και ιδιοτήτων για αντικείµενα και υποκείµενα σε RDF statements. Επιπλέον όµως παρέχει περισσότερες πληροφορίες για τις κλάσεις (π.χ. disjointness, cardinality , equality (ισότητα) ) και καλύτερη αναπαράσταση των ιδιοτήτων µεταξύ των κλάσεων.

Η RDF και η OWL µαζί αποτελούν την Ontology Language του Semantic Web

Περισσότερα για την OWL και το RDF Schema στο 4ο κεφάλαιο του [5] και στα [16] [17] [18] [19] .

Topic Maps

Οι Topic Maps (Θεµατικοί Χάρτες) είναι µια τεχνική αναπαράστασης γνώσης που δηµιούργησε ο οργανισµός ISO. Είναι κάτι αντίστοιχο µε το συνδυασµό της RDF και της OWL.

Η γλώσσα αναπαράστασης των Topic Maps ποικίλει. Η πιο κυρίαρχη µορφή σύνταξης κειµένων Topic Maps είναι η XTM η οποία βασίζεται στη γνώριµη XML. Επιπλέον υπάρχει η µορφή σύνταξης linear topic map notation (LTM) και η µορφή AsTMa. Οι δύο τελευταίες µορφές είναι πιο εύκολα αναγνώσιµες από ανθρώπους ενώ κείµενα σε κάποια από τις δύο µορφές µπορούν να µετατραπούν µε κατάλληλα εργαλεία σε .xtm κείµενα. Στην εφαρµογή που αναπτύχθηκε στα πλαίσια της εργασίας χρησιµοποιήθηκε το XTM format.

Ένας Topic Map αναπαριστά ένα υποσύνολο του φυσικού κόσµου.

Κυρίαρχες έννοιες στους Topic Maps είναι τα Topics (Θέµατα), οι Associations (Συσχετίσεις) και οι Occurrences (Εµφανίσεις) (“The TAO of Topic Maps” ) .

Topic: Οτιδήποτε µπορούµε να φανταστούµε ως οντότητα του φυσικού κόσµου και θέλουµε να το αναπαραστήσουµε κατάλληλα. Σηµαντικές ιδιότητες ενός Topic είναι ο τύπος του (Type) και το όνοµά του. Κάθε Topic µπορούµε να πούµε οτι είναι instance ενός άλλου Topic. Π.χ. το Topic

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 6: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 6 http://www.inf.uth.gr/~lapappas/#pizza µε name http://www.inf.uth.gr/~lapappas/#pizza και type http://www.inf.uth.gr/~lapappas/#food είναι instance του Topic http://www.inf.uth.gr/~lapappas/#food (Σε αυτό το σηµείο να τονίσουµε οτι οτιδήποτε θέλουµε να αναπαραστήσουµε σε ένα Topic Map είναι καλό να γράφεται µε τη µορφή URI, άλλωστε µη ξεχνάµε οτι γράφουµε σε XML µορφή. Οι Topic Maps βέβαια υποστηρίζουν και non-addressable subjects τα οποία καθορίζονται µοναδικά από τα URIs των ιδιοτήτων τους ). Φυσικά ένα Topic µπορεί να µην είναι instance κανενός άλλου Topic. Επίσης δεν πρέπει να συγχέουµε τα instances µε τις ιδιότητες subclass of και superclass of που είναι ξεχωριστές ιδιότητες που αναπαριστούν ιεραρχία Topics. Association: Έτσι ορίζουµε σχέσεις µεταξύ διαφορετικών Topics. Κάθε association είναι και topic, εποµένως ισχύουν όλα τα παραπάνω. Ένα παράδειγµα σε XTM :

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας

<association id="foo1-coded-by-lapappas"> <instanceOf> <topicRef

link:href="#coded-by"/> </instanceOf> <member> <roleSpec> <topicRef xlink:href="#project-component"/> </roleSpec> <topicRef xlink:href="#foo1"/> </member> <member> <roleSpec> <topicRef xlink:href="#coder"/> </roleSpec> <topicRef xlink:href="#lapappas"/> </member> </association>

Η συσχέτιση #foo1-coded-by-lapappas είναι τύπου ="#coded-by. Αφορά το Topic #foo1 που έχει σε αυτή τη συσχέτιση το ρόλο του #project-component και το Topic #lapappas που έχει σε αυτή τη συσχέτιση το ρόλο του #coder. Μια σηµαντική ιδιότητα των Topic Maps είναι ότι τα Associations µπορούν να έχουν βαθµό µεγαλύτερο του 3, δηλαδή συσχετίζουν περισσότερα των 2 topics, σε αντίθεση µε τα RDF statements που είναι αυστηρά τριαδικά.

Occurrence: Η εµφάνιση ενός Topic. Για κάθε Topic µπορούν να υπάρχουν πολλαπλές Occurrences και µάλιστα διαφορετικού τύπου. Π.χ. για το Topic lapappas µπορεί να έχουµε µία occurrence τύπου photo που θα αναπαριστά το url µιας φωτογραφίας του Topic και µία occurrence

τύπου site που να αναπαριστά το url του site του Topic.

Αυτές είναι οι κυριότερες έννοιες των Topic

Maps. Για περισσότερες πληροφορίες δείτε τα : [20] [21] [22] [23] [28]

Για το χειρισµό Topic Maps υπάρχει ένα ΑΡΙ το ΤΜΑΡΙ. [24] [25]

Υπάρχουν πολλές µηχανές και εργαλεία για διαχείριση και δηµιουργία Topic Maps. Πολλά από αυτά τα εργαλεία µπορείτε να βρείτε στο [26]. Εµείς χρησιµοπoιήσαµε ένα Java API για διαχείριση Topic Maps κειµένων (tm4j) [27], φτιαχνοντας µια εφαρµογή για αναπαράσταση και εξόρυξη πληροφορίας σχετικά µε τη διαχείριση ανάπτυξης ενός έργου Λογισµικού (Project Management). Επίσης θα σας παρουσιάσουµε τη µηχανή tmnav που αναπτύχθηκε από την ίδια οµάδα, βασίστηκε πάνω στο tm4j και αναπαριστά Topic Maps µε τη βοήθεια γραφικών.

Σχεδίαση Λογισµικού

Όπως ανέφερα η εφαρµογή που ανέπτυξα στα πλαίσια της εργασίας αφορά τη σχεδίαση του χρονοδιαγράµµατος ανάπτυξης ενός Project λογισµικού. Είναι σκόπιµο λοιπόν να αναφερθούν µερικά πράγµατα για τη διαδικασία ανάπτυξης λογισµικού.

Είναι σαφές ότι τα µεγάλα έργα λογισµικού χρειάζονται πολύ καλό σχεδιασµό. Το [1] αναφέρεται σε αρκετές τεχνικές που εφαρµόζονται σε όλη τη διαδικασία ανάπτυξης λογισµικού.

Αφού καθοριστούν οι απαιτήσεις και προδιαγραφές του λογισµικού σχεδιάζεται η δοµή του έργου. Οι δραστηριότητες ανάπτυξης του λογισµικού κατακερµατίζονται και κάθε προγραµµατιστής (ή οµάδα προγραµµατιστών) αναλαµβάνει να αναπτύξει κάποια από τα κοµµάτια του έργου (Project Components). Σε αυτό το σηµείο πρέπει να γίνει ο σχεδιασµός του χρονοδιαγράµµατος. Ο Project Manager πρέπει να καθορίσει πόσο θα διαρκέσει η ανάπτυξη κάθε Project Component. Επίσης πρέπει να καθορίσει ποια κοµµάτια του έργου πρέπει να ολοκληρωθούν πριν αρχίσει η ανάπτυξη άλλων κοµµατιών του έργου. Προκύπτει έτσι ένας γράφος δραστηριοτήτων που φανερώνει τις χρονικές εξαρτήσεις µεταξύ των επιµέρους δραστηριοτήτων του έργου. Με κατάλληλη

Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 7: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 7 διαπέραση του γράφου µπορούµε να λάβουµε πάρα πολλά στοιχεία, όπως το συνολικό ελάχιστο χρόνο ανάπτυξης όλου του έργου αλλά και κάθε επιµέρους δραστηριότητας. Για κάθε δραστηριότητα ∆ ορίζεται ο διαθέσιµος χρόνος που προκύπτει από το χρόνο έναρξης της αµέσως επόµενης δρασηριότητας αφαιρόντας το µέγιστο χρόνο λήξης των προηγούµενων δραστηριοτήτων. Ο πραγµατικός χρόνος είναι ο χρόνος που χρειάζεται για την ολοκλήρωση της δραστηριότητας και εκτιµάται στη φάση σχεδιασµού του έργου από το διαχειριστή του έργου. Μπορεί λοιπόν να προκύψει και πλεονάζων χρόνος (= διαθέσιµος – πραγµατικός) για κάποια δραστηριότητα ∆. Οι χρόνοι µετρούνται σε εργατοµέρες ή εργατοώρες.

Είναι πολύ σηµαντικό για το διαχειριστή του έργου αλλά και για τους προγραµµατιστές που ασχολούνται µε κάθε δραστηριότητα, να γνωρίζουν πότε πρέπει να αρχίσει η υλοποίηση κάθε δραστηριότητας , πότε πρέπει να τελειώσει αλλά και αν υπάρχει πλεονάζων χρόνος.

Χρήσιµο επίσης θα ήταν να µπορεί ο Project Manager να διαπιστώσει τις συνέπειες κάποιας καθυστερησης στην ανάπτυξη όλου του Project.

Η εφαρµογή

Η εφαρµογή ονοµάζεται JavaProjectManager. Αφορά τη διαχείριση του χρονοδιαγράµµατος ανάπτυξης ενός εργου λογισµικού στη γλώσσα Java.

∆ραστηριότητες ανάπτυξης θεωρούνται η ανάπτυξη class, η ανάπτυξη function και η αναπτυξη demo (επίδειξης λειτουργίας) του έργου. Παραλείψαµε τη συγγραφή βοήθειας , τεκµηρίωσης και άλλων σταδίων ανάπτυξης του έργου για λόγους απλότητας.

Ο διαχειριστής του έργου γράφει ένα Topic Map κείµενο (σε .xtm format) το οποίο περιλαµβάνει

• δήλωση του ονόµατος του Project • δήλωση όλων των classes του project

ως Topic Instances • δήλωση όλων των functions του

project ως Topic Instances • δήλωση όλων των demos του project

ως Topic Instances

• δήλωση όλων των προγραµµατιστών (coders) του project ως Topic Instances

• δήλωση της ηµεροµηνίας έναρξης του Project

• δήλωση των ωρών που χρειάζονται για την ανάπτυξη κάθε project component (class/function/demo) ως association

• δήλωση του coder για κάθε project component (class/function/demo) ως association

• δήλωση για κάθε κάθε project component (class/function/demo) πριν από ποια project components πρέπει να έχει ολοκληρωθεί (must-be-completed-before association)

Το αρχείο JavaProjectManager/topicmaps/sample.xtm δείχνει ποια Topics πρέπει να έχει απαραιτήτως ένα αρχείο για να χρησιµοποιηθεί από την εφαρµογή, ενώ τα αρχεία JavaProjectManager/topicmaps/mytopicmap3.xtm και JavaProjectManager/topicmaps/project2.xtm είναι παραδειγµατα αρχείων σχεδιασµού χρονοδιαγράµµατος που µπορούν να χρησιµοποιηθούν από την εφαρµογή.

Η εφαρµογή διατρέχει το xtm αρχείο και αναγνωρίζει κάθε project component , ενώ στη δοµή του Topic Map που δηµιουργείται , διατηρείται ο γράφος δραστηριοτήτων του έργου ,(επαγόµενος από τις must-be-completed-before associations).

Στη συνέχεια η εφαρµογή υπολογίζει για κάθε project component το διαθέσιµο χρόνο αλλά και τυχόν πλεονάζοντα χρόνο.

Αφού όλα γίνουν επιτυχώς, η εφαρµογή παρέχει prompt στο χρήστη ο οποίος µπορεί να εκτελέσει query για να δει όλα τα class/function/demo του project αλλά και πληροφορίες για κάθε project component ξεχωριστά. Οι πληροφορίες που παρέχονται είναι: ποιος είναι ο coder του component, πόσες εργατοώρες χρειάζονται για την ανάπτυξή του, πότε αρχίζει , πότε τελειώνει αλλά και πόσο µπορεί να καθυστερήσει η έναρξη ανάπτυξής του χωρίς συνέπειες για τον τελικό χρόνο παράδωσης του project (µε βάση τυχόν πλεονάζοντα χρόνο).

Η εφαρµογή υπολογίζει τις ηµεροµηνίες έναρξης και ολοκλήρωσης κάθε component θεωρώντας οτι οι coders δουλεύουν από ∆ευτέρα-

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 8: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 8 Παρασκευή τις ώρες 9:00-17:00. Η ηµεροµηνία έναρξης εισάγεται στη µορφή DDMMYYYY.

Η εφαρµογή παρέχει όλες τις διαθέσιµες εντολές όταν ο χρήστης εκτελέσει τη εντολή help.

Για να εκκινήσετε την εφαρµογή σε Windows απλά εκτελέστε το startJavaProjectManager.bat . Η εφαρµογή φορτώνει αυτόµατα το αρχειο topicmaps/project2.xtm . Αν θέλετε να φορτώσετε κάποιο άλλο αρχείο κάνετε edit το startJavaProjectManager.bat µε προσοχή για να µη χαλάσει ο ορισµός του classpath για τα jars του tm4j.

Η εφαρµογή θα µπορούσε να επεκταθεί µε

πολλόυς τρόπους: • Εύχρηστο gui • Εισαγωγή κάθε project component

από το διαχειριστή του έργου ώστε να µη χρειάζεται η χειροκίνητη συγγραφή .xtm αρχείων.

• Αναγνώριση και LTM format αρχείων

• Υποστήριξη και για άλλες γλώσσες προγραµµατισµού.

• Αναπαράσταση περισσότερων φάσεων ανάπτυξης του έργου

• Εισαγωγή καθυστερήσεων και ένδειξη για συνέπειες στον τελικό χρόνο παράδοσης

Η µηχανή tmnav. Καταβάσαµε και δοκιµάσαµε τη µηχανή από

το [27]. Με το tmnav µπορούµε να δούµε γραφικά

κάθε Topic και όλες τις ιδιότητες του. Παραθέτουµε ορισµένα screenshots µετά τη

βιβλιογραφία. Αν θέλετε να δοκιµάσετε το tmnav

εκτελέστε το runtmnav.bat από το φάκελο tmnav-0.2.8_1-bin.

Υλοποίηση

Για την υλοποίηση χρησιµοποιήθηκε Java 1.5 , tm4j-0.9.7 και το περιβάλλον Eclipse 3.0. Για να κάνουµε χρήση του tm4j API απλά

αντιγράψαµε τα jars του tm4j στο φάκελο του project και τα συµπεριλάβαµε στο classpath. Συµβουλές για προγραµµατισµό µε το tm4j API, αντλησαµε από το documentation και το Javadoc του API.

Στη συνέχεια θα αναλύσουµε µε λίγα λόγια τη λειτουργεία κάθε class και function της εφαρµογής:

class ProjectComponent: Συµβολίζει ένα demo/function/class και τα

project-start και project-end • type: ο τύπος του Project Component

(demo/function/project-start/project-end)

• ID: το όνοµα • coder:ο coder • dateString η ηµεροµηνία σε String

(χρησιµοποιείται µόνο στο project-start)

• hours: οι ώρες που χρειάζονται για την ανάπτυξη του project

• minHours,maxHours: για τον υπολογισµό του διαθέσιµου χρόνου

• spareHours: πλεονάζων χρόνος • startDate: η ηµεροµηνία έναρξης

(χρησιµοποιείται µόνο στο project-start)

• mustBeCompletedBeforeList: Λίστα µε τα components που αρχίζουν αφού ολοκληρωθεί η ανάπτυξη του εν’λόγω component

• setCoder(String coderString) : Συνάρτηση που ορίζει τον coder

• setDate(String _dateString) : Συνάρτηση που παίρνει το String της µορφής DDMMYYYY και το µετατρέπει σε java.util.Calendar

• setHours(int _hours): Συνάρτηση που ορίζει τις ώρες ανάπτυξης

• addMustBeCompletedBefore(afterNode after): Συνάρτηση που προσθέτει component στην mustBeCompletedBeforeList

class afterNode Συµβολίζει ένα µέλος της λίστας

addMustBeCompletedBefore ενός ProjectComponent.

Περιέχει:

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 9: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 9 • ComponentID • ComponentType

class ParseTopicMap Η κλάση αυτή περιέχει την συνάρτηση

parse() η οποία χρησιµοποιεί το tm4j API για να φτιάξει ένα TopicMap αντικείµενο από το κείµενο του οποίου το url που δόθηκε ως όρισµα στον constructor.

Περιέχει επίσης την κλάση getTopicMap() που επιστρέφει το Topic Map αντικείµενο.

class Manager: Συµβολίζει τον manager του Topic Map που

δηµιουργήσαµε µε την ParseTopicMap. Περιέχει:

• TopicMap topicMap: Το TopicMap αντικείµενο που αποκτήσαµε µετά το parsing του κειµένου και συµβολίζει το project που διαχειριζεται η εφαρµογή

• LinkedList projectComponents: Η λίστα µε τα components του project

• buildManager() : Αποθηκεύει στη λίστα projectComponents κάθε demo/function/class και τα project-start και project-end ως αντικείµενα της κλάσης ProjectComponent αφού τα αρχικοποιήσει κατάλληλα

• countTotalHours(ProjectComponent component) αναδροµική συνάρτηση που πρέπει να καλέσουµε µε όρισµα το project-start για να υπολογιστεί ο διαθέσιµος χρόνος για κάθε δραστηριότητα

• countSpareHours(ProjectComponent component) αναδροµική συνάρτηση που πρέπει να καλέσουµε µε όρισµα το project-start για να υπολογιστεί ο πλεονάζωνχρόνος για κάθε δραστηριότητα

• printComponents(String typeString) συνάρτηση που διαπερνά τη λίστα projectComponents και τυπώνει πληροφορίες για κάθε στοιχείο της µε τύπο < typeString>. αν typeString==null τυπώνει όλα τα projectComponents

• printComponent(String IDString,String typeString) συνάρτηση που τυπώνει πληροφορίες για συγκεκριµένο component. Τυπώνονται επιπλέον πληροφορίες για το χρόνο έναρξης και λήξης της δραστηριότητας και για τυχόν πλεονάζοντα χρόνο. Αν δεν υπάρχει component µε αυτο το όνοµα και τύπο τυπώνεται µήνυµα λάθους.

• getComponentBy(String componentID,String componentType) συνάρτηση που διατρέχει τη λίστα projectComponents και επιστρέφει το projectComponent µε ΙD==< componentID> και type==< componentType>. Αν δεν υπάρχει επιστρέφει null

• String calculateDateAfter(Calendar startDate,int workingHours) συνάρτηση που υπολογιζει τις πργµατικές µέρες που αντιστοιχούν σε εργατοώρες

class JavaProjectManager Περιέχει τη main() που :παιρνει από τα

ορίσµατα της γραµµάς εντολών (args) το όνοµα ή το url του αρχείου που θέλουµε να φορτώσουµε, δηµιουργεί ένα αντικείµενο τύπου ParseTopicMap για να parsάρει το αρχείο και ένα αντικείµενο τύπου manager για να εκτελεί queries. Τέλος καλεί τη συνάρτηση menu

• τη menu() η οποία παίρνει από το stdin τις επιλογές του χρήστη ,εκτελεί τις κατάλληλες συναρτήσεις και τυπώνει µηνύµατα λάθους όταν χρειάζεται...

class TopicCreator: ∆ε χρησιµοποιείται.

∆οκίµασα να τελειώσω το κοµµάτι της εισαγωγής Τοpics από το χρήστη αλλά δε πρόλαβα.

Ο πλήρης κώδικας βρίσκεται στο φάκελο

JavaProjectManager\inf\uth\topicMaps\JavaProjectManager

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 10: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 10

RDF-OWL vs Topic Maps. Συµπεράσµατα – Απολογισµός

Η οικογένεια της RDF-OWL(Τις θεωρώ οικογένεια γιατί συνήθως χρησιµοποιούνται µαζί) και οι Topic Maps είναι δύο από τις κυριότερες τεχνικές αναπαράστασης γνώσης, σηµερα. Αν και οι δηµιουργοί τους δεν παραδέχονται οτι πρόκειται για άµεσα ανταγωνιστικές τεχνικές, οι οµοιότητες αλλά και οι διαφορές τους είναι εµφανείς:

• Και οι δύο τεχνικές προσπαθούν να οργανώσουν τη διαθέσιµη πληροφορία κατά τρόπο που να είναι µηχανικά αναγνώσιµος.

• Και οι δύο τεχνικές χρησιµοποιούν XML σύνταξη

• Φαίνονται σαν πολύ απλοϊκές ιδέες µε την πρώτη µατιά, αλλά είναι και οι δύο εξαιρετικά αποτελεσµατικές στον τροπο µε τον οποίο αναπαριστούν αντικείµενα και σχέσεις.

• Οι δύο τεχνικές όµως ξεκίνησαν από εντελώς διαφορετικά σηµεία. Η RDF-OWL βασίστηκε στη ιδέα των γράφων, ενώ οι Topic Maps βασίστηκαν περισσότερο στη ιδέα των ευρετηρίων.

• Προωθήθηκαν από δύο διαφορετικούς οργανισµούς που θεωρούνται ανταγωνιστές, η RDF-OWL από το w3c και οι Topic Maps από τον ISO.

• Η RDF είναι resource-centric, ενώ τα topic maps είναι subject-centric.

• Τα semantics της RDF ειναι πιο χαµηλού επιπέδου. Οι Topic Maps ενσωµατώνουν πολύ πιο εξειδικευµένες έννοιες (Instance, Occurrence …)

• Οι Topic Maps υποστηρίζουν και non-addressable subjects ενώ η RDF-OWL όχι

• Στους Topic Maps οι σχέσεις είναι αµφίδροµες εκ φύσεως. Στα associations αναγράφονται ξεκάθαρα οι ρόλοι(roles) κάθε µέλους (member).Στην OWL πρέπει να οριστεί ξεχωριστά ποια σχέση είναι η αντίστροφη µιάς άλλης.

• Οι Topic Maps υποστηρίζουν ν-αδικές συσχετίσεις ενώ η RDF µόνο 2αδικές.

Αν θέλετε να δείτε πιο αναλυτικά απόψεις σχετικά µε τις οµοιότητες και διαφορές µεταξύ RDF-OWL και Topic Maps δείτε τα :[29] [30] [31] [32] [33]

Η προσωπική µου άποψη είναι οτι οι δύο αυτές τεχνολογίες είναι σίγουρα ανταγωνιστικές µεταξύ τους καθώς έχουν τον ίδιο ακριβώς στόχο : τη µηχανικώς επεξεργάσιµη αναπαράσταση γνώσης. Οι όποιες διαφορές τους µπορεί να προσδίδουν ξεχωριστά χαρακτηριστικά και στις δύο αλλά δεν αρκούν για να τις διαχωρίσουν τόσο ώστε να δράσουν συµπληρωµατικά. Φαντάζοµαι ότι µία από τις δύο τεχνολογίες κάποια στιγµή θα κερδίσει τη συντρηπτική πλειοψηφεία των χρηστών, οπότε η άλλη σταδιακά θα εγκαταληφθεί. Αυτή τη στιγµη προβάδισµα φαίνεται να έχει η οικογένεια της OWL-RDF. Περισσότερη έρευνα γίνεται πάνω σε αυτή ενώ τα εργαλεία ανάπτυξης οντoλογιών (Protégé, Racer…) φαίνονται πιο εύχρηστα και “δουλεµένα” σε σχέση µε αυτά της τεχνολογίας των Topic Maps. Επιπλέον η RDF-OWL έχει τη στήριξη του W3C, του επίσηµου οργανισµού προτυποποίησης για το web. Η τεχνολογία των Topic Maps, αν και ενσωµατώνει πιο προηγµένα χαρακτηριστικά ίσως χάσει το παιχνίδι. Μπορεί να κερδίσει όχι η πιο άρτια τεχνολογία αλλά αυτή που θα συνηθίσουν πιο εύκολα οι χρήστες ή θα δώσει πρώτη την killer application.

Αυτό ακριβώς είναι και το στοίχηµα του Semantic Web . Να βρεθεί η “φονική” εφαρµογή που θα το µεταφέρει από την έρευνα και τα πειράµατα, στην αγορά και τον απλό χρήστη.

Η αναπαράσταση γνώσης για επεξεργασία από µηχανές δουλεύει άψογα για έτοιµο περιεχόµενο σε µορφή RDF ή XTM . Το ζήτηµα είναι πως θα καταφέρει ο απλός χρήστης ( που µέχρι τώρα ανεβάζει στο web απλά κείµενα και φωτογραφίες) να δηµιουργεί πολύ εύκολα-αυτόµατα ειδικά σηµασµένο περιεχόµενο που θα πληροί τα standards κάποιας τεχνολογίας αναπαράστασης γνώσης.

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 11: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 11

Βιβλιογραφία [1] S. L. Pfleeger, Τεχνολογία Λογισµικού: Θεωρία και Πράξη (3ο κεφάλαιο). [2] http://www.google.com/corporate/history.html [3] http://www.google.com [4] http://en.wikipedia.org/wiki/Semantic_Web [5] Grigoris Antoniou, Frank van Harmelen (2004-04-01). A Semantic Web Primer. [6] http://en.wikipedia.org/wiki/Semantic_network [7] http://en.wikipedia.org/wiki/Concept_map [8] http://en.wikipedia.org/wiki/Mind_map[9] http://en.wikipedia.org/wiki/James_Hendler [10] James Hendler, Agents and the Semantic Web. [11] http://www-128.ibm.com/developerworks/library/w-rdf/ [12] http://en.wikipedia.org/wiki/Resource_Description_Framework [13] http://www.w3.org/RDF/ [14] http://www-4.ibm.com/software/developer/library/ws-rdf/index.html?dwzone=ws [15] http://www710.univ-lyon1.fr/%7Echampin/rdf-tutorial/ [16] http://www.w3.org/TR/owl-features/ [17] http://www.w3.org/TR/owl-guide/ [18] http://www.w3.org/TR/owl-ref/ [19] http://en.wikipedia.org/wiki/Web_Ontology_Language [20] http://www.y12.doe.gov/sgml/sc34/document/0322_files/iso13250-2nd-ed-v2.pdf [21] http://topicmaps.org/xtm/ [22] http://www.topicmaps.net/ [23] http://www.gca.org/papers/xmleurope2000/papers/s22-02.html [24] http://www.tmapi.org/ [25] http://www.xml.com/pub/a/2005/02/02/tmapi.html [26] http://topicmap.com/topicmap/tools.html [27] http://tm4j.org/downloads.html [28] Dr H. Holder Rath , Topic Maps Handbook. [29] http://www.ontopia.net/topicmaps/materials/tmrdf.html [30] http://www.noisebetweenstations.com/personal/weblogs/?p=1184 [31] http://topicmaps.it.bond.edu.au/tutorial/ [32] http://www.ontopia.net/topicmaps/materials/tmrdfoildaml.html [33] http://www.ontopia.net/topicmaps/materials/rdf.html

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων

Page 12: Java Topic Maps Project Manager Report

Αναπαράσταση εµπειρογνώσης µε χρήση Θεµατικών Χαρτών 12

Λάµπρος Παππάς

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ Τηλεπικοινωνιών και ∆ικτύων