Semantic Web. from DR-Device to DR-Prolog. Mathioudakis Georgios Bouloukakis Georgios

Σχετικά έγγραφα
Extended Emerald ΟΜΑΔΑ 1. Emerald. A Knowledge-based Framework for Semantic Web Agents. Ζωγραφιςτοφ Δήμητρα

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

ΕΡΓΑΣΗΡΙΑΚΗ ΑΚΗΗ 4.1

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

ΡΟΓΑΜΜΑΤΙΣΤΙΚΟ ΡΕΙΒΑΛΛΟΝ MICRO WORLDS PRO

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

Εισαγωγικές έννοιες. Αντώνησ Κ Μαώργιώτησ

Ειςαγωγι ςτο Δομθμζνο Προγραμματιςμό. Βαγγζλθσ Οικονόμου

ΥΡΟΝΣΙΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣΗ» ΔΙΑΓΩΝΙΜΑ ΘΕΜΑΣΑ Β ΛΤΚΕΙΟΤ ΥΕΒΡΟΤΑΡΙΟ 2018 ΑΕΠΠ

Περιοριςμοί μιασ Β.Δ. ςτθν Access(1/3)

Θεςιακά ςυςτιματα αρίκμθςθσ

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

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο

Α) Ενδεικτικϋσ απαντόςεισ των θεμϊτων

ςυςτιματα γραμμικϊν εξιςϊςεων

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

Δϋ Δθμοτικοφ 12 θ Κυπριακι Μακθματικι Ολυμπιάδα Απρίλιοσ 2011

ΑΝΑΠΣΤΞΘ ΕΦΑΡΜΟΓΩΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 3 ο ΓΕΝΙΚΟ ΛΤΚΕΙΟ Ν. ΜΤΡΝΘ- ΕΠΙΜΕΛΕΙΑ: ΠΤΡΙΔΑΚΘ Λ.

Ιδιότθτεσ πεδίων Γενικζσ.

HY437 Αλγόριθμοι CAD

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ

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

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

Γενικά Μαθηματικά ΙΙ

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

Εργαςτιριο Βάςεων Δεδομζνων

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Αυτόνομοι Πράκτορες. Αναφορά Εργασίας Εξαμήνου. Το αστέρι του Aibo και τα κόκαλα του

Δομθμζνοσ Προγραμματιςμόσ. Βαγγζλθσ Οικονόμου Εργαςτιριο 9

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

Ηλεκτρονικι Επιχειρθςιακι Δράςθ Εργαςτιριο 1

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

Συντακτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Μάθημα 9 ο ΤΕΧΝΙΚΕΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΙΚΟΝΙΚΗΣ ΜΝΗΜΗΣ

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Εγκατάσταση «Μισθός 2005»

Ειδικά Θζματα Βάςεων Δεδομζνων

Πωσ δθμιουργώ φακζλουσ;

Οντοκεντρικόσ Προγραμματιςμόσ

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

Αναπαράςταςθ Γνώςθσ ςτον Παγκόςμιο Ιςτό Ενότθτα 2: XML Δομθμζνα Ζγγραφα Ιςτοφ, Μζροσ 4 ο XPath

16. Πίνακεσ και Συναρτήςεισ

Μονάδες 6. Μονάδες ΓΑΨΕ Δεν υπάρχει ρίηα 2. ΑΝ Α>0 ΤΟΤΕ 3. ΤΕΛΟΣ_ΑΝ 4. ΑΛΛΙΩΣ 5. ίηα Τ_(Α)

Διαδικαςία Προγράμματοσ Ωρομζτρθςθσ. (v.1.0.7)

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Ειςαγωγι ςτθν Επιςτιμθ Υπολογιςτϊν. Ειςαγωγι ςτθν Python

Αςφάλεια και Προςταςία Δεδομζνων

Μετατροπι Αναλογικοφ Σιματοσ ςε Ψθφιακό. Διάλεξθ 10

5 ΜΕΘΟΔΟΙ - ΠΑΡΑΜΕΤΡΟΙ

Επιχειρηςιακή Ζρευνα και εφαρμογζσ με την χρήςη του λογιςμικοφ R

Κατά τθν ενεργοποίθςθ τθσ ιδιότθτασ αυτισ ενδζχεται να εμφανιςτεί ζνα μινυμα ςαν αυτό τθσ παρακάτω εικόνασ. Απλά επιβεβαιϊςτε πατϊντασ ΟΚ.

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

ΥΡΟΝΣΙ ΣΗΡΙΟ Μ. Ε. ΚΑΙ ΚΕΝΣΡΟ ΙΔΙΑΙΣΕΡΩΝ ΜΑΘΗΜΑΣΩΝ «ΚΤΡΙΣ Η» ΔΙΑΓΩΝΙ ΜΑ ΑΕΠΠ

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Μάρκετινγκ V Κοινωνικό Μάρκετινγκ. Πόπη Σουρμαΐδου. Σεμινάριο: Αναπτφςςοντασ μια κοινωνική επιχείρηςη

HY437 Αλγόριθμοι CAD

MySchool Πρακτικζσ οδθγίεσ χριςθσ

17. Πολυδιάςτατοι πίνακεσ

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Οδηγίες Πρόζβαζης ζηο EndNote Web. Πρόζβαζη ζηο EndNote Web

Πωσ δημιουργώ μάθημα ςτο e-class του ΠΣΔ [επίπεδο 1]

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Ειδικά Θζματα Βάςεων Δεδομζνων

HY437 Αλγόριθμοι CAD

1. Διαχείριςη ενθεμάτων

Ανάπτυξη Εφαρμογών Σε Προγραμματιςτικό Περιβάλλον

Μετατροπεσ Παραςταςεων

Κάνουμε κλικ ςτθν επιλογι του οριηόντιου μενοφ «Get Skype»για να κατεβάςουμε ςτον υπολογιςτι μασ το πρόγραμμα του Skype.

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Βάρειπ Δεδξμέμωμ. Επγαστήπιο ΙΙ. Τμήμα Πλεπουοπικήρ ΑΠΘ

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων

Ενδεικτική Οργάνωςη Ενοτήτων. Α Σάξη. Διδ. 1 ΕΝΟΣΗΣΑ 1. 6 Ομαδοποίθςθ, Μοτίβα,

Αυτόματη δημιουργία στηλών Αντιστοίχηση νέων λογαριασμών ΦΠΑ

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

ΚΥΠΡΙΑΚΗ ΜΑΘΗΜΑΤΙΚΗ ΕΤΑΙΡΕΙΑ

Aux.Magazine Μπιλμπάο, Βιηκάγια, Ιςπανία Προςωπικά δεδομζνα

ΗΥ101: Ειςαγωγι ςτθν Πλθροφορικι

Visual C Express - Οδηγός Χρήσης

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version )


Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

Στα προθγοφμενα δφο εργαςτιρια είδαμε τθ δομι απόφαςθσ (ι επιλογισ ι ελζγχου ροισ). Ασ κυμθκοφμε:

Seventron Limited. Οδηγίες χρήσης EnglishOnlineTests.com

TIM Εικονικό Περιβάλλον Συνεργασίας Οδθγίεσ Χριςθσ

Transcript:

Semantic Web from DR-Device to DR-Prolog Konsolaki Konstantina konsolak@csd.uoc.gr Fafalios Pavlos fafalios@csd.uoc.gr Mathioudakis Georgios gmathiou@csd.uoc.gr Bouloukakis Georgios boulouk@csd.uoc.gr Mavridou Eva mavridou@csd.uoc.gr Papantriantafyllou Aggelos angelpap@csd.uoc.gr Symeonidoy Danah simeon@csd.uoc.gr September 2010

Περιεχόμενα 1. Ειςαγωγι... 3 2. Υλοποίθςθ... 4 2.1 Πρότυπο RuleML... 4 2.2 Αναλυτισ... 4 2.3 Metaprogram... 6 2.3.1 Σφγκριςθ αρικμϊν και υπολογιςμόσ αρικμθτικϊν παραςτάςεων... 6 2.3.2 Κανόνασ naf... 7 2.4 Μθχανι... 7 3. Παραδοτζα... 8 2

1. Ειςαγωγή Η ανάπτυξθ του Παγκόςμιου Ιςτοφ (World Wide Web) κατζςτθςε το διαδίκτυο προςβάςιμο ςε εκατομμφρια χριςτεσ, επιτρζποντασ τθν απρόςκοπτθ δθμοςιοποίθςθ και πρόςβαςθ ςε ζγγραφα ςτο διαδίκτυο. Η εκρθκτικι ανάπτυξθ του Παγκόςμιου Ιςτοφ δθμιοφργθςε προβλιματα "πλθροφοριακισ υπερφόρτιςθσ". Η παγκόςμια ερευνθτικι κοινότθτα ζχει ςτραφεί εδϊ και λίγα χρόνια ςε μία νζα κατεφκυνςθ εξζλιξθσ του ιςτοφ, θ οποία ονομάηεται "Σθμαςιολογικόσ Ιςτόσ" (Semantic Web) και περιλαμβάνει τθ ςαφι αναπαράςταςθ του νοιματοσ των πλθροφοριϊν και των εγγράφων, επιτρζποντασ τθν αυτόματθ επεξεργαςία και ενοποίθςθ διαδικτυακϊν πόρων από "ζξυπνα" προγράμματαπράκτορεσ. Ο Σθμαςιολογικόσ Ιςτόσ κα επιτρζψει τον γριγορο και ακριβι εντοπιςμό πλθροφοριϊν ςτον παγκόςμιο ιςτό κακϊσ και τθν ανάπτυξθ ευφυϊν διαδικτυακϊν πρακτόρων οι οποίοι κα διευκολφνουν τθν επικοινωνία μεταξφ πλθκϊρασ ετερογενϊν θλεκτρονικϊν ςυςκευϊν με πρόςβαςθ ςτο διαδίκτυο. Στόχοι τθσ ομάδασ μασ ιταν: Καταςκευι προτφπου για τα ruleml αρχεία. Δθμιουργία βάςθ του παραπάνω προτφπου των αρχείων όπου εκφράηονται οι προτιμιςεισ και οι απαιτιςεισ του «πελάτθ», ςτο παράδειγμα broker customer. Καταςκευι αναλυτι (parser) με ςκοπό τθν μετατροπι των ruleml αρχείων ςε DR-Prolog ςφνταξθ. Επζκταςθ του metaprogram ϊςτε να υποςτθρίηει αρικμθτικζσ παραςτάςεισ, ςυγκρίςεισ και τον κανόνα naf. Δθμιουργία μθχανισ για τθν εκτζλεςθ ερωτθμάτων και τθν επιςτροφι αποτελεςμάτων με βάςθ τισ προτιμιςεισ του «πελάτθ». Στα επόμενα κεφάλαια κα δοφμε αναλυτικά πωσ υλοποιικθκαν οι παραπάνω ςτόχοι. 3

2. Υλοποίηςη 2.1 Πρότυπο RuleML Οι κανόνεσ που εκφράηουν τισ απαιτιςεισ (carlo_1.ruleml) και προτιμιςεισ (carlo_2.ruleml) του πελάτθ εκφράςτθκαν με ζνα νζο πρότυπο που δθμιουργιςαμε το οποίο είναι επζκταςθ τθσ RuleML ςφνταξθσ. Για τθ δθμιουργία του προτφπου βαςιςτικαμε ςτο υπάρχον πρότυπο RuleML που χρθςιμοποιεί θ DR-Prolog και εν μζρθ ςτα RuleML αρχεία από το Αριςτοτζλειο Πανεπιςτιμιο Θεςςαλονίκθσ. Η ςφνταξθ που επιλζξαμε για το πρότυπο είναι τζτοια ϊςτε να είναι εφαρμόςιμθ ςτθν DR-Prolog, εφκολα αναγνϊςιμθ και επεκτάςιμθ. Το ςχιμα του προτφπου (DTD) επιςυνάπτεται ςτο φάκελο τθσ εργαςίασ (drprolog.dtd). 2.2 Αναλυτής Για τθν εξαγωγι των κανόνων DR-Prolog, δθμιουργικθκε ο μετατροπζασ RuleMLparser. Σκοπόσ του είναι από τα RuleML αρχεία να εξάγει τουσ DR-Prolog κανόνεσ. Ο μετατροπζασ ζχει γραφτεί εξ ολοκλιρου ςτθ γλϊςςα Java και αποτελείται από δφο κλάςεισ, τθν κεντρικι κλάςθ RuleMLparser.java και τθν βοθκθτικι κλάςθ Tagger.java. Δζχεται ςαν είςοδο ζνα αρχείο RuleML και δθμιουργεί ζνα νζο αρχείο.p με τουσ κανόνεσ εκφραςμζνουσ ςε DR-Prolog ςφνταξθ. Η κλάςθ RuleMLparser.java περιζχει τζςςερισ ςτατικζσ μεκόδουσ. Η πρϊτθ μζκοδοσ είναι θ void createrules(file ruleml). Αυτι θ μζκοδοσ διαβάςει το RuleML αρχείο και δθμιουργεί τουσ κανόνεσ. Πιο αναλυτικά, χωρίηει το αρχείο ςε διακριτά μζρθ ζτςι ϊςτε να ξεχωρίςει τουσ κανόνεσ. Στθ ςυνζχεια, χωρίηει κάκε κανόνα ςε επιμζρουσ τμιματα και καλεί τισ κατάλλθλεσ ςυναρτιςεισ για να τα επεξεργαςτοφν. Κάκε επιμζρουσ ςυνάρτθςθ δζχεται ζνα από τα παραπάνω τμιματα και παράγει το αντίςτοιχο μζροσ του κάκε κανόνα. Στο τζλοσ, όλα τα τμιματα ενϊνονται, ςχθματίηοντασ ζτςι τουσ τελικοφσ κανόνεσ. Για παράδειγμα, από το παρακάτω κομμάτι RuleML ςφνταξθσ (ςχιμα 1), παράγεται ο κανόνασ του ςχιματοσ 2. 4

<Implies ruletype="defeasiblerule"> <oid>r1</oid> <head> <Atom neg="no"> <Rel>acceptable</Rel> <Slot type="var">υ</slot> <Slot type="var">ζ</slot> <Slot type="var">w</slot> </Atom> </head> <body> <part type="atom"> <Rel>name</Rel> </part> <part type="atom"> <Rel>price</Rel> <Slot type="var">y</slot> </part> <part type="atom"> <Rel>size</Rel> <Slot type="var">z</slot> </part> <part type="atom"> <Rel>gardenSize</Rel> <Slot type="var">w</slot> </part> </body> </Implies> Σχήμα 1 Τμιμα ruleml αρχείου defeasible(r1,acceptable(x,y,z,w),[name(x,x),price(x,y),size(x,z),gardensize(x,w)]). Σχήμα 2 Κανόνασ ςε DR-Prolog ςφνταξθ Η δεφτερθ μζκοδοσ είναι θ String getquery(file ruleml). Αυτι θ μζκοδοσ βρίςκει το ερϊτθμα (Query) ςτο RuleML, το μετατρζπει ςε DR-Prolog ςφνταξθ και επιςτρζφει ζνα αλφαρικμθτικό που το αναπαριςτά (ςχιμα 3). defeasibly(acceptable(x,y,z,w)) %(apartment, price, size, gardensize) Σχήμα 3 Ερϊτθμα ςε DR-Prolog ςφνταξθ Η τρίτθ μζκοδοσ είναι θ String getquerymode(file ruleml). Αυτι θ μζκοδοσ επιςτρζφει τον τφπο του ερωτιματοσ. Ο τφποσ μπορεί να είναι είτε answer είτε proof. Η τελευταία μζκοδοσ είναι θ String getqueryvars(file ruleml). Η μζκοδοσ αυτι επιςτρζφει τισ μεταβλθτζσ του ερωτιματοσ. Σκοπόσ τθσ είναι θ εφρεςθ των μεταβλθτϊν του ερωτιματοσ για τθν καταςκευι τθσ δομισ τθσ επιςτρεφόμενθσ λίςτασ. Η κλάςθ Tagger.java είναι μία βοθκθτικι κλάςθ για τθν ανάγνωςθ XML κϊδικα. Περιζχει ζνα ςφνολο από ςυναρτιςεισ που βρίςκουν ετικζτεσ και εξάγουν το περιεχόμενο τουσ. Για παράδειγμα, θ ςυνάρτθςθ String getfirsttagdata(string thetag), δζχεται ζνα όνομα ετικζτασ, πχ Head και επιςτρζφει ζνα αλφαρικμθτικό με το περιεχόμενο αυτισ τθσ ετικζτασ. 5

2.3 Metaprogram Η υπάρχουςα ζκδοςθ του metaprogram δεν υποςτιριηε κάποιεσ λειτουργίεσ που ιταν απαραίτθτεσ για τθν εκτζλεςθ των ερωτθμάτων. Γι αυτό το λόγο χρειάςτθκε να αναβακμιςτεί ϊςτε να υποςτθρίηει τισ παρακάτω λειτουργίεσ: Σφγκριςθ αρικμϊν και υπολογιςμόσ αρικμθτικϊν παραςτάςεων Υποςτιριξθ του κανόνα naf 2.3.1 Σύγκριςη αριθμών και υπολογιςμόσ αριθμητικών παραςτάςεων Για τθν ςφγκριςθ αρικμϊν ειςάγαμε τουσ παρακάτω 5 κανόνεσ: definitely(x<y):- compute([x,+,0],k), compute([y,+,0],m), K @< M. definitely(x>y):- compute([x,+,0],k), compute([y,+,0],m), K @> M. definitely(x>=y):- compute([x,+,0],k), compute([y,+,0],m), K @>= M. definitely(x=<y):- compute([x,+,0],k), compute([y,+,0],m), K @=< M. definitely(x\==y):- X \== Y. Ο πρϊτοσ κανόνασ ελζγχει αν το Χ είναι μικρότερο του Y. Ο δεφτεροσ αν ο Χ είναι μεγαλφτεροσ του Υ. Ο τρίτοσ αν ο Χ είναι μεγαλφτεροσ ι ίςοσ του Υ. Ο τζταρτοσ αν ο Χ είναι μικρότεροσ ι ίςοσ του Υ και ο τελευταίοσ αν ο Χ είναι διαφορετικόσ από το Υ. Κακϊσ μπαίνουμε ςτο κάκε κανόνα καλείται ο κανόνασ compute. H παρουςία του κανόνα compute είναι απαραίτθτθ και ο λόγοσ είναι ότι κζλουμε ταυτόχρονα να ςυγκρίνουμε και αρικμοφσ αλλά και αρικμθτικζσ παραςτάςεισ. Ο λόγοσ για τον οποίο καλοφμε τθ compute με λίςτα είναι ότι οι αρικμθτικζσ παραςτάςεισ πρζπει να ζχουν ςυγκεκριμζνθ μορφι. Για παράδειγμα μια απλι αρικμθτικι παράςταςθ είναι θ *100,+,200+ θ οποία εκφράηει τθν πρόςκεςθ δυο αρικμϊν, του 100 με το 200. Γενικϊσ, οι αρικμθτικζσ παραςτάςεισ κα πρζπει να εκφράηονται ςε μορφι λίςτασ και θ κάκε λίςτα εμφωλευμζνθ ι μθ κα πρζπει να ζχει τρία μζλθ: αριςτερό μζλοσ(αρικμόσ ι λίςτα), δεξί μζλοσ(αρικμόσ ι λίςτα) και μεςαίο μζλοσ(τελεςτισ πράξθσ). Για παράδειγμα αν κζλαμε να κάνουμε τθ πράξθ του πολλαπλαςιαςμοφ δυο αρικμϊν όπου ο δεφτεροσ αρικμόσ προκφπτει από τθ πρόςκεςθ άλλων δυο (κζλουμε να κρατιςουμε τθ προτεραιότθτα των πράξεων), τότε προκφπτει θ εξισ ζκφραςθ: **10,+,20+, *, 5+. Στθ περίπτωςθ που ζχουμε μόνο αρικμοφσ να ςυγκρίνουμε τότε καλείται πάλι θ compute. Επειδι όμωσ κα αντιμετωπίηαμε πρόβλθμα από τθ ςτιγμι που θ compute δζχεται μόνο λίςτεσ, ζτςι αναγκαςτικαμε να μετατρζψουμε τον αρικμό ςε λίςτα με ζναν πολφ απλό τρόπο: *Χ,+,0+, το οποίο κα επιςτρζφει πάντα Χ. Με αυτό το τρόπο παρακάμπτουμε τθν compute. Η υλοποίθςθ τθσ compute είναι απλι και βαςίηεται ςτθ λογικι τθσ επίςκεψθσ κάκε κόμβου ενόσ δζντρου. Από τθ ςτιγμι που μια αρικμθτικι παράςταςθ μπορεί να αποτελείται από πολλά επίπεδα εμφωλευμζνων πράξεων λιςτϊν είναι ςαν να δουλεφουμε πάνω ςε κάποιο δζντρο. Ο υπολογιςμόσ των πράξεων ξεκινάει από χαμθλά, από τα φφλλα του δζντρου και καταλιγει ςτθ ρίηα όπου και επιςτρζφεται το τελικό αποτζλεςμα. Παρακάτω παρατίκεται θ υλοποίθςθ τθσ: compute([h1, H2, H3 _], K2) :- compute(h1, K), compute([k, H2, H3], K2). compute([x, Y, Z _], K) :- number(x), number(z), Y == *, K is X * Z. compute([x, Y, Z _], K) :- number(x), number(z), Y == /, K is X / Z. compute([x, Y, Z _], K) :- number(x), number(z), Y == +, K is X + Z. 6

compute([x, Y, Z _], K) :- number(x), number(z), Y == -, K is X - Z. compute([h1, H2, H3 _], K2) :- compute(h3, K), compute([h1, H2, K], K2). 2.3.2 Κανόνασ naf Η τελευταία αναβάκμιςθ που ζγινε ιταν θ ειςαγωγι του κανόνα naf: definitely(naf(x,z,m)):- not(naf(x,z,m)). Ο παραπάνω κανόνασ χρειάςτθκε ςτο παράδειγμά μασ για τισ προτιμιςεισ του πελάτθ. 2.4 Μηχανή Για τον ζλεγχο των λειτουργιϊν που υλοποιιςαμε καταςκευάςαμε μία μθχανι θ οποία αρχικά φορτϊνει τισ απαιτιςεισ και προτιμιςεισ του πελάτθ (ruleml αρχεία), τθ βάςθ γνϊςθσ (facts.p) και τζλοσ το metaprogram. Στθ ςυνζχεια καλείται ο αναλυτισ ο οποίοσ παράγει τουσ κανόνεσ, τουσ αποκθκεφει ςε ξεχωριςτό αρχείο και ταυτόχρονα τουσ φορτϊνει ςτθ μθχανι. Με ςυναρτιςεισ του αναλυτι, εξάγουμε το ερϊτθμα, τον τφπο και τισ μεταβλθτζσ του κακϊσ και το τι αντιπροςωπεφει θ κάκε μεταβλθτι. Για παράδειγμα, θ μεταβλθτι X του ςχιματοσ 3 αντιπροςωπεφει το όνομα του διαμερίςματοσ. Τζλοσ, ςαν αποτζλεςμα επιςτρζφεται μία λίςτα θ οποία ζχει μορφι ανάλογθ των μεταβλθτϊν του ερωτιματοσ. Για παράδειγμα, για το ερϊτθμα του ςχιματοσ 3, θ απάντθςθ είναι: result=[a3,350,65,0,a5,350,55,15,a7,375,65,12] Το παραπάνω αποτζλεςμα αποκθκεφεται ςε ζνα αρχείο με όνομα result.txt. 7

3. Παραδοτέα 1. carlo_1.ruleml 2. carlo_2.ruleml 3. dr-prolog.dtd 4. amb_metaprogram_add.p 5. Netbeans Project a. Engine.java b. RuleMLparser.java c. Tagger.java 8