Το θέμα κλειδώθηκε

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Δευτ Απρ 02, 2012 10:38 pm

Any help? Καταλαβαίνω σχεδόν όλοι έχετε παραδώσει και τώρα ξεκούραση :-)

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τρί Απρ 03, 2012 11:44 am

diegito έγραψε:Καλημέρα σας.

Καλή ξεκούραση σε όσους παρέδωσαν.

Εγώ πήρα την εβδομάδα παράτασης και ουσιαστικά ξεκινάω από σήμερα μετά από την μελέτη των tutorials και κάποιους πειραματισμούς στο Protege.

Θα ήθελα να ρωτήσω κατά την δημιουργία νέου project στο Protege επιλέγουμε OWL / RDF Files ναι? Στο ontology URi πρέπει να βάλουμε κάποιο valid urlνομίζω ναι αλλά όχι απαραίτητα και να υπάρχει στο internet, εγώ έβαλα http://www.owl-ontologies.com/1a.owl? Και τέλος στο Language Profile τι επιλέγουμε? (OWL Full / OWL DL / OWL Lite) έβαλα το OWL Full

Όσον αφορά το object property "hasPerson" στο 1α μεταξύ Department και Person και μεταξύ Project και Person πρέπει να φτιαχτεί 2 φορές και με διαφορετικό όνομα υποθέτω?ναι δεν μπορείς να το φτιάξεις δύο φορές με το ίδιο όνομα οπότε άλλαξέ του λίγο το όνομα τουλάχιστον την μία φορά. π.χ. hasPersonDepartment και hasPersonProject

Χρειάζεται να χαρακτηρίσουμε τις σχέσεις ως functional, symmetric κτλ?
θεωρητικά αν κάπου νομίζεις ότι αυτό χρειάζεται ναι, εγώ πάντως δεν το έκανα κάπου.

Τέλος στο 1δ το check θα γίνει πατώντας το "check consistency" ή και κάτι άλλο?
ναι check consistency. Εγώ δεν είχα κάποιο λάθος, αφού είχα πειραματιστεί πολύ με τα tutorials του owl πριν ξεκινήσω να το φτιάχνω, κι έτσι δημιούργησα ένα λάθος ώστε να πάρω error και να το διορθώσω στη συνέχεια

Ευχαριστώ


Με κόκκινο οι απαντήσεις στις ερωτήσεις σου.

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τρί Απρ 03, 2012 8:51 pm

Δεν ξέρω πόσοι απο'δω παραδόσανε εγκαίρως. Εγώ πάντως κατέληξα να ζητήσω παράταση, λόγω κάποιων υποχρεώσεων, οπότε τώρα σιγά-σιγά ξαναπιάνω το δεύτερο θέμα.
Έχω όμως αρκετά προβλήματα και ήθελα να ρωτήσω αν κάποιος από εσάς είχε αντίστοιχα και πώς τα αντιμετώπισε.
Καταρχάς, έκανα τα πάντα με xml (widgets και enactors εννοώ) και ακολούθησα κυρίως τα παραδείγματα του HelloRoom παρά το tutorial (κανονικά δε θα'πρεπε να είναι ίδια;). Σ' αυτή τη φάση έχω καταφέρει να μου τρέχει η εφαρμογή ΜΟΝΟ για την κατάσταση του θερμοσίφωνα (αν το βάλω να υλοποιεί κι άλλα Services βγάζει διάφορα errors που δεν μπορώ να εντοπίσω προς το παρόν από τι προκαλούνται) και ενώ το interface φαίνεται να λειτουργεί κανονικά, δεν αλλάζει τιμή από "off" σε "on", ακόμα κι αν του δώσω αριθμητικούς κανόνες (όχι μεταβλητές δλδ). Έχει κανείς καμιά ιδέα γιατί μπορεί να συμβαίνει αυτο;

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τρί Απρ 03, 2012 9:47 pm

@taghor σε ευχαριστώ πολύ!

Πάντως έχω την εντύπωση ότι αν δεν βάλουμε restrictions , δεν βάλουμε disjoint σε κλάσεις, δεν χαρακτηρίσουμε τις σχέσεις inverse/functional/transitive/symmetric μου φαίνεται ότι δεν υπάρχει περίπτωση να μας βγεί κάποιο λάθος στην συνέπεια της οντολογίας. Κάνω λάθος? Χρειάζεται όμως εφόσον στο σχήμα δεν φαίνεται σχετική πληροφορία να βάλουμε τις παραπάνω ιδιότητες στις σχέσεις?

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τετ Απρ 04, 2012 11:03 am

Έχεις δίκιο diegito. Απλά δεν νομίζω ότι από κάπου στο σχήμα μπορούν να προκύψουν αυτά τα restrictions. Το μόνο που έβαλα εγώ ήταν mutual disjoints σε όλα τα classes ίδιου επιπέδου (σε κάθε επίπεδο όλα είναι mutual disjoint μεταξύ τους). Η αλήθεια είναι ότι βγαίνει σχετικά απλή η οντολογία για να έχει κάποιος λάθη πάντως.

@Wazka: μπορείς να φτιάξεις πολλά services. Εγώ έτσι το έκανα και παίζει καλά. Το πρόβλημα είναι ότι στον enactor μπορείς να έχεις μόνο ένα outcome ανά κανόνα. Έτσι αν ας πούμε θέλεις όταν το input πάρει τιμή Χ να αλλάξουν 2 outputs θα πρέπει να φτιάξεις δύο κανόνες (προσοχή όλοι οι κανόνες πρέπει να έχουν διαφορετικό όνομα, καθώς και όλα τα queries) όπου ο κάθε κανόνας θα αλλάζει και από ένα output.
Επίσης θα πρέπει όπου αλλάζει στο swing component ένα value να το αλλάζεις και στο widget χρησιμοποιώντας το widget.updateDate("name", value); Αυτό θα πρέπει να μπει μέσα στον action listener του κάθε input component ώστε σε κάθε αλλαγή που κάνεις από το gui να αλλάζει και η τιμή που γνωρίζει το widget.

Γενικώς πάντως η εικόνα που σχημάτισα από το context toolkit μου δείχνει ένα εργαλείο που ακόμα είναι υπό εξέλιξη (για παράδειγμα αυτό με το ένα output ανά κανόνα γράφει κάπου στο tutorial ότι δεν θέλουν να είναι έτσι αλλά είναι έτσι προς το παρόν) και πολύ, μα πολύ κακό error handling αφού όταν υπάρχει ένα λάθος δεν βλέπεις πάντα κάποιο exception ώστε να καταλάβεις ότι κάτι πάει στραβά αλλά και στις πρειπτώσεις που βλέπεις αυτό είναι τελείως παραπλανητικό και άσχετο με το πραγματικό λάθος.

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τετ Απρ 04, 2012 1:36 pm

Σ' ευχαριστώ πολύ taghor! Πολλά απ' αυτά που αναφέρεις τα είχα υπόψη μου ήδη, αλλά το θέμα με το ένα outcome ανά κανόνα δεν το είχα προσέξει καν... :oops:
Ωστόσο, κάνοντας όλα όσα αναφέρεις, εξακολουθώ να έχω το εξής πρόβλημα: Όλα λειτουργούν κανονικά σε πρώτη φάση (δεν έχω errors και εμφανίζεται το UI όπως το έχω σχεδιάσει). Για την ώρα και τα λεπτά έχω ορίσει 2 JSpinners, και το αποτέλεσμα τους ενημερώνεις τις αντίστοιχες μεταβλητές του input. Από την άλλη, έχω ορίσει μια attribute στο input-widget η οποία ονομάζεται time και είναι ως εξής:
Κώδικας:
<Attribute name = "time" type = "int">(hour * 60) + minute </Attribute>

Αυτό του ζητάω να το κάνει update και μέσα στην εφαρμογή, στο initial state του widget, αλλά δυστυχώς, δεν έχω βρει τρόπο να το κάνω μέσα στους listeners (εφόσον αφορούν σε interface για διαφορετικά attributes, δηλ. το hour και το minute). Όμως, εφόσον έχω ορίσει ποια πρέπει να είναι η τιμή του attribute ((hour * 60) + minute) δε θα'πρεπε να το κάνει εκεί; Αντιθέτως, έχω καταλήξει αποκλείοντας άλλα ενδεχόμενα, ότι η τιμή του time δε γίνεται update πουθενά, γι' αυτό και δεν αλλάζουν οι τιμές της θερμοκρασίας του νερού και η κατάσταση του θερμοσίφωνα.
Άλλη εναλλακτική είναι να μην έχω ορίσει σωστά τους κανόνες, αλλά εκεί έχω δοκιμάσει πάρα πολλές εναλλάκτικες και δεν μπορεί! Κάποια απ' αυτές κάτι θα έκανε...


edit: Μόλις επιβεβαίωσα τη θεωρία μου! Δεν κάνει κανένα update για τη μεταβλητή time! Προφανώς κάτι δεν έχω γράψει σωστά, αλλά από την άλλη, επειδή δεν ξέρω καθόλου από xml και από το ψάξιμο που έκανα δε βρήκα τίποτα, δεν ξέρω πως να το χειριστώ... Καμία πρόταση;

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τετ Απρ 04, 2012 2:53 pm

Εγώ χειρίστικα το time με ένα και μόνο JSpinner που έπαιρνε Date οπότε δεν είχα 2 μεταβλητές παρά μόνο μία. Η μετατροπή σε μεταβλητή τύπου long ενός date σε java είναι πολύ εύκολη αφού και η Java στην ουσία χειρίζεται τα Dates σαν longs. Πάντως και με τη δική σου προσέγγιση πιστεύω ότι μπορεί να παίξει σωστά αν εξαιρέσεις ότι κάνεις κάποια λαθάκια (από αυτά που λες - δες παρακάτω).
Καταρχήν νομίζω ότι το <Attribute name = "time" type = "int">(hour * 60) + minute </Attribute> μέσα στο input widget δεν κάνει τίποτα. Στο input widget, όπως και στο output απλά ορίζεις το όνομα και τον τύπο των attributes. Δεν μπορείς να βάλεις και να τα υπολογίζει. Αυτό το κάνεις είτε στον enactor (μέσω κανόνων) είτε με κώδικα.
Έτσι θα πρέπει να κάνεις το <Attribute name = "time" type = "int">(hour * 60) + minute </Attribute> σε
<Attribute name = "time" type = "int" /> και μετά θα κάνεις το εξής:
στον ChangeListener και των 2 JSpinners που έχεις θα παίρνεις τις τιμές και των δύο τιμών προγραμματιστικά (hour και minute) και θα κάνεις update την τιμή του time.
Για να το πετύχεις αυτό μπορείς να κάνεις μέσα στον κώδικα του changelistener του hour και του minute:
int hour = inputWidget.getNonConstantAttributeValue("hour");
int minute = inputWidget.getNonConstantAttributeValue("minute");
int time = 60* hour + minute;
inputWidget.updateData("time", time);

και φυσικά αυτό που κάνεις ήδη, δηλαδή να πάρεις την τιμή της μεταβλητής από το jspinner (hour ή minute) και να την κάνεις update στην αντίστοιχη μεταβλητή του widget.

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τετ Απρ 04, 2012 5:06 pm

Πως τα πάτε/πήγατε γενικά με το 2ο θέμα; Εγώ αν και πήρα παράταση έχω μπερδευτεί πάρα πολύ με το Context Toolkit αλλά και με το σενάριο του θέματος και βλέπω να παραδίδω σαχλαμάρες...

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τετ Απρ 04, 2012 5:20 pm

Επίσης ξέρει κανείς αν μπορούμε να χρησιμοποιήσουμε παραπάνω από ένα Input widgets σε έναν enactor? (για τα output widgets σίγουρα δεν γίνεται). Υπάρχει και αντίστοιχη ερώτηση στο επίσημο forum, αλλά δεν έχει απαντηθεί...

Re: 4η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2011 - 2012

Τετ Απρ 04, 2012 5:36 pm

nby έγραψε:Επίσης ξέρει κανείς αν μπορούμε να χρησιμοποιήσουμε παραπάνω από ένα Input widgets σε έναν enactor? (για τα output widgets σίγουρα δεν γίνεται). Υπάρχει και αντίστοιχη ερώτηση στο επίσημο forum, αλλά δεν έχει απαντηθεί...


Από το tutorial του context toolkit (http://www.contexttoolkit.org/?p=120)
Each enactor takes one widget for input, and another for output:
Each enactor takes one widget for input, and another for output
Το θέμα κλειδώθηκε