Επεξεργασία Σημασιολογικού Περιεχομένου με Τεχνολογίες XML / RDF

Post on 02-Jan-2016

23 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Επεξεργασία Σημασιολογικού Περιεχομένου με Τεχνολογίες XML / RDF. Γλώσσα XQuery. XQuery: γλώσσα επεξεργασίας XML αρχείων W3C: www.w3c.org Είναι συναρτησιακή γλώσσα: βασίζεται σε εκφράσεις που επιστρέφουν τιμές . Χρησιμοποιεί το XML μοντέλο δεδομένων. - PowerPoint PPT Presentation

Transcript

Επεξεργασία Σημασιολογικού Περιεχομένου με Τεχνολογίες XML/RDF

-2-

Γλώσσα XQuery

XQuery: γλώσσα επεξεργασίας XML αρχείων W3C: www.w3c.org Είναι συναρτησιακή γλώσσα: βασίζεται σε εκφράσεις

που επιστρέφουν τιμές. Χρησιμοποιεί το XML μοντέλο δεδομένων. Οι εκφράσεις (expressions) XQuery επιστρέφουν μια

(διατεταγμένη) σειρά από κόμβους ή τιμές. Σημαντικό κομμάτι της XQuery είναι οι εκφράσεις

μονοπατιών (path expressions). Τα παραδείγματα που θα ακολουθήσουν βασίζονται στην

αναφορά D. Chamberlin, XQuery: an XML Query Language. IBM Systems Journal, 41(4), 2002.

-3-

XML Μοντέλο Δεδομένων

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-4-

XML Μοντέλο Δεδομένων

<?xml version = "1.0"?>

<bids>

<bid>

<itemno> 4</itemno>

<bidder> George </bidder>

<bid-amount> 150 </bid-amount>

<bid-date> 21/5/2005 </bid-date>

</bid>

<bid>

...

</bid>

</bids>

-5-

Εκφράσεις Μονοπατιών

document(“items.xml) /items Βρες το root element items (“/”).

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-6-

Εκφράσεις Μονοπατιών

document(“items.xml) /items/item Βρες όλα τα elements item που είναι παιδιά (‘/’) του root

element items (“/”).

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-7-

Εκφράσεις Μονοπατιών

document(“items.xml) //item Βρες όλα τα elements item (‘//’: απόγονος).

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-8-

Εκφράσεις Μονοπατιών

document(“items.xml) //item/seller Βρες όλα τα elements seller που είναι παιδιά του item

(‘//’: απόγονος).

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-9-

Εκφράσεις Μονοπατιών

document(“items.xml) //item/* Βρες όλα τα elements που είναι παιδιά του item.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-10-

Εκφράσεις Μονοπατιών

document(“items.xml) /item/* Βρες όλα τα elements που είναι παιδιά του root element

item (NULL!).

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-11-

Εκφράσεις Μονοπατιών

document(“items.xml) //* Βρες όλα τα elements.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-12-

Εκφράσεις Μονοπατιών

document(“items.xml) /*/*/seller Βρες όλα τα elements seller που έχουν 2 προγόνους.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-13-

Εκφράσεις Μονοπατιών

document(“items.xml) /items/item[2] Βρες το 2ο item παιδί του element items.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-14-

Εκφράσεις Μονοπατιών

document(“items.xml) //item[@status] Βρες όλα τα item elements που έχουν attribute status.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-15-

Εκφράσεις Μονοπατιών

document(“items.xml) //item[@status=‘new’] Βρες όλα τα item elements που έχουν attribute status με

τιμή ‘new’.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-16-

Εκφράσεις Μονοπατιών

document(“items.xml) //item[reserve-price>=100] Βρες όλα τα item elements που έχουν παιδί το reserve-

price element και το οποίο έχει value > 100.

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 3 </itemno>

<seller> Theo </seller>

<description> toy </description>

<reserve-price> 100 </reserve-price>

<end-date> 20/5/2005 </end-date>

</item>

<item status=“new”>

...

</item>

</items>

-17-

Κατασκευαστές

Οι εκφράσεις μονοπατιών έχουν ένα σημαντικό μειονέκτημα: επιστρέφουν κόμβους.

Θα θέλαμε να υπάρχει δυνατότητα κατασκευής καινούριων element, value, καθορισμού των σχέσεων μεταξύ elements (δηλαδή το αποτέλεσμα να μην είναι μεμονωμένοι κόμβοι, αλλά δέντρο κομμάτι του μοντέλου XML), κ.λ.π.

Για το λόγο αυτό η XQuery παρέχει κατασκευαστές (constructors):

{έκφραση XQuery} η έκφραση αποτιμάται και η {...} αντικαθίστανται

από το αποτέλεσμα.

-18-

Κατασκευαστές

Παραδείγματα κατασκευαστών:

<highbid status ''{$s}'‘> <itemno> {$i} </itemno> <bid-amount> {max($bids[itemno $i]/bid-amount)} </bid-amount></highbid>

<highbid>{$b/@status,$b/itemno,$b/bid-amount}</highbid>

-19-

Iterators (For)

Παράδειγμα For iterator:FOR $m in (2, 3), $n in (5, 10)

RETURN <fact> {$m} times {$n} is {$m * $n} </fact> Αποτέλεσμα

<fact> 2 times 5 is 10</fact>

<fact> 2 times 10 is 20</fact>

<fact> 3 times 5 is 15</fact>

<fact> 3 times 10 is 30</fact>

-20-

Iterators (For), Δέσιμο Μεταβλητών

Παράδειγμα For iterator με δέσιμο (binding) μεταβλητών:FOR $i in (1 to 3) LET $j := (1 to $i)

Αποτέλεσμα$i = 1, $j = 1

$i = 2, $j = (1, 2)

$i = 3, $j = (1, 2, 3) Το δέσιμο μεταβλητών σε For και Let δίνει την δυνατότητα

στην XQuery να διασχίζει το μοντέλο δεδομένων XML και να ψάχνει για πολλαπλά ταιριάσματα.

-21-

FLoWeRs!

F: FOR L: LET W: WHERE R: RETURN FLWR (προφέρεται flower) expressions

-22-

Παράδειγμα FLOWER 1 (lily)

Βρες αντικείμενα στα οποία έχουν δοθεί δύο προσφορές. Ερώτηση:

FOR $i in document(''items.xml'')/*/item

LET $b := document(''bids.xml'')/*/bid[itemno = $i/itemno]

WHERE count ($b) = 2

RETURN $i

bind

-23-

Παράδειγμα FLOWER 1 (lily)

<?xml version = "1.0"?>

<bids>

<bid>

<itemno> 1</itemno>

<bidder> George </bidder>

...

</bid>

<bid>

<itemno> 1 </itemno>

<bidder> Theo </bidder>

...

</bid>

<bid>

<itemno> 2 </itemno>

<bidder> George </bidder>

...

</bid>

</bids>

<?xml version = "1.0"?>

<items>

<item status=“old”>

<itemno> 1 </itemno>

....

</item>

<item status=“old”>

<itemno> 2 </itemno>

....

</item>

<item status=“old”>

<itemno> 3 </itemno>

....

</item>

-24-

Παράδειγμα FLOWER 2 (dahlia)

Για κάθε αντικείμενο στο οποίο έχουν δοθεί παραπάνω από δέκα προσφορές, φτιάξε ένα element popular-item που να περιέχει τον κωδικό του αντικειμένου, την περιγραφή και τον αριθμό των προσφορών.

Ερώτηση:FOR $i in document(''items.xml'')/*/itemLET $b := document(''bids.xml'')/*/bid[itemno = $i/itemno]WHERE count ($b) > 10RETURN<popular-item>{

$i/itemno,$i/description,<bid-count> {count ($b)} </bid-count>

}</popular-item>

-25-

Παράδειγμα FLOWER 3 (Chrysanthemum)

Έχοντας μια σειρά από elements emp, αντικατέστησε τον μισθό, την προμήθεια και τα bonus με ένα καινoύριο element pay που να περιέχει το άθροισμα των values των αρχικών elements, και βάλε σε αύξουσα σειρά το αποτέλεσμα με βάση το άθροισμα αυτό.

Ερώτηση:FOR $e in $empsRETURN<emp>

{ $e/name, <pay> {$e/salary + $e/commission + $e/bonus} </pay>}

</emp>sortby (pay)

-26-

Παράδειγμα FLOWER 4 (Blue Pansy)

Φτιάξε ένα νέο element με όνομα recent-large-bids που να περιέχει όλα τα elements bid στο κείμενο bids.xml που έχουν αριθμό προσφορών πάνω από 1000 και ημερομηνία τελευταίας προσφοράς μετά την 1/1/2002.

Ερώτηση:

<recent-large-bids>

document(''bids.xml'')/*/bid[bid-amount > 1000.00]

intersect

document(''bids.xml'')/*/bid[bid-date > date(''2002-01-01'')]

</recent-large-bids>

-27-

Παράδειγμα FLOWER 5 (Cream Pansy)

Φτιάξε ένα νέο element με όνομα recent-large-bids που να περιέχει όλα τα elements bid στο κείμενο bids.xml που έχουν αριθμό προσφορών πάνω από 1000 και ημερομηνία τελευταίας προσφοράς μετά την 1/1/2002.

Ερώτηση (με άλλον τρόπο):

<recent-large-bids>

document(''bids.xml'')/*/bid[bid-amount > 1000.00 and

bid-date > date(''2002-01-01'')]

</recent-large-bids>

-28-

Παράδειγμα FLOWER 6 (Shasta Daisies)

Βρες τα αντικείμενα στο αρχείο items.xml για τα οποία όλες οι προσφορές ήταν διπλάσιες από την τιμή εκκίνησης, και τοποθέτησέ τα μέσα σε ένα νέο element με όνομα underpriced-items.

Ερώτηση:

<underpriced-items>

FOR $i in document(''items.xml'')

WHERE every $b in document(''bids.xml'')/*/bid[itemno = $i/itemno] satisfies $b/bid-amount > 2 * $i/reserve-price

RETURN $i

</underpriced-items>

-29-

Παράδειγμα FLOWER 7 (Hemerocallis)

Όρισε μια συνάρτηση που να δέχεται ως παράμετρο ένα element item και μετά να βρίσκει το μεγαλύτερο ποσό προσφοράς που έχει καταγραφεί για το συγκεκριμένο αντικείμενο.

Ορισμός συνάρτησης:define function highbid(element $item)returns decimal{max(document(''bids.xml'')//bid[itemno = $item/itemno]/bid-amount)}

Χρήση:highbid(document(''items.xml'')//item[itemno = ''1234''])

-30-

...άλλες δυνατότητες

Συνθήκες τύπων $i instance of xs:integer

το xs:integer έρχεται από το XML schema $k instance of element item $l instance of element*

Switch εντολή typeswitch (expression) as $a

case element of type A return $a/state

... If εντολή ... και πάρα πολλά άλλα.

-31-

XML, RDF, OWL (σύνοψη προηγούμενης διάλεξης)

Ας κάνουμε μία σύνοψη σχετικά με το ρόλο και την χρησιμότητα των τεχνολογιών XML, RDF/S, OWL στην ανάπτυξη του Σημασιολογικού Ιστού:

XML. Παρέχει μόνο συντακτική πληροφορία. Δεν δίνει σημασιολογία. Διευκολύνει τον εντοπισμό και την επεξεργασία των δεδομένων, μαρκάροντάς τα με tags.

XML Schema. Επεκτείνει την XML με χρήση τύπων δεδομένων. Δεν δίνει σημασιολογία.

XQuery: πλήρης γλώσσα επεξεργασίας XML αρχείων.

RDF. Δηλώνει ιδιότητες και σχέσεις για αντικείμενα στον Ιστό (resources), π.χ. Web σελίδες. Δίνει απλή σημασιολογία.

RDF Schema. Eίναι τo σύστημα τύπων (type system) του RDF. Βασίζεται σε classes και properties. Ορίζει ιεραρχίες γενίκευσης. Δίνει ικανοποιητική σημασιολογία.

Θεωρείται πολύ σημαντικό εργαλείο του Σημασιολογικού Ιστού. Έχει ήδη διαθέσιμες πολλές γλώσσες ερωτήσεων.

-32-

XML, RDF, OWL (σύνοψη προηγούμενης διάλεξης)

Ας κάνουμε μία σύνοψη σχετικά με το ρόλο και την χρησιμότητα των τεχνολογιών XML, RDF/S, OWL στην ανάπτυξη του Σημασιολογικού Ιστού:

OWL. Παρέχει πλούσια σημασιολογική πληροφορία, αλλά... Το τίμημα είναι η δυσκολία σχεδιασμού γλωσσών ερωτήσεων.

RDF/S: τουλάχιστον 4 ολοκληρωμένες γλώσσες ερωτήσεων. OWL: 1??

Δύσκολη κατασκευή OWL αναπαραστάσεων: μέσω SW-authoring tools (χειροκίνητη διαδικασία), μέσω ημι-αυτόματης επεξεργασίας υπαρχόντων HTML σελίδων (πολύ δύσκολο!)

Προβλήματα στην επεκτασιμότητα. Συστήματα DL δουλεύουν σήμερα με ~100Κ κλάσεις, αλλά με πολύ απλή δομή.

-33-

Όλα μαζί!

Data Exchange

Semantics+reasoning

Relational Data

???

???

???

Επικεντρωνόμαστε λοιπόν εδώ!

-34-*…από Karvounarakis G., Alexaki S., Christophides V. Plexousakis D., Scholl M: RQL,A Declarative Query Language for RDF, WWW’02 Conf (pres. slides).

RDF/S (σύνοψη)

-35-

RDF/S (σύνοψη)

Property

Subclass/Subproperty

Literal

Class

createsArtist Artifact

Artist=domainOf(creates)Artifact=rangeOf(creates)

RDF resource

Painter&r5

&r5=instanceOf(Painter)

-36-

Γλώσσες ερωτήσεων για RDF/S

Τι χρειαζόμαστε: εκφράσεις μονοπατιών χρήση μεταβλητών για κόμβους αλλά και ακμές του γράφου

RDF/S δυνατότητα για δέσιμο (binding) μεταβλητών...

Mας τα δίνει και η XQuery (θυμηθείτε επίσης ότι το RDF/S έχει XML αναπαράσταση)!

Ναι, αλλά το μοντέλο δεδομένων XML δεν έχει την ίδια σημασιολογία με το RDF/S.

Όπως θα φανεί και σε παραδείγματα, η απάντηση σε ερωτήσεις περιλαμβάνει αρκετές φορές όχι μόνο τις άμεσα ανακτηθείσες κλάσεις αλλά και τις υποκλάσεις τους.

Θέλουμε επίσης η γλώσσα μας να χειρίζεται με ενιαίο τρόπο και το κομμάτι των απλών RDF statements (τα resources) αλλά και των RDFS statements (τις κλάσεις, την ιεραρχία τους, κ.λ.π.).

-37-

Γλώσσα ερωτήσεων RQL

ΙΤΕ/FORTH http://athena.ics.forth.gr:9090/RDF/ Karvounarakis G., Alexaki S., Christophides V.

Plexousakis D., Scholl M: RQL, A Declarative Query Language for RDF, WWW’02 Conf.

Είναι συναρτησιακή γλώσσα ερωτήσεων. Θυμίζει στην σύνταξη την OQL. Επίσης τα select, where, from που χρησιμοποιεί θα σας

θυμίσουν την SQL. Ξεκινάμε με τις αποκαλούμενες στην RQL basic

queries...

-38-

RQL basic queries

Βρες τις άμεσες υποκλάσεις της class Artist: subClassOf^(Artist) Αποτέλεσμα: Sculptor, Painter

Βρες τις υποκλάσεις της class Artist: subClassOf(Artist) Αποτέλεσμα: Sculptor, Painter και όλες τις υποκλάσεις τους (στο

παράδειγμα δεν έχουν) Βρες τo domain του property creates:

domain(creates) Αποτέλεσμα: Artist

-39-

RQL basic queries

Βρες τα resources που είναι instances της class Sculptor: ^Sculptor Αποτέλεσμα: &r5

Βρες τα resources που είναι instances της class Artist: ^Artist Αποτέλεσμα: κανένα!!

Βρες τα resources που είναι instances της class Artist ή κάποιας υποκλάσης της:

Artist Αποτέλεσμα: &r5

-40-

RQL schema queries

...συνεχίζουμε με schema queries, ερωτήσεις δηλαδή που αφορούν classes, properties, ιεραρχία από classes, κ.λ.π.

-41-

RQL schema queries (1)

Ποιές classes έχουν domain και range το property creates; SELECT $C1, $C2

FROM {$C1}creates{$C2} $...: μεταβλητή για κόμβους (classes) Αποτέλεσμα: (Artist, Artifact), (Artist, Painting), (Artist,

Sculpture), (Painter, Artifact), (Painter, Painting), (Painter, Sculpture), (Sculptor, Artifact), (Sculptor, Painting), (Sculptor, Sculpture)

-42-

RQL schema queries (2)

Ποιά properties εμπλέκουν την class Painter (δηλαδή είναι domain ή range);

SELECT @PFROM {$C}@PWHERE $C=Painter

@...: μεταβλητή για ακμές (properties) Αποτέλεσμα: creates, paints, lname, fname

-43-

RQL schema queries (3)

Βρες οτιδήποτε σχετίζεται με την class Painter (δηλαδή τα resources που ανήκουν σε αυτή, τις υπερκλάσεις της και τα property):

seq(Painter,superclassof^(Painter),SELECT @P, domain(@P), range(@P) FROM {;Painter}@P)

{;Painter}: επιστρέφει την class Painter και όλες τις υπερκλάσεις της (εδώ την Artist)

Αποτέλεσμα: (Painter, Artist, (paints, Painter, Painting),(creates, Artist, Artifact))

-44-

RQL schema queries (4)

Ποιά properties εμπλέκονται στις classes/literals που ανήκουν στο range του property creates; Βρες επίσης το domain και το range των properties αυτών.

SELECT $Y, @P, range(@P),FROM creates{$Y}.@P

‘.’: κάνει join μεταξύ όλων των class ($Y) που ανήκουν στο range του property creates και όλων των properties (@P)

Αποτέλεσμα: (Artifact, exhibited, Museum), (Painting, exhibited, Museum), (Sculpture, exhibited, Museum) (Painting, technique, string)

-45-

RQL data queries

...συνεχίζουμε με data queries, ερωτήσεις δηλαδή που αφορούν resources

-46-

RQL data queries (5)

Ποιά resources έχουν μεταβληθεί μετά το 2000; SELECT Χ

FROM Museum{X}.last_modified{Y}WHERE Y >= 01-01-2000

X, Y: μεταβλητές για resources Αποτέλεσμα: &r4

-47-

RQL data queries (6)

Βρες τα oνόματα των καλλιτεχνών των οποίων τα έργα τέχνης εκτίθενται σε μουσεία, μαζί με τις ονομασίες των μουσείων.

SELECT V, R, Y, ZFROM {X}creates.exhibited{Y}.title{Z},

{X}fname{V}, {X}lname{R}

-48-

RQL mixed query

...συνεχίζουμε με ένα παράδειγμα mixed query, ερώτησης δηλαδή που αφορά resources αλλά και classes, properties, ιεραρχία από classes, κ.λ.π.

-49-

RQL mixed query (7)

Βρες τις περιγραφές των resources των οποίων το URI περιέχει το ‘www.museum.es’.

SELECT X, (SELECT $W, (SELECT @P, Y FROM {X;$W}@P{Y})

FROM $W{X})FROM Resource{X} WHERE X like "www.museum.es"

-50-

RQL mixed query

Βρες τις περιγραφές των resources των οποίων το URI περιέχει το ‘www.museum.es’.

SELECT X, (SELECT $W, (SELECT @P, Y FROM {X;$W}@P{Y})

FROM $W{X})FROM Resource{X}WHERE X like "www.museum.es“

Για κάθε resource X, η μεταβλητή $W παίρνει τις classes των οποίων το Χ είναι instance.

Για κάθε τέτοια class $W, η μεταβλητή @P παίρνει όλα τα properties που έχουν $W στο domain και Χ ως source value ({X;$W}@P{Y})

-51-

Βρες τις περιγραφές των resources των οποίων το URI περιέχει το ‘www.museum.es’.

SELECT X, (SELECT $W, (SELECT @P, Y FROM {X;$W}@P{Y})

FROM $W{X})FROM Resource{X}WHERE X like "www.museum.es“Για κάθε resource X, η μεταβλητή $W παίρνει τις classes των οποίων το Χ είναι

instance.Για κάθε τέτοια class $W, η μεταβλητή @P παίρνει όλα τα properties που έχουν $W

στο domain και Χ ως source value ({X;$W}@P{Y})

&r4Αποτέλεσμα

-52-

RQL

Δυo λόγια για την υλοποίηση: Validating RDF Parser (VRP): RDF Parser RDF Schema Specific DataBase (RSSDB): Object-

Relational (SQL3) αναπαράσταση RDF/S (Postgres DBMS).

RDF Query Language (RQL)

-53-

Άλλες γλώσσες ερωτήσεων για RDF/S

SeRQL http://www.openrdf.org/ παρόμοια (έως ίδια!) σύνταξη με την RQL ήδη μέρος της RQL έχει ενσωματωθεί στο σύστημα

Sesame που υλοποιεί την SeRQL select-from-where σύνταξη

-54-

Άλλες γλώσσες ερωτήσεων για RDF/S

Triple http://triple.semanticweb.org/ Βασίζεται σε F-Logic Tα statements του RDF (R1,P,R2) (resource, property, resource)

αναπαριστώνται με εκφράσεις του τύπου R1[P-->R2] Θυμίζει PROLOG: οι ερωτήσεις έχουν την μορφή κανόνων που

έχουν μεταβλητές στις οποίες ανατίθενται τιμές και ελέγχεται αν ικανοποιούν τις εκφράσεις R1[P-->R2] που έχουν οριστεί.

Παράδειγμα: FORALL X <- ( X[rdfs:label-->’museum’] ),

επιστρέφει όλα τα resources ‘museum’ FORALL C <- C[rdfs:subClassOf -> Artist]@rdfschema(museums),

επιστρέφει όλες τις υποκλάσεις της class Artist

-55-

Άλλες γλώσσες ερωτήσεων για RDF/S

RDQL http://www.w3.org/Submission/2004/SUBM-RDQL-

20040109/ W3C πρόταση select-where σύνταξη Παράδειγμα:

select ?p where (?p, <rdfs:label>, ‘museum’ ) βρίσκει όλα τα resources ‘museum’ (η ?p είναι μεταβλητή).

Δεν δουλεύει για RDF σχήματα!

-56-

Η πλατφόρμα RDFScuplt

RDFSculpt Z. Kaoudi, T. Dalamagas, T. Sellis, RDFSculpt: Managing

RDF Schemas under Set-like Semantics , ESWC’05 Conf. Η πλατφόρμα παρέχει δυνατότητες για πράξεις πάνω σε

RDFS σχήματα: επιλογή/προβολή ένωση τομή διαφορά

-57-

Η πλατφόρμα RDFScuplt

Παράδειγμα πράξης ‘επιλογή’

Επιλέγουμε τις κλάσεις: Actor, Producer, Movie

-58-

Η πλατφόρμα RDFScuplt

Παράδειγμα πράξης ‘επιλογή’

Αποτέλεσμα

-59-

Η πλατφόρμα RDFScuplt

Παράδειγμα πράξης ‘ένωση’

Σ1

Σ2

Σ1 U Σ2

-60-

Η πλατφόρμα RDFScuplt

Παράδειγμα πράξης ‘τομή’

Σ1 Σ2

Σ2

Σ1

-61-

Η πλατφόρμα RDFScuplt

Παράδειγμα πράξης ‘διαφορά’

Σ1 - Σ2

Σ2

Σ1

-62-

Η πλατφόρμα RDFScuplt

Οι πράξεις αντιμετωπίζουν τα RDF σχήματα ως πολίτες πρώτης τάξης.

Χρησιμοποιείται σημασιολογία ένωσης, τομής και διαφοράς.

Μπορούν να ενσωματωθούν σε οποιαδήποτε γλώσσα ερωτήσεων για RDF σχήματα.

Έχει υλοποιηθεί πάνω στην RQL στο εργαστήριο. Εφαρμογές:

Πύλες καταλόγων, π.χ. βρες το κομμάτι μιας ιεραρχίας RDFS που δεν υπάρχει στο δικό μου και ένωσέ το με το δικό μου ώστε να το έχω και εγώ.

top related