Περιβάλλον Σηµασιολογικής Αναζήτησης Κανόνων

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

Download "Περιβάλλον Σηµασιολογικής Αναζήτησης Κανόνων"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Περιβάλλον Σηµασιολογικής Αναζήτησης Κανόνων ιπλωµατική Εργασία του Ivaylo Kehayov (ΑΕΜ: 1392) Επιβλέπων Καθηγητής: Νικόλαος Βασιλειάδης ΘΕΣΣΑΛΟΝΙΚΗ Οκτώβριος i-

2

3 Πρόλογος Το ιαδίκτυο σήµερα χαρακτηρίζεται από απεραντοσύνη και δυναµικότητα, δηλαδή περιέχει τεράστιες ποσότητες πληροφορίας η οποία αλλάζει και µεταβάλλεται συνεχώς. Αυτό, όµως, κάνει την εύρεσή της συχνά εξαιρετικά δύσκολή ή αδύνατη. Μια λύση στο πρόβληµα αυτό είναι να υπάρχει σηµασιολογική περιγραφή της πληροφορίας ώστε ειδικά λογισµικά (πράκτορες) να είναι σε θέση να την επεξεργαστούν και να την κατανοήσουν, αυτοµατοποιώντας διαδικασίες τις οποίες διαφορετικά θα έπρεπε να τις κάνει ο χρήστης. Η περιγραφή αυτή γίνεται µε την χρήση µετα-δεδοµένων (meta-data) που ορίζονται από οντολογίες. Όλα αυτά αποτελούν µέρος του οράµατος του Σηµασιολογικού Ιστού, ο οποίος είναι µια ερευνητική προσπάθεια που ασχολείται µε τον ορισµό γλωσσών και εργαλείων για τον κατάλληλο χειρισµό της γνώσης µέσω των υπολογιστών. Η εργασία αυτή αποτελεί ένα βήµα προς αυτή την κατεύθυνση και ο στόχος της είναι η ανάπτυξη ενός εργαλείου που θα επιτρέπει την σηµασιολογική περιγραφή και αναζήτηση κανόνων βάσει οντολογιών. Η εργασία εκπονήθηκε στα πλαίσια της διπλωµατικής εργασίας για την απόκτηση πτυχιακού διπλώµατος του τµήµατος Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης µε την οµάδα Λογικού προγραµµατισµού και Ευφυών Συστηµάτων (LPIS Group) στο Εργαστήριο Γλωσσών Προγραµµατισµού και Τεχνολογίας Λογισµικού του τµήµατος. Θα ήθελα να ευχαριστήσω τον επιβλέποντα καθηγητή Βασιλειάδη Νικόλαο για την εµπιστοσύνη που µου έδειξε αναθέτοντας µου τη διπλωµατική εργασία, τον διδάκτορα Μεδίτσκο Γεώργιο για την πολύτιµη βοήθειά του και την καθοδήγησή του χωρίς την οποία θα ήταν αδύνατη η ολοκλήρωση της εργασίας και τον διδάκτορα Κοντόπουλο Ευστράτιο για την σύντοµη συνεργασία µας. Ivaylo Kehayov -iii-

4 Περιεχόµενα ΠΡΟΛΟΓΟΣ... III ΠΕΡΙΕΧΟΜΕΝΑ...IV 1 ΕΙΣΑΓΩΓΗ ΤΟ ΣΥΣΤΗΜΑ ΚΑΝΟΝΩΝ CLIPS ΕΙΣΑΓΩΓΗ ΣΤΟ CLIPS Αναπαράσταση γνώσης Περιγραφή της γλώσσας COOL Προκαθορισµένες κλάσεις συστήµατος Ορισµός κλάσεων χρήστη Ορισµός στιγµιότυπων Χρήση Αντικειµένων σε Κανόνες ΟΝΤΟΛΟΓΙΕΣ OWL ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ ΟΝΤΟΛΟΓΙΕΣ ΓΛΩΣΣΑ ΟΝΤΟΛΟΓΙΩΝ OWL Είδη της γλώσσας OWL Σύνταξη Κεφαλή εγγράφου OWL Κλάσεις Ιδιότητες Περιορισµοί ιδιοτήτων Ειδικές ιδιότητες Λογικοί συνδυασµοί κλάσεων Απαρίθµηση αντικειµένων Αντικείµενα ΣΥΝ ΥΑΣΜΟΣ ΟΝΤΟΛΟΓΙΩΝ OWL ΚΑΙ ΚΑΝΟΝΩΝ CLIPS Ο ΣΚΟΠΟΣ iv-

5 4.2 ΘΕΩΡΗΤΙΚΗ ΠΕΡΙΓΡΑΦΗ ΤΗΣ Ι ΕΑΣ ΕΦΑΡΜΟΓΕΣ ΥΛΟΠΟΙΗΣΗ ΕΡΓΑΛΕΙΑ Java Netbeans Jena ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΕΠΕΚΤΑΣΕΙΣ ΒΙΒΛΙΟΓΡΑΦΙΑ v-

6

7 1 Εισαγωγή Οι άνθρωποι πάντα προσπαθούσαν να διευκολύνουν την ζωή τους µε την χρήση της τεχνολογίας. Τις τελευταίες δεκαετίες το ιαδίκτυο είναι µια από τις τεχνολογίες που έχει συµβάλει σε αυτό. Η πληροφορία που περιέχει φαντάζεται άπειρη και το πλήθος υπηρεσιών που προσφέρει είναι τεράστιο. Οι online αγορές, η ηλεκτρονική διακυβέρνηση (e-government), η ηλεκτρονική τραπεζική (e-banking), το ηλεκτρονικό επιχειρείν (e-business), το ηλεκτρονικό εµπόριο (e-commerce), η ηλεκτρονική µάθηση (elearning), το ηλεκτρονικό πανεπιστήµιο (e-university), οι ηλεκτρονικές υπηρεσίες υγείας και η τηλεργασία (e-working) είναι µερικά µόνο παραδείγµατα. Στις µέρες µας, ο ανθρώπινος παράγοντας παίζει πολύ µεγάλο ρόλο στην αξιοποίηση όλων αυτών των δυνατοτήτων που προσφέρει το ιαδίκτυο. Για παράδειγµα, υπάρχουν υπηρεσίες κράτησης αεροπορικών εισιτηρίων, αλλά αν θέλει κάποιος να βρει το φθηνότερο εισιτήριο µιας συγκεκριµένης διαδροµής, τότε θα πρέπει να επισκεφτεί τις ιστοσελίδες όλων των αεροπορικών εταιριών και να συγκρίνει τις τιµές των εισιτηρίων. Επίσης, το συµπέρασµα που θα βγάλει µπορεί να µην ισχύει για την επόµενη µέρα, α- φού είναι πολύ πιθανόν οι τιµές να έχουν αλλάξει. Εποµένως το ιαδίκτυο είναι δυνα- µικό. Αυτό σηµαίνει ότι η πληροφορία δεν µένει αµετάβλητη αλλά αλλάζει µε γρήγορο ρυθµό, κάνοντας την εύρεσή της σε πολλές περιπτώσεις πολύ δύσκολή έως αδύνατη. Έτσι, για να εκµεταλλευτούµε πλήρως τις δυνατότητές του ιαδικτύου, θα πρέπει η πληροφορία που περιέχει να είναι κατανοητή όχι µόνο από τους ανθρώπους αλλά και από τους υπολογιστές-προγράµµατα. Να υπάρχουν, δηλαδή, λογισµικά-πράκτορες που θα εκτελούν ενέργειες βάσει της σηµασίας της πληροφορίας. Για να γίνουν όλα αυτά εφικτά θα πρέπει η πληροφορία να περιγράφεται µε σηµασιολογικό τρόπο, δηλαδή µε τρόπο που θα κάνει αντιληπτή την σηµασία της στις µηχανές. Το αποτέλεσµα θα είναι οι µηχανές να µπορούν εκπληρώνουν στόχους των χρηστών αυτόµατα (όπως π.χ. να βρίσκουν το φθηνότερο αεροπορικό εισιτήριο). Όλα αυτά οδηγούν στην ανάγκη αυτοµατοποίησης του παγκόσµιου ιστού ώστε να µπορούν οι µηχανές να ψάχνουν πληροφορίες αυτόµατα και να ενεργούν αντί των ανθρώπων. Κάτι τέτοιο απαιτεί την περιγραφή της πληροφορίας και των υπηρεσιών µε -1-

8 τρόπο κατανοητό στις µηχανές. Ο Σηµασιολογικός Ιστός παρέχει τα στάνταρ και την υποδοµή που είναι απαραίτητα για να γίνει αυτό πραγµατικότητα. Μέρος της υποδοµής αυτής είναι οι οντολογίες που µπορούν να χρησιµοποιηθούν για την περιγραφή της πληροφορίας. Οι οντολογίες αναπαριστούν την γνώση µε σαφή τρόπο, ορίζουν ένα επιτρεπτό λεξιλόγιο και προσδίδουν στην πληροφορία µια καλά ορισµένη σηµασία ώστε να είναι κατανοητή στα προγράµµατα-πράκτορες. Μια από τις πιο ευρέως χρησιµοποιούµενες γλώσσες οντολογιών είναι η OWL (Web Ontology Language) [16], πρόταση του W3C [15]. Ο σκοπός αυτή της εργασίας είναι η ανάπτυξη ενός εργαλείου που θα επιτρέπει την σηµασιολογική περιγραφή πληροφορίας και αναζήτησής της βάσει αυτής της σηµασιολογικής περιγραφής της. Ως πληροφορία χρησιµοποιήθηκαν κανόνες του συστήµατος κανόνων CLIPS [3], ενώ η περιγραφή τους γίνεται µε την χρήση οντολογιών OWL. Η ιδέα είναι να επιτρέπεται σηµασιολογική αναζήτηση κανόνων χρησιµοποιώντας σαφώς ορισµένες έννοιες της οντολογίας. Η αναζήτηση µπορεί να είναι σύνθετη ψάχνοντας ταυτόχρονα για πολλά στοιχεία της οντολογίας, ενώ λαµβάνονται υπόψη και οι σχέσεις που διέπουν τα συστατικά της οντολογίας. Τα αποτελέσµατα αποτελούνται από κανόνες CLIPS που εµφανίζονται ταξινοµηµένοι σε φθίνουσα σειρά βάσει της σχετικότητάς τους. Η εργασία οργανώνεται σε έξι κεφάλαια. Στο κεφάλαιο 2 περιγράφονται τα κύρια στοιχεία του συστήµατος κανόνων CLIPS. Στην αρχή του κεφαλαίου 3 γίνεται σύντοµη αναφορά στον Σηµασιολογικό Ιστό και στις οντολογίες και στην συνέχεια περιγράφεται συνοπτικά η σύνταξη της γλώσσας OWL. Το κεφάλαιο 4 αποτελεί θεωρητική περιγραφή του τρόπου λειτουργίας του συστήµατος. Στο κεφάλαιο 5 παρουσιάζεται η εφαρµογή Semantic Rule Repository µε την βοήθεια εικόνων και παραδειγµάτων. Τέλος, στο κεφάλαιο 6 συνοψίζεται η εργασία και αναφέρονται πιθανές επεκτάσεις που µπορούν να υλοποιηθούν στο µέλλον. -2-

9 2 Το σύστηµα κανόνων CLIPS Το CLIPS [3], συντοµογραφία του C Language Integrated Production System, είναι ένα σύστηµα παραγωγής κανόνων το οποίο χρησιµοποιείται για την ανάπτυξη έµπειρων συστηµάτων. Αναπτύχθηκε από την NASA και η πρώτη του έκδοση κυκλοφόρησε το Σχεδιάστηκε για να διευκολύνει την ανάπτυξη λογισµικού που κάνει χρήση µοντέλων αναπαράστασης ανθρώπινης γνώσης ή εµπειρίας. 2.1 Εισαγωγή στο CLIPS Το τµήµα του CLIPS που κάνει συλλογισµούς και εξαγωγή συµπερασµάτων ονοµάζεται κέλυφος (shell). Το κέλυφος αυτό παρέχει τα βασικά στοιχεία ενός έµπειρου συστή- µατος, τα οποία είναι: Λίστα γεγονότων (facts-list ή instance-list). Είναι ο χώρος της µνήµης όπου αποθηκεύονται όλα τα δεδοµένα του συστήµατος, δηλαδή τα γεγονότα (facts), καθόλη τη διάρκεια εκτέλεσης του συστήµατος. Βάση κανόνων (rule-base ή knowledge-base). Είναι το τµήµα του συστήµατος που περιέχει όλους τους κανόνες, είτε αυτοί έχουν οριστεί από το περιβάλλον του συστήµατος, είτε έχουν φορτωθεί από κάποιο αρχείο. Μηχανισµός εισαγωγής συµπερασµάτων (inference engine). Ο µηχανισµός αυτός ελέγχει την εκτέλεση των κανόνων ακολουθώντας κάποια από τις στρατηγικές επίλυσης συγκρούσεων (conflict resolution strategies) αποφασίζοντας ποιος κανόνας θα εκτελεστεί κάθε φορά. Το σύνολο των κανόνων που περιµένουν την σειρά τους να εκτελεστούν ονοµάζεται ατζέντα (agenta ή conflict list). Ένα πρόγραµµα γραµµένο σε CLIPS µπορεί να περιέχει γεγονότα, κανόνες και α- ντικείµενα. Ο µηχανισµός εξαγωγής συµπερασµάτων αποφασίζει ποιοι κανόνες θα ε- κτελεστούν και πότε. Τα γεγονότα και τα αντικείµενα, όµως, είναι αυτά που ενεργοποιούν την εκτέλεση των κανόνων µέσω του µηχανισµού εξαγωγής συµπερασµάτων Αναπαράσταση γνώσης Υπάρχουν τρεις τρόποι αναπαράστασης γνώσεις στο CLIPS: -3-

10 Κανόνες (Rules), οι οποίοι χρησιµοποιούνται κυρίως για την αναπαράσταση γνώσης βασισµένης σε ανθρώπινη εµπειρία. Συναρτήσεις (Deffunctions ή Generic Functions), οι οποίες προσανατολίζονται κυρίως στην αναπαράσταση διαδικαστικής γνώσης. Αντικειµενοστραφής Προγραµµατισµός (Object-Oriented Programming), ο ο- ποίος επίσης χρησιµοποιείται στην αναπαράσταση διαδικαστικής γνώσης. Στην ανάπτυξη λογισµικού µπορούν να χρησιµοποιηθούν µόνο κανόνες, µόνο αντικείµενα ή συνδυασµός και των δύο Περιγραφή της γλώσσας Σε αυτό το υποκεφάλαιο περιγράφεται η σύνταξη της γλώσσας CLIPS. Τύποι δεδοµένων Το σύστηµα CLIPS είναι case-sensitive. Οι τύποι δεδοµένων που υποστηρίζει είναι: Αριθµοί (Numbers) Οι αριθµοί µπορεί να είναι είτε ακέραιοι (integers) είτε πραγµατικοί (floats). Μπορούν να αναπαρασταθούν και µε εκθετική µορφή. Παραδείγµατα: e-9 Σύµβολα (Symbols) Είναι οποιαδήποτε ακολουθία µε µήκος ενός ή περισσοτέρων χαρακτήρων, εκ των ο- ποίων ο πρώτος χαρακτήρας δεν είναι ένας από τους: < \ ( ) $ & + -? ~ Επίσης, δεν επιτρέπεται να περιέχει τους: < \ ( ) & ; ~ Παραδείγµατα: 543 Hi blue_sky Αλφαριθµητικά (Strings) Η αναπαράσταση των αλφαριθµητικών γίνεται µε διπλά εισαγωγικά στην αρχή και στο τέλος του αλφαριθµητικού. Για να ενσωµατωθούν διπλά εισαγωγικά στο αλφαριθµητικό χρησιµοποιείται ο χαρακτήρας \. Παραδείγµατα: hello My cat is soft. 5 bees insert\ (a quote) Γεγονότα (Facts) -4-

11 Το γεγονός είναι µία λίστα που αποτελείται από σύµβολα και βρίσκεται µέσα σε παρενθέσεις. Αποτελούν τα δεδοµένα τα οποία επεξεργάζεται το σύστηµα και καταλήγει σε συµπεράσµατα. Παραδείγµατα: (Mike Jackson 30 lawyer) (point ) Τα γεγονότα µπορούν να είναι και σύνθετα. Για παράδειγµα, τα προηγούµενα θα µπορούσαν να είναι όπως φαίνεται παρακάτω: (name Mike Jackson (age 30) (occupation lawyer)) (point (x 2.5) (y 4.7)) Σχόλια (Comments) Για την εισαγωγή σχολίων χρησιµοποιείται ο χαρακτήρας ;. Το υπόλοιπο της γραµ- µής µετά τον χαρακτήρα αυτόν θεωρείται σχόλιο. Εντολές Χειρισµού Γεγονότων Όλα τα γεγονότα εισάγονται, διαγράφονται και αποθηκεύονται στην λίστα γεγονότων. Οι εντολές µε τις οποίες διαχειριζόµαστε τα γεγονότα είναι οι εξής: facts Με αυτή την εντολή µπορούµε να δούµε ανά πάσα στιγµή ποια γεγονότα βρίσκονται στην λίστα γεγονότων. Τρόπος χρήσης: (facts) Παράδειγµα: CLIPS> (facts) f-0 (cat) f-1 (dog) Τα (cat) και (dog) είναι τα γεγονότα που υπάρχουν στην λίστα γεγονότων. Οι αριθµοί 0 και 1 που βρίσκονται στα αριστερά είναι οι δείκτες των γεγονότων (fact-index), οι ο- ποίοι είναι µοναδικοί και προσδίδονται σε κάθε γεγονός κατά την εισαγωγή του στην λίστα γεγονότων. deffacts Επιτρέπει την εισαγωγή πολλών γεγονότων µε µία µόνο εντολή. Χρησιµοποιείται κυρίως σε αρχεία που φορτώνονται στο σύστηµα και µε συνδυασµό της εντολής (reset) (περιγράφεται σε επόµενο υποκεφάλαιο). Τρόπος χρήσης: (deffacts <fact-set-name> <comments> -5-

12 (fact 1) (fact 2) (fact 3)... (fact n) ) Παράδειγµα: (deffacts employees ) (Mike Jackson) (Ken Williams) (Robert Allison) assert Χρησιµοποιείται για την εισαγωγή ενός µόνο γεγονότος. Τρόπος χρήσης: (assert <fact>) Παράδειγµα: (assert (safe-mode enabled)) retract ιαγράφει ένα γεγονός από την λίστα γεγονότων χρησιµοποιώντας το δείκτη του γεγονότος (fact-index). Τρόπος χρήσης: (retract <fact-index>) Παράδειγµα: CLIPS> (facts) f-0 (cat) f-1 (dog) CLIPS> (retract 0) CLIPS> (facts) f-1 (dog) -6-

13 Μεταβλητές Στο CLIPS υπάρχουν δύο είδη µεταβλητών: είναι: Οι µονότιµες (singlevalue) µεταβλητές, των οποίων το όνοµα αρχίζει µε? (ερωτηµατικό) και συνεχίζει µε σύµβολο του οποίου, όµως, ο πρώτος χαρακτήρας δεν είναι αριθµός. Για παράδειγµα, ένα όνοµα θα µπορούσε να είναι?x1y1 ή?name. Η τιµή της µονότιµης µεταβλητής µπορεί να είναι σύµβολο, αριθµός ή αλφαριθµητικό και, όπως µπορεί να συµπεράνει κανείς από το όνοµά τους, µπορούν να πάρουν µόνο µία τιµή. Οι µεταβλητές πολλαπλών τιµών (multivalue). Για την σύνταξη του ονόµατος µιας τέτοιας µεταβλητής ισχύουν τα ίδια µε τις µονότιµες µεταβλητές, µε την διαφορά ότι αρχίζουν µε $? αντί?. Λέγονται πολλαπλών τιµών διότι µπορούν να πάρουν ως τιµή ένα ή περισσότερα σύµβολα (λίστα). Για παράδειγµα, µία τέτοια µεταβλητή θα µπορούσε να λέγεται $?countries και να έχει σαν τιµή (France Germany Greece Italy). Η ανάθεση τιµής σε µεταβλητή γίνεται µε την εντολή bind. Η σύνταξη της εντολής (bind <variable> <value>) Παραδείγµατα: (bind?name John) (bind?age 23) Κανόνες και Ταυτοποίηση Ορισµός κανόνα Ένας από τους βασικούς τρόπους αναπαράστασης γνώσης στο CLIPS είναι οι κανόνες. Χρησιµοποιούνται για την αναπαράσταση γνώσης, η οποία µεταφράζεται σε ένα σύνολο ενεργειών που εκτελούνται όταν ικανοποιούνται συγκεκριµένες συνθήκες. Έτσι, το σώµα ενός κανόνα περιέχει τις συνθήκες και τις ενέργειες και έχει την λογική του ifthen, δηλαδή: if <συνθήκες> then <ενέργειες> Οι συνθήκες ονοµάζονται και αριστερή πλευρά του κανόνα, ενώ οι ενέργειες δεξιά πλευρά. Ένας κανόνας µπορεί να περιέχει µεταβλητές και στην αριστερή και στην δεξιά πλευρά του. Η ικανοποίηση των συνθηκών βασίζεται στην ύπαρξη ή απουσία συγκεκριµένων γεγονότων στην λίστα γεγονότων. Αν υπάρχουν µεταβλητές στις συνθήκες -7-

14 του κανόνα, γίνεται ταυτοποίηση των µεταβλητών µε συγκεκριµένα γεγονότα, µε αποτέλεσµα να εκτελεστεί τόσες φορές ο κανόνας όσα είναι και τα γεγονότα που ταυτοποιούνται. Σε αυτή την περίπτωση, ο ίδιος κανόνας εισάγεται στην ατζέντα µία ή περισσότερες φορές µε διαφορετικές τιµές στις µεταβλητές του. Όταν έρθει η ώρα της πυροδότησης (firing) ενός κανόνα, τότε εκτελούνται οι ενέργειές του, οι οποίες είναι συναρτήσεις, όπως τύπωση µηνυµάτων/αποτελεσµάτων, εισαγωγή/διαγραφή γεγονότων, εκτέλεση µαθηµατικών πράξεων ή οποιαδήποτε άλλη συνάρτηση. Ο ορισµός ενός κανόνα γίνεται µε την συνάρτηση defrule που έχει την εξής σύνταξη: (defrule <name-of-the-rule> ;<comments> (condition 1) (condition 2) (condition n) => (command 1) (command 2) (command m) ) Το όνοµα του κανόνα είναι σύµβολο και είναι µοναδικό. Το ειδικό σύµβολο => διαχωρίζει τις συνθήκες από τις ενέργειες. Παράδειγµα: (defrule connected-towns defines if two towns are connected (?town1 and?town2 are connected) (?town2 and?town3 are connected) => (assert (?town1 and?town3 are connected)) ) ιαγραφή γεγονότος µέσα σε κανόνα -8-

15 Εδώ αξίζει να αναφέρουµε τον τρόπο χρήσης της εντολής retract (της οποίας έγινε α- ναφορά πιο πάνω) µέσα σε κανόνα. Η retract χρησιµοποιείται σε συνδυασµό µε τον ειδικό τελεστή <- όπως φαίνεται στο παράδειγµα: (defrule married => )?x <- (Marshall is single) (Marshall marries Lily) (assert (Marshall is married)) (retract?x) Στην µεταβλητή?x αποθηκεύεται το fact-index του γεγονότος (Marshall is single). Η retract παίρνει ως όρισµα το fact-index και το χρησιµοποιεί για να διαγράψει το γεγονός από την λίστα γεγονότων. Ταυτοποίηση Όπως αναφέρθηκε και πιο πάνω, γίνεται ταυτοποίηση των συνθηκών µε τα γεγονότα µέσω ανάθεσης τιµών από γεγονότα σε µεταβλητές που υπάρχουν στις συνθήκες. Ο Πίνακας 1 παρουσιάζει παραδείγµατα ταυτοποίησης και µη ταυτοποίησης γεγονότων. Πίνακας 1: Παραδείγµατα ταυτοποίησης Συνθήκη Γεγονός Ανάθεση τιµών Αιτία της µηταυτοποίησης (movie?title) (movie Armageddon)?title=Armageddon - (movie?title) (movies Armageddon) - movie movies (numbers $?nums) (numbers ) $?nums=( ) - (numbers $?nums 5) (numbers ) - (?name likes $?colors) (?name likes $?colors) (John likes yellow purple) (John Steve likes yellow purple)?name=john $?colors=(yellow purple) - $?nums=(1 2 3) Η?name είναι µονότιµη µεταβλητή, οπότε είναι λάθος το:?name=(john Steve) Υπάρχει η περίπτωση όπου µία συνθήκη που περιέχει µεταβλητές πολλαπλών τιµών ταυτοποιείται µε το ίδιο γεγονός µε παραπάνω από έναν τρόπο. Για παράδειγµα, η συν- -9-

16 θήκη (fiends $?f1 $?f2) µπορεί να ταυτοποιηθεί µε το γεγονός (friends Maria Lily John) µε τέσσερις διαφορετικούς τρόπους. Οι τιµές που παίρνουν οι δύο µεταβλητές σε κάθε περίπτωση φαίνονται στον Πίνακα 2: Πίνακας 2: Περιπτώσεις ανάθεσης τιµών σε µεταβλητές πολλαπλών τιµών $?f1 $?f2 () (Maria Lily John) (Maria) (Lily John) (Maria Lily) (John) (Maria Lily John) () Στο παραπάνω παράδειγµα, ο κανόνας θα µπει στην ατζέντα τέσσερις φορές, µία για κάθε περίπτωση. Ορισµός Συναρτήσεων (Functions) Οι συναρτήσεις στο CLIPS µοιάζουν µε τις αντίστοιχες δοµές άλλων γλωσσών προγραµµατισµού, δηλαδή έχουν ορίσµατα και εκτελούν κάποιες ενέργειες πάνω σε αυτά. Εκτός από τις έτοιµες/ειδικές συναρτήσεις που υπάρχουν και παρουσιάζονται πιο κάτω, ο χρήστης µπορεί να ορίσει και δικές του συναρτήσεις µε τη βοήθεια της deffunction. Η σύνταξη είναι η εξής: (deffunction <name-of-the-function> (<variables>) (<command 1>) (<command 2>) (<command n>) ) Τα variables είναι τα ορίσµατα της συνάρτησης. Η συνάρτηση επιστρέφει την τιµή της τελευταίας εντολής που εκτελείται. Η τιµή αυτή µπορεί να είναι οτιδήποτε: σύµβολο, αριθµός κ.τ.λ.. Παράδειγµα: (deffunction foo (?v1?v2) (+?v1?v2) (>?v1?v2) -10-

17 ) Εδώ η συνάρτηση foo έχει δύο ορίσµατα και κάνει δύο πράγµατα: πρώτα απλά τα προσθέτει (τα ορίσµατα θα πρέπει να είναι αριθµοί) και στην συνέχεια συγκρίνει αν η τιµή της?v1 είναι µεγαλύτερη από την τιµή της?v2. Η foo επιστρέφει true ή false διότι η τελευταία εντολή της συνάρτησης είναι εντολή σύγκρισης. Αν η τελευταία εντολή ήταν η (+?v1?v2) τότε η τιµή που θα επέστρεφε η συνάρτηση θα ήταν το άθροισµα των τιµών των δύο µεταβλητών. Η κλήση γίνεται δηλώνοντας σε παρενθέσεις το όνοµα της συνάρτησης ακολουθούµενη από τα ορίσµατά της τα οποία διαχωρίζονται µε κενό, δηλαδή: (<όνοµα συνάρτησης> <όρισµα 1> <όρισµα 2> <όρισµα n>) Για παράδειγµα, µία κλήση της foo θα µπορούσε να είναι: (foo 8 12) Συναρτήσεις-Τελεστές Όπως αναφέρθηκε και πριν, υπάρχουν έτοιµες συναρτήσεις που έχουν τον ρόλο βασικών εντολών. Οι συναρτήσεις που έχουν τον ρόλο των τελεστών είναι αυτές που κάνουν τις βασικές αριθµητικές πράξεις, τις λογικές πράξεις και την σύγκριση αριθµών. Όλες δέχονται δύο ή περισσότερα ορίσµατα. Ο Πίνακας 3 παρουσιάζει αριθµητικές συναρτήσεις, ενώ ο Πίνακας 4 παρουσιάζει συναρτήσεις σύγκρισης. Πίνακας 3: Αριθµητικές συναρτήσεις Συνάρτηση Σύνταξη Παράδειγµα Αποτέλεσµα Πρόσθεση (+ <ορίσµατα>) ( ) 22 Αφαίρεση (- <ορίσµατα>) (- 5 10) -5 Πολλαπλασιασµός (* <ορίσµατα>) (* ) 100 ιαίρεση (/ <ορίσµατα>) (/ 21 3) 7 Συνάρτηση Πίνακας 4: Συναρτήσεις σύγκρισης Σύνταξη Παράδειγµα που επιστρέφει true Ισότητα (αριθµήτική) (= <ορίσµατα>) (= 4 4 4) Μεγαλύτερο (> <ορίσµατα>) (> ) Μεγαλύτερο ή ίσο (>= <ορίσµατα>) (>= ) Μικρότερο (< <ορίσµατα>) (< ) Μικρότερο ή ίσο (<= <ορίσµατα>) (<= ) ιάφορο (<> <ορίσµατα>) (<> ) -11-

18 Στην ισότητα, όλοι οι αριθµοί πρέπει να είναι ίσοι. Στο µεγαλύτερο, οι αριθµοί πρέπει να έχουν φθίνουσα σειρά και δεν επιτρέπεται δύο γειτονικοί αριθµοί να είναι ίσοι. Στο µεγαλύτερο ή ίσο, επιτρέπεται να υπάρχει ισότητα µεταξύ γειτονικών αριθµών. Τα ίδια ισχύουν και στα µικρότερο και µικρότερο ή ίσο µε την διαφορά ότι οι αριθµοί έχουν αύξουσα σειρά. Στο διάφορο πρέπει όλα τα ορίσµατα να είναι διαφορετικά. Ο Πίνακας 5 παρουσιάζει τις λογικές συναρτήσεις: Συνάρτηση Πίνακας 5: Λογικές συναρτήσεις Σύνταξη Παράδειγµα που επιστρέφει true ΚΑΙ (AND) (and <ορίσµατα>) (and (= 8 8) (< 2 3)) Ή (OR) (or <ορίσµατα>) (or (= 1 4) (> 3 3) (< 2 4)) Άρνηση (NOT) (not <ορίσµατα>) (not (<> 7 7 7)) Ισότητα (eq <ορίσµατα>) (eq 5 5) Ανισότητα (neq <ορίσµατα>) (neq 5 5.0) Η ισότητα και η ανισότητα εδώ διαφέρουν από την αριθµητική ισότητα και το διάφορο, αντίστοιχα, του Πίνακα 4 στο ότι εδώ τα ορίσµατα πρέπει να είναι ίσα και άνισα, αντίστοιχα, κατά τύπο και τιµή. Στο παράδειγµα της ανισότητας, το πρώτο όρισµα είναι ακέραιος αριθµός ενώ το δεύτερο είναι πραγµατικός µε αποτέλεσµα να επιστρέφει true. Επίσης, τα ορίσµατα δεν χρειάζεται να είναι αριθµοί, αλλά µπορούν αν είναι οποιεσδήποτε συµβολοσειρές. Πρέπει να σηµειωθεί ότι οι συναρτήσεις σύγκρισης και η λογική ισότητα και ανισότητα, όταν βρίσκονται στις συνθήκες ενός κανόνα, χρησιµοποιούνται σε συνδυασµό µε την συνάρτηση test. Για παράδειγµα: (defrule (test (> 5 3)) (test (eq 3 3)) => -12-

19 ) Στο επόµενο παράδειγµα φαίνεται πως χρησιµοποιούνται µέσα στη συνθήκη ενός κανόνα µερικές από τις συναρτήσεις που αναφέρθηκαν: (defrule teenager => ) (name John age?age) (and (test (>?age 12)) (test <?age 19)) (printout t John is a teenager ) Ο παραπάνω κανόνας ελέγχει αν ο John είναι έφηβος (teenager), ελέγχοντας την η- λικία του η οποία, αν είναι µεταξύ 12 και 19, τυπώνεται στο µήνυµα που φαίνεται στο παράδειγµα. Συναρτήσεις-Εισόδου/Εξόδου Υπάρχουν δύο συναρτήσεις Ι/Ο, η read για είσοδο και η printout για έξοδο. Read Η read εισάγει από το standard output το επόµενο σύµβολο και συνηθίζεται να χρησιµοποιείται µαζί µε την bind. Η σύνταξη της read είναι: (read) Παράδειγµα: (defrule get-age ) => (printout t Type your age: ) (bind?age (read)) Ο κανόνας get-age τυπώνει ένα µήνυµα που ζητάει από τον χρήστη να δώσει την ηλικία του. Στην συνέχεια, µε την bind, αναθέτει την τιµή που έδωσε ο χρήστης στην µεταβλητή?age. Printout Χρησιµοποιείται για την αποστολή µηνυµάτων σε συσκευές Ι/Ο. Η σύνταξή της είναι: (printout <devise> <expression>) -13-

20 Το devise είναι η συσκευή εξόδου όπου αποστέλλεται το µήνυµα expression. Παράδειγµα: (printout t John s age is?age crlf) Με την τιµή t δηλώνεται ως συσκευή εξόδου η οθόνη. Το υπόλοιπο µέρος της εντολής αποτελεί το µήνυµα που θα αποσταλεί στην οθόνη. ηλαδή, αν η µεταβλητή?age έχει την τιµή 23, τότε το µήνυµα που θα τυπωθεί θα είναι: John s age is 23. Το crlf είναι το σύµβολο νέας γραµµής, που σηµαίνει ότι το επόµενο µήνυµα θα τυπωθεί σε νέα γραµµή. Οι Συναρτήσεις while και if-then-else Η while είναι συνάρτηση επανάληψης που σταµατάει όταν γίνει ψευδής µία συνθήκη. Η σύνταξή της είναι: (while (condition) do (command 1) (command 2) (command n) ) Όσο είναι αληθής η συνθήκη condition οι εντολές που βρίσκονται από κάτω εκτελούνται. Συχνά, µία µεταβλητή παίζει τον ρόλο ενός µετρητή και αυξάνεται ή µειώνεται σε κάθε επανάληψη. Σε αυτή την περίπτωση, η while χρησιµοποιείται σε συνδυασµό µε την bind. Παράδειγµα: (defrule positive (number?num) => (while (<=?num 0) do (printout t The number is still positive. I m reducing it by 1. ) (bind?num (-?num 1) ) Στο παραπάνω παράδειγµα, η µεταβλητή?num µειώνεται κατά 1 σε κάθε επανάληψη µέχρι η τιµή της να γίνει αρνητική. -14-

21 Με την συνάρτηση if-then-else εκτελούνται κάποιες εντολές, ανάλογα µε το αν µία συνθήκη είναι αληθής ή ψευδής. Σύνταξη: (if (condition) then (command a-1) (command a-2) (command a-n) else (command b-1) (command b-2) (command b-m) ) Αν η συνθήκη condition είναι αληθής, εκτελούνται οι εντολές τύπου a, αλλιώς ε- κτελούνται οι εντολές τύπου b. Παράδειγµα: (defrule positive-or-negative (number?num) => (if (>?num 0) then (printout t Positive. ) else (printout t Negative. ) ) Στο παραπάνω παράδειγµα, ελέγχεται αν η τιµή της?num είναι θετική ή αρνητική και τυπώνεται το ανάλογο µήνυµα. Πρότυπα (Templates) Σε µεγάλα προγράµµατα δηµιουργούνται ανάγκες αναπαράστασης της διαθέσιµης πληροφορίας µε µεγάλα γεγονότα. Η χρήση τέτοιων γεγονότων σε κανόνες απαιτούν να γραφούν κανόνες µε αρκετά µεγάλες συνθήκες, καθώς τα γεγονότα πρέπει να αναφέρονται κάθε φορά µε όλες τις παραµέτρους τους. Γι αυτό τον λόγο, το CLIPS προσφέρει -15-

22 έναν εναλλακτικό τρόπο δηµιουργίας και διαχείρισης τέτοιων γεγονότων µέσω ορισµού προτύπων γεγονότων. Τα πρότυπα γεγονότα είναι µία δοµή µε την οποία µπορεί να οριστεί η µορφή που θα έχουν τα γεγονότα σε ένα πρόγραµµα. Κάθε πρότυπο έχει ένα σύνολο από ιδιότητες (slots) στις οποίες µπορεί να ανατεθούν τιµές αυτόνοµα, ενώ επιπλέον µπορεί να ορισθούν και οι τύποι των τιµών αυτών έτσι ώστε να γίνονται οι απαραίτητοι έλεγχοι. Ο ορισµός προτύπων γεγονότων γίνεται µε την συνάρτηση deftemplate. Η σύνταξή της είναι: (deftemplate <template name> (slot <slotname1> (type <type1>)) (multislot <slotname2> (type <type2>)) (slot <slotnamen> (type <typen>)) ) όπου slotnamen είναι το όνοµα της ιδιότητας και το όρισµα (type <typen>) καθορίζει τον τύπο της τιµής της συγκεκριµένης ιδιότητας. Ο καθορισµός του τύπου είναι προαιρετικός και αν δεν ορισθεί για κάποια ιδιότητα αυτή µπορεί να δεχθεί τιµή οποιουδήποτε τύπου. Υπάρχουν δύο είδη ιδιοτήτων: οι ιδιότητες slot που µπορεί να πάρουν σαν τιµή µόνο ένα σύµβολο ή αριθµό και οι ιδιότητες multislot οι οποίες δέχονται πολλαπλές τιµές. Ο Πίνακας 6 περιέχει τους διαθέσιµους τύπους τιµών για τις ιδιότητες των προτύπων. Πίνακας 6: Τύποι τιµών για τις ιδιότητες των προτύπων. Τύπος SYMBOL STRING LEXEME INTEGER FLOAT NUMBER FACT-ADDRESS INSTANCE-ADDRESS INSTANCE-NAME INSTANCE?VARIABLE Η ιδιότητα που µπορεί να περιέχει Σύµβολα Αλφαριθµητικά Σύµβολα ή αλφαριθµητικά Ακέραιες τιµές Πραγµατικές τιµές Ακέραιες ή πραγµατικές τιµές ιεύθυνση γεγονότος ιεύθυνση αντικειµένου της COOL Όνοµα αντικειµένου της COOL Όνοµα ή διεύθυνση αντικειµένου της COOL Τιµές οποιουδήποτε τύπου -16-

23 Ακολουθεί ένα παράδειγµα στο οποίο φαίνεται ο ορισµός προτύπου για µια βάση δεδοµένων µαθητών όπου καταχωρούνται διάφορα στοιχεία τους και ένας κανόνας ο οποίος τυπώνει τα ονόµατα όλων των αρρένων µαθητών: (deftemplate student (slot name (type SYMBOL)) (slot surname (type SYMBOL)) (slot sex (type SYMBOL)) (slot age (type INTEGER)) (multislot classes (type SYMBOL)) ) (defrule print-students (student (name?name) (sex male)) => (printout t Student:?name crlf) ) 2.2 COOL Το CLIPS υποστηρίζει την δυνατότητα αντικειµενοστραφούς προγραµµατισµού µέσω της γλώσσας COOL (CLIPS Object-Oriented Language). Η COOL έχει πέντε βασικά χαρακτηριστικά των αντικειµενοστραφών γλωσσών προγραµµατισµού: αφαίρεση (abstraction), εγκλεισµό (encapsulation), κληρονοµικότητα (inheritance), πολυµορφισµό (polymorphism) και δυναµική δέσµευση (dynamic binding) Προκαθορισµένες κλάσεις συστήµατος Η COOL ορίζει δεκαεπτά κλάσεις συστήµατος: OBJECT, USER, INITIAL-OBJECT, PRIMITIVE, NUMBER, INTEGER, FLOAT, INSTANCE, INSTANCE-NAME, INSTANCE-ADDRESS, ADDRESS, FACT-ADDRESS, EXTERNAL-ADDRESS, MULTIFIELD, LEXEME, SYMBOL και STRING. Όλες εκτός από την INITIAL- OBJECT είναι αφηρηµένες. Όλες οι κλάσεις που ορίζονται από τον χρήστη πρέπει να κληρονοµούν άµεσα ή έµµεσα από την κλάση USER, γιατί αυτή η κλάση έχει όλες τις βασικές µεθόδους του συστήµατος, όπως αρχικοποίηση (initialization) και διαγραφή (deletion). -17-

24 2.2.2 Ορισµός κλάσεων χρήστη Στην COOL οι κλάσεις ορίζονται µέσω της ειδικής συνάρτησης defclass: (defclass <name> [<comments>] (is-a <superclass-name>+) [<role>] [<pattern-match-role>] <slot>* ) όπου <name> το όνοµα της κλάσης, <superclass-name>+ είναι µία ή περισσότερες υπερ-κλάσεις από τις οποίες η νέα κλάση κληρονοµεί ιδιότητες και µεθόδους, <role> είναι ένας προσδιοριστής, ο οποίος καθορίζει εάν θα δηµιουργούνται άµεσα αντικείµενα της νέας κλάσης, <pattern-match-role> είναι ένας προσδιοριστής, ο οποίος καθορίζει εάν τα αντικείµενα αυτής της κλάσης µπορούν να ταιριάζουν µε πρότυπα αντικειµένων στο αριστερό µέρος των κανόνων και <slot>* είναι µία λίστα ιδιοτήτων που ορίζονται στην νέα κλάση. Παρακάτω φαίνεται ο ορισµός δύο κλάσεων vehicle και car, όπου η δεύτερη κληρονοµεί από την πρώτη: (defclass vehicle (is-a USER) (slot fuel-type (type SYMBOL)) (slot tank-capacity (type INTEGER)) (slot fuel-loaded (type INTERGER)) ) (defclass car (is-a vehicle) (slot consumption-rate (type FLOAT)) (slot reset-able-counter (type INTEGER)) ) Ορισµός στιγµιότυπων Η δηµιουργία και η αρχικοποίηση ενός στιγµιότυπου µιας κλάσης ορισµένης από το χρήστη επιτυγχάνονται µέσω της συνάρτησης make-instance: -18-

25 (make-instance [<instance-name-expression>] of <class-name-axpression> (<slot-name-expression> <expression>*)* ) όπου <instance-name-expression> είναι το όνοµα του νέου αντικειµένου (τύπου SYMBOL ή INSTANCE-NAME), το οποίο είναι προαιρετικό, <class-nameexpression> είναι το όνοµα της κλάσης αντικειµένου και (<slot-name-expression> <expression>*)* είναι µία λίστα ζευγών ιδιότητα-τιµή η οποία αρχικοποιεί τις αντίστοιχες ιδιότητες του αντικειµένου µε τιµές. Το παρακάτω παράδειγµα ορίζει ένα στιγ- µιότυπο µε όνοµα [track1] της κλάσης vehicle που ορίστηκε προηγουµένως: (make-instance [track1[ of vehicle (fuel-type diesel) (tank capacity 100) (fuel-loaded 50) ) Ένας άλλος τρόπος ορισµού µιας οµάδας στιγµιότυπων, κυρίως µέσα από αρχεία, είναι µε την χρήση της συνάρτησης definstances: (definstances <definstances-name> [<comment>] ([<instance-name-expression>] of <class-name-expression> (<slot-name-expression> <expression>*)* )* ) όπου <definstances-name> είναι το όνοµα της οµάδας των νέων αντικειµένων, το ο- ποίο έχει µόνο διαχειριστική σηµασία, <comment> είναι ένα προαιρετικό σχόλιο, ενώ οι υπόλοιπες παράµετροι είναι ίδιες όπως στη συνάρτηση make-instance. Το παρακάτω είναι ένα παράδειγµα ορισµού µιας οµάδας αυτοκινήτων family-cars η οποία περιλαµβάνει δύο αυτοκίνητα, τα fiat_brava και hyundai_lantra: (definstances family-cars (fiat_brava of car (fuel-type benzine) -19-

26 (tank-capacity 45) (fuel-loaded 30) (consumption-rate 10.5) (reset-able-counter 250) ) (hyundai_lantra of car (fuel-type benzine) (tank-capacity 58) (fuel-loaded 47) (consumption-rate 12.3) (reset-able-counter 110) ) ) Η εντολή reset διαγράφει όλα τα τρέχοντα στιγµιότυπα και καλεί (εσωτερικά) την συνάρτηση make-instance για κάθε στιγµιότυπο που καθορίζεται σε µια συνάρτηση definstances Χρήση Αντικειµένων σε Κανόνες Τα αντικείµενα των κλάσεων που ορίζει ο χρήστης µπορούν να ταυτοποιηθούν στη συνθήκη ενός κανόνα και να µεταβληθούν από τις ενέργειες του κανόνα. Η σύνταξη των συνθηκών που αναφέρονται σε αντικείµενα είναι η ακόλουθη: (object (is-a <constraint>) (name <constraint>) (<slot-name> <constraint>*)* ) Ο περιορισµός is-a χρησιµεύει στον περιορισµό των αντικειµένων, που ταιριάζουν στη συνθήκη, σε αυτά που ανήκουν σε µία συγκεκριµένη κλάση ή υποκλάσεις της. Ο περιορισµός name χρησιµεύει στον περιορισµό της ταυτοποίησης µόνο σε συγκεκριµένα αντικείµενα. Αν στη θέση του περιορισµού υπάρχει µεταβλητή, τότε απλά επιστρέφεται το όνοµα του αντικειµένου που ταίριαξε. Για τους υπόλοιπους περιορισµούς, ι- -20-

27 σχύουν τα ίδια µε τα πρότυπα γεγονότων. Στο παρακάτω παράδειγµα, ο κανόνας αναζητά αντικείµενα της κλάσης car (ή πιθανών υποκλάσεών της) για τα οποία η τιµή της ιδιότητας fuel-type είναι ίση µε benzine. Επίσης, ανακαλείται το όνοµα του αντικειµένου στην µεταβλητή?x, η οποία χρησιµοποιείται στην ενέργεια του κανόνα για εκτύπωση. (defrule ask-data (object (is-a car) (name?x) (fuel-type benzine)) => (printout t Car:?x crlf) ) Η παράληψη του περιορισµού is-a έχει ως αποτέλεσµα την επιλογή όλων των αντικειµένων που έχουν την ίδια ιδιότητα fuel-type µε τη συγκεκριµένη τιµή, ανεξαρτήτως κλάσης. -21-

28

29 3 Οντολογίες OWL Οι οντολογίες αποτελούν µέρος του οράµατος του Σηµασιολογικού Ιστού (Semantic Web)[13]. Στην αρχή του κεφαλαίου αυτού γίνεται µια σύντοµη αναφορά για τον Ση- µασιολογικό Ιστό και για τις οντολογίες γενικά και στην συνέχεια, ακολουθεί περιγραφή της γλώσσας οντολογιών OWL [16]. 3.1 Σηµασιολογικός Ιστός Ο Σηµασιολογικός Ιστός αποτελεί µια επέκταση του υπάρχοντος διαδικτύου, στην ο- ποία η πληροφορία που παρουσιάζεται στο χρήστη ορίζεται µε τέτοιο τρόπο ώστε να είναι κατανοητή όχι µόνο από τους ανθρώπους αλλά και από προγράµµατα-πράκτορες ενισχύοντας έτσι τη διαλειτουργικότητα της επεξεργασίας των πληροφοριών µεταξύ των πρακτόρων αλλά και διευκολύνοντας τη λειτουργικότητα της χρήσης του διαδικτύου από τους ανθρώπους µε την βοήθεια των πρακτόρων. Ο Σηµασιολογικός Ιστός βασίζεται στην ιδέα της οργάνωσης και διασύνδεσης της πληροφορίας που υπάρχει στο διαδίκτυο, ώστε να µπορεί να χρησιµοποιηθεί πιο αποτελεσµατικά για την ανακάλυψη, αυτοµατοποίηση, οµαδοποίηση, και επαναχρησιµοποίησή της από διαφορετικές µεταξύ τους διαδικτυακές εφαρµογές. Ο Σηµασιολογικός Ιστός φιλοδοξεί να παρέχει στο µέλλον την υποδοµή που απαιτείται για τη δηµιουργία και την αξιοποίηση του συνόλου των πληροφοριών από ένα πλήθος διαδικτυακών εφαρµογών που θα περιλαµβάνουν, εκτός από τις απλές ιστοσελίδες του διαδικτύου, τις εταιρικές βάσεις δεδοµένων, τις διαδικτυακές ηλεκτρονικές υπηρεσίες, τους πράκτορες, ακόµη και τις οικιακές συσκευές. Με το νέο αυτό τρόπο οργάνωσης των δεδοµένων, οι ευφυείς πράκτορες λογισµικού που µετά από αίτηση κάποιου χρήστη αναζητούν πληροφορίες ή παρεχόµενες υπηρεσίες στο διαδίκτυο, θα έ- χουν τη δυνατότητα να φιλτράρουν καλύτερα τα δεδοµένα που συλλέγουν. Έτσι αυτά θα ανταποκρίνονται πραγµατικά στις ανάγκες του χρήστη και θα παρουσιάζονται µε κατανοητή µορφή. Το όραµα του Σηµασιολογικού Ιστού συνεχώς ενδυναµώνεται µε τη γέννηση µιας νέας γενιάς τεχνολογιών και εργαλείων. Συγκεκριµένα, δηµιουργούνται -23-

30 νέες γλώσσες, όπως οι XML [18], RDF [9], OWL [16], που αναπαριστούν την πληροφορία σε µορφή εύκολα κατανοητή και επεξεργάσιµη από τους πράκτορες. 3.2 Οντολογίες Μια οντολογία (ontology) είναι µια αυστηρά µαθηµατική (formal) περιγραφή ενός πεδίου γνώσης (domain) και περιλαµβάνει ένα σύνολο από όρους και τις σηµασιολογικές συσχετίσεις µεταξύ τους. Οι όροι περιγράφουν κλάσεις αντικειµένων, δηλαδή έννοιεςπρότυπα σχετικές µε αντικείµενα. Οι συσχετίσεις συνήθως αφορούν ιεραρχικές εξαρτήσεις µεταξύ των όρων. Άλλες πληροφορίες που µπορεί να υπάρχουν σε µία οντολογία είναι οι ιδιότητες των όρων, περιορισµοί σχετικά µε αυτές, σχέσεις ισοδυναµίας και διαχωρισµού, καθώς και σηµασιολογικοί συσχετισµοί (semantic relationships) µεταξύ των όρων µε τη χρήση της λογικής. Συνήθως όµως, τα πιο πολύπλοκα συστήµατα εξαγωγής λογικών συµπερασµάτων διαχωρίζονται από τις οντολογίες. Οι δυνατότητες που παρέχουν οι οντολογίες για εξαγωγή συµπερασµάτων συµπεριλαµβάνουν τα ακόλουθα: Έλεγχος του αν κάποιο αντικείµενο (η διαδικτυακός πόρος) ανήκει σε κάποια κλάση ή όχι. Αυτό γίνεται εύκολα ακλουθώντας τις ιεραρχικές συσχετίσεις της οντολογίας. Έλεγχος της ισοδυναµίας µεταξύ κλάσεων, ακολουθώντας τις σχέσεις ισοδυνα- µίας ή/και τις σχέσεις µεταξύ ξένων κλάσεων. Έλεγχος της ισοδυναµίας µεταξύ κλάσεων ή αντικειµένων βάσει λογικών συµπερασµών που προκύπτουν από την επεξεργασία των δηλώσεων και των περιορισµών της οντολογίας. Έλεγχος ασυνεπειών της οντολογίας, όταν υπάρχουν αλληλοαναιρούµενοι περιορισµοί και δηλώσεις. Αυτόµατη κατηγοριοποίηση αντικειµένων ή πόρων στην ιεραρχία των κλάσεων όταν δεν είναι γνωστή η κλάση στη οποία ανήκουν αλλά είναι γνωστές οι ιδιότητές τους. Η κατηγοριοποίηση γίνεται συγκρίνοντας τις τιµές των ιδιοτήτων των αγνώστων αντικειµένων µε τους περιορισµούς των κλάσεων. Καθώς ο Σηµασιολογικός Ιστός θα εξελίσσεται, θα αναπτύσσονται όλο και περισσότερες οντολογίες από τους χρήστες. Καθώς η πλειοψηφία των χρηστών δε θα ενδιαφέρεται να τηρήσει την αυστηρή οργάνωση που περιγράφτηκε παραπάνω, µάλλον θα επικρατεί αναρχία στην οργάνωση και διασύνδεση των οντολογιών, όπως γίνεται στο διαδίκτυο σήµερα. Αυτό σηµαίνει πως αναµένεται να υπάρχουν πολλές µικρού µεγέ- -24-

31 θους οντολογίες χρηστών, που θα διασυνδέονται µεταξύ τους, παρά ολιγάριθµες, µεγάλου µεγέθους, πολύπλοκες και αυστηρά οργανωµένες οντολογίες. 3.3 Γλώσσα Οντολογιών OWL Η γλώσσα οντολογιών OWL (Web Ontology Language)[16] είναι πρόταση του οργανισµού W3C (World Wide Web Consortium)[15], ο οργανισµός που έχει δηµιουργήσει πολλά διεθνή στάνταρτ. Παρακάτω ακολουθεί η περιγραφή της γλώσσας Είδη της γλώσσας OWL Η αποτελεσµατική υποστήριξη συλλογιστικής (reasoning) και η ευκολία έκφρασης σε µια γλώσσα τόσο ισχυρή όσο είναι και ο συνδυασµός της RDF Schema µε πλήρη λογική, είναι δύο απαιτήσεις που ανάγκασαν το W3C να δηµιουργήσει τρεις υπογλώσσες της OWL, όπου η κάθε µια εξυπηρετεί διαφορετικές ανάγκες. OWL Full Έτσι ονοµάζεται η πλήρης γλώσσα OWL και χρησιµοποιεί όλες τις δοµές της OWL επιτρέποντας τον συνδυασµό αυτών µε αυθαίρετους τρόπους µε την RDF και RDF Schema. Το πλεονέκτηµά της OWL Full είναι ότι είναι πλήρως συµβατή συντακτικά και σηµασιολογικά µε την RDF, δηλαδή κάθε έγκυρο έγγραφο RDF είναι και έγγραφο OWL Full και κάθε έγκυρο RDF/RDF Schema συµπέρασµα είναι και έγκυρο OWL Full συµπέρασµα. Το µειονέκτηµά της είναι ότι η γλώσσα έχει γίνει τόσο ισχυρή ώστε να είναι πολύ δύσκολη η εξαγωγή συµπερασµάτων. OWL DL Για λόγους υπολογιστικής απόδοσης δηµιουργήθηκε η OWL DL (Description Logic). Είναι υπογλώσσα της OWL Full και περιορίζει τον τρόπο µε τον οποίο µπορεί να χρησιµοποιηθούν οι δοµές της OWL και της RDF. Το πλεονέκτηµα της είναι η καλή υποστήριξη συλλογιστικής, δηλαδή η εξαγωγή συµπεράσµατος είναι σίγουρη. Το µειονέκτηµα της OWL DL είναι ότι χάνει την πλήρη συµβατότητα µε την RDF. OWL Lite Η OWL Lite είναι ακόµα πιο περιοριστική από την OWL DL όσον αφορά τις δοµές της γλώσσας. Τα πλεονέκτηµα της: ευκολότερη στην αντίληψη για τους χρήστες και ευκολότερη στην εφαρµογή για τους προγραµµατιστές. Μειονέκτηµά της η περιορισµένη εκφραστικότητα. -25-

32 3.3.2 Σύνταξη Η γλώσσα OWL έχει χτιστεί πάνω στην RDF και RDF Schema και η σύνταξή της βασίζεται στην XML. Η RDF/XML σύνταξη όµως δεν είναι πολύ φιλική. Για αυτό έχουν προταθεί και άλλες µορφές, όπως: µια σύνταξη βασισµένη στη XML αλλά δεν ακολουθεί την RDF. Αυτό το γεγονός κάνει αυτήν τη σύνταξη να είναι σηµαντικά ευκολότερη στη χρήση της µια αφηρηµένη σύνταξη (abstract) η οποία είναι πολύ πιο συµπαγής και ευανάγνωστη µια γραφική σύνταξη η οποία είναι βασισµένη στη UML [14] (Universal Modeling Language). Επειδή η UML είναι ευρέως διαδεδοµένη, µπορεί να χρησιµοποιηθεί από τους χρήστες σαν µια πρώτη προσπάθεια απόκτησης οικειότητας µε την OWL Κεφαλή εγγράφου OWL Τα έγγραφα OWL συνήθως αποκαλούνται και οντολογίες OWL και είναι έγραφα RDF. Το στοιχείο-ρίζα µιας οντολογίας OWL είναι ένα στοιχείο rdf:rdf, το οποίο προσδιορίζει έναν αριθµό ονοµάτων. Για παράδειγµα: <rdf:rdf xmlns:owl =" xmlns:rdf =" xmlns:rdfs=" xmlns:xsd =" Μια οντολογία OWL µπορεί να αρχίζει µε ένα σύνολο δηλώσεων που είναι οµαδοποιηµένες κάτω από ένα στοιχείο owl:ontology, το οποίο περιέχει σχόλια, έλεγχο έκδοσης, καθώς και συµπερίληψη των άλλων οντολογιών. Για παράδειγµα: <owl:ontology rdf:about=""> <rdfs:comment>an example OWL ontology</rdfs:comment> <owl:priorversion rdf:resource=" <owl:imports -26-

33 rdf:resource=" <rdfs:label>university Ontology</rdfs:label> </owl:ontology> Μόνο µία από αυτές τις δηλώσεις έχει σχέση µε την λογική σηµασία της οντολογίας, η δήλωση owl:imports η οποία περιέχει λίστα µε οντολογίες. Το περιεχόµενο των οντολογιών αυτών αποτελεί µέρος της οντολογίας. Επίσης, οι οντολογίες αυτές παρέχουν ορισµούς που µπορούν να χρησιµοποιηθούν. Να σηµειωθεί ότι το στοιχείο owl:imports έχει µεταβατική ιδιότητα, δηλαδή αν στην οντολογία A δηλώνεται η οντολογία B και στην οντολογία B δηλώνεται η οντολογία C, τότε στην οντολογία A δηλώνεται και η οντολογία C Κλάσεις Οι κλάσεις ορίζονται χρησιµοποιώντας το στοιχείο owl:class της γλώσσας. Για παράδειγµα µπορούµε να ορίσουµε την κλάση associateprofessor όπως φαίνεται παρακάτω: <owl:class rdf:id="associateprofessor"> <rdfs:subclassof rdf:resource="#academicstaffmember"/> </owl:class> Μπορούµε επίσης να πούµε ότι αυτή η κλάση είναι ξένη µε τις κλάσεις professor και assistantprofessor µε τη χρήση του owl:disjointwith στοιχείου: <owl:class rdf:about="associateprofessor"> <owl:disjointwith rdf:resource="#professor"/> <owl:disjointwith rdf:resource="#assistantprofessor"/> </owl:class> Η ισοδυναµία κλάσεων µπορεί να ορισθεί µέσω του στοιχείου owl:equivalentclass: <owl:class rdf:id="faculty"> <owl:equivalentclass rdf:resource="#academicstaffmember"/> </owl:class> -27-

34 Επίσης υπάρχουν δύο προκαθορισµένες κλάσεις, η owl:thing και η owl:nothing. Η πρώτη είναι η πιο γενική κλάση και περικλείει τα πάντα ενώ η δεύτερη είναι µια κενή κλάση. Εποµένως, κάθε κλάση είναι υποκλάση της owl:thing και υπερκλάση της owl:nothing Ιδιότητες Στην OWL υπάρχουν δύο τύποι ιδιοτήτων: Ιδιότητες αντικειµένων (object properties), οι οποίες συνδέουν αντικείµενα µε άλλα αντικείµενα και Ιδιότητες τύπων (datatype properties), οι οποίες συνδέουν αντικείµενα µε τύπους δεδοµένων. Ένα παράδειγµα µιας ιδιότητας τύπου φαίνεται στο παράδειγµα που ακολουθεί. <owl:datatypeproperty rdf:id="age"> <rdfs:range rdf:resource=" #nonnegativeinteger"/> </owl:datatypeproperty> Επίσης, ένα παράδειγµα µιας ιδιότητας αντικειµένου φαίνεται παρακάτω. <owl:objectproperty rdf:id="istaughtby"> <owl:domain rdf:resource="#course"/> <owl:range rdf:resource="#academicstaffmember"/> <rdfs:subpropertyof rdf:resource="#involves"/> </owl:objectproperty> Επίσης µπορούν να ορισθούν ιδιότητες οι οποίες έχουν παραπάνω από µία τιµές για τους domain και range περιορισµούς. Σε αυτήν την περίπτωση, χρησιµοποιείται η τοµή των αντίστοιχων κλάσεων ώστε κάθε domain και range περιορισµός να αναφέρεται µόνο σε µία κλάση. Στην OWL υπάρχει η δυνατότητα ορισµού ανάστροφων ιδιοτήτων. Για παράδειγµα: <owl:objectproperty rdf:id="teaches"> <rdfs:range rdf:resource="#course"/> -28-

35 <rdfs:domain rdf:resource="#academicstaffmember"/> <owl:inverseof rdf:resource="#istaughtby"/> </owl:objectproperty> Σε αυτήν την περίπτωση, οι τιµές των domain και range περιορισµών µπορούν να κληρονοµηθούν από τις ανάστροφες, µε το να αλλάξουν οι domain µε τις range τιµές των αντίστοιχων ιδιοτήτων. Η ισοδυναµία των ιδιοτήτων µπορεί να ορισθεί µε τη χρήση της owl:equivalentproperty ιδιότητας. Για παράδειγµα: <owl:objectproperty rdf:id="lecturesin"> <owl:equivalentproperty rdf:resource="#teaches"/> </owl:objectproperty> Περιορισµοί ιδιοτήτων Με την ιδιότητα rdfs:subclassof µπορεί να ορισθεί ότι µια κλάση C είναι υποκλάση µιας άλλης D. Έτσι κάθε αντικείµενο της C είναι και αντικείµενο της D. Ας υποθέσου- µε ότι θέλουµε να δηλώσουµε ότι µια κλάση Α πρέπει να ικανοποιεί κάποιες συνθήκες, έτσι ώστε όλα τα αντικείµενα της Α να έχουν κάποιες ορισµένες ιδιότητες. Προφανώς αυτό µπορούµε να το ορίσουµε µε το να πούµε ότι η κλάση A είναι υποκλάση µιας κλάσης Β, όπου η Β περιέχει όλα τα αντικείµενα που ικανοποιούν τους περιορισµούς. Για παράδειγµα, θα δώσουµε τον ορισµό µιας κλάσης η οποία απαιτεί τα µαθήµατα πρώτου έτους να διδάσκονται µόνο από καθηγητές: <owl:class rdf:about="#firstyearcourse"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#istaughtby"/> <owl:allvaluesfrom rdf:resource="#professor"/> </owl:restriction> </rdfs:subclassof> </owl:class> -29-

36 Η owl:allvaluesfrom ιδιότητα χρησιµοποιείται για να ορίσουµε την κλάση των πιθανών τιµών της ιδιότητας που αναφέρεται από την ιδιότητα owl:onproperty. Στο παράδειγµά µας, µόνο οι professors επιτρέπεται να είναι οι τιµές της ιδιότητας istaughtby. Επίσης µπορούµε να δηλώσουµε ότι τα µαθήµατα που έχουν σχέση µε µαθηµατικά διδάσκονται από τον David Billington: <owl:class rdf:about="#mathcourse"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#istaughtby"/> <owl:hasvalue rdf:resource="#949352"/> </owl:restriction> </rdfs:subclassof> </owl:class> Η owl:hasvalue ιδιότητα χρησιµοποιείται για να ορίσει µια συγκεκριµένη τιµή για την ιδιότητα που αναφέρεται από την owl:onproperty ιδιότητα. Επίσης µπορούµε να δηλώσουµε ότι όλα τα ακαδηµαϊκά µέλη πρέπει να διδάσκουν τουλάχιστον ένα προπτυχιακό µάθηµα: <owl:class rdf:about="#academicstaffmember"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#teaches"/> <owl:somevaluesfrom rdf:resource="#ugradscourse"/> </owl:restriction> </rdfs:subclassof> </owl:class> Συνοψίζοντας, µπορούµε να πούµε ότι το παράδειγµα που χρησιµοποιεί την owl:allvaluesfrom ιδιότητα επιβάλλει κάθε άτοµο που διδάσκει ένα αντικείµενο της -30-

37 κλάσης firstyearcourse να είναι professor. Σε όρους λογικής, έχουµε έναν καθολικό ποσοδείκτη (universal quantifier). Το παράδειγµα που χρησιµοποιεί την owl:somevaluesfrom ιδιότητα δηλώνει ότι υπάρχει ένα προπτυχιακό µάθηµα το οποίο διδάσκεται από ένα αντικείµενο της κλάσης acadmicstaffmember. Σε όρους λογικής, έχουµε έναν υπαρξιακό ποσοδείκτη (existential quantifier). Γενικά, το στοιχείο owl:restriction περιέχει µια owl:onproperty ιδιότητα και µία ή περισσότερες δηλώσεις περιορισµού. Ένας τύπος περιορισµού είναι αυτοί που περιγράψαµε παραπάνω. Ένας άλλος τύπος είναι ο περιορισµός πληθαρίθµου. Για παράδειγµα, µπορούµε να δηλώσουµε ότι κάθε µάθηµα θα πρέπει να διδάσκεται από τουλάχιστον ένα άτοµο: <owl:class rdf:about="#course"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#istaughtby"/> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger">1 </owl:mincardinality> </owl:restriction> </rdfs:subclassof> </owl:class> Επίσης, µπορούµε να δηλώσουµε ότι ένα τµήµα πρέπει να έχει τουλάχιστον 10 και το πολύ 30 µέλη: <owl:class rdf:about="#department"> <rdfs:subclassof> <owl:restriction> <owl:onproperty rdf:resource="#hasmember"/> <owl:mincardinality rdf:datatype="&xsd;nonnegativeinteger">10-31-

38 </owl:mincardinality> <owl:maxcardinality rdf:datatype="&xsd;nonnegativeinteger">30 </owl:maxcardinality> </owl:restriction> </rdfs:subclassof> </owl:class> Εποµένως, η owl:restriction κλάση ορίζει µια ανώνυµη κλάση η οποία δεν έχει κάποιο id, δεν ορίζεται µε τη χρήση του owl:class στοιχείου και έχει τοπική σκοπιά. ηλαδή µπορεί µόνο να ορισθεί στο µέρος που ο περιορισµός εµφανίζεται Ειδικές ιδιότητες Στην OWL υπάρχει η δυνατότητα του ορισµού ιδιοτήτων δίνοντάς τους ιδιαίτερα χαρακτηριστικά. Μπορούν να χρησιµοποιηθούν διάφορα στοιχεία της OWL, όπως: owl:transitiveproperty το οποίο ορίζει ότι µια ιδιότητα έχει µεταβατικό χαρακτήρα owl:symmetricproperty το οποίο δηλώνει ότι µια ιδιότητα έχει συµµετρικό χαρακτήρα owl:functionalproperty το οποίο δηλώνει ότι µια ιδιότητα µπορεί να πάρει το πολύ µία τιµή οwl:inversefunctionalproperty το οποίο δηλώνει µια ιδιότητα στην οποία δύο διαφορετικά αντικείµενα δεν µπορεί να έχουν ίδια τιµή. Ένα παράδειγµα το οποίο δείχνει τη σύνταξη αυτών των ιδιοτήτων φαίνεται παρακάτω: <owl:objectproperty rdf:id="hassamegradeas"> <rdf:type rdf:resource="&owl;transitiveproperty" /> <rdf:type rdf:resource="&owl;symmetricproperty" /> <rdfs:domain rdf:resource="#student" /> <rdfs:range rdf:resource="#student" /> -32-

39 </owl:objectproperty> Λογικοί συνδυασµοί κλάσεων Στην OWL είναι δυνατός ο ορισµός κλάσεων χρησιµοποιώντας λογικούς τελεστές συνόλων, όπως union, intersection και complement. Για παράδειγµα, µπορούµε να πούµε ότι οι κλάσεις courses και staff members είναι ξένες ως εξής: <owl:class rdf:about="#course"> <rdfs:subclassof> <owl:restriction> <owl:complementof rdf:resource="#staffmember"/> </owl:restriction> </rdfs:subclassof> </owl:class> Ο πιο πάνω ορισµός δηλώνει ότι κάθε course είναι αντικείµενο µιας κλάσης η οποία είναι συµπληρωµατική της staff members, δηλαδή δεν µπορεί ένα course να είναι και staff member. Αυτή η κατάσταση µπορεί να µοντελοποιηθεί επίσης χρησιµοποιώντας το στοιχείο owl:disjointwith. Η ένωση κλάσεων δηλώνεται µε το στοιχείο owl:unionof: <owl:class rdf:id="peopleatuni"> <owl:unionof rdf:parsetype="collection"> <owl:class rdf:about="#staffmember"/> <owl:class rdf:about="#student"/> </owl:unionof> </owl:class> Το στοιχείο rdf:parsetype είναι µια συντόµευση για τη σύνταξη της δηµιουργίας λίστας µε τα στοιχεία rdf:first και rdf:rest. Τέτοιες λίστες απαιτούνται διότι τα εγγενή containers της RDF έχουν έναν σοβαρό περιορισµό: δεν υπάρχει τρόπος για το κλείσιµο µιας λίστας, δηλαδή δεν µπορούµε να πούµε ότι αυτά είναι µόνο τα στοιχεία της λίστας. -33-

40 Το παραπάνω παράδειγµα δεν εννοεί ότι η καινούργια κλάση είναι υποκλάση της ένωσης αλλά ότι η καινούργια κλάση είναι ισοδύναµη µε την ένωση των κλάσεων. Με άλλα λόγια ορίζουµε ισοδυναµία κλάσεων. Η τοµή κλάσεων ορίζεται µε τη χρήση του στοιχείου owl:intersectionof: <owl:class rdf:id="facultyincs"> <owl:intersectionof rdf:parsetype="owl:collection"> <owl:class rdf:about="#faculty"/> <Restriction> <owl:onproperty rdf:resource="#belongsto"/> <owl:hasvalue rdf:resource="#csdepartment"/> </Restriction> </owl:intersectionof> </owl:class> Αξίζει να παρατηρηθεί ότι δηλώσαµε µια κλάση η οποία αναφέρεται στην τοµή δύο κλάσεων από τις οποίες η µία έχει ορισθεί ανώνυµα: η κλάση όλων των αντικειµένων που ανήκουν στο CSDepartment Απαρίθµηση αντικειµένων Η απαρίθµηση αντικειµένων δηλώνεται µε το στοιχείο owl:oneof και χρησιµοποιείται για τη δήλωση µιας κλάσης µε την απαρίθµηση όλων των αντικειµένων της: <owl:oneof rdf:parsetype="collection"> <owl:thing rdf:about="#monday"/> <owl:thing rdf:about="#tuesday"/> <owl:thing rdf:about="#wednesday"/> <owl:thing rdf:about="#thursday"/> <owl:thing rdf:about="#friday"/> <owl:thing rdf:about="#saturday"/> <owl:thing rdf:about="#sunday"/> </owl:oneof> -34-

41 Αντικείµενα Τα αντικείµενα στην OWL δηλώνονται όπως ακριβώς και στην RDF. Για παράδειγµα: <rdf:description rdf:id="949352"> <rdf:type rdf:resource="#academicstaffmember"/> </rdf:description> ή ισοδύναµα: <academicstaffmember rdf:id="949352"/> Αντίθετα µε ότι συµβαίνει στα συστήµατα βάσεων δεδοµένων, η OWL δεν ακολουθεί την υπόθεση των µοναδικών ονοµάτων (unique names assumption). Έτσι, αν και δύο αντικείµενα µπορεί να έχουν διαφορετικό όνοµα, δε σηµαίνει ότι και στην πραγµατικότητα αναφέρονται σε διαφορετικά αντικείµενα. Για παράδειγµα, αν δηλώσουµε ότι κάθε course διδάσκεται από έναν το πολύ staff member: <owl:objectproperty rdf:id="istaughtby"> <rdf:type rdf:resource="&owl;functionalproperty" /> </owl:objectproperty> και στη συνέχεια δηλώσουµε ότι ένα συγκεκριµένο µάθηµα διδάσκεται από δύο staff members: <course rdf:about="cit1111"> <istaughtby rdf:resource="949318"> <istaughtby rdf:resource="949352"> </course> αυτό δεν οδηγεί έναν OWL reasoner να βγάλει µήνυµα σφάλµατος. Οι περισσότεροι reasoners, σε αυτήν την περίπτωση, εξάγουν το συµπέρασµα ότι τα αντικείµενα "949318" και "949352" είναι ισοδύναµα. Επίσης, για να σιγουρευτούµε ότι δύο αντικείµενα δεν µπορεί να είναι ισοδύναµα, µπορούµε να ορίσουµε σαφώς την ανοµοιότητά τους: <lecturer rdf:about="949318"> <owl:differentfrom rdf:resource="949352"> -35-

42 </lecturer> Επειδή τέτοιοι ορισµοί ανοµοιότητας αντικειµένων συνήθως υπάρχουν πολλοί, η OWL προσφέρει µία συντόµευση στον ορισµό τους χρησιµοποιώντας την έννοια της λίστας: <owl:alldifferent> <owl:distinctmembers rdf:parsetype="collection"> <lecturer rdf:about="949318"> <lecturer rdf:about="949352"> <lecturer rdf:about="949111"> </owl:distinctmembers> </owl:alldifferent> -36-

43 4 Συνδυασµός Οντολογιών OWL και Κανόνων CLIPS Οι υπηρεσίες που προσφέρει ο Σηµασιολογικός Ιστός βασίζονται στην επεξεργασία εννοιών και όχι απλών δεδοµένων όπως συµβαίνει στο σηµερινό ιαδίκτυο. Στο προηγούµενο κεφάλαιο είδαµε ότι µια οντολογία είναι µια περιγραφή ενός πεδίου γνώσης, δηλαδή αναπαριστά κάποιες έννοιες και τις σχέσεις που υπάρχουν µεταξύ τους. Θα µπορούσαµε να επισυνάψουµε αυτές τις έννοιες σε κανόνες CLIPS έτσι ώστε να ξέρουµε την σηµασία του κάθε κανόνα και σε ποιο πεδίο γνώσης αναφέρεται. Στην αρχή του κεφαλαίου αυτού θα δούµε γιατί πρέπει να γίνει αυτή η επισύναψη ή αλλιώς τον σκοπό του συνδυασµού οντολογιών µε κανόνες CLIPS. Στη συνέχεια επεξηγείται πώς µπορεί να γίνει αυτός ο συνδυασµός και τέλος που µπορεί να εφαρµοστεί. 4.1 Ο σκοπός Οι σηµερινές µηχανές αναζήτησης έχουν ένα µειονέκτηµα: η αναζήτηση γίνεται µε βάση κάποιων λέξεων-κλειδιών. Αυτό αποτελεί µειονέκτηµα διότι κατά την αναζήτηση δεν λαµβάνεται υπόψη η σηµασία των κανόνων, δηλαδή σε ποιες έννοιες αναφέρονται οι κανόνες. Έτσι, σε µία µεγάλη βάση δεδοµένων, για να γίνει αναζήτηση κάποιου κανόνα θα πρέπει να είναι γνωστά τα ονόµατα των κανόνων ή των µεταβλητών τους και µε βάση αυτών των ονοµάτων να επιστραφούν κανόνες που τα περιέχουν. Η αναζήτηση θα µπορούσε να επεκταθεί και στα σχόλια, αλλά το µειονέκτηµα παραµένει. Για να α- ντιµετωπιστεί αυτό το πρόβληµα και η αναζήτηση να γίνεται σηµασιολογικά, θα µπορούσαν να συσχετιστούν οι κανόνες µε οντολογίες και βάσει των οντολογιών και των εννοιών που περιέχουν να πραγµατοποιείται σηµασιολογική αναζήτηση στις βάσεις δεδοµένων µε κανόνες. Με άλλα λόγια, ο χρήστης θα επιλέγει τις κλάσεις που τον ενδιαφέρουν και τα αποτελέσµατα της αναζήτησης θα αποτελούνται από κανόνες σχετικούς ως προς αυτές τις κλάσεις. -37-

44 4.2 Θεωρητική περιγραφή της ιδέας Στο κεφάλαιο 2 είδαµε ότι το σώµα ενός κανόνα CLIPS αποτελείται από δύο µέρη, τις συνθήκες και τις ενέργειες. Επίσης, στο κεφάλαιο 3 είδαµε ότι µια οντολογία OWL αποτελείται από κλάσεις και η κάθε κλάση αντιστοιχεί σε µια αφηρηµένη έννοια. Η ι- δέα, η οποία υλοποιήθηκε σε αυτή την εργασία, είναι η σηµασιολογική περιγραφή των κανόνων CLIPS µε κλάσεις οντολογιών OWL µέσω σύνδεσης των συνθηκών των κανόνων µε τις κλάσεις µιας ή περισσότερων οντολογιών (στο κεφάλαιο 6 αναφέρεται ότι η σύνδεση των κλάσεων µπορεί να γίνει, επίσης, και µε τις ενέργειες ενός κανόνα ή µε ολόκληρο το σώµα του κανόνα, έτσι ώστε να έχουµε καλύτερα αποτελέσµατα στην α- ναζήτηση). Οι συνδέσεις αυτές, ή καλύτερα οι συσχετίσεις, θα αποθηκεύονται σε µια βάση δεδοµένων για να είναι άµεσα προσβάσιµες όταν γίνεται µία αναζήτηση. Με σκοπό την καλύτερη κατανόηση της σύνδεσης των κανόνων και των οντολογιών, ακολουθεί ένα µικρό παράδειγµα όπου φαίνεται σχηµατικά (εικόνες) πως ακριβώς γίνεται η σύνδεση αυτή. Εικόνα 1: Ένας κανόνας και µία οντολογία Στην Εικόνα 1 βλέπουµε έναν κανόνα CLIPS µε όνοµα car-has-engine, δύο συνθήκες, τις (car?model) και (engine?type) και µία ενέργεια, την (assert (?modelhas?engine)). Στην ουσία αυτός ο κανόνας µέσω των δύο µεταβλητών?model και?type παίρνει ως δεδοµένα το µοντέλο ενός αυτοκινήτου και το είδος του κινητήρα του και εισάγει στην λίστα γεγονότων ένα γεγονός που λέει ότι το µοντέλο?model έχει τον κινητήρα?type. Στο δεξιό µέρος της εικόνας υπάρχει µία οντολογία που περιέχει τις κλάσεις vehicle, car, morotcycle και parts. Φαίνονται, επίσης, και οι σχέσεις κληρονοµικό- -38-

45 τητας που έχουν οι κλάσεις αυτές, δηλαδή, οι κλάσεις car και motorcycle κληρονοµούν από την κλάση vehicle και η κλάση parts κληρονοµεί από την car. Εστω ότι θέλουµε να συνδέσουµε την συνθήκη (car?model) µε τις κλάσεις vehicle και car, µε την λογική ότι ένα αυτοκίνητο (car) και γενικότερα ένα όχηµα (vehicle) είναι κάποιο µοντέλο (model). Επίσης, έστω ότι θέλουµε να συνδέσουµε και την συνθήκη (engine?type) µε την κλάση parts διότι ο κινητήρας είναι ένα από τα συστατικά (parts) ενός αυτοκινήτου. Στην Εικόνα 2 απεικονίζονται αυτές οι συνδέσεις: Εικόνα 2: Σύνδεση κανόνα µε οντολογία Να σηµειωθεί ότι µία κλάση της οντολογίας µπορεί να συνδεθεί µε δύο συνθήκες του ίδιου κανόνα (για παράδειγµα, η κλάση car να συνδέεται µε τις συνθήκες (car?model) και (engine?type)). Έτσι, ο κανόνας car-has-engine περιγράφεται σηµασιολογικά από τις κλάσεις της οντολογίας µε αποτέλεσµα, όταν γίνει αναζήτηση κανόνων µε βάση κάποια από αυτές τις τρεις κλάσεις, να εµφανίζεται ο κανόνας αυτός στα αποτελέσµατα της αναζήτησης. Τα αποτελέσµατα στις κλασικές µηχανές αναζήτησης δεν εµφανίζονται µε τυχαίο τρόπο, αλλά ταξινοµούνται µε βάση κάποιο κριτήριο (π.χ. ηµεροµηνία, σχετικότητα, βαθµολογία χρηστών κ.τ.λ.). Τα αποτελέσµατα βαθµολογούνται µε βάση το κριτήριο που έχει επιλεχθεί και εµφανίζονται πρώτα αυτά που έχουν την µεγαλύτερη βαθµολογία. Στη σηµασιολογική αναζήτηση κανόνων, οι κανόνες βαθµολογούνται µε βάση την σχετικότητά τους ως προς τις κλάσεις που έχει δώσει ο χρήστης. Αρχικά ο κάθε κανόνας έχει µηδενική βαθµολογία, η οποία αυξάνεται κατά την διαδικασία της αναζήτησης στις εξής περιπτώσεις: -39-

46 Η βαθµολογία ενός κανόνα αυξάνεται για κάθε σύνδεση που έχει µια συνθήκη του µε κάποια από τις κλάσεις του χρήστη ή ισοδύναµές τους. Η σύνδεση µιας συνθήκης µε ισοδύναµη κλάση µιας κλάσης του χρήστη έχει την ίδια βαρύτητα µε την σύνδεση µε µια κλάση που έχει δώσει ο χρήστης. Για παράδειγµα, αν µια συνθήκη ενός κανόνα Α συνδέεται µε µια κλάση του χρήστη ή µια ισοδύναµή της και η συνθήκη ενός κανόνα Β συνδέεται µε δύο κλάσεις του χρήστη ή ισοδύναµές τους, τότε µεγαλύτερη βαθµολογία θα πάρει ο κανόνας Β. Η βαθµολογία ενός κανόνα αυξάνεται όταν µια κλάση του χρήστη ή µια ισοδύναµή της συνδέεται µε πολλές από τις συνθήκες του κανόνα. Για παράδειγµα, αν µια κλάση που έχει δώσει ο χρήστης ή µια ισοδύναµή της συνδέεται µε µια συνθήκη ενός κανόνα Α και µε δύο συνθήκες ενός κανόνα Β, τότε ο κανόνας Β θα πάρει µεγαλύτερη βαθµολογία. Η βαθµολογία ενός κανόνα αυξάνεται για κάθε σύνδεση που έχει µια συνθήκη του µε κάποια από τις υποκλάσεις µιας κλάσης του χρήστη. Για παράδειγµα, αν µια συνθήκη ενός κανόνα Α συνδέεται µε µια υποκλάση µιας κλάσης του χρήστη και η συνθήκη ενός κανόνα Β συνδέεται µε δύο υποκλάσεις της ίδιας ή διαφορετικών κλάσεων του χρήστη, τότε µεγαλύτερη βαθµολογία θα πάρει ο κανόνας Β. Η βαθµολογία ενός κανόνα αυξάνεται όταν µια υποκλάση µιας κλάσης του χρήστη συνδέεται µε πολλές από τις συνθήκες του κανόνα. Για παράδειγµα, αν µια υποκλάση µιας κλάσης που έχει δώσει ο χρήστης συνδέεται µε µια συνθήκη ε- νός κανόνα Α και µε δύο συνθήκες ενός κανόνα Β, τότε ο κανόνας Β θα πάρει µεγαλύτερη βαθµολογία. Από τα παραπάνω φαίνεται ότι η βαθµολογία ενός κανόνα εξαρτάται από τις κλάσεις και τις υποκλάσεις που τον περιγράφουν. Να σηµειωθεί ότι ένας κανόνας παίρνει µεγαλύτερη βαθµολογία από µια σύνδεση µε µια κλάση που έχει δώσει ο χρήστης ή µε µια ισοδύναµη αυτής παρά από µια σύνδεση µε µια υποκλάση µιας κλάσης του χρήστη. Για παράδειγµα, αν µια συνθήκη ενός κανόνα Α συνδέεται µε µια κλάση του χρήστη και µια συνθήκη ενός κανόνα Β συνδέεται µε µια υποκλάση µιας κλάσης του χρήστη, τότε µεγαλύτερη βαθµολογία θα πάρει ο κανόνας Α. Παρακάτω ακολουθούν παραδείγµατα µε σκοπό να γίνουν πιο κατανοητά αυτά που ειπώθηκαν µέχρι τώρα. Για να είναι πιο απλά τα παραδείγµατα, υποθέτουµε ότι έχουµε -40-

47 µόνο µια οντολογία και η σηµασιολογική αναζήτηση γίνεται µε βάση τις κλάσεις της οντολογίας αυτής σε µια βάση δεδοµένων που περιέχει µόνο δυο κανόνες. Εικόνα 3: υο κανόνες και µια οντολογία Στην Εικόνα 3 βλέπουµε την οντολογία του προηγούµενου παραδείγµατος και δυο κανόνες: ο κανόνας train µε τις δυο συνθήκες (vehicle train) και (max-speed?speed) και τον κανόνα car µε τις δυο συνθήκες (car?model) και (color?color). Η πιο απλή περίπτωση σύνδεσης της οντολογίας µε τους κανόνες φαίνεται στην Εικόνα 4 όπου η κλάση vehicle συνδέεται µόνο µε έναν από τους δυο κανόνες, τον κανόνα train, µε αποτέλεσµα όταν γίνει αναζήτηση µε είσοδο την συγκεκριµένη κλάση, θα επιστραφεί µόνο ο κανόνας αυτός. Εικόνα 4: Σύνδεση της οντολογίας µε έναν κανόνα και αναζήτηση µε την κλάση vehicle -41-

48 Στην Εικόνα 5 η κλάση vehicle συνδέεται µε µια συνθήκη του κάθε κανόνα. Αυτή τη φορά η αναζήτηση µε βάση αυτή την κλάση θα έχει ως αποτέλεσµα οι δυο κανόνες να έχουν την ίδια βαθµολογία. Σε αυτή την περίπτωση η σειρά µε την οποία θα επιστραφούν οι κανόνες είναι τυχαία. Εικόνα 5: Σύνδεση της οντολογίας µε τους κανόνες και αναζήτηση µε την κλάση vehicle Επόµενη περίπτωση είναι ο ένας κανόνας να συνδέεται µε µια κλάση που έχει δώσει ο χρήστης προς αναζήτηση και ο δεύτερος κανόνας να συνδέεται µε µια υποκλάση αυτής (Εικόνα 6). Η κλάση vehicle συνδέεται µε την συνθήκη (vehicle train) του κανόνα train και η κλάση car συνδέεται µε την συνθήκη (car?model) του κανόνα car. Αν ο χρήστης αναζητήσει κανόνες µε την κλάση vehicle όπως πριν, θα επιστραφεί πρώτος ο κανόνας train και δεύτερος ο κανόνας car, διότι η κλάση car της οντολογίας είναι υποκλάση της κλάσης που έχει δώσει ως είσοδο στην αναζήτηση ο χρήστης και δίνει µικρότερη βαθµολογία στον κανόνα µε τον οποίο συνδέεται. Αν όµως η αναζήτηση γίνει µε βάση την κλάση car τότε θα επιστραφεί πρώτα ο κανόνας car, αφού σε αυτή την περίπτωση θα πάρει µεγάλη βαθµολογία, ενώ ο κανόνας train είτε δεν θα επιστραφεί είτε θα επιστραφεί δεύτερος, ανάλογα µε το αν το σύστηµα αναζητεί και τις υπερκλάσεις (είναι µια από τις επεκτάσεις που προτείνονται στο κεφάλαιο 6). -42-

49 Εικόνα 6: Σύνδεση της οντολογίας και µε τους δυο κανόνες, ο πρώτος µε µια κλάση και ο δεύτερος µε υποκλάση αυτής, και αναζήτηση µε την κλάση vehicle Έστω, χάριν παραδείγµατος, ότι ο κανόνας car έχει και µια τρίτη συνθήκη, την (vehicle car). Αυτό δεν επηρεάζει την βαθµολογία του κανόνα σε µια αναζήτηση αφού αυτή δεν εξαρτάται από τον αριθµό των συνθηκών που έχουν οι κανόνες, αλλά από τον αριθµό των συνδέσεων που έχουν οι συνθήκες µε τις κλάσεις της οντολογίας. Η Εικόνα 7 παρουσιάζει µια περίπτωση όπου η ίδια κλάση συνδέεται µε µια συνθήκη του κανόνα train και µε δυο συνθήκες του κανόνα car. Μια αναζήτηση µε την κλάση vehicle θα επιστρέψει πρώτο τον κανόνα car και δεύτερο τον κανόνα train, διότι η βαθµολογία δεν επηρεάζεται µόνο από τον αριθµό των κλάσεων που περιγράφουν έναν κανόνα, αλλά εξαρτάται επίσης και από τον αριθµό των συνθηκών του ίδιου κανόνα µε τις οποίες έχει συνδεθεί µια κλάση. Η Εικόνα 8 αποτελεί µια µικρή παραλλαγή της Εικόνας 7. Η διαφορά είναι η σύνδεση της συνθήκης (car?model) µε την κλάση car και όχι µε την κλάση vehicle. Το αποτέλεσµα, όµως, της αναζήτησης µε την κλάση vehicle δεν αλλάζει αφού οι δυο κανόνες παίρνουν ίδιους βαθµούς λόγο της σύνδεσής τους µε αυτή την κλάση και επιπλέον ο κανόνας car παίρνει βαθµούς και από την σύνδεσή του µε την κλάση car επειδή είναι υποκλάση της vehicle. -43-

50 Εικόνα 7: Σύνδεση της ίδιας κλάσης µε διαφορετικό αριθµό συνθηκών σε κάθε κανόνα και αναζήτηση µε την κλάση vehicle Εικόνα 8: Σύνδεση µιας κλάσης και µε τους δυο κανόνες και της υποκλάσης της µε ένα κανόνα και αναζήτηση µε την κλάση vehicle Για το τελευταίο παράδειγµα (Εικόνα 9) υποθέτουµε ότι οι κλάσεις car και motorcycle είναι ισοδύναµες. Η κλάση motorcycle συνδέεται µε τον κανόνα train και η κλάση car µε τον κανόνα car. Αυτό σηµαίνει ότι αν γίνει αναζήτηση είτε µε την motorcycle είτε µε την car είτε και µε τις δύο, το αποτέλεσµα θα είναι το ίδιο, δηλαδή θα επιστραφούν και οι δυο κανόνες µε τυχαία σειρά λόγω ίσης βαθµολογίας διότι οι -44-

51 Εικόνα 9: υο ισοδύναµες κλάσεις και η κάθε µια συνδέεται µε έναν κανόνα κλάσεις είναι ισοδύναµες. Για παράδειγµα, σε µια αναζήτηση µε την κλάση car το σύστηµα ελέγχει και για την κλάση motorcycle και οι κανόνες που συνδέονται µε την αυτήν παίρνουν την ίδια βαθµολογία µε τους κανόνες που συνδέονται µε την car. 4.3 Εφαρµογές Η σηµασιολογική περιγραφή κανόνων µε οντολογίες µπορεί να βοηθήσει σηµαντικά τους προγραµµατιστές. Η ιδέα είναι να υπάρχουν µεγάλες βάσεις δεδοµένων µε κανόνες στις οποίες ένας προγραµµατιστής θα µπορεί να κάνει σηµασιολογική αναζήτηση και να βρίσκει κανόνες που υπάρχουν ήδη µε αποτέλεσµα να εξοικονοµεί χρόνο και κόπο και να χρησιµοποιεί κανόνες που έχουν ήδη ελεγχθεί για την σωστή λειτουργία τους. Στην περίπτωση όπου ο προγραµµατιστής δεν βρει τους κανόνες που χρειάζεται και αναγκαστεί να τους δηµιουργήσει ο ίδιος, τότε µπορεί να τους αποθηκεύσει στην βάση δεδοµένων, αφού βέβαια ελεγχθούν ότι λειτουργούν σωστά. Έτσι οι βάσεις αυτές θα ανανεώνονται και θα εµπλουτίζονται συνεχώς µε νέους κανόνες. Μια άλλη εφαρµογή της σηµασιολογικής περιγραφής και αναζήτησης κανόνων είναι µέσα στις επιχειρήσεις. Υπάρχουν κανόνες που είτε περιγράφουν την δοµή µιας ε- πιχείρησης ή ενός οργανισµού είτε ελέγχουν και επηρεάζουν την συµπεριφορά της επιχείρησης ή του οργανισµού. Οι κανόνες αυτοί ονοµάζονται επιχειρησιακοί κανόνες (business rules) [2] και το σύστηµα που τους διαχειρίζεται Σύστηµα ιαχείρισης Επιχειρησιακών Κανόνων (Business Rule Management System ή BRMS) [1]. Αυτά τα συστή- µατα χρησιµοποιούνται για να παρθούν κάποιες αποφάσεις σχετικά µε την λειτουργία -45-

52 της επιχείρησης ή την µελλοντική συµπεριφορά της. Οι αποφάσεις αυτές είναι πολύ δύσκολο ή αδύνατο να τις πάρουν άνθρωποι λόγω της πολυπλοκότητας τους και τον τεράστιο όγκο των δεδοµένων που πρέπει να αναλυθούν και γι αυτό τα συστήµατα αυτά είναι ιδιαίτερα σηµαντικά. Υπάρχουν περιπτώσεις όπου αλλάζει η δοµή της επιχείρησης ή αλλάζουν ο τρόπος και τα κριτήρια µε τα οποία παίρνονται αποφάσεις. Οι αλλαγές αυτές συνεπάγονται αλλαγή των κανόνων ή αντικατάστασή τους µε νέους. Σε αυτό το σηµείο η σηµασιολογική αναζήτηση µπορεί να αποδειχθεί ιδιαίτερα χρήσιµη στο να εντοπιστούν οι κανόνες που πρέπει να αλλαχθούν ή να διορθωθούν. Τέλος, η συντήρηση του συστήµατος απαιτεί τον εντοπισµό κάποιων κανόνων των οποίων πρέπει να ελεγχθεί η λειτουργία τους και η σηµασιολογική περιγραφή βοηθάει στην εύρεση των κανόνων που είναι υπεύθυνη για µια συγκεκριµένη λειτουργία. -46-

53 5 Υλοποίηση Σε αυτό το κεφάλαιο αναφέρονται τα εργαλεία που χρησιµοποιήθηκαν για την ανάπτυξη της εφαρµογής SRR (Semantic Rule Repository) και στην συνέχεια περιγράφεται η ίδια η εφαρµογή µε την βοήθεια screenshots. 5.1 Εργαλεία Τα εργαλεία που χρησιµοποιήθηκαν για την ανάπτυξη της εφαρµογής είναι η γλώσσα προγραµµατισµού Java [4], το περιβάλλον ανάπτυξης εφαρµογών Netbeans [7] και το πλαίσιο διαχείρισης οντολογιών Jena [5] Java Η Java είναι µία αντικειµενοστραφής γλώσσα προγραµµατισµού που σχεδιάστηκε από την εταιρεία πληροφορικής Sun Microsystems [12]. Ένα από τα βασικά πλεονεκτήµατα της Java έναντι των περισσότερων άλλων γλωσσών είναι η ανεξαρτησία του λειτουργικού συστήµατος και πλατφόρµας. Τα προγράµµατα που είναι γραµµένα σε Java εκτελούνται σε Windows, Linux, Unix και Macintosh χωρίς να χρειαστεί να ξαναγίνει µεταγλώττιση (compiling) ή να αλλάξει ο πηγαίος κώδικας για κάθε διαφορετικό λειτουργικό σύστηµα. Αυτό επιτυγχάνεται µέσω της εικονικής µηχανής της Java (Java Virtual Machine ή JVM) η οποία εξαρτάται από την πλατφόρµα, δηλαδή για κάθε είδος λειτουργικού συστήµατος και αρχιτεκτονικής επεξεργαστή υπάρχει διαφορετική έκδοσή της. Οτιδήποτε θέλει να κάνει ο προγραµµατιστής (ή ο χρήστης) γίνεται µέσω της εικονικής µηχανής. Αυτό βοηθάει στο να υπάρχει µεγαλύτερη ασφάλεια στο σύστηµα γιατί η εικονική µηχανή είναι υπεύθυνη για την επικοινωνία χρήστη - υπολογιστή. Ο προγραµµατιστής δεν µπορεί να γράψει κώδικα ο οποίος θα έχει καταστροφικά αποτελέσµατα για τον υπολογιστή γιατί η εικονική µηχανή θα τον ανιχνεύσει και δε θα επιτρέψει να εκτελεστεί. Από την άλλη µεριά ούτε ο χρήστης µπορεί να εκτελέσει κακόβουλο κώδικα. Αυτό είναι ιδιαίτερα χρήσιµο για µεγάλα κατανεµηµένα συστήµατα όπου πολλοί χρήστες χρησιµοποιούν το ίδιο πρόγραµµα συγχρόνως. Όµως, παρόλο που η εικονική µηχανή προσφέρει όλα αυτά τα πλεονεκτήµατα, η Java είναι πιο αργή σε σχέση µε άλλες γλώσσες προγραµµατισµού υψηλού επιπέδου. -47-

54 5.1.2 Netbeans Το Netbeans είναι ένα ανοικτού κώδικα ολοκληρωµένο περιβάλλον ανάπτυξης που υ- ποστηρίζεται από την Sun Microsystems [12]. Έχει αναπτυχθεί σε Java και παρέχει δυνατότητες προγραµµατισµού σε πολλές γλώσσες. Περιέχει, επίσης, εξελιγµένα εργαλεία ανάπτυξης γραφικού περιβάλλοντος (GUI) σε Java µε γραφικό τρόπο (Εικόνα 10). Εικόνα 10: Ανάπτυξη γραφικού περιβάλλοντος στο Netbeans Jena Το Jena είναι ένα πλαίσιο ανοικτού κώδικα για την ανάπτυξη εφαρµογών που τρέχουν στον Σηµασιολογικό Ιστό. Προσφέρει προγραµµατιστικές δυνατότητες για RDF [9], RDFS [10], OWL [16], SPARQL[11] και περιέχει µηχανή εξαγωγής συµπερασµάτων βασισµένη σε κανόνες. Συγκεκριµένα περιλαµβάνει: RDF API υνατότητες ανάγνωσης και εγγραφής RDF σε RDF/XML, N3 [8] και N- Triples [6] OWL API Μηχανή επεξεργασίας ερωτηµάτων SPARQL -48-

55 Στην εργασία χρησιµοποιήθηκε το OWL API για την ανάγνωση αρχείων οντολογιών OWL και την εξαγωγή των ονοµάτων των κλάσεων καθώς και των σχέσεων που υπάρχουν ανάµεσα στις κλάσεις αυτές (reasoning). 5.2 Περιγραφή της εφαρµογής Η εφαρµογή SRR (Semantic Rule Repository) επιτρέπει την επισύναψη κλάσεων µιας OWL οντολογίας σε κανόνες CLIPS, δηλαδή την σηµασιολογική περιγραφή κανόνων. Οι κλάσεις της οντολογίας διαβάζονται από αρχείο τύπου.owl και οι κανόνες από αρχείο τύπου.clp που περιέχει µόνο κανόνες CLIPS. Παρακάτω παρουσιάζεται το SRR µε την βοήθεια εικόνων που δείχνουν στιγµιότυπα της εφαρµογής. Στην Εικόνα 11 φαίνεται το παράθυρο που βλέπει ο χρήστης όταν τρέξει την εφαρ- µογή. Στην περιοχή 1 εµφανίζεται µια λίστα µε τα ονόµατα των κανόνων, στην περιοχή 2 εµφανίζεται λίστα µε τις συνθήκες του κανόνα που έχει επιλέξει ο χρήστης, στην περιοχή 3 εµφανίζεται λίστα µε τις κλάσεις που συνδέονται µε την συνθήκη που επέλεξε Εικόνα 11: Το κεντρικό παράθυρο του SRR -49-

56 ο χρήστης. Αν έχει επιλέξει έναν κανόνα αλλά καµία συνθήκη, τότε εµφανίζονται οι κλάσεις που συνδέονται µε τις συνθήκες που περιέχει ο συγκεκριµένος κανόνας. Στην περιοχή 4 εµφανίζονται οι κλάσεις της οντολογίας σε µορφή δένδρου όπου φαίνονται οι σχέσεις κληρονοµικότητας. Το µενού File (Εικόνα 12) έχει τρεις επιλογές: Open Clips File, Open Owl File και Exit. Με την πρώτη επιλογή ο χρήστης ανοίγει ένα αρχείο.clp µε κανόνες CLIPS και εµφανίζεται η λίστα µε τα ονόµατα των κανόνων. Με την δεύτερη ανοίγει ένα αρχείο.owl και εµφανίζεται το δένδρο µε τις κλάσεις της οντολογίας. Με την τρίτη επιλογή κλείνει η εφαρµογή. Εικόνα 12: Το µενού File Το µενού Tools (Εικόνα 13) έχει δυο επιλογές, την Find η οποία επιτρέπει την αναζήτηση κανόνων µε βάση τις κλάσεις της οντολογίας, και την Source Code µε την ο- ποία ο χρήστης µπορεί να δει το αρχείο.clp µε τους κανόνες CLIPS. Εικόνα 13: Το µενού Tools Η Εικόνα 14 δείχνει ένα στιγµιότυπο της εφαρµογής όπου έχει ανοιχτεί ένα αρχείο µε τέσσερις κανόνες, τους cd, tie, flowers και book. Με την επιλογή του κανόνα tie φαίνονται οι δυο συνθήκες του. Για να γίνει πιο κατανοητό το παράδειγµα στην συνέχεια, να σηµειωθεί ότι το όνοµα του κάθε κανόνα συµβολίζει ένα δώρο και οι συνθήκες του είναι οι προϋποθέσεις που πρέπει να ικανοποιεί κάποιο άτοµο για να του χαρίσουν το δώρο αυτό. Με το πάτηµα του κουµπιού Show selected rule εµφανίζεται ένα παράθυρο µε το σώµα του επιλεγµένου κανόνα (Εικόνα 15). Κατά την εκτέλεση της εφαρ- µογής το παράθυρο αυτό δεν χρειάζεται να είναι κλειστό για να χρησιµοποιηθούν οι υπόλοιπες λειτουργίες του προγράµµατος. Επίσης, όταν επιλέγεται άλλος κανόνας, το παράθυρο ανανεώνεται δείχνοντας το σώµα του νέου κανόνα. -50-

57 Εικόνα 14: Λίστα µε τους κανόνες Εικόνα 15: Παράθυρο µε το σώµα του επιλεγµένου κανόνα Αν ο χρήστης πατήσει την επιλογή Source Code στο µενού Tools εµφανίζεται ένα νέο παράθυρο (Εικόνα 16) µε τα περιεχόµενα του αρχείου.clp που ανοίχτηκε πριν, δηλαδή µε τα σώµατα όλων των κανόνων CLIPS της λίστας. Ανοίγοντας ένα αρχείο.owl µε την επιλογή Open Owl File στο µενού File εµφανίζεται ένα δένδρο µε τις κλάσεις της οντολογίας (Εικόνα 17). Στο δένδρο φαίνονται οι σχέσεις κληρονοµικότητας που υπάρχουν. Η συγκεκριµένη οντολογία ταξινοµεί τους -51-

58 Εικόνα 16: Παράθυρο µε το σώµα του επιλεγµένου κανόνα ανθρώπους βάσει φύλου και ηλικίας. Στο υψηλότερο επίπεδο της ιεραρχίας υπάρχουν οι κλάσεις Young_Person, Middle-aged_Person και Old_Person. Η πρώτη έχει ως υποκλάσεις τις Baby, Child και Teenager, η δεύτερη τις Man και Woman, ενώ η τρίτη δεν έχει υποκλάσεις. Στο τελευταίο επίπεδο της ιεραρχίας υπάρχουν δυο κλάσεις, οι Boy και Girl, οι οποίες είναι υποκλάσεις της Child. Ο χρήστης µπορεί να επισυνάψει µία ή περισσότερες κλάσεις σε µια συνθήκη ενός κανόνα µε το κουµπί Connect επιλέγοντας τις κλάσεις που επιθυµεί από το δένδρο (µπορεί να επιλέξει πολλές ταυτόχρονα) και µια συνθήκη. Να σηµειωθεί ότι δεν µπορεί να επισυνάψει την ίδια κλάση πάνω από µια φορά στην ίδια συνθήκη. Οι Εικόνες 18, 19 και 20 δείχνουν ένα παράδειγµα επισύναψης. Στην πρώτη συνθήκη του κανόνα cd -52-

59 Εικόνα 17: ένδρο µε τις κλάσεις της οντολογίας επισυνάπτονται οι κλάσεις Middle-aged_Person και Old_Person (Εικόνα 18). Στην δεύτερη συνθήκη επισυνάπτονται οι κλάσεις Young_Person και Middle-aged_Person. Επιλέγοντας κάποια από τις δυο συνθήκες εµφανίζονται οι αντίστοιχες κλάσεις µε τις οποίες συνδέεται. Αν ο χρήστης επιλέξει τον κανόνα (Εικόνα 20) τότε εµφανίζονται οι κλάσεις µε τις οποίες συνδέονται οι συνθήκες του. Αν δυο συνθήκες συνδέονται µε την ίδια κλάση (στο παράδειγµα η Middle-aged_Person), αυτή εµφανίζεται µόνο µια φορά. Εικόνα 18: Επισύναψη δυο κλάσεων στην πρώτη συνθήκη του κανόνα cd -53-

60 Εικόνα 19: Επισύναψη δυο κλάσεων στην δεύτερη συνθήκη του κανόνα cd Εικόνα 20: Επιλέγοντας τον κανόνα εµφανίζονται οι κλάσεις που είναι συνδεδεµένες µε τις συνθήκες του Με το κουµπί Disconnect ο χρήστης µπορεί να αποσυνδέσει µια ή περισσότερες κλάσεις από µια συνθήκη. Η αποσύνδεση γίνεται µόνο αν έχει επιλεγεί κάποια συνθήκη (Εικόνες 18 και 19) και όχι ο κανόνας (Εικόνα 20). Επιλέγοντας την λειτουργία Find από το µενού Tools ανοίγει ένα παράθυρο αναζήτησης (Εικόνα 22). Πάνω αριστερά στο παράθυρο υπάρχει το δένδρο µε τις κλάσεις της οντολογίας όπου ο χρήστης µπορεί να επιλέξει µια ή περισσότερες κλάσεις για να κάνει αναζήτηση. Η περιοχή που βρίσκεται πάνω δεξιά αποτελεί λίστα αναζήτησης και δείχνει τις κλάσεις µε τις οποίες γίνεται η αναζήτηση. Με το κουµπί Add προστίθενται οι επιλεγµένες κλάσεις από το δένδρο στην λίστα αναζήτησης, ενώ µε το Remove αφαιρούνται οι κλάσεις που έχει επιλέξει ο χρήστης από την λίστα. Με το κουµπί Clear α- φαιρούνται όλες οι κλάσεις από την λίστα αναζήτησης. Εικόνα 21: Επισύναψη της κλάσης Middle-aged_Person στην πρώτη συνθήκη του κανόνα tie -54-

61 Εικόνα 22: Παράθυρο αναζήτησης Έστω ότι συνδέεται η κλάση Middle-aged_Person µε την πρώτη συνθήκη του κανόνα tie. Βάσει αυτής της σύνδεσης και των συνδέσεων από τις Εικόνες 18, 19 και 20 γίνεται η αναζήτηση που φαίνεται στην Εικόνα 23. Έχει επιλεγεί µόνο η κλάση Middleaged_Person προς αναζήτηση. Με το κουµπί Search εµφανίζονται τα αποτελέσµατα της αναζήτησης στο κάτω µέρος του παραθύρου, τα οποία είναι ταξινοµηµένα µε βάση την βαθµολογία των κανόνων. Ο κάθε κανόνας παίρνει 2 βαθµούς για κάθε σύνδεση που έχει µια συνθήκη του µε κλάση που ανήκει στην λίστα αναζήτησης και 1 βαθµό για κάθε σύνδεση µε µια υποκλάση µιας κλάσης από την λίστα αναζήτησης. Στην συγκεκριµένο παράδειγµα, ο κανόνας cd έχει 4 βαθµούς διότι έχει δυο συνθήκες που συνδέονται µε την κλάση Middle-aged_Person, ενώ ο κανόνας tie έχει 2 βαθµούς διότι έχει µόνο µια συνθήκη που συνδέεται µε την Middle-aged_Person. Γι αυτό ο κανόνας cd είναι πρώτος και ο κανόνας tie δεύτερος. -55-

62 Εικόνα 23: Αναζήτηση µε την κλάση Middle-aged_Person Επιλέγοντας έναν από τους κανόνες που βρίσκονται στα αποτελέσµατα της αναζήτησης ανοίγει ένα παράθυρο που έχει ως τίτλο το όνοµα του κανόνα. Στο αριστερό µέρος του παραθύρου υπάρχουν µόνο οι συνθήκες του κανόνα που συνδέονται µε κάποια κλάση της λίστα αναζήτησης ή µε υποκλάση της, δηλαδή είναι οι συνθήκες που έχουν αποφέρει βαθµούς στον κανόνα, και όχι όλες οι συνθήκες του. Επιλέγοντας µια από αυτές τις συνθήκες, εµφανίζονται στο δεξιό µέρος του παραθύρου µόνο οι κλάσεις που ανήκουν στην λίστα αναζήτησης ή υποκλάσεις τους και συνδέονται µε την επιλεγ- µένη συνθήκη και όχι όλες οι κλάσεις που συνδέονται µε την συνθήκη αυτή. Αυτό φαίνεται στις Εικόνες 24 και 25. Η πρώτη δείχνει τις δυο συνθήκες του κανόνα cd που συνδέονται µε την κλάση Middle-aged_Person, δεν υπάρχουν όµως οι κλάσεις Old_Person και Young_Person µε τις οποίες συνδέονται οι δύο συνθήκες επειδή δεν -56-

63 ανήκουν στην λίστα αναζήτησης και ούτε είναι υποκλάσεις της Middle-aged_Person. Στην δεύτερη εικόνα φαίνεται µόνο η συνθήκη του κανόνα tie που συνδέεται µε την Middle-aged_Person. Εικόνα 24: Πληροφορίες αναζήτησης για τον κανόνα cd Εικόνα 25: Πληροφορίες αναζήτησης για τον κανόνα tie Έστω ότι διαγράφονται οι προηγούµενες επισυνάψεις και δηµιουργούνται τρεις νέες που αναπαριστούνται στις Εικόνες 26, 27 και 28, δηλαδή µια συνθήκη του κανόνα tie συνδέεται µε την κλάση Boy, µια συνθήκη του κανόνα flowers µε την κλάση Child και µια συνθήκη του κανόνα book µε την κλάση Young_Person. Από το δένδρο των κλάσεων µπορεί να δει κανείς ότι οι κλάση Boy είναι υποκλάση της Child και η Child υποκλάση της Young_person. -57-

64 Εικόνα 26: Επισύναψη στην συνθήκη του κανόνα tie Εικόνα 27: Επισύναψη στην συνθήκη του κανόνα flowers Εικόνα 28: Επισύναψη στην συνθήκη του κανόνα book Τα αποτελέσµατα της αναζήτησης µε την κλάση Child φαίνονται στην Εικόνα 29. Ο κανόνας flowers είναι πρώτος µε βαθµολογία 2 λόγω της σύνδεσής του µε την Child, ο κανόνας tie είναι δεύτερος µε βαθµολογία 1 λόγω της σύνδεσής του µε υποκλάση της Child, ενώ ο κανόνας book έχει βαθµολογία 0 και δεν εµφανίζεται διότι συνδέεται µε υπερκλάση της Child και η εφαρµογή δεν αναζητεί υπερκλάσεις (αποτελεί πιθανή επέκταση). Ένα τελευταίο παράδειγµα είναι η αναζήτηση µε παραπάνω από µια κλάση. Έστω ότι ισχύουν οι επισυνάψεις των Εικόνων 30, 31, 32 και 33. Η Εικόνα 34 απεικονίζει την αναζήτηση µε τρεις κλάσεις, τις Young_Person, Middle-aged_Person και Old_Person. Στα αποτελέσµατα, ο κανόνας book είναι πρώτος µε βαθµολογία 6 (σύνδεση και µε τις τρεις κλάσεις), ο κανόνας cd είναι δεύτερος µε βαθµολογία 4 (σύνδεση µε δυο από τις τρεις κλάσεις), ενώ οι κανόνες tie και flowers έχουν βαθµολογία 1 (σύνδεση µε µια από τις τρεις κλάσεις) και εµφανίζονται µε τυχαία σειρά. -58-

65 Εικόνα 29: Αναζήτηση µε την κλάση Child Εικόνα 30: Επισύναψη στην συνθήκη του κανόνα cd Εικόνα 31: Επισύναψη στην συνθήκη του κανόνα tie -59-

66 Εικόνα 32: Επισύναψη στην συνθήκη του κανόνα flowers Εικόνα 33: Επισύναψη στην συνθήκη του κανόνα book Εικόνα 34: Αναζήτηση µε τις κλάσεις Young_Person, Midlle-aged_Person και Old_Person -60-

O-DEVICE: Ένα Αντικειμενοστραφές Σύστημα Συμπερασμών για OWL Lite Οντολογίες

O-DEVICE: Ένα Αντικειμενοστραφές Σύστημα Συμπερασμών για OWL Lite Οντολογίες ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ O-DEVICE: Ένα Αντικειμενοστραφές Σύστημα Συμπερασμών για OWL Lite Οντολογίες Διπλωματική Εργασία του Γεώργιου Μεδίτσκου

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

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

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ Γλώσσα Οντολογιών Ιστού: OWL Ι. Χατζηλυγερούδης Γλώσσες Οντολογιών Ιστού RDF και RDFS έχουν περιορισμένη εκφραστικότητα Η RDF περιορίζεται σε δυαδικά κατηγορήματα

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

Π2 Το Σύστηµα Κανόνων CLIPS

Π2 Το Σύστηµα Κανόνων CLIPS ΠΑΡΑΡΤΗΜΑ 2 Π2 Το Σύστηµα Κανόνων CLIPS Το CLIPS (C Language Integrated Production System) είναι ένα περιβάλλον που προσφέρει δυνατότητες για προγραµµατισµό µε κανόνες, αντικείµενα και συναρτήσεις. Αναπτύχθηκε

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

Εισαγωγή στο κέλυφος ανάπτυξης έµπειρων συστηµάτων του CLIPS

Εισαγωγή στο κέλυφος ανάπτυξης έµπειρων συστηµάτων του CLIPS Εισαγωγή στο κέλυφος ανάπτυξης έµπειρων συστηµάτων του CLIPS Το περιβάλλον του CLIPS Πανεπιστήµιο Πατρών 2 Τι είναι το CLIPS To CLIPS µπορεί να θεωρηθεί σαν ένα γενικό εργαλείο ανάπτυξης συστηµάτων λογισµικού.

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Η Αντικειμενοστραφής Γλώσσα Προγραμματισμού COOL του CLIPS

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Η Αντικειμενοστραφής Γλώσσα Προγραμματισμού COOL του CLIPS ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Η Αντικειμενοστραφής Γλώσσα Προγραμματισμού COOL του CLIPS Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης

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

Αναπαράςταςθ Γνϊςθσ ςτον Παγκόςμιο Ιςτό Ενότθτα 4: OWL Γλϊςςα Οντολογιϊν Ιςτοφ

Αναπαράςταςθ Γνϊςθσ ςτον Παγκόςμιο Ιςτό Ενότθτα 4: OWL Γλϊςςα Οντολογιϊν Ιςτοφ Αναπαράςταςθ Γνϊςθσ ςτον Παγκόςμιο Ιςτό Ενότθτα 4: OWL Γλϊςςα Οντολογιϊν Ιςτοφ Ιωάννθσ Χατηθλυγεροφδθσ Πολυτεχνικι χολι Σμιμα Μθχ/κϊν Η/Τπολογιςτϊν & Πλθροφορικισ Περιεχόμενα ενότθτασ 1. Ειςαγωγι 2. φνταξθ

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

ηµιουργία µιας ετικέτας (tab widget) στο εργαλείο ανάπτυξης οντολογιών Protégé

ηµιουργία µιας ετικέτας (tab widget) στο εργαλείο ανάπτυξης οντολογιών Protégé ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ηµιουργία µιας ετικέτας (tab widget) στο εργαλείο ανάπτυξης οντολογιών Protégé ιπλωµατική Εργασία του Χατζηαγαπίου Στυλιανού

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Το Σύστημα Κανόνων CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Το Σύστημα Κανόνων CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Το Σύστημα Κανόνων CLIPS Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Διάγνωσης Βλάβης βασισμένης σε Μοντέλο. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Διάγνωσης Βλάβης βασισμένης σε Μοντέλο Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης Το παρόν

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

CLIPS Σύντομη Εισαγωγή - Περιγραφή του Μηχανισμού Εκτέλεσης

CLIPS Σύντομη Εισαγωγή - Περιγραφή του Μηχανισμού Εκτέλεσης CLIPS Σύντομη Εισαγωγή - Περιγραφή του Μηχανισμού Εκτέλεσης Ιστορία της CLIPS CLIPS = C Language Integrated Production System Αναπτύχθηκε στη NASA τη δεκαετία του 1980 Η γλώσσα υλοποίησης είναι η C Yποστηρίζει

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

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

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

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων 1 Είσοδος/Έξοδος Είσοδος/Έξοδος ανάλογα με τον τύπο του προγράμματος Πρόγραμμα

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

Rule Based systems Συστήματα Βασισμένα σε κανόνες

Rule Based systems Συστήματα Βασισμένα σε κανόνες Rule Based systems Συστήματα Βασισμένα σε κανόνες Τμήματα ενός έμπειρου συστήματος βασισμένου σε κανόνες Βάση Γνώσης (Κανόνες) Μηχανισμός Εξαγωγής Συμπερασμάτων Χώρος Εργασίας (Γεγονότα) Μηχανισμός Επεξήγησης

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

Εισαγωγή στο RDF. Το Resource Description Framework (RDF) Σταύρος Πολυβίου

Εισαγωγή στο RDF. Το Resource Description Framework (RDF) Σταύρος Πολυβίου Εισαγωγή στο RDF Σταύρος Πολυβίου Το Resource Description Framework (RDF) RDF: µία γλώσσα περιγραφής πληροφοριών (metadata) που αφορούν πόρους (resources) στο world wide web. Παραδείγµατα: ο τίτλος, ο

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

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

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

Σύγκριση Προγραµµατιστικών ιεπαφών (APIs) για διαχείριση Οντολογιών Ιστού και Ανάπτυξη Μηχανισµού υποβολής Ευφυών Ερωτηµάτων

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

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Εναλλακτικό Παράδειγμα Επιλογής Δώρου. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Εναλλακτικό Παράδειγμα Επιλογής Δώρου. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Εναλλακτικό Παράδειγμα Επιλογής Δώρου Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

ΕΡΓΑΣΗΡΙΟ CLIPS ΑΣΚΗΣΗ 3

ΕΡΓΑΣΗΡΙΟ CLIPS ΑΣΚΗΣΗ 3 ΑΣΚΗΣΗ 3 Ένα γεγονός είναι μια λίστα από σύμβολα τα οποία περικλείονται σε παρενθέσεις και εκφράζει κάποια πληροφορία σχετική με την κατάσταση του προβλήματος που μας απασχολεί. Τα γεγονότα διακρίνονται

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

Συναρτήσεις. Εισαγωγή

Συναρτήσεις. Εισαγωγή Συναρτήσεις Εισαγωγή Η χρήση συναρτήσεων στα προγράμματα της γλώσσας C είναι πολύ σημαντική καθώς μας επιτρέπει τη διάσπαση ενός προβλήματος σε μικρότερα υποπροβλήματα τα οποία μπορούμε να επιλύσουμε πιο

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Προτεραιότητα Κανόνων και Στρατηγικές Επίλυσης Συγκρούσεων

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Προτεραιότητα Κανόνων και Στρατηγικές Επίλυσης Συγκρούσεων ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Προτεραιότητα Κανόνων και Στρατηγικές Επίλυσης Συγκρούσεων Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Άδειες Χρήσης

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

Visual Basic Βασικές Έννοιες

Visual Basic Βασικές Έννοιες Visual Basi Βασικές Έννοιες «Είδα στον ύπνο µου ότι η ζωή είναι χαρά. Ξύπνησα και είδα ότι είναι χρέος. Αγωνίστηκα και είδα ότι τo χρέος είναι χαρά.» Ραµπριτανάθ Ταγκόρ Κουλλάς Χρίστος www.oullas.om oullas

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Πανεπιστήµιο Πατρών Τµήµα Μηχ/κών Η/Υ & Πληροφορικής ΜΠΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΥΦΥΗ ΣΥΣΤΗΜΑΤΑ ΑΠΟΦΑΣΕΩΝ. Ι.

Πανεπιστήµιο Πατρών Τµήµα Μηχ/κών Η/Υ & Πληροφορικής ΜΠΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΥΦΥΗ ΣΥΣΤΗΜΑΤΑ ΑΠΟΦΑΣΕΩΝ. Ι. Πανεπιστήµιο Πατρών Τµήµα Μηχ/κών Η/Υ & Πληροφορικής ΜΠΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΥΦΥΗ ΣΥΣΤΗΜΑΤΑ ΑΠΟΦΑΣΕΩΝ Ι. Χατζηλυγερούδης ΩΡΟΛΟΓΙΟ ΠΡΟΓΡΑΜΜΑ Τετάρτη/Τρίτη 5.00-7.00 µ.µ. (ΠΡΟΚΑΤ Τµήµατος

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

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

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για

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

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών

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

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η χρήση των βασικών τελεστών της Γλώσσας Προγραµµατισµού C : αριθµητικοί τελεστές, τελεστές

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

Οικονόμου Παναγιώτης. Οι διαφάνειες παρουσιάζονται κατόπιν άδειας της Δρ. Ελπινίκης Παπαγεωργίου.

Οικονόμου Παναγιώτης.  Οι διαφάνειες παρουσιάζονται κατόπιν άδειας της Δρ. Ελπινίκης Παπαγεωργίου. Οικονόμου Παναγιώτης panawths@gmail.com poikonomou@teilam.gr Οι διαφάνειες παρουσιάζονται κατόπιν άδειας της Δρ. Ελπινίκης Παπαγεωργίου. Οικονόμου Παναγιώτης 1 CLIPS Παπαγεωργίου. 2 C Language Integrated

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία

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

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Εντολές επιλογής Επαναλήψεις (if, switch, while) Εντολές επιλογής Επαναλήψεις (if, switch, while) Οι σημειώσεις αυτές έχουν σαν στόχο την μάθηση εντολών επιλογής (if, switch, while) που ελέγχουν τη ροή εκτέλεσης ενός προγράμματος. Πρώτα όμως, είναι αναγκαίο

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

char name[5]; /* define a string of characters */

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο) Προγραμματισμός Η/Υ Ενότητα 2β: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας του Τελεστή

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

Τύποι δεδομένων, τελεστές, μεταβλητές

Τύποι δεδομένων, τελεστές, μεταβλητές Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα 3 Φύλλο Εργασίας 3 Στο φύλλο εργασιών 3 θα ασχοληθούμε με τις λίστες μια δομή της γλώσσας python που έχει την δομή ενός πίνακα. Θα χρησιμοποιήσουμε τις βασικές εντολές από τις λίστες και θα κατασκευάσουμε

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

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής CLIPS Το Περιβάλλον της CLIPS Τίτλος Ενότητας 3 CLIPS To CLIPS μπορεί να θεωρηθεί σαν ένα γενικό εργαλείο

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

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

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

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Προτάσεις,

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

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ενότητα 1: Εισαγωγή στη Γλώσσα Lisp Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Εισαγωγή στη Lisp : 1. Εισαγωγή 2. Θεμελιώδεις

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

ALERTS ή EDA (Event Driven Actions)

ALERTS ή EDA (Event Driven Actions) ALERTS ή EDA (Event Driven Actions) Το ALERTS είναι ένα ευέλικτο εργαλείο ανοιχτού σχεδιασµού που αναπτύχθηκε µε σκοπό να καλύψει ιδιαίτερες απαιτήσεις διαµόρφωσης ή επέκτασης της λειτουργικότητας όλων

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

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

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Σκοπός της 1ης άσκησης είναι η εξοικείωση με τη γλώσσα προγραμματισμού Python, την οποία και θα χρησιμοποιήσουμε και στις υπόλοιπες εργαστηριακές ασκήσεις.

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

Κεφάλαιο 4ο: Εντολές επιλογής

Κεφάλαιο 4ο: Εντολές επιλογής Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 4ο: Εντολές επιλογής Μέχρι τώρα παρατηρήσαµε ότι τα προβλήµατα που αντιµετωπίσαµε είχαν σειριακή κίνηση, δηλαδή η µία εντολή

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

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

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται

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

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

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