SPARQL. Χρήστος Παπαθεοδώρου Αναπληρωτής Καθηγητής

Σχετικά έγγραφα
Εργαστήριο Σημασιολογικού Ιστού

Τεχνολογίες RDF για τον Ιστό Δεδοµένων

Εργαστήριο Σημασιολογικού Ιστού

Εργαστήριο Σημασιολογικού Ιστού

Εργαστήριο Σημασιολογικού Ιστού

(Πρωτόγνωρα) Δεδομένα για την Οικονομία

Τμήμα Πληροφορικής ΑΠΘ

Σημασιολογικός Ιστός RDF(S) OWL Οντολογίες. Pervasive Computing Research Group

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

Εργαστήριο Σημασιολογικού Ιστού

(Πρωτόγνωρα) Δεδοµένα για την Οικονοµία

ΝΙΚΟΛΑΟΥ ΔΙΑΜΑΝΤΟΠΟΥΛΟΥ ΝΙΚΟΛΑΟΥ ΚΥΡΤΑΤΑ

example:alice example:knows example:bob example:alice example:name "Alice" example:alice example:bob example:knows

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Σχεδίαση Βάσεων Δεδομένων

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

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

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 9: Βάσεις NoSQL

SQL Data Manipulation Language

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής


Βάσεις Δεδομένων ΙΙ. Διάλεξη 5 η XML και ΒΔ στο Διαδίκτυο

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Linked Data for the Masses: Η προσέγγιση και το λογισμικό

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

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Εισαγωγή(στη(γλώσσα(XML(

Επιχειρησιακό Πρόγραμμα «Ψηφιακή Σύγκλιση»

Π Τ Υ Χ Ι Α Κ Η / Δ Ι Π Λ Ω Μ ΑΤ Ι Κ Η Ε Ρ ΓΑ Σ Ι Α

Εργαστήριο Σημασιολογικού Ιστού


Μεταδεδομένα στο Ψηφιακό περιβάλλον

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη

Σχεδιασμός Βάσεων Δεδομένων

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

Βάσεις Δεδομένων (Databases)

Μεταπτυχιακή Διατριβή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

SEMANTIC ANNOTATION OF WEBPAGES WITH RDFa PUBLICATION METADATA : 1974

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

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

Σημασιολογικός Ιστός (Semantic Web) - XML

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Lecture 14: SQL DML I

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

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

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

SQL Data Manipulation Language

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αρχεία και Βάσεις Δεδομένων

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Regular Expressions ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Πολιτισμική Πληροφορική: Οργάνωση και διαχείριση Πληροφοριών

Εργαστήριο Σημασιολογικού Ιστού

Προγραμματισμός Ι (ΗΥ120)

Ατοµική ιπλωµατική Εργασία. Υλοποίηση της MashQL στο πλαίσιο του πλοηγού Firefox. Αντρέας Μανώλη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Εισαγωγή στην πληροφορική

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Η Τεχνολογία στις Συνεργασίες των Βιβλιοθηκών

Εισαγωγή στον Προγ/μό Υπολογιστών

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

Εργαστήριο #10 (Ε10) 1

Γράφοι τριάδων και το πρότυπο RDF

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

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ ΕΙΔΙΚΕΥΣΗΣ (MSc) στα ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΠΛΩΜΑΤΙKH ΕΡΓΑΣΙΑ

Βάσεις Δεδομένων Σύνθετα SQL queries

Επεξεργασία Ερωτήσεων

Διδάσκων: Παναγιώτης Ανδρέου

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 5 21/02/2012

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

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

ΜΑΘΗΜΑ 6. Σχήµατα ιαλειτουργικότητας Μεταδεδοµένων. Το RDF Το Warwick Framework. Ιόνιο Πανεπιστήµιο - Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Συστήματα Διαχείρισης Βάσεων Δεδομένων

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Διαχείριση Κατανεμημένων Δεδομένων στο. Διαδίκτυο

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Επεξεργασία Ερωτήσεων

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

ΕΠΛ 012. JavaScripts

Επεξεργασία Ερωτήσεων

Τμήμα Πληροφορικής ΑΠΘ

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Βάσεις Δεδομένων (Databases)

Transcript:

SPARQL Χρήστος Παπαθεοδώρου (papatheodor@ionio.gr) Αναπληρωτής Καθηγητής Ομάδα Βάσεων Δεδομένων και Πληροφοριακών Συστημάτων, Τμήμα Αρχειονομίας Βιβλιοθηκονομίας, Ιόνιο Πανεπιστήμιο και Μονάδα Ψηφιακής Επιμέλειας, Ινστιτούτο Πληροφοριακών Συστημάτων και Προσομοίωσης Ερευνητικό Κέντρο «Αθηνά»

Εισαγωγή RDFγράφοι: (υποκείμενο, κατηγόρημα, αντικείμενο)που προέρχονται από RDF τεκμήρια, XML ή σχεσιακές βάσεις δεδομένων SPARQL: γλώσσα επερωτήσεων και πρωτόκολλο για την ανάκτηση πληροφορίας από RDF γράφους με μορφή URI, κενών κόμβων και τιμών (literals) εξαγωγή RDF υπογράφων δημιουργία νέων RDF γράφων που βασίζονται στην πληροφορία των επερωτώμενων γράφων Βασική τεχνική η δημιουργία υποδείγματος γράφου (graph pattern) για το οποίο γίνεται αναζήτηση/ταίριασμα σε ένα RDF γράφο 2

Χρήσεις Εύρεση τιμών από μερικώς γνωστούς γράφους Ανάκτηση πληροφορίας για ένα αντικείμενο με μη γνωστές ιδιότητες (properties) Εκτέλεση επερωτήσεων σε RDF γράφους Εκτέλεση επερωτήσεων με περιορισμούς σύμφωνα με τον τύπο των δεδομένων Ερώτηση σε απομακρυσμένους RDF servers Χρήση RDF query service σε Web Services 3

Παράδειγμα Data: <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> "SPARQL Tutorial Query: χρησιμοποιούμε μια μεταβλητή στη θέση του υποκειμένου, κατηγορήματος, αντικειμένου δύο μέρη SELECT clause, WHERE clause SELECT?title WHERE { <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title>?title } Query Result:ένας RDF γράφος (που επαληθεύει το) γράφο επερώτησης (query graph) title SPAQL Tutorial 4

Σύνταξη (1/2) IRI: περικλείονται σε <> τα IRI μπορεί να είναι URI, Qnames (ζεύγος "x:p {URI, local-name}, π.χ.{"http://example.com/ns/foo", "p"}.) PREFIX:δεσμεύει ένα πρόθεμα σε ένα namespace IRI. PREFIX foaf: http://xmlns.com/foaf/0.1/ BASE: δηλώνει ένα βασικό IRI, που χρησιμοποιείται για την ανάλυση δήλωση σχετικών IRI BASE <http://example.org/book/> PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT?title WHERE { <book1> dc:title?title } Μεταβλητές: δηλώνονται με πρώτο χαρακτήρα τα «?» ή «$». Το $abc και το?abc είναι η ίδια μεταβλητή. Απλοί όροι (literals):δηλώνονται με ή. Μπορούν να φέρουν ετικέτα της γλώσσας που ανήκουν ("Literal"@language) ή τον τύπο δεδομένων που ανήκουν ("10"^^xsd:integer) Υποδείγματα (patterns) RDF τριάδων: περικλείονται από {}. Οι τελείες «.» διαχωρίζουν τα υποδείγματα τριάδων Στα υποδείγματα τριάδων με κοινό υποκείμενο βάζουμε (;) έτσι ώστε το υποκείμενο στο ερώτημα να γράφεται μόνο μία φορά. Π.χ?x foaf:name?name ; =?x foaf:name?name. foaf:mbox?mbox.?x foaf:mbox?mbox Στα υποδείγματα τριάδων με κοινό υποκείμενο και κατηγόρημα, τα αντικείμενα διαχωρίζονται με (,)?x foaf:nick Alice, Alice_ =?x foaf:nick Alice.?x foaf:nick Alice_ 5

Σύνταξη (2/2) Κενοί κόμβοι Το υπόδειγμα :a :b [ :c :d ] είναι ίσο με :a :b _:x. _:x :c :d. για τον κενό κόμβο _:x RDF Collections :a :b ( :c :d :e :f ) που αποτελούν σύντμηση πολλών τριάδων 6

Αναζήτηση Προσδιορισμός ενός συνόλου από αντικαταστάσεις μεταβλητών με τιμές έτσι ώστε να δημιουργείται ένα υποσύνολο τριάδων ενός RDF γράφου Data @prefix foaf: <http://xmlns.com/foaf/0.1/>. _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@example.net>. _:b foaf:name "Bob". Query 1 PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name WHERE {?x foaf:name?name } ORDER BY ASC[?name] Query 2 PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name WHERE {?person foaf:mbox <mailto:alice@example.net>.?person foaf:name?name. } Results 1 name Results 2 Alice Bob name Alice 7

Περιορισμοί τιμών Περιορίζουν τις τιμές στις λύσεις των επερωτήσεων FILTER?x < 3. Βασίζονται στα XQuery 1.0 and XPath 2.0 Function and Operators Εφαρμόζονται στους τύπους δεδομένων XSD boolean, string, integer, decimal, float, double, datetime BOUND, isuri, isblank, isliteral, REGEX, LANG, DATATYPE, STR (lexical form) Τελεστές σύγκρισης τιμών: <, >, =, <=, >= και!= 8

Παράδειγμα @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix stock: <http://example.org/stock#>. @prefix inv: <http://example.org/inventory#>. stock:book1 dc:title "SPARQL Query Language Tutorial". stock:book1 inv:price 10. stock:book1 inv:quantity 3. stock:book2 dc:title "SPARQL Query Language (2nd ed)". stock:book2 inv:price 20 ; inv:quantity 5. book stock:book1 title SPARQL Query Language Tutorial" stock:book3 dc:title "Moving from SQL to SPARQL". stock:book3 inv:price 5 ; inv:quantity 0. stock:book4 dc:title "Applying XQuery". stock:book4 inv:price 20 ; inv:quantity 8. PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX stock: <http://example.org/stock#> PREFIX inv: <http://example.org/inventory#> SELECT?book?title WHERE {?book dc:title?title.?book inv:price?price. FILTER?price < 15.?book inv:quantity?num. FILTER?num > 0. } 9

OPTIONAL Η RDF αφορά σε ημιδομημέναδεδομένα (semi structured) Δεν προβλέπει περιορισμούς ακεραιότητας δεδομένων (integrity constraints) Με δεδομένο ότι η ποιότητα των πηγών μεταδεδομένωνμπορεί να ποικίλει, μια γλώσσα επερωτήσεων πρέπει να προσθέτει πληροφορία, προκειμένου να μην αποτύχουν οι επερωτήσεις λόγω ελλειπούς πληροφορίας Η έκφραση OPTIONAL{pattern} είναι ίση με {pattern} OR{ NOT(pattern)} 10

Παράδειγμα 1 Το κατηγόρημα nick δεν έχει τιμή όταν το κατηγόρημα name έχει τιμή "Bob" γιατί δεν υπάρχει αντίστοιχη τριάδα _:b με κατηγόρημα nick @prefix foaf: <http://xmlns.com/foaf/0.1/>. _:a foaf:name "Alice". _:a foaf:nick "A-online". _:b foaf:name "Bob". PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name?nick WHERE {?x foaf:name?name. OPTIONAL {?x foaf:nick?nick } } name Alice nick A-online Bob 11

Φωλιασμένα OPTIONAL @prefix foaf: <http://xmlns.com/foaf/0.1/>. @prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>. _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example>. _:a vcard:n _:x. _:x vcard:family "Hacker". _:x vcard:given "Alice". _:b foaf:name "Bob". _:b foaf:mbox <mailto:bob@work.example>. _:b foaf:n _:z. _:z vcard:family "Hacker". _:e foaf:name "Ella". _:e vcard:n _:y. _:y vcard:given "Eleanor". 12

Φωλιασμένα OPTIONAL (query) PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT?foafName?mbox?gname?fname WHERE {?x foaf:name?foafname. OPTIONAL {?x foaf:mbox?mbox }. OPTIONAL {?x vcard:n?vc.?vc vcard:given?gname. OPTIONAL {?vc vcard:family?fname } } } 13

Φωλιασμένα OPTIONAL (results) foafname mbox gname fname Alice <mailto:alice@work.example> "Alice" "Hacker" Bob <mailto:bob@work.example> Ella "Eleanor" Ανακτά το nameκαι αν υπάρχουν τα mbox, το vcard given nameκαι το vcard Family name Φωλιάζοντας το υπόδειγμα που περιέχει το vcard:family, η επερώτηση ανακτά δεδομένα μόνο αν υπάρχει το κατηγόρημα vcard:n 14

OPTIONAL με περιορισμούς @prefix dc: <http://purl.org/dc/elements/1.1/>. @prefix : <http://example.org/book/>. @prefix ns: <http://example.org/ns#>. :book1 dc:title "SPARQL Tutorial". :book1 ns:price 42. :book2 dc:title "The Semantic Web". :book2 ns:price 23. PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX ns: <http://example.org/ns#> SELECT?title?price WHERE {?x dc:title?title. OPTIONAL {?x ns:price?price. FILTER (?price < 30) } title price "SPARQL Tutorial" "The Semantic Web 23 15

UNION Η SPARQL παρέχει τη δυνατότητα συνδυασμού των υποδειγμάτων RDF γράφων έτσι ώστε να ανακτώνται περισσότερα από ένα εναλλακτικά υποδείγματα σε ένα RDF γράφο Η δυνατότητα αυτή παρέχεται από τη δήλωση UNION 16

Παράδειγμα UNION @prefix dc10: <http://purl.org/dc/elements/1.0/>. @prefix dc11: <http://purl.org/dc/elements/1.1/>. _:a dc10:title "SPARQL Query Language Tutorial". _:b dc11:title "SPARQL Protocol Tutorial". _:c dc10:title "SPARQL". _:c dc11:title "SPARQL". Query: PREFIX dc10: <http://purl.org/dc/elements/1.0/> PREFIX dc11: <http://purl.org/dc/elements/1.1/> SELECT DISTINCT?title WHERE { {?book dc10:title?title } UNION {?book dc11:title?title } } Ανακτά τους τίτλους των βιβλίων που έχουν περιγραφεί είτε με την έκδοση 1.0 είτε με την έκδοση 1.1. του Dublin Core Η SELECT DISTINCT εξασφαλίζει μοναδικές τιμές στους τίτλους title "SPARQL Protocol Tutorial" "SPARQL Query Language Tutorial" "SPARQL 17

Εναλλακτικά PREFIX dc10: <http://purl.org/dc/elements/1.0/> PREFIX dc11: <http://purl.org/dc/elements/1.1/> SELECT?x?y WHERE { {?book dc10:title?x } UNION {?book dc11:title?y } } x y "SPARQL" "SPARQL Protocol Tutorial" "SPARQL" "SPARQL Query Language Tutorial 18

Ανακεφαλαίωση Ένα υπόδειγμα (pattern)αναζητά RDF δεδομένα (δηλ. Εξετάζεται αν ταιριάζει σε ένα μέρος ενός RDF γράφου) Κάθε φορά που ένα υπόδειγμα ταιριάζει σε ένα RDF υπό-γράφο τότε υπάρχει λύση Η ακολουθία των λύσεων μπορεί να περιορισθεί από:project, distinct, order, limit/offset Limit: ακέραιος που προσδιορίζει το πλήθος των απαντήσεων Offset: ακέραιος που ορίζει από που να αρχίσει η παράθεση των απαντήσεων Μορφές αποτελεσμάτων: SELECT: αποδίδει τιμές σε μεταβλητές (bindings) CONSTRUCT: δημιουργεί ένα RDF υπό-γράφο με τις τιμές που αποδίδονται στις μεταβλητές DESCRIBE:δημιουργεί RDF γράφο που περιγράφει τους πόρους που ανακτώνται ASK: απαντά με μια true ή false τιμή 19

Εισαγωγή γράφων Για καλύτερη διαχείριση των δεδομένων δίνεται δυνατότητα εισαγωγής γράφων: alicefoaf.ttl: _:a foaf:name "Alice". _:a foaf:mbox <mailto:alice@work.example.com>. _:a foaf:mbox <mailto:alice@home.example.org>.... bobfoaf.ttl: _:c foaf:mbox <mailto:bob@work.example.com>. _:c foaf:name "Robert". _:c foaf:nick "bob".... 20

Τύποι RDF δεδομένων Υπάρχουν δύο μορφές RDF datasets: η προκαθορισμένη (default) και οι named graphs. FROM <http://example.org/base.rdf> FROM NAMED <http://example.org/data1.rdf> FROM NAMED <http://example.org/data2.rdf>... Η λέξη GRAPHδίνει πρόσβαση σε named graphs 21

Αναζήτηση σε πολλούς γράφους PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?graph WHERE GRAPH?graph { }?x foaf:name "Alice". Επιστρέφει τα URIs των γράφων που περιέχουν τριάδες για το όνομα της Alice 22

Αναζήτηση σε συγκεκριμένο γράφο PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?name WHERE GRAPH ex:alicefoaf.ttl { }?x foaf:name?name 23

Παράδειγμα 1 BASE <http://www.w3.org/2004/talks/17dec-sparql/data/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT?person?name?mbox FROM NAMED <alicefoaf.ttl> FROM NAMED <bobfoaf.ttl> FROM NAMED <celinefoaf.ttl> FROM NAMED <danfoaf.ttl> FROM NAMED <evefoaf.ttl> WHERE { GRAPH?g {?person rdf:type foaf:person; foaf:name?name; foaf:mbox?mbox }. } Ανάκτηση των name και τωνmbox όλων των ανθρώπων 24

Παράδειγμα 2 BASE <http://www.w3.org/2004/talks/17dec-sparql/data/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT DISTINCT?name?mbox FROM NAMED <alicefoaf.ttl> FROM NAMED <bobfoaf.ttl> FROM NAMED <celinefoaf.ttl> FROM NAMED <danfoaf.ttl> FROM NAMED <evefoaf.ttl> WHERE { GRAPH?g {?person rdf:type foaf:person. OPTIONAL {?person foaf:name?name }. OPTIONAL {?person foaf:mbox?mbox } }. } ORDER BY ASC[?name] Ανάκτηση όλων των ανθρώπων, αν υπάρχουν τα ονόματά τους ή τα mboxes, χωρίς επαναλήψεις και ταξινομημένα κατά αύξουσα τάξη 25