H εντολή που συσχετίζει ένα αρχείο XML με το αρχείο μορφοποίησης έστω "filename.xsl" είναι :



Σχετικά έγγραφα
ΑΝΑΠΑΡΑΣΤΑΣΗ ΓΝΩΣΗΣ ΣΤΟΝ ΠΑΓΚΟΣΜΙΟ ΙΣΤΟ

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

BibConvert μετατροπές LOM

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

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

Aναπαράσταση Γνώσης στο Σημασιολογικό Ιστό

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

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

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

Ιστορικοί χάρτες στον Παγκόσμιο Ιστό

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

Περιεχόμενα. Κατάλογος εικόνων 13. Πρόλογος Το όραμα του Σημασιολογικού Ιστού 19

Δικησοκενηρικά Πληροθοριακά Σσζηήμαηα

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

ΜΑΘΗΜΑ 5. Ιόνιο Πανεπιστήµιο - Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Tεχνολογίες των Πληροφοριών σε ψηφιακό περιβάλλον: Τα εργαλεία

Ψηφιοποιημένο Αρχείο Ελληνικής Μουσικής Από την απομόνωση στην εποχή των δικτύων και της διάδοσης της πληροφορίας

ιαχείριση Γνώσης σε Ενδοεπιχειρισιακά ίκτυα και το ιαδίκτυο (ΗΥ-566)

Ανάπτυξη Οντολογικής Γνώσης για Τεκμηρίωση Οπτικοακουστικού Περιεχομένου ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ιαχείριση Γνώσης σε Ενδοεπιχειρισιακά ίκτυα και το ιαδίκτυο (ΗΥ-566)

Μάθηµα 6. Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας

«Χρήση των μοντέλων OWL και OWL-S σε εφαρμογές ηλεκτρονικής διακυβέρνησης»

Γλώσσες Αναπαράστασης Γνώσης στο Σημασιολογικό Ιστό Γιώργος Στοΐλος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εθνικό Μετσόβιο Πολυτεχνείο

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

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

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

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

Άσκηση RDF Schema. <book:publisher rdf:id="penguin_pub"> <book:publishes rdf:resource="#book20"/> </book:publisher>

Ιόνιο Πανεπιστήμιο - Τμήμα Αρχειονομίας - Βιβλιοθηκονομίας

Γραφικό Περιβάλλον Μοντελοποίησης Οντολογιών και Μεταδεδοµένων RDF στο Σηµασιολογικό ιαδίκτυο

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

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

Γραφικό Περιβάλλον Οπτικής Απεικόνισης Οντολογιών RDF Schema στο Σημασιολογικό Ιστό

elements ΕΛΟΤ ΠΡΟΣΟΧΗ!!! Το παρόν υποβολής

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

ΝΤUA. Τεχνολογία Πολυμέσων

Διακιρυξθ Διαγωνιςμοφ για το Ζργο ΨΘΦΙΑΚΘ ΠΕΡΙΘΓΘΘ ΣΟ ΠΟΛΙΣΙΣΙΚΟ ΚΑΙ ΙΣΟΡΙΚΟ ΑΡΧΕΙΟ ΣΟΤ ΧΑΪΔΑΡΙΟΤ

Πολυτεχνική Σχολή Πανεπιστηµίου Πατρών Τµήµα Μηχανικών Η/Υ και Πληροφορικής. Μεταπτυχιακό ίπλωµα Ειδίκευσης στην «Επιστήµη και Τεχνολογία Υπολογιστών»

Μια εισαγωγή στην XSL

ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

Ψηφιοποίηση και Ψηφιακή Επεξεργασία Εικόνας

Αναπαράσταση και διαχείριση χρονικά εξαρτώμενης πληροφορίας στις πολιτιστικές συλλογές

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Παρουσίαση της SPARQL με χρήση του Jena Adapter για Oracle. Αρ. Μητρώου: 04/2566

Διασύνδεση Βιβλιογραφικών Αναφορών της DBpedia σε άλλες Βιβλιογραφικές Βάσεις

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

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

Σχεδίαση Βάσεων. Τεχνητά, Σύνθετα, και Δευτερεύοντα Μοναδικά Χαρακτηριστικά (UIDs, Unique IDentifiers) Artificial, Composite, and Secondary UIDs

Δομημένη Αναπαράσταση Πληροφοριών

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

Σηµασιολογικό Ιστό. Αλέξανδρος Βαλαράκος Αιγαίου.

Αναπαράσταση Γνώσης και Αναζήτηση στον Σηµασιολογικό Ιστό

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

Διαχείριση Πολιτισμικών Δεδομένων

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

ΔΙΠΛΩΜΑΤΙKH ΕΡΓΑΣΙΑ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ ΕΙΔΙΚΕΥΣΗΣ (MSc) στα ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Τσατσανιά Παρασκευή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Γλωσσική Τεχνολογία. HTML/XML Processing HTTP Services

4.1 Τεχνικές Προδιαγραφές (Technical Specifications)

ΔΝΓΔΙΚΣΙΚΔ ΑΠΑΝΣΗΔΙ 3 εο ΓΡΑΠΣΗ ΔΡΓΑΙΑ

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

ΝΤUA. Τεχνολογία Πολυμέσων

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 5: XML. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

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

12/4/2015. Τα συστατικά μιας ψηφιακής βιβλιοθήκης ονομάζονται «ψηφιακά αντικείμενα»(digital objects) ή«πόροι»(resources)

Εργαστήριο Ψηφιακών Βιβλιοθηκών και Ηλεκτρονικής Δημοσίευσης. Ψαρράκης Μάρκος Αγάθος Μιχάλης ΚΕΡΚΥΡΑ 2012

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

Σύγκριση Προγραµµατιστικών ιεπαφών (APIs) για διαχείριση Οντολογιών Ιστού και Ανάπτυξη Μηχανισµού υποβολής Ευφυών Ερωτηµάτων

Σε παγκόσμιο επίπεδο, οιμηχανέςαναζήτησηςτουinternet αναπτύχθηκαν για να κάνουν αναζήτηση πληροφοριών σε πολλαπλές τοποθεσίες ιστού.

Πολυτεχνείο Κρήτης. Τμήμα Ηλεκτρονικών Μηχανικών & Μηχανικών Υπολογιστών

Αρµεναντζόγλου Νίκος ΜΕΤ εµενεοπούλου Κατερίνα ΑΜ:1596 Μαρκετάκης Γιάννης MET

SGML (Standard Generalized Markup Language) HTML (HyperText Markup Language) XML (extensible Markup Language)

Dublin Core. Χρήστος Παπαθεοδώρου

Ταυτότητα ψηφιακών αντικειμένων σε πληροφοριακά δίκτυα. Digital object identifiers (doi) in information networks

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 6: XSL. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Τίτλος Εργασίας Εκπαιδευτικού Σεναρίου

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ(M.I.S.)

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

Liner Shipping Hub Network Design in a Competitive Environment

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Δημοσίευση Δεδομένων Επιστημονικών Δημοσιεύσεων ως Ανοιχτά Διασυνδεδεμένα Δεδομένα. Λιοτήρη Ευαγγελία. Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής

Οντολογίες γενικά. Ορισμοί Εφαρμογές Πρότυπα/Γλώσσες Διαχείριση οντολογιών Semantic Web

Digital Object Identifer (DOΙ),

ΣΧΕΔΙΑΣΜΟΣ & ΥΛΟΠΟΙΗΣΗ ΤΟΥ GRAMOFONE: ΕΝΑ ΓΡΑΦΙΚΟ ΕΡΓΑΛΕΙΟ ΕΠΕΞΕΡΓΑΣΙΑΣ ΟΝΤΟΛΟΓΙΩΝ ΒΑΣΙΣΜΕΝΟ ΣΤΟ ΠΡΟΤΥΠΟ MOF. Γιαννόπουλος Νικόλαος

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

ΕΡΕΥΝΗΤΙΚΟ ΚΕΝΤΡΟ ΚΑΙΝΟΤΟΜΙΑΣ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ & ΤΗΣ ΓΝΩΣΗΣ «ΑΘΗΝΑ» ΙΝΣΤΙΤΟΥΤΟ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ LODGOV

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

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

@ BY AVENUES PRIVATE INSTITUTE JUNE 2014

κεφάλαιο 3 Η ΓΛΩΣΣΑ XML Εισαγωγή

ΝΤUA. Τεχνολογία Πολυμέσων

MARC. Dublin Core Qualified Europeana Semantic Elements Europeana Data Model

Βάσεις Δεδομένων Ι Εξεταστική Περίοδος Φεβρουαρίου 2006

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

FINAL TEST B TERM-JUNIOR B STARTING STEPS IN GRAMMAR UNITS 8-17

Δημιουργία Ψηφιακών Συλλογών με Omeka

Διαχείριση Έργων Πληροφορικής Εργαστήριο

Transcript:

1. XML και XSL Η γλώσσα XML (Extensible Markup Language) είναι μια γλώσσα περιγραφής περιεχομένου, δηλαδή μια γλώσσα με την οποία προσδιορίζονται ελεύθερα και απεριόριστα διάφοροι τύποι περιεχομένου π.χ. title, artist, country, company, price και year για ένα κατάλογο CD s. Ένα αρχείο γλώσσας XML σε συνεργασία με ένα αρχείο γλώσσας XSL (extensible Stylesheet Language) δίνουν σαν αποτέλεσμα την εμφάνιση μιας σύνθετης ιεραρχικής πληροφορίας σε οποιαδήποτε επιθυμητή μορφή. H εντολή που καθορίζει ότι ακολουθεί κώδικας XML είναι : <?xml version="1.0" encoding="iso-8859-1"?> H εντολή που συσχετίζει ένα αρχείο XML με το αρχείο μορφοποίησης έστω "filename.xsl" είναι : <?xml-stylesheet type="text/xsl" href="filename.xsl"?> Ο κώδικας του αρχείου XML "cd_catalog.xml" για την κωδικοποίηση ενός καταλόγου CD s είναι ο εξής : <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="filename.xsl"?> <catalog> <cd> </cd> <title>empire Burlesque</title> <artist>bob Dylan</artist> <country>usa</country> <company>columbia</company> <price>10.90</price> <year>1985</year> </catalog> Αν filename.xsl cd_catalog_v1.xsl Ο κώδικας του XSL αρχείου "cd_catalog_v1.xsl" είναι : <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 1

<tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <tr> <td>.</td> <td>.</td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> H εμφάνιση του αρχείου XML "cd_catalog.xml" συνδυασμένου με το XSL αρχείο "cd_catalog_v1.xsl" στον browser είναι : My CD Collection Title Artist.. Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 2

Αν filename.xsl cd_catalog_v2.xsl Ο κώδικας του XSL αρχείου "cd_catalog_v2.xsl" είναι : <?xml version="1.0" encoding="iso-8859-1"?> <!-- Edited with XML Spy v4.2 --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <tr> <td><xsl:value-of select="catalog/cd/title" /></td> <td><xsl:value-of select="catalog/cd/artist" /></td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> H εμφάνιση του αρχείου XML "cd_catalog.xml" συνδυασμένου με το XSL αρχείο "cd_catalog_v2.xsl" στον browser είναι : My CD Collection Title Artist Empire Burlesque Bob Dylan Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 3

Αν filename.xsl cd_catalog_v3.xsl Ο κώδικας του XSL αρχείου "cd_catalog_v3.xsl" είναι : <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> H εμφάνιση του αρχείου XML "cd_catalog.xml" συνδυασμένου με το XSL αρχείο "cd_catalog_v3.xsl" στον browser είναι : My CD Collection Title Empire Burlesque Hide your heart Greatest Hits Still got the blues Eros One night only Sylvias Mother Maggie May Romanza Artist Bob Dylan Bonnie Tyler Dolly Parton Gary Moore Eros Ramazzotti Bee Gees Dr.Hook Rod Stewart Andrea Bocelli When a man loves a woman Percy Sledge Black angel 1999 Grammy Nominees Many Savage Rose Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 4

For the good times Big Willie style Tupelo Honey Soulsville The very best of Stop Bridge of Spies Private Dancer Midt om natten Pavarotti Gala Concert The dock of the bay Picture book Red Unchain my heart Kenny Rogers Will Smith Van Morrison Jorn Hoel Cat Stevens Sam Brown T`Pau Tina Turner Kim Larsen Luciano Pavarotti Otis Redding Simply Red The Communards Joe Cocker Αν filename.xsl cd_catalog_v4.xsl Ο κώδικας του XSL αρχείου "cd_catalog_v4.xsl" είναι : <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 5

H εμφάνιση του αρχείου XML "cd_catalog.xml" συνδυασμένου με το XSL αρχείο "cd_catalog_v4.xsl" στον browser είναι : My CD Collection Romanza Title One night only Empire Burlesque Hide your heart The very best of Greatest Hits Sylvias Mother Eros Still got the blues Unchain my heart Soulsville For the good times Midt om natten Pavarotti Gala Concert Artist Andrea Bocelli Bee Gees Bob Dylan Bonnie Tyler Cat Stevens Dolly Parton Dr.Hook Eros Ramazzotti Gary Moore Joe Cocker Jorn Hoel 1999 Grammy Nominees Many The dock of the bay Kenny Rogers Kim Larsen Luciano Pavarotti Otis Redding When a man loves a woman Percy Sledge Maggie May Stop Black angel Picture book Bridge of Spies Red Private Dancer Tupelo Honey Big Willie style Rod Stewart Sam Brown Savage Rose Simply Red T`Pau The Communards Tina Turner Van Morrison Will Smith Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 6

Αν filename.xsl cd_catalog_v5.xsl Ο κώδικας του XSL αρχείου "cd_catalog_v5.xsl" είναι : <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> H εμφάνιση του αρχείου XML "cd_catalog.xml" συνδυασμένου με το XSL αρχείο "cd_catalog_v5.xsl" στον browser είναι : My CD Collection Title Empire Burlesque Still got the blues One night only Romanza Black angel Artist Bob Dylan Gary Moore Bee Gees 1999 Grammy Nominees Many Andrea Bocelli Savage Rose Αν filename.xsl cd_catalog_v6.xsl Ο κώδικας του XSL αρχείου "cd_catalog_v6.xsl" είναι : Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 7

<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> H εμφάνιση του αρχείου XML "cd_catalog.xml" συνδυασμένου με το XSL αρχείο "cd_catalog_v6.xsl" στον browser είναι : My CD Collection Title Empire Burlesque Hide your heart Greatest Hits Still got the blues Eros One night only Sylvias Mother Maggie May Romanza Artist Bob Dylan Bonnie Tyler Dolly Parton Gary Moore Eros Ramazzotti Bee Gees Dr.Hook Rod Stewart Andrea Bocelli Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 8

When a man loves a woman Percy Sledge Black angel Savage Rose 1999 Grammy Nominees Many For the good times Kenny Rogers Big Willie style Will Smith Tupelo Honey Van Morrison Soulsville Jorn Hoel The very best of Cat Stevens Stop Sam Brown Bridge of Spies T`Pau Private Dancer Tina Turner Midt om natten Kim Larsen Pavarotti Gala Concert Luciano Pavarotti The dock of the bay Otis Redding Picture book Simply Red Red The Communards Unchain my heart Joe Cocker Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 9

2. Γλώσσα RDF (Resource Description Framework) 2.1. RDF και URI Η γλώσσα RDF 1 είναι μια γλώσσα περιγραφής της σημασίας (meaning) του περιεχομένου πόρων του web και όπως θα φανεί στη συνέχεια μπορεί να τυποποιηθεί και να ενταχθεί στο γενικότερο πλαίσιο της γλώσσας XML, με το όνομα RDF/ XML. Τα αρχεία που περιέχουν κώδικα RDF τελειώνουν σε.rdf Πρόκειται για μια γλώσσα αναπαράστασης μεταδεδομένων για δικτυακούς πόρους (που έχουν κάποιο URL), τέτοιους όπως τίτλο, συγγραφέα, ημερομηνία τελευταίας τροποποίησης μιας ιστοσελίδας. Γενικεύοντας όμως την έννοια του δικτυακού πόρου, η RDF θα μπορούσε να χρησιμοποιηθεί για την αναπαράσταση μεταδεδομένων που αφορούν πράγματα που θα μπορούσαν να προσδιοριστούν ως δικτυακοί πόροι, ακόμη και αν δεν είναι πραγματικοί ανακτήσιμοι δικτυακοί πόροι. Τα πράγματα αυτά ταυτοποιούνται όχι από κάποιο URL, αλλά το λεγόμενο URI (Unified Resource Identifier). Τα URI περιλαμβάνουν τόσο τα URN (Uniform Resource Name) όσο και τα URL. Σχήμα 1. URIs, URLs και URNs URN είναι ένα string που προσδιορίζει μονοσήμαντα ένα αντικείμενο. Τα URNs αφορούν συγκεκριμένες κατηγορίες αντικειμένων, όπως books (international standard book number - ISBN), journals (international standard series number - ISSN), audiovisual material (international standard audiovisual number - ISAN), library items (national bibliographic number - NBN), objects (object id - OID), ISO reports (ISO/TR, ISO/TS κλπ), PURL (persistent URLs που λειτουργούν με redirection σε ένα τρέχον URL), http-paths (που δεν είναι πραγματικά URLs, αλλά προσδιορίζουν μονοσήμαντα ένα αντικείμενο, όπως οι OWL/ Protege ontologies). Παραδείγματα URNs ISBN 2 978-960-6759-54-3 (Επικοινωνίες Διαδίκτυο Βιβλιοθήκες / Μάρκος Δενδρινός) ISSN 3 0378-5955 (Hearing Research) ISAN 4 (root/ audiovisual work/ 12 hex digits episode/ parts of serial work/ 8 hex digits version/ versions of a work/ 4 hex digits) 0000811F0000-00000000-0000 CRID 5 (content reference identifier used for TV content) crid://bbc.co.uk/olympis/2008/final/shotput/women OID 2.16.840 (2.16 country 840 USA 6 ) 1 http://www.w3.org/tr/rdf-primer/ 2 http://en.wikipedia.org/wiki/international_standard_book_number 3 http://en.wikipedia.org/wiki/international_standard_serial_number 4 http://en.wikipedia.org/wiki/international_standard_audiovisual_number 5 http://en.wikipedia.org/wiki/content_reference_identifier Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 10

NBN de:bvb:19-146642 (country regional network library number document number) PURL 7 http://jstor.org/stable/3298566 που redirects στο http://www.jstor.org/discover/10.2307/3298566?uid=2&uid=4&sid=21101480863011 ISO/[code] nnnnn[-p]:[yyyy] Title 8, όπου [code] μπορεί να είναι TR (technical report), TS (technical specifications), PAS (publicly available specification), DTS (draft technical specification), IEC (International Electrotechnical Committee), IEC TR, IEC TS κλπ, nnnnn αριθμός προτύπου, p προαιρετικός αριθμός μέρους, yyyy χρονολογία έκδοσης, title ο τίτλος του προτύπου, πχ. ISO/TS 16952-1:2006 Technical product documentation Reference designation system Part 1: General application rules ISO/PAS 11154:2006 Road vehicles Roof load carriers ISO/IEC TR 19791:2006 ISO/IEC DTR 19791 ISO/DTS 11602-1 http-path http://www.example.org 2.2. Δηλώσεις RDF (RDF statements) Η γλώσσα RDF, ως τυποποιημένη γλώσσα, είναι κατανοητή από εφαρμογές υπολογιστή, οι οποίες, εφόσον διαθέτουν τους λεγόμενους rdf parsers, αποκωδικοποιούν τις εντολές της και παράγουν σχετικά αποτελέσματα. Με αυτό το τρόπο οι περιγραφές των πόρων γίνονται κατανοητές και από εφαρμογές πέραν εκείνων για τις οποίες είχαν αρχικά σχεδιαστεί. Η βασική ιδέα πίσω από την RDF είναι ο προσδιορισμός των πραγμάτων (resources) μέσω των URIs, καθώς και η περιγραφή τους μέσω των λεγόμενων properties και των property values. Δηλαδή κάθε δήλωση RDF (RDF statement) είναι μια τριπλέτα (triplet) που βασίζεται σε μια property, είτε object property που συνδέει ένα resource της domain class και ένα resource της range class της property, είτε datatype property που συνδέει ένα resource της domain class της property με την τιμή του (value), πχ. ο τάδε καθηγητής διδάσκει το τάδε μάθημα ή ο τάδε καθηγητής έχει ημερομηνία γέννησης 01/02/1970. Η τριπλέτα απαρτίζεται από το λεγόμενο υποκείμενο (subject), που είναι resource της domain class (ένα συγκεκριμένο πράγμα), την ιδιότητα του ή κατηγόρημα (property) και το αντικείμενο (object) που είναι resource της range class (ένα συγκεκριμένο πράγμα) ή μια τιμή (value). Κάθε resource ή property προσδιορίζεται μέσω ενός URI, ενώ η τιμή μέσω ενός απλού string (literal) ή μιας σταθεράς ορισμένου τύπου integer, date κλπ (typed literal). Η εν λόγω τριπλέτα παρίσταται γραφικά από ένα διμερή γράφο που απαρτίζεται από 2 κόμβους (το subject και το object) που συνδέονται με 1 διάνυσμα (την property), όπως στο παρακάτω σχήμα όπου παρουσιάζονται 4 διμερείς γράφοι που περιγράφουν 4 διαφορετικές ιδιότητες για ένα πράγμα που προσδιορίζεται από ένα συγκεκριμένο URI (http://www.w3.org/people/em/contact#me). Το πράγμα αυτό είναι ένα subject που περιγράφεται από την property: type, με object το resource: person, που δηλώνεται μέσω ενός URI. Τόσο η property: type όσο και το object: person δίνονται μέσω των URIs: http://www.w3.org/1999/02/22-rdf-syntax-ns#type και http://www.w3.org/2000/10/swap/pim/contact#person αντίστοιχα. Όλα τα 6 http://www.alvestrand.no/objectid/2.16.840.html 7 http://www.purl.com/docs/index.html 8 http://en.wikipedia.org/wiki/international_organization_for_standardization Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 11

προηγούμενα αφορούν τη μια από τις 4 ιδιότητες του πράγματος. Επίσης αυτό το πράγμα αυτό περιγράφεται από την property: fullνame με value: Eric Miller, την property: mailbox με value: mailto:em@w3.org και την property: personaltitle με value Dr. Σχήμα 2. Περιγραφή ενός ατόμου μέσω RDF Ακολουθεί ένα άλλο παράδειγμα που αφορά την περιγραφή μέσω RDF μιας ιστοσελίδας. Για το σκοπό αυτό χρησιμοποιούνται 3 δηλώσεις RDF σχετικές με την ιστοσελίδα http://www.example.org/index.html. Η πρώτη αφορά τον δημιουργό της, η δεύτερη την ημερομηνία δημιουργίας της και η τρίτη τη γλώσσα στην οποία είναι γραμμένη. Σχήμα 3. Περιγραφή μιας ιστοσελίδας μέσω RDF Η γραπτή περιγραφή των 3 παραπάνω διμερών γράφων σε γλώσσα RDF είναι η ακόλουθη: Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 12

<http://www.example.org/terms/creation- <http://www.example.org/index.html> <http://www.example.org/staffid/85740>. <http://www.example.org/index.html> date> "August 16, 1999". <http://www.example.org/index.html> "en". <http://purl.org/dc/elements/1.1/creator> <http://purl.org/dc/elements/1.1/language> όπου υποκείμενο και κατηγόρημα κάθε τριπλέτας δίνονται μέσω κάποιου URI, ενώ το αντικείμενο δίνεται είτε μέσω URI είτε άμεσα ως literal (συγκεκριμένη τιμή). 2.3. URIs και namespaces Αυτός είναι ο πρώτος τρόπος σύνταξης του URI σε πλήρη ανάπτυξη μέσα σε < >. Ένας εναλλακτικός τρόπος σύνταξης είναι μέσω των λεγόμενων namespaces, που δηλώνονται ως prefixes με κατάληξη : σε αντικατάσταση κάποιων URIs, τα οποία χρησιμοποιούνται ως βάση και στα οποία μπορεί να προστεθεί στη συνέχεια ένα ακόμη κομμάτι, προσδιορίζοντας ειδικότερα URIs. Σε αυτή τη περίπτωση δεν μπαίνουν καθόλου τα <>. Θεωρώντας το dc: ως το namespace για το URI του Dublin Core (http://purl.org/dc/elements/1.1/) και επίσης τα εξής user-defined namespaces ex: για το URI: http://www.example.org/ exstaff: για το URI: http://www.example.org/staffid/ exterms: για το URI: http://www.example.org/terms/ μετατρέπουμε τις δηλώσεις RDF που υλοποιούν το Σχ. 3 στις ακόλουθες: ex:index.html dc:creator exstaff:85740. ex:index.html exterms:creation-date "Aug. 10, 1999". ex:index.html dc:language "en". Για να δηλώσουμε τυποποιημένα literals εκτός των απλών strings, όπως integer, decimal, date κλπ. χρησιμοποιούμε το εξής namespace xsd: για το URI: http://www.w3.org/2001/xmlschema# Οπότε για να δηλώσουμε ότι η ημερομηνία δημιουργίας της ιστοσελίδας είναι η 16η Αυγ. 1999 και να την αντιληφθεί ο υπολογιστής ως ημερομηνία, δηλ. ως έτος μήνα ημέρα (αμερικ. σύστημα) πρέπει να δηλωθεί ως εξής: ex:index.html exterms:creation-date "1999-08- 16"^^http://www.w3.org/2001/XMLSchema#date. ή πιο σύντομα μέσω του ορισθέντος namespace: ex:index.html exterms:creation-date "2006-09-16"^^xsd:date. Επίσης θα μπορούσαμε να δηλώσουμε την ηλικία του δημιουργού ως εξής: exstaff:85740 exterms:age "27"^^xsd:integer. Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 13

2.4. Κώδικας RDF - η μορφή της τριπλέτας (triplet) Στη συνέχεια θα δούμε πώς οι παραπάνω δηλώσεις RDF μορφής τριπλέτας (υποκείμενο κατηγόρημα αντικείμενο) γράφονται σε περιβάλλον XML, οπότε τα αρχεία είναι τύπου RDF/XML και μπορούν να αποκωδικοποιηθούν από τους parsers RDF. Έχει οριστεί μια συγκεκριμένη σύνταξη (grammar) 9 για την αναπαράσταση σε XML των κόμβων και του βέλους του διμερούς γράφου μιας τριπλέτας RDF. Ας δούμε βήμα- βήμα την μετατροπή του παρακάτω γραφικού συμπλέγματος σε δηλώσεις RDF/XML. Σχήμα 4. Σύμπλεγμα διμερών γράφων Το γράφημα αυτό περιγράφει μια συγκεκριμένη ιστοσελίδα (αυτήν με URL/ URI: http://www.w3.org/tr/rdf-syntax-grammar) δίνοντας διπλή πληροφορία σχετικά με τον editor της (που παριστάνεται από τον κενό κόμβο) και τον τίτλο της. Στη συνέχεια η πληροφορία για τον editor της είναι και αυτή διπλή και πιο συγκεκριμένα σχετικά με την homepage του και το fullname του. Ας εισάγουμε 2 namespaces: rdf: για το URI http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: για το URI http://www.w3.org/2000/01/rdf-schema# Όλες οι δηλώσεις RDF εισάγονται σε ένα αρχείο XML μέσα σε ένα ζευγάρι <rdf:rdf>... </rdf:rdf>, πληροφορώντας έτσι τον parser ότι πρόκειται για δηλώσεις RDF. Αλλά και κάθε δήλωση RDF σχηματίζεται από το namespace rdf: ακολουθούμενο από το element που αφορά τη συγκεκριμένη δήλωση. Κάθε κόμβος - υποκείμενο αναπαριστάνεται από το ζεύγος <rdf:description>..., το οποίο οριοθετεί το άνοιγμα και το κλείσιμο του block περιγραφής του υποκειμένου. Εντός αυτού του ζεύγους δηλώνεται το διάνυσμα κατηγόρημα (property) μέσω ενός ειδικά ορισμένου element (URI που σχηματίζεται από ένα βασικό namespace και μια επέκταση) το οποίο και πάλι μέσω ενός ζεύγους <>... </>, οριοθετεί το άνοιγμα και το κλείσιμο του block περιγραφής της ιδιότητας πχ. <ex:homepage>... </ex:homepage>. Εντός αυτού του ζεύγους δηλώνεται μέσω πάλι ενός ζεύγους <rdf:description>... ο κόμβος αντικείμενο, στην περίπτωση κόμβου-αντικειμένου που προσδιορίζεται από URI. Η ταυτότητα (URI) ενός κόμβου υποκειμένου ή ενός κόμβου αντικειμένου δηλώνεται μέσω του label rdf:about, το οποίο εντάσσεται εντός του element ανοίγματος περιγραφής 9 http://www.w3.org/tr/rdf-syntax-grammar/ Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 14

<rdf:description> ως <rdf:description rdf:about = "...">. Αντίθετα στην περίπτωση ενός κόμβου αντικειμένου που είναι συγκεκριμένη τιμή (literal) τότε γράφεται αυτή η τιμή κατ ευθείαν εντός του ζεύγους οριοθέτησης περιγραφής της ιδιότητας μέσω του property URI χωρίς την ανάγκη εισαγωγής επιπρόσθετου ζεύγους <rdf:description>..., πχ. <ex:fullname>dave Beckett</ex:fullName>. Όλα αυτά φαίνονται στον παρακάτω κώδικα RDF/ XML φωλιασμένων δηλώσεων (nested statements): <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar"> <ex:editor> <rdf:description> <ex:homepage> <rdf:description rdf:about="http://purl.org/net/dajobe/"> </ex:homepage> </ex:editor> <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar"> <ex:editor> <rdf:description> <ex:fullname>dave Beckett</ex:fullName> </ex:editor> <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar"> <dc:title>rdf/xml Syntax Specification (Revised)</dc:title> Όταν υπάρχουν πολλές ιδιότητες για το ίδιο υποκείμενο, όπως εδώ οι ιδιότητες ex:editor και dc:title για τον αρχικό κόμβο της ιστοσελίδας, καθώς και οι ιδιότητες ex:homepage και ex:fullname για τον κενό κόμβο editor, μπορούμε να μην επαναλαμβάνουμε τη δήλωση του υποκειμένου αλλά να εντάσσουμε τα διάφορα blocks δηλώσεων που περιγράφουν την κάθε ιδιότητα τη μια μετά την άλλη εντός του ζεύγους <rdf:description>... που αφορά το εν λόγω υποκείμενο, οπότε ο παραπάνω κώδικας απλοποιείται ως εξής: <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar"> <ex:editor> <rdf:description> <ex:homepage> <rdf:description rdf:about="http://purl.org/net/dajobe/"> </ex:homepage> <ex:fullname>dave Beckett</ex:fullName> </ex:editor> <dc:title>rdf/xml Syntax Specification (Revised)</dc:title> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 15

Στην περίπτωση που ένας κόμβος αντικείμενο είναι τελικός (δεν γίνεται υποκείμενο κάποιας άλλης σχέσης) μπορεί το block <rdf:description rdf:about = "..."> να αντικατασταθεί από ένα νέο element, το rdf:resource και να ενσωματωθεί στη δήλωση της ιδιότητας της οποίας αποτελεί αντικείμενο μέσω της συντομευμένης μορφής <property-uri rdf:resource = "..." /> οπότε το block <ex:homepage> <rdf:description rdf:about="http://purl.org/net/dajobe/"> </ex:homepage> αντικαθίσταται από το απλούστερο <ex:homepage rdf:resource="http://purl.org/net/dajobe/"/>. Παρατηρήστε επίσης ότι το element κλεισίματος </ex:homepage> έχει και αυτό ενσωματωθεί στη δήλωση της ιδιότητας υπό τη μορφή />. Με βάση το νέο αυτό element rdf:resource, ο αρχικός κώδικας απλοποιείται ακόμη περισσότερο ως εξής: <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar"> <ex:editor> <rdf:description> <ex:homepage rdf:resource="http://purl.org/net/dajobe/"/> <ex:fullname>dave Beckett</ex:fullName> </ex:editor> <dc:title>rdf/xml Syntax Specification (Revised)</dc:title> Στην περίπτωση κατηγορημάτων/ ιδιοτήτων (properties) των οποίων τα αντικείμενα/ τιμές είναι συγκεκριμένες τιμές (literals), δεν είναι καν αναγκαία η χρήση του ζεύγους (άνοιγμα-κλείσιμο) του property URI, όπως <ex:fullname> Dave Beckett </ex:fullname>, αλλά μπορεί η ιδιότητα να ενσωματωθεί στο element ανοίγματος περιγραφής του υποκειμένου <rdf:description> υπό τη μορφή ισότητας, πχ. <rdf:description ex:fullname="dave Beckett">. Με βάση αυτή τη νέα συμπυκνωμένη τυποποίηση ο αρχικός κώδικας απλοποιείται ακόμη περισσότερο ως εξής: <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar" dc:title="rdf/xml Syntax Specification (Revised)"> <ex:editor> <rdf:description ex:fullname="dave Beckett"> <ex:homepage rdf:resource="http://purl.org/net/dajobe/"/> </ex:editor> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 16

Περιλαμβάνοντας και τις αρχικές δηλώσεις ενός αρχείου XML, το ζεύγος (άνοιγμα κλείσιμο κώδικα RDF <rdf:rdf>... </rdf:rdf> και τις δηλώσεις σε γλώσσα XML των περιλαμβανόμενων namespaces (το σχετικό xml element είναι xmlns), ο παραπάνω κώδικας παίρνει την τελική μορφή: <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ex="http://example.org/stuff/1.0/"> <rdf:description rdf:about="http://www.w3.org/tr/rdf-syntax-grammar" dc:title="rdf/xml Syntax Specification (Revised)"> <ex:editor> <rdf:description ex:fullname="dave Beckett"> <ex:homepage rdf:resource="http://purl.org/net/dajobe/" /> </ex:editor> </rdf:rdf> Πέραν των ανωτέρω υπάρχει η δυνατότητα εισαγωγής και elements της XML, όπως η xml:lang, για την εισαγωγή strings σε γλώσσα πλην των αγγλικών με κωδικοποίηση utf-8. Το element αυτό μπαίνει στο element ανοίγματος περιγραφής του υποκειμένου, οπότε οποιαδήποτε αλλαγή γλώσσας εντός του block περιγραφής θα πρέπει να δηλώνεται με χρήση και πάλι του σχετικού element γλωσσικής κωδικοποίησης. <?xml version="1.0" encoding="utf-8"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:description rdf:about="http://users.sch.gr/statpapako/symposio/symposioplatonis1.htm" xml:lang="el"> <dc:title>το Συμπόσιο του Πλάτωνα</dc:title> <dc:description> Το Συμπόσιο του Πλάτωνα. Αρχαίο κείμενο και μετάφραση</dc:description> <dc:title xml:lang="en">the Symposium by Plato</dc:title> </rdf:rdf> Επίσης χρησιμοποιείται το rdf:datatype στο άνοιγμα του property URI στην περίπτωση που το αντικείμενο της property είναι typed literal (integer, date κλπ), πχ. με τον παρακάτω κώδικα δηλώνουμε ότι η ηλικία του υποκειμένου είναι 30 (ακέραιος αριθμός και όχι ένα string χαρακτήρων 3 και 0). <ex:age rdf:datatype="http://www.w3.org/2001/xmlschema#int">30</ex:age> Παρόμοια σχήματα υπάρχουν και για μια κατηγορία ειδικών τύπων δεδομένων όπως tel, mailbox κλπ. Αυτά ορίζονται στην http://www.w3.org/addressing/schemes.html Οπότε η Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 17

< foaf:phone rdf:datatype= "http://www.w3.org/addressing/schemes.html#tel">30-6971111111</foaf:phone> δηλώνει το τηλέφωνο κάποιου. Επίσης για τη συντόμευση των node URIs (όχι των property URIs), μπορεί να χρησιμοποιηθεί το rdf:id. Αν έχει οριστεί προηγουμένως σε XML μια βάση για το URI πχ. xml:base = "http://example.org/here/", το rdf:id= "name" ισοδυναμεί με το rdf:about = "http://example.org/here/#name". Αλλά και η τιμή του rdf:resource που δηλώνει το αντικείμενο μιας property μπορεί να συντομευτεί αν έχει προηγουμένως οριστεί μια βάση σε XML. Με βάση το προηγούμενο παράδειγμα, το rdf:resource= "#name" υπονοεί τότε το rdf:resource = "http://example.org/here/#name". Στο παρακάτω παράδειγμα <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://example.org/stuff/1.0/" xml:base="http://example.org/here/"> <rdf:description rdf:id="snack"> <ex:prop rdf:resource="fruit/apple"/> </rdf:rdf> το ID = "snack" υπονοεί το URI http://example.org/here/#snack, resource="fruit/apple" υπονοεί το URI http://example.org/here/fruit/apple. ενώ το Ανακεφαλαιώνοντας, το subject περιγράφεται από το ζεύγος <rdf:description rdf:about= «URI»>... στην περίπτωση identified resource ή απλά ζεύγος <rdf:description>... στην περίπτωση anonymous resource (blank node). Μεταξύ ανοίγματος και κλεισίματος του subject περιγράφονται η μια μετά την άλλη οι properties με άνοιγμα και κλείσιμο, και μεταξύ ανοίγματος και κλεισίματος κάθε property περιγράφεται το σχετικό object. Αν το object είναι κάποιο resource περιγράφεται μέσω του rdf:resource, ενώ αν είναι value, απλά παρατίθεται η value. Ένα object μπορεί βέβαια να γίνει επίσης subject με διάφορες properties με τα δικά τους objects ακολουθώντας φωλιασμένες δομές (nested structures). Παραδείγματα <dc:creator>markos Dendrinos</dc:creator> <ex:webpage rdf:resource="http://www.newtech-publications.gr"/> 2.5. Καθιερωμένα και customised πρότυπα Μεταξύ των πιο διαδεδομένων καθιερωμένων προτύπων είναι το dublin-core (dc), το dcterms, το skos (Simple Knowledge Organisation System), το gn 10 (geonames), το geo 11 (FAO geopolitical ontology), το address-schema 12 και το foaf 13 (friend-of-afriend) με βασικά προθεματικά URIs (namespaces) τα εξής: 10 Geonames Ontology, http://www.geonames.org/ontology/documentation.html, http://www.geonames.org/ontology/ontology_v2.2.1.rdf 11 http://www.fao.org/countryprofiles/geoinfo/geopolitical/resource/ 12 http://schemas.talis.com/2005/address/schema# Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 18

xmlns:dc= "http://purl.org/dc/elements/1.1/" xmlns:dcterms= "http://purl.org/dc/terms/" xmlns:skos= "http://www.w3.org/2004/02/skos/core" xmlns:foaf= "http://xmlns.com/foaf/0.1/" xmlns:gn= "http://www.geonames.org/ontology" xmlns:geo= "http://www.fao.org/countryprofiles/geoinfo/geopolitical/resource/" xmlns:address= "http://schemas.talis.com/2005/address/schema#" Προσθέτοντας στο τέλος του προθεματικού URI το κατάλληλο κάθε φορά label προκύπτει το ολοκληρωμένο URI μιας property. Το πρότυπο dc περιλαμβάνει τις properties: contributor, coverage (spatial of temporal), creator, date, description, format, identifier, language, publisher, relation, rights, source, subject, title, type). Το πρότυπο dcterms περιλαμβάνει τις properties: abstract, accessrights, available (date), bibliographiccitation, created (date), dateaccepted, datesubmitted, extent (size or duration), ispartof, issued (date), modified (date). Tο skos περιλαμβάνει μεταξύ άλλων τις κλάσεις: Concept, ConceptScheme, Collection και τις properties: definition, broader, narrower, inscheme, preflabel. To gn περιλαμβάνει μεταξύ άλλων τις κλάσεις: P.PPLC (populated place, όπως city), A.TERR (territory), S.BLDG (building, όπως house, faculty), S.FCL (facility, όπως center, institute, hospital), S.HSE (house), S.ITTR (research institute), S.LIBR (library), S.SCH (school), S.SCHC (college), S.SCHT (technical school), S.UNIV (university). To geo περιλαμβάνει την κλάση area με υπο-κλάσεις territory και group. Η territory έχει υπο-κλάσεις self_governing, non_self_governing, disputed, other. Η group έχει υπο-κλάσεις: organization, geographical_region, economic_region, special_group. Το foaf μεταξύ άλλων περιλαμβάνει τις classes: Thing, Person, Document (sub-class: Image), Project, Group, Agent (sub-classes: Organization, Group, Person) και properties: Thing-name-[...], Person-firstName-[...], Person-familyName-[...], Personknows-Person, Group-Member-Agent, Document-primaryTopic-Thing, Documenttopic-Thing, Person-currentProject-Thing, Person-lastProject-Thing, PersonpastProject-Thing, Agent-interest-Document, Agent-age-[int], Agent-birthday-[mmdd], Person-title-[Mr/ Mrs/ Ms/ Dr], Agent-mbox-Thing, Thing-homepage-Document, Person-workInfoHomepage-Document, Person-workplaceHomepage-Document, Agent-gender-[male/ female], Agent-made-Thing. Το address-schema περιλαμβάνει μόνο properties, οι οποίες εφαρμόζονται σε κάποια entity, και είναι οι εξής: countryname, fax, localityname, postalcode, regionname, streetaddress, tel. Πέραν των παραπάνω καθιερωμένων προτύπων, μπορούμε να δημιουργήσουμε και εμείς οι ίδιοι customised πρότυπα, αρκεί να ορίσουμε κάποιο βασικό namespace, ώστε να χρησιμοποιείται με την προσθήκη διαφόρων labels για τον καθορισμό των URIs των νεο-εισαγόμενων classes ή properties. Το customised πρότυπο που θα χρησιμοποιήσουμε στο πλαίσιο αυτού του μαθήματος για τις ασκήσεις θεωρίας και εργαστηρίου, έχει ως βασικό namespace το xmlns:ex= "http://mdendr.com/example/1.0/". 13 foaf vocabulary, http://xmlns.com/foaf/spec/ Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 19

Στη συνέχεια παρατίθενται επακριβώς properties του προτύπου μαζί με τα URIs, καθώς και σχόλια για τη σωστή χρήση τους (όπως φαίνονται στη σχετική ιστοσελίδα http://mdendr.com/example/1.0/). URI: http://mdendr.com/example/1.0/owner Label owner Definition: the person who is the owner of a website Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/cv Label CV Definition: the document containing the CV of a person Comment: you can use here a URL of the document URI: http://mdendr.com/example/1.0/thumbnail Label thumbnail Definition: the photo-thumbnail of an object (person, painting, sculpture, building etc.) Comment: you can use here a URL of the image URI: http://mdendr.com/example/1.0/exhibitionplace Label exhibitionplace Definition: the exhibition place of an object (gallery etc.) Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/teacher Label teacher Definition: the teacher of a person Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/mainαctivity Label mainαctivity Definition: the main activity of an entity Comment: you can use here a string-literal URI: http://mdendr.com/example/1.0/father Label father Definition: the father of a person Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/mother Label mother Definition: the mother of a person Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 20

Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/brother Label brother Definition: the brother of a person Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/sister Label sister Definition: the sister of a person Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/son Label son Definition: the son of a person Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/daughter Label daughter Definition: the daughter of a person Comment: you can use here a string-literal or a blank resource with further properties URI: http://mdendr.com/example/1.0/birthdate Label birthdate Definition: the birthdate of a person Comment: you can use here a date-literal of the form "dd/mm/yyyy" URI: http://mdendr.com/example/1.0/birthyear Label birthyear Definition: the birth year of an entity Comment: you can use here an int-literal URI: http://mdendr.com/example/1.0/endyear Label endyear Definition: the end year of an entity Comment: you can use here an int-literal URI: http://mdendr.com/example/1.0/country Label country Definition: the country where an agent acts/ acted Comment: you can use here a string-literal Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 21

URI: http://mdendr.com/example/1.0/city Label city Definition: the city where an agent acts/ acted Comment: you can use here a string-literal 2.6. Παραδείγματα χρήσης του κώδικα RDF Στη συνέχεια ακολουθεί κώδικας RDF για την περιγραφή μιας προσωπικής ιστοσελίδας, μέσω του τίτλου (title), της περιγραφής (description), του δημιουργού (creator), του κατόχου (owner) και την περιγραφή του κατόχου μέσω του ονόματος (name) και του url του cv (CV). <?xml version="1.0"?> <rdf:rdf xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc= "http://purl.org/dc/elements/1.1/" xmlns:foaf= "http://xmlns.com/foaf/0.1/" xmlns:ex= "http://mdendr.com/example/1.0/"> <rdf:description rdf:about="http://mdendr.com"> <dc:title>the art of meaning</dc:title> <dc:description>web site of Prof. Markos N. Dendrinos</dc:description> <dc:creator>markos Dendrinos</dc:creator> <ex:owner> <rdf:description> <foaf:name>markos Dendrinos</foaf:name> <ex:cv rdf:resource= "http://www.teiath.gr/userfiles/mdendr/documents/mdendrconcisecv3en.pdf"/> </ex:owner> </rdf:rdf> Στη συνέχεια ακολουθεί κώδικας RDF για την περιγραφή μιας ομάδας (Group) μέσω των μελών της (member) και κάθε μέλους από το μικρό όνομα (firstname), το επώνυμο (familyname), το τρέχον project (currentproject) και την ημέρα των γενεθλίων (birthday). Θα γίνει χρήση των properties του προτύπου foaf. <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf= "http://xmlns.com/foaf/0.1/"> <rdf:description> <foaf:member> <rdf:description> <foaf:lastname> dddd </foaf:lastname> <foaf:firstname> mmmm </foaf:firstname> <foaf:currentproject> Knowledge Management </foaf:currentproject> <foaf:birthday> 01-18 </foaf:birthday> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 22

</foaf:member> <foaf:member> <rdf:description> <foaf:lastname> pppp </foaf:lastname> <foaf:firstname> ssss </foaf:firstname> <foaf:currentproject> Digital Libraries </foaf:currentproject> <foaf:birthday> 11-30 </foaf:birthday> </foaf:member> </rdf:rdf> Στη συνέχεια ακολουθεί κώδικας RDF για την περιγραφή της ιστοσελίδας του ΤΕΙ Αθήνας, μέσω του τίτλου (title), του δημιουργού (creator), του κατόχου (owner), αλλά και την περιγραφή του κατόχου μέσω του ονόματος του (name) και του τύπου του (type). <?xml version="1.0"?> <rdf:rdf xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc= "http://purl.org/dc/elements/1.1/" xmlns:foaf= "http://xmlns.com/foaf/0.1/" xmlns:ex= "http://mdendr.com/example/1.0/"> <rdf:description rdf:about= "http://www.teiath.gr" xml:lang="el"> <dc:title>τει Αθήνας</dc:title> <dc:creator>κέντρο Διαχείρισης Δικτύου</dc:creator> <ex:owner> <rdf:description> <foaf:name>τει Αθήνας</foaf:name> <dc:type>τεχνολογικό Ίδρυμα</dc:type> <rdf:description> </ex:owner> </rdf:rdf> Άσκηση 1. Να δώσετε σε κώδικα RDF την περιγραφή του βιβλίου με τίτλο «Η μεγάλη χίμαιρα» του Καραγάτσι, μέσω του ISBN, του τίτλου (title), του συγγραφέα (creator), του εκδότη (publisher) μέσω του ονόματος (name), της ιστοσελίδας του (homepage), του δημιουργού της ιστοσελίδας (creator) μέσω του ονόματος (name), του έτους δημιουργίας (birthyear), της κύριας δραστηριότητας (mainactivity) και της ιστοσελίδας του (homepage). Πρότυπο dc: title, creator, publisher Πρότυπο foaf: name, homepage Πρότυπο ex: birthyear, mainactivity Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 23

Άσκηση 2. Να δώσετε σε κώδικα RDF την περιγραφή του πίνακα «Gioconda» του Leonardo Da Vinci, μέσω του ονόματος του (name), του τύπου του (type), ενός thumbnail του (thumbnail), του μουσείου όπου βρίσκεται (exhibitionplace), του ζωγράφου που τον έφτιαξε (creator) μέσω του ονόματος του (name), του έτους γέννησης του (birthyear), του έτους θανάτου του (endyear), της χώρας καταγωγής του (country) και της ιστοσελίδας του (homepage) Πρότυπο dc: type, creator Πρότυπο foaf: name, homepage Πρότυπο ex: thumbnail, exhibitionplace, birthyear, endyear, country Οι προηγούμενοι κώδικες RDF/ XML μπορούν να δοθούν ως είσοδος στον RDF parser (http://www.w3.org/rdf/validator/) ώστε μεταγλωττιζόμενοι να δώσουν ως αποτελέσματα τις τριάδες υποκείμενο ιδιότητα αντικείμενο που περιγράφουν. Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 24

3. Από την RDF στην RDFS Πώς θα μπορούσε όμως κάποιος να ορίσει ένα πράγμα ως άτομο μιας κλάσης (σαν τα αντικείμενα των κλάσεων της Java); Μέσω της property rdf:type της οποίας το αντικείμενο είναι ένας συγκεκριμένος τύπος πραγμάτων που προσδιορίζεται από ένα URI, όπως στο παρακάτω παράδειγμα όπου το product item 10245 δηλώνεται ότι είναι του ειδικού τύπου tent (τέντα). Τα αντικείμενα της ιδιότητας type ονομάζονται κόμβοι τύπου (typed nodes). <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:exterms="http://www.example.com/terms/" xmlns:xsd ="http://www.w3.org/2001/xmlschema#" xml:base="http://www.example.com/2002/04/products"> <rdf:description rdf:id="item10245"> <rdf:type rdf:resource="http://www.example.com/terms/tent"/> <exterms:model rdf:datatype= "xsd:string">overnighter</exterms:model> <exterms:sleeps rdf:datatype= "xsd:integer">2</exterms:sleeps> <exterms:weight rdf:datatype= "xsd:decimal">2.4</exterms:weight> <exterms:packedsize rdf:datatype="xsd:integer">784</exterms:packedsize> </rdf:rdf> Ο παραπάνω κώδικας μπορεί να απλοποιηθεί με την εξής σύμβαση: το rdf:description ενός υποκειμένου και η επακόλουθη ιδιότητα type μαζί με το rdf:resource που προσδιορίζει τον τύπο μπορούν να αντικατασταθούν απλά και μόνο από το namespace που προσδιορίζει τον τύπο. Οπότε ο κώδικας απλοποιείται ως εξής: <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd ="http://www.w3.org/2001/xmlschema#" xmlns:exterms="http://www.example.com/terms/" xml:base="http://www.example.com/2002/04/products"> <exterms:tent rdf:id="item10245"> <exterms:model rdf:datatype= "xsd:string">overnighter</exterms:model> <exterms:sleeps rdf:datatype= "xsd:integer">2</exterms:sleeps> <exterms:weight rdf:datatype= "xsd:decimal">2.4</exterms:weight> <exterms:packedsize Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 25

rdf:datatype= "xsd:integer">784</exterms:packedsize> </exterms:tent> </rdf:rdf> Αν θέλουμε όμως να ορίσουμε τύπους και υπο-τύπους ή αλλιώς κλάσεις και υποκλάσεις μιας ταξινομίας, τότε απαιτείται ένας προκαθορισμένος τύπος που λέγεται class και αποτελεί element όχι της γλώσσας RDF αλλά μιας συμπληρωματικής γλώσσας, της λεγόμενης RDF Schema ή RDFS, στο πλαίσιο της οποίας ορίζονται μεταξύ άλλων τα εξής βασικά elements: rdfs:class δηλ. κλάση πραγμάτων rdfs:resource δηλ. άτομο (instance) μιας κλάσης καθώς και τις εξής ιδιότητες: rdfs:subclassof πρόκειται για μια ιδιότητα που δηλώνει ότι η κλάση υποκείμενο είναι υπο-κλάση της κλάσης αντικείμενο rdfs:subpropertyof πρόκειται για μια ιδιότητα που δηλώνει ότι η ιδιότητα υποκείμενο είναι υπο-ιδιότητα της ιδιότητας αντικείμενο rdfs:domain πρόκειται για μια ιδιότητα που έχει ως υποκείμενο μια ιδιότητα έστω p και ως αντικείμενο μια κλάση ώστε c και δηλώνει ότι τα υποκείμενα της ιδιότητας p είναι άτομα της κλάσης c rdfs:range πρόκειται για μια ιδιότητα που έχει ως υποκείμενο μια ιδιότητα έστω p και ως αντικείμενο μια κλάση ώστε c και δηλώνει ότι τα αντικείμενα της ιδιότητας p είναι άτομα της κλάσης c rdfs:comment - πρόκειται για μια ιδιότητα που δηλώνει ότι το literal αντικείμενο είναι μια αναγνώσιμη από άνθρωπο περιγραφή του resource υποκειμένου rdfs:label - πρόκειται για μια ιδιότητα που δηλώνει ότι το literal αντικείμενο είναι ένα αναγνώσιμο από άνθρωπο όνομα του resource υποκειμένου Κάθε κώδικας RDF/ XML που περιέχει elements ή ιδιότητες της γλώσσας RDFS, πρέπει να ενσωματώνει εκτός των άλλων και το namespace της RDFS http://www.w3.org/2000/01/rdf-schema#. Στη συνέχεια ακολουθεί ένας κώδικας που ορίζει 5 υπο-κλάσεις της κλάσεις Vehicle: <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://example.org/schemas/vehicles"> <rdf:description rdf:id="motorvehicle"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#class"/> <rdf:description rdf:id="passengervehicle"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#class"/> <rdfs:subclassof rdf:resource="#motorvehicle"/> <rdf:description rdf:id="truck"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#class"/> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 26

<rdfs:subclassof rdf:resource="#motorvehicle"/> <rdf:description rdf:id="van"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#class"/> <rdfs:subclassof rdf:resource="#motorvehicle"/> <rdf:description rdf:id="minivan"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#class"/> <rdfs:subclassof rdf:resource="#van"/> <rdfs:subclassof rdf:resource="#passengervehicle"/> </rdf:rdf> Ο κώδικας αυτός, κάνοντας χρήση του προαναφερθέντος κανόνα απλοποίησης των typed nodes, μετατρέπεται στον εξής: <?xml version="1.0"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://example.org/schemas/vehicles"> <rdfs:class rdf:id="motorvehicle"/> <rdfs:class rdf:id="passengervehicle"> <rdfs:subclassof rdf:resource="#motorvehicle"/> </rdfs:class> <rdfs:class rdf:id="truck"> <rdfs:subclassof rdf:resource="#motorvehicle"/> </rdfs:class> <rdfs:class rdf:id="van"> <rdfs:subclassof rdf:resource="#motorvehicle"/> </rdfs:class> <rdfs:class rdf:id="minivan"> <rdfs:subclassof rdf:resource="#van"/> <rdfs:subclassof rdf:resource="#passengervehicle"/> </rdfs:class> </rdf:rdf> Μάρκος Ν. Δενδρινός Καθηγητής ΤΕΙ-Α 27