SPARQL & JENA. Γενικά JENA : Είναι ένα java framework για τη δημιουργία semantic web Εφαρμογών. Μπορεί να Χρησιμοποιηθει για να δουλέψουμε σε RDF/RDFS,

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 6. SELECTSELECT SELECT * FROM όνομα_πίνακα ; • Με τη εντολή SELECT ανασύρουμε δεδομένα από την βάση δεδομένων. • Το αστεράκι.
Advertisements

Από τη C στη C++ Hy240b project 2014 Phase 1.
Τεχνολογίες Web Απαραίτητες γνώσεις για την υλοποίηση της άσκησης.
Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
Δ.Π.Θ. Επεξεργασία Κειμένου - 1 Επεξεργασία Κειμένου Ένα πρόγραμμα σε γλώσσα HTML είναι ανεξάρτητο της μηχανής όπου θα εκτελεστεί. Δηλαδή αγνοούνται τα.
ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ RDF – RDFS - SPARQL
RDF – RDFS - SPARQL
Semantic Web Technologies
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
MySQL + Γλώσσα Προγραμματισμού
Σημασιολογικός Ιστός RDF(S) OWL Οντολογίες
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Γλώσσες για ημι-δομημένα δεδομένα (ΗΔΔ)  XPath  XQuery  XSLT (eXtensible Stylesheet Language for Transformations)
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ Jena API
ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ
Αναπαρασταση Γνώσης στον Παγκόσμιο Ιστό
Resource Description Framework
Βαβλιάκης Κωνσταντίνος
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
JAVA και SQL Δαμιανός Χατζηαντωνίου
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
Επεξεργασία Σημασιολογικού Περιεχομένου με Τεχνολογίες XML/RDF.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων Θέματα Βάσεων Δεδομένων Αποθήκευση XML δεδομένων σε Σχεσιακή Βάση Δεδομένων.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Συνδυασμος foaf - meNow  Η meNow: Status Περιγραφει την κατασταση ενος foaf: Agent σε μια συγκεκριμενη χρονικη στιγμη. Η foaf: Agent κλαση περιλαμβανει.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Παρουσίαση Protégé-2000 Αλέξανδρος Βαλαράκος Αλέξανδρος Βαλαράκος, Γεώργιος Παλιούρας NCSR “Demokritos”, Inst. of Informatics & Telecommunications, SKEL.
13ο Πανελλήνιο Συνέδριο Ακαδημαϊκών Βιβλιοθηκών – Κέρκυρα Οκτωβρίου 2004 Το σύστημα COINE για την προβολή της πολιτιστικής κληρονομιάς και την υποστήριξη.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Ιόνιο Πανεπιστήμιο ΠΜΣ Επιστήμη της Πληροφορίας Διατύπωση Ερωτημάτων σε XML τεκμήρια με τη γλώσσα XQuery Εργασία για το μάθημα Ηλεκτρονική Δημοσίευση Υπεύθυνος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
CONFERENCE ONTOLOGY ΑΠΟΣΤΟΛΟΠΟΥΛΟΣ ΗΛΙΑΣ ΜΕΤ ΚΡΟΝΤΗΡΗΣ ΑΘΑΝΑΣΙΟΣ ΜΕΤ ΦΙΛΙΟΠΟΥΛΟΥ ΕΙΡΗΝΗ ΜΕΤ Διαχείριση Γνώσης στο Διαδίκτυο.
Google's Google App Engine and Google's Datastore API Andreas Manoli.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
Tomcat Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΗΥ-566 ΔΙΑΧΕΙΡΙΣΗ ΓΝΩΣΗΣ ΣΤΟ ΔΙΑΔΙΚΤΥΟ AIRPORT ONTOLOGY ΟΜΑΔΑ Γαλανάκης Μανόλης ΑΜ 1607 Γλαμπεδάκης Ευτύχης ΑΜ 1603 Μπόσμος Λευτέρης ΑΜ 1396.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Διαγράμματα Κλάσεων Ανάλυση Συστημάτων 2007.
Βάσεις Δεδομένων Ι Επανάληψη
Εισαγωγή στον Προγ/μό Υπολογιστών
DREMEL: Interactive Analysis of Web-Scale Datasets
[Τίτλος αφίσας] Lorem ipsum dolor sit amet, consectetuer adipiscing elit maecenas porttitor congue massa fusce [Αντικαταστήστε τα ακόλουθα ονόματα και.
Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
Διαχείριση και Εξόρυξη Γνώσης Knowledge Management and Data Mining
Σύνθημα συνοπτικής παρουσίασης Μπορεί να εκτείνεται σε δύο γραμμές
Μεταγράφημα παρουσίασης:

SPARQL & JENA

Γενικά JENA : Είναι ένα java framework για τη δημιουργία semantic web Εφαρμογών. Μπορεί να Χρησιμοποιηθει για να δουλέψουμε σε RDF/RDFS, OWL, για να κάνουμε storage, inference και για ερωτήσεις ( queries ) μέσω της SPARQL.

Γενικά SPARQL : Είναι μία query language που μας επιτρέπει να κάνουμε ερωτήσεις σε δεδομένα του semantic web. Είναι για το semantic web ότι και η SQL για τις σχεσιακές βάσεις δεδομένων.

Part I: SPARQL Basics [5–9] Query Structure [ 10 ] Prefix [11–12] Select [13–15] From [16–19] Where [20–27] Modifiers [28– 31] Links [32] Σύντομη περιγραφή της SPARQL Περιγραφή της δομής ενός SPARQL query Επεξήγηση των SPARQL query prefixes Επεξήγηση των Select – Select Distinct Επεξήγηση των FROM – FROM NAME – Default & Named Graphs Επεξήγηση των WHERE – FILTERS – OPTIONAL - UNION Επεξήγηση των LIMIT – OFFSET – ORDER BY Περιεχόμενα Χρήσιμοι σύνδεσμοι για τη SPARQL

SPARQL – Basics H SPARQL κάνει ερωτήσεις σε τριπλέτες rdf. Ρωτάμε δηλαδή πάνω σε δεδομένα της μορφής subject – predicate - object χρησιμοποιώντας μεταβλητές όπου θέλουμε να πάρουμε απαντήσεις. Πχ. select ?x where{ ex1:company ex1:hasEmployee ?x } Το “?” είναι το αναγνωριστικό των μεταβλητών ( Πχ ?x,?y, ?temp1, ?_temp )

SPARQL – Basics Ολες οι τριπλέτες σε ένα SPARQL query χωρίζοντε μεταξύ τους με “.”. Πχ. select ?x where{ ex1:company ex1:hasEmployee ?x. ?x ex1:employeeName “JOHN” }

SPARQL – Basics Όταν 2 ή περισσότερες τριπλέτες μοιράζοντε το ίδιο subject τότε μπορούμε να το παραλείψουμε χρησιμοποιώντας “;” Πχ. select ?x where{ ?x rdf:type ex1:Company ; ex:companyName “C1” ; ex:has }

SPARQL – Basics To keyword “a” της SPARQL χρησιμοποιείται για να δούμε τον τύπο ενός αντικειμένου (την κλάση του). Ουσιαστικά είναι μια συντομογραφία για το rdf:type. Πχ. select ?x where{ ?x a ex1:Company }

SPARQL – Basics Σε μία τριπλέτα δεδομένων του Rdf δεν είναι απραίτητο να δηλώνεται το subject ή το object. Αντί αυτων έχουμε τα λεγόμενα BLANK NODES. Μπορούμε δηλαδή να έχουμε δεδομένα της μορφής subject – predicate ή predicate object ( πχ “ :blank node employeeName “george” )

SPARQL – Query Structure Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus et magna. Fusce sed sem sed magna suscipit egestas.

SPARQL - Prefix Για να μην χρειάζεται να γράφουμε ολόκληρα τα URIs,όταν γράφουμε ένα query, χρησιμοποιούμε Prefixes στην αρχή του query. Μερικά σημαντικά URIs και τα prefixes που χρησιμοποιούμε : PREFIX owl: PREFIX xsd: PREFIX rdfs: PREFIX rdf: PREFIX time:

SPARQL - Prefix SELECT ?x WHERE{ ?x } Query με prefix : PREFIX book: SELECT ?x WHERE{ book:book1 book:hasWriter ?x } Query χωρίς prefix :

SPARQL - Select Με το SELECT επιλέγουμε το υποσύνολο που θέλουμε από τα δεδομένα που επιστρέφει η απάντηση. Πχ : 1) SELECT ?x WHERE { ?x ex1:hasEmployee ?y } Θα επιτρέψει μόνο τη χ μεταβλητή ( Πχ { Company1 }, { Company2 } ) 2) SELECT ?x, ?y WHERE { ?x ex1:hasEmployee ?y } Θα επιστρέψει και τις δύο μεταβλητές χ,y ( Πχ { Company1,Employee1 }, { Company2,Employee2 } 3) SELECT * WHERE { ?x ex1:hasEmployee ?y } Επιστρέφει πάντα όλες τις μεταβλητές!

SPARQL - Select Distinct To distinct το χρησιμοποιούμε για να εξαλείψουμε την εμφάνιση του ίδιου αποτελέσματος περισσότερες από μία φορές στη λύση. Πχ. Εστω ότι τα δεδομένα μας είναι: Company1 has Company1 has Company1 has

SPARQL - Select Distinct Εάν ρωτήσουμε με το query : Τα αποτελέσματα που θα πάρουμε θα είναι : Ενώ αν ρωτήσουμε με : Θα πάρουμε : SELECT ?x where { ?x ex:has ?y } {Company1}, {Company1}, {Company1} SELECT DISTINCT ?x where { ?x ex:has ?y } {Company1}

SPARQL - From Στο FROM επιλέγουμε το dataSet πάνω στο οποίο θέλουμε να ρωτήσουμε. Όταν δεν καθορίζουμε datasets τότε ρωτάμε στο default dataSet (ένας γράφος). Η SPARQL μας δίνει τη δυνατότητα να ρωτήσουμε στο default dataset και σε ένα σύνολο από named graphs που καθορίζονται από το URI τους.

SPARQL – Default Graph Καθορίζουμε το default graph : PREFIX ex: SELECT ?cname FROM WHERE { ?x ex:companyName ?cname }

SPARQL – Named Graphs Χρησιμοποιώντας named graphs : PREFIX ex: SELECT ?src ?cname FROM FROM NAMED WHERE { GRAPH ?src { ?x ex:companyName ?cname }

SPARQL – Named Graphs Παράδειγμα 2 : SELECT DISTINCT ?person WHERE { ?person ex:name ?name. GRAPH ?g1 { ?person a foaf:Person } GRAPH ?g2 { ?person a foaf:Person } GRAPH ?g3 { ?person a foaf:Person } FILTER( ?g1 != ?g2 && ?g1 != ?g3 && ?g2 != ?g3). }

SPARQL - WHERE triplets Filters Optional path expressions Unions Το WHERE keyword είναι optional ! Select ?x where { ?x ?y ?z }

SPARQL - Filters Tα filters χρησιμοποιούντε μέσα στο where clause για να εξαλείψουμε, χρησιμοποιώντας λογικές παραστάσεις, ανεπιθύμητα αποτελέσματα. Πχ. SELECT ?x, ?y WHERE{ ?x ex:takesSalary ?y FILTER( ?y > 1000 ) }

SPARQL - Filters Logical: !, &&, || Math: +, -, *, / Comparison: =, !=, >, <,... SPARQL tests: isURI, isBlank, isLiteral, bound SPARQL accessors: str, lang, datatype Other: sameTerm, langMatches, regex

SPARQL - Filters EXAMPLES : FILTER ( langMatches( lang( ?employeeName ), "EN")) FILTER ( ?date > “” ”” ^^xsd:date && ?date < “ ””^^xsd:date ) FILTER ( REGEX( ?name, “”opoulos” )

SPARQL – Optional Path Expressions Χρησιμοποιείται όταν θέλουμε να ανζητήσουμε προαιρετικά κάποια δεδομένα. ΠΑΡΑΔΕΙΓΜΑ : ΄Εστω ότι θέλουμε να πάρουμε τα δεδομένα όλων των εργαζομένων (employees) που δουλεύουν σε μια εταιρία ( Company1 )

SPARQL – Optional Path Expressions SELECT DISTINCT ?name, ?phone ? WHERE{ ?employee ex:worksfor ex:company1; ex:employeeName ?name; ex:employeePhone ?phone; ex:employee ? } Αυτός είναι ένας ΛΑΘΟΣ τρόπος να ζητάμε δεδομένα γιατί σε περίπτωση που κάποιος Υπάλληλος δεν έχει κάποιο από τα στοιχεία που ζητάμε τότε δεν θα επιστραφεί στην απάντηση! Πχ αν ένας υπάλληλος δεν έχει τότε το αποτέλεσμα αυτό “κόβεται”. Εμείς όμως θέλουμε όλους τους υπαλλήλους της εταιρίας. Η λύση είναι η χρήση του optional.

SPARQL – Optional Path Expressions SELECT DISTINCT ?name, ?phone ? WHERE{ ?employee ex:worksfor ex:company1; ex:employeeName ?name. optional { ?employee ex:employeePhone ?phone } optional { ?employee ex:employee ? } } Αυτός είναι o ΣΩΣΤΟΣ τρόπος. - Το Optional Μπορεί να χρησιμοποιηθεί και σε Nested queries: Πχ optional { optional { } } κτλ κτλ.

SPARQL - Union Το UNION το χρησιμοποιούμε για να πάρουμε την ένωση από κάποια set αποτελεσμάτων. Πχ. PREFIX ex1: PREFIX ex2: SELECT ?name WHERE { { ?employee ex1:employeeName ?name } UNION { ?employee ex2:employeeName ?name } }

SPARQL – MODIFIERS Χρησιμοποιούμε MODIFIERS για να καθορίσουμε/επιλέξουμε το υποσύνολο των αποτελεσμάτων που θέλουμε στην απάντηση. Βασικοί MODIFIERS : LIMIT – ORDER BY – OFFSET

SPARQL - Limit Το LIMIT το χρησιμοποιούμε για να περιορίσουμε τον αριθμό των αποτελεσμάτων που θα επιστραφούν. Πχ. SELECT DISTINCT ?x WHERE{ ?x a ex1:Company } LIMIT 50

SPARQL - Order By To ORDER BY χρησιμοποιείται για να ταξινομήσουμε τα αποτελέσματα (με βάση μια μεταβλητή ) με αύξουσα (ASC) ή φθίνουσα(DESC) σειρά. Πχ. SELECT DISTINCT ?x, ?y WHERE{ ?x ex:takesSalary ?y } ORDER BY DESC ( ?y ) LIMIT 50

SPARQL - Offset To OFFSET χρησιμοποιείται σε συνδιασμό με τα LIMIT και ORDER BY για να επιλέξουμε το υποσύνολο των αποτελεσμάτων που θέλουμε. Πχ. SELECT DISTINCT ?x, ?y WHERE{ ?x ex:takesSalary ?y } ORDER BY DESC ( ?y ) LIMIT 50 OFFSET 20

SPARQL – Usefull Links SPARQL W3C : query/ query/ SPARQL TUTORIAL S : ql-by-example/ ql-by-example/

Part IΙ: JENA Basics [34] Loading an Ontology [35-36] Reading & writing Ontology Data [37–40] Inference [41] Executing Queries [42] Links [43] Σύντομη περιγραφή των δυνατοτήτων της JENA Πως φορτώνουμε μια οντολογία ( με reasoner ή χωρίς ) Πως διαβάζουμε και γράφουμε δεδομένα σε μια Οντολογία ( classes, properties, statements κτλ ) Πως καλούμε ένα reasoner ( Παράδειγμα Pellet ) Πως εκτελούμε ένα SPARQL query μέσω JENA Περιεχόμενα Χρήσιμοι σύνδεσμοι για τη JENA

JENA - Basics To framework της JENA περιλαμβάνει : Ένα RDF API E να OWL API Δυνατότητα αποθήκευσης τόσο στη μνήμη όσο και στο δίσκο. Δυνατότητες Reasoning SPARQL query engine

JENA – Loading an Ontology public OntologyLoader(String fileName) { // ontology that will be used String ontologyUrl; setOntologyUrl("file:///" + fileName);// the third slash is needed for windows xp // create an empty ontology model model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL); // read the file model.read( ont ); } Simple ontology Loader :

JENA – Loading an Ontology public OntologyLoader(String fileName) { private String uri = ""; private String ontologyUrl; private String fileName; private OntModel ontModel; private OntDocumentManager dm; setOntologyUrl("file:///" + fileName);// the third slash is needed for windows xp OntModel base = ModelFactory.createOntologyModel(); //empty model dm = base.getDocumentManager();// used in this class dm.addAltEntry(uri, ontologyUrl);// used in this class base.read(uri); ontModel = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC,base); } Loading an Ontology With Pellet Reasoner.

JENA – Reading & Writing Data public void readClasses(){ ExtendedIterator iter = ontoModel.listClasses(); while(iter.hasNext()){ OntClass ontClass = iter.next(); System.out.println("CLASS : "+ontClass.getLocalName()); } Reading the Classes from the Model : OntClass newClass = model.getOntClass( classUrl ); Iterator instances = newClass.listInstances(); Reading the Instances of a Class from the Model :

JENA – Reading & Writing Data public void readProperties(){ ExtendedIterator iter = ontoModel.listDatatypeProperties(); ExtendedIterator iter2 = ontoModel.listObjectProperties(); while(iter.hasNext()){ DatatypeProperty dataProperty = iter.next(); System.out.println( dataProperty.getLocalName() ); } while(iter.hasNext()){ ObjectProperty objProperty = iter.next(); System.out.println( objectProperty.getLocalName() ); } Reading the Datatype & Object Properties from the Model :

JENA – Reading & Writing Data Public void readAllStatements(OntModel model){ StmtIterator iter; Statement stmt; iter = model.listStatements(); while (iter.hasNext()) { stmt = iter.next(); // Using the statement to read SUBJECT-PREDICATE-OBJECT Property predicate; Resource subject; RDFNode obj; subject = stmt.getSubject(); System.out.println("Subject = " + subject.getURI()); predicate = stmt.getPredicate(); System.out.println("Predicate = "+predicate.getLocalName()); obj = stmt.getObject(); System.out.println("Object = " + obj.toString()); } Reading Statements :

JENA – Reading & Writing Data... Model model; String namespace = " Resource res = model.createResource(" Property property1 = model.createProperty(namespace, “numOfEmployees"); res.addProperty(property1, 25); Property property2 = model.createProperty(namespace, “Location") res.addProperty( property2, “Athens"); Writing : Adding Statements to the model.

JENA – Inference // Creating the model using Pellet ontModel = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC,base); // Creating a new Pellet reasoner PelletInfGraph reasoner; reasoner = (PelletInfGraph) ontModel.getGraph(); // Calling the reasoner whenever needed Reasoner.clasify(); Reasoner.realize(); How to use the Pellet reasoner : [ Using the Ontology Loader from slide 37 ]

JENA – Executing a Query // Create a new query String queryString =“PREFIX ex1: ” + “SELECT ?x ” + “WHERE {” +“ ?x ex1:employeeName \”John\” }”; Query query = QueryFactory.create(queryString); // Execute the query and obtain results. model is an OntModel. QueryExecution qe = QueryExecutionFactory.create(query, model); ResultSet results = qe.execSelect(); // Output query results ResultSetFormatter.out(System.out, results, query); // Important – free up resources used running the query qe.close();

JENA – Links The JENA Framework : TUTORIAL για αρχάριους. Πως περνάμε τις βιβλιοθήκες της JENA στο Eclipse : IBM JENA Tutorial