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

Σχετικά έγγραφα
ΣΗΜΑΣΙΟΛΟΓΙΚΟΣ ΙΣΤΟΣ - XML

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

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

XML Schemas. (Primer) (Structures) (Datatypes)

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ιαχείριση εδομένων στον Παγκόσμιο Ιστό

Μοντέλο. για ημι-δομημένα μημ δεδομένα. Ημι-δομημένα δεδομένα XML DTD XML Schema

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

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

Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών. ΗΥ-561 Διαχείριση Δεδομένων στο Παγκόσμιο Ιστό Βασίλης Χριστοφίδης

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

SOAP API. Table of Contents

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

Web Services. και SOAP

2 Composition. Invertible Mappings

Αναπαράςταςθ Γνϊςθσ ςτον Παγκόςμιο Ιςτό Ενότθτα 2: XML Δομθμζνα Ζγγραφα Ιςτοφ, Μζροσ 3 ο XML Schema

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

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

How to register an account with the Hellenic Community of Sheffield.

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

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

The Simply Typed Lambda Calculus

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Section 8.3 Trigonometric Equations

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

α) Όσον αφορά το γενικό μήνυμα :

(C) 2010 Pearson Education, Inc. All rights reserved.

C.S. 430 Assignment 6, Sample Solutions

ΥΠΗΡΕΣΙΑ «TAXISNET» - ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΟΒΟΛΗ ΤΩΝ ΦΟΡΟΛΟΓΙΚΩΝ ΔΗΛΩΣΕΩΝ ΓΙΑ ΤΟ ΤΜΗΜΑ ΕΣΩΤΕΡΙΚΩΝ ΠΡΟΣΟΔΩΝ ΚΑΙ ΤΗΝ ΥΠΗΡΕΣΙΑ ΦΟΡΟΥ ΠΡΟΣΤΙΘΕΜΕΝΗΣ ΑΞΙΑΣ ΤΟΥ

Ordinal Arithmetic: Addition, Multiplication, Exponentiation and Limit

Approximation of distance between locations on earth given by latitude and longitude

derivation of the Laplacian from rectangular to spherical coordinates

Galatia SIL Keyboard Information

6.1. Dirac Equation. Hamiltonian. Dirac Eq.

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

Εισαγωγή XML: Extensible Markup Language Ορίστηκε από το WWW Consortium (W3C) ως συµπλήρωµα της HTML. εν σχεδιάστηκε για βάσεις δεδοµένων αλλά για δια

EE512: Error Control Coding

extensible Markup Language: XML

Μορφοποίηση υπό όρους : Μορφή > Μορφοποίηση υπό όρους/γραμμές δεδομένων/μορφοποίηση μόο των κελιών που περιέχουν/

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

Case 1: Original version of a bill available in only one language.

Matrices and Determinants

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Homework 3 Solutions

Chapter 6: Systems of Linear Differential. be continuous functions on the interval

Finite Field Problems: Solutions

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

Physical DB Design. B-Trees Index files can become quite large for large main files Indices on index files are possible.

ω ω ω ω ω ω+2 ω ω+2 + ω ω ω ω+2 + ω ω+1 ω ω+2 2 ω ω ω ω ω ω ω ω+1 ω ω2 ω ω2 + ω ω ω2 + ω ω ω ω2 + ω ω+1 ω ω2 + ω ω+1 + ω ω ω ω2 + ω

Εισαγωγή στην XML (μέρος 1 ο ) Χρήστος Ηλιούδης

SCHOOL OF MATHEMATICAL SCIENCES G11LMA Linear Mathematics Examination Solutions

Every set of first-order formulas is equivalent to an independent set

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Instruction Execution Times

ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ

IIT JEE (2013) (Trigonomtery 1) Solutions

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

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

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-561 ιαχείριση εδοµένων στο Παγκόσµιο Ιστό Βασίλης Χριστοφίδης

Lecture 2: Dirac notation and a review of linear algebra Read Sakurai chapter 1, Baym chatper 3

Example Sheet 3 Solutions

Reminders: linear functions

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

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

Chapter 6: Systems of Linear Differential. be continuous functions on the interval

Lecture 2. Soundness and completeness of propositional logic

5.4 The Poisson Distribution.

Προσομοίωση BP με το Bizagi Modeler

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Χρειάζεται να φέρω μαζί μου τα πρωτότυπα έγγραφα ή τα αντίγραφα; Asking if you need to provide the original documents or copies Ποια είναι τα κριτήρια

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

<address>αδριανείου 2, Νέο Ψυχικό, 11525, Αθήνα</adderss> <address>

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

Τα web services του παρατηρητηρίου τιμών ακολουθούν λογική REST και απαντούν σε GET requests ως ακολούθως:

Fractional Colorings and Zykov Products of graphs

PARTIAL NOTES for 6.1 Trigonometric Identities

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

Αντικειμενοστρεφής Προγραμματισμός

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-561 ιαχείριση εδοµένων στο Παγκόσµιο Ιστό Βασίλης Χριστοφίδης

k A = [k, k]( )[a 1, a 2 ] = [ka 1,ka 2 ] 4For the division of two intervals of confidence in R +

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 2008

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

Inverse trigonometric functions & General Solution of Trigonometric Equations

Mean bond enthalpy Standard enthalpy of formation Bond N H N N N N H O O O

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

FSM Toolkit Exercises

New bounds for spherical two-distance sets and equiangular lines

Δίκτυα Επικοινωνιών ΙΙ: OSPF Configuration

Transcript:

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σημασιολογικός Ιστός (Semantic Web) - XML 9/12/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων XML Schema

XML Schema Σχήμα (schema): γενική αναπαράσταση μιας κατηγορίας πραγμάτων Τι είναι το σχήμα: ένα μοντέλο για την περιγραφή της δομής πληροφοριών ενός αρχείου. Στο πλαίσιο της XML περιγράφει ένα μoντέλο για μια κατηγορία εγγράφων, προσδιορίζοντας: Επιτρεπόμενους συνδυασμούς tags και περιεχομένου σε ένα έγκυρο έγγραφο.

XML Schema Τα μοντέλα περιγράφονται σαν περιορισμοί (constraints). Ένας περιορισμός καθορίζει τι tags, περιεχόμενο κλπ μπορούν να εμφανίζονται σε κάποιο συγκεκριμένο κείμενο Ένας περιορισμός μπορεί να είναι: Μοντέλου περιεχομένου (content model constraint), ο οποίος προσδιορίζει τη διάταξη και τη σειρά υπαρχόντων στοιχείων Τύπου δεδομένων, ο οποίος προσδιορίζει έγκυρους τύπους δεδομένων (π.χ. σε κάποιο στοιχείο XML).

XML Schema Μπορούμε να το δούμε σαν: μια συμφωνία για ένα κοινό λεξιλόγιο ανάμεσα σε εφαρμογές που ανταλλάσσουν έγγραφα ένα τρόπο ελέγχου της εγκυρότητας εγγράφων. Ένα XML σχήμα ενημερώνει έναν επεξεργαστή περιεχομένου XML για το πώς αυτός θα πρέπει να διαβάσει και να επεξεργαστεί το έγγραφο. Ο επεξεργαστής διαβάζει τους κανόνες και τις δηλώσεις του σχήματος και τα χρησιμοποιεί για να παράξει έναν σαρωτή επικύρωσης, ο οποίος μπορεί στη συνέχεια να ελέγξει την εγκυρότητα οποιουδήποτε αρχείου XML που ακολουθεί το συγκεκριμένο σχήμα.

XML Schema Το XML Schema είναι μια πιο προηγμένη έκδοση του DTD. Προσφέρει πολύ μεγαλύτερη ισχύ στην επικύρωση σε σχέση με το DTD Κύριοι στόχοι του XML Schema: Να μπορέσουν να εκφραστούν μέσα στο πρότυπο αρχές αντικειμενοστρεφούς σχεδιασμού οι οποίες μπορούν να βρεθούν σε όλες τις αντικειμενοστρεφείς γλώσσες προγραμματισμού. Να παρέχεται υποστήριξη για σύνθετους τύπους δεδομένων παρόμοια με την υποστήριξη που υπάρχει στις περισσότερες σχεσιακές βάσεις δεδομένων. Αρκετοί οργανισμοί και χρήστες δημιουργούν ποικιλία XML Schemas και DTDs (π.χ. ιατρικά, οικονομικά) που διατίθενται στο internet.

Η χρησιμότητα των σχημάτων Αποτελούν δημοσιοποιήσιμες προδιαγραφές γραμματικής εγγράφων: μας επιτρέπουν να περιγράψουμε με συνοπτικό τρόπο το πώς πρέπει να οργανώνονται έγγραφα μιας συγκεκριμένης κατηγορίας. Επιτρέπουν την ανίχνευση συντακτικών σφαλμάτων στη δομή εγγράφων XML. Αποτελούν έναν φορητό και αποδοτικό τρόπο ελέγχου της εγκυρότητας εγγράφων XML. Είναι επεκτάσιμα και μπορούν να επαναχρησιμοποιηθούν από άλλα σχήματα.

Τι είναι ένα Schema? Ο κόσμος της XML το ορίζει ως: Ένα δομημένο πλαίσιο για τα XML έγγραφα Μια γλώσσα ορισμού (definition language) με δική της σύνταξη και γραμματική Ένα μέσο για τη δόμηση δεδομένων και τον εμπλουτισμό τους με σημασιολογία Μια εναλλακτική λύση σε σχέση με το DTD Αποτελείται από δύο μέρη: Δομή (Structure): http://www.w3.org/tr/2001/rec xmlschema 1 20010502/ Τύπους δεδομένων (Datatypes): http://www.w3.org/tr/2001/rec xmlschema 2 20010502/

DTD XML Schema Οι κυριότερες διαφορές Και τα δύο είναι γλώσσες ορισμού XML εγγράφων Τα schemas γράφονται με χρήση XML Σε αντίθεση με τα DTD s, το XML Schema είναι επεκτάσιμο! Το schema είναι πιο λεπτομερές («φλύαρο») από το DTD Το XML Schema υποστηρίζει namespaces, ενώ το DTD όχι Το XML Schema χρησιμοποιεί σύνταξη XML, εύκολη να την κατανοήσεις, ενώ το DTD χρησιμοποιεί ειδική σύνταξη Το XML Schema υποστηρίζει πρότυπους τύπους δεδομένων καθώς και τύπους ορισμένους από το χρήστη (user-defined) ενώ το DTD παρέχει μόνο τύπους κειμένου Το XML Schema υποστηρίζει κληρονομικότητα, το DTD όχι

DTD XML Schema Μία οπτική σύγκριση

XML Schemas and DTDs Ένα DTD περιγράφει τη δομή ενός XML αρχείου και όχι το περιεχόμενό τους. <QTY> 2 </QTY> <QTY> spoon </QTY> Τα XML Schemas μπορούν να περιγράψουν τον τύπο του περιεχομένου π.χ. numeric Schema valid and invalid XML αρχεία Τα DTDs χρησιμοποιούν EBNF (Extended Backus Naur Form) σύνταξη (grammar), ενώ τα Schemas χρησιμοποιούν σύνταξη XML.

Προβλήματα με τα DTDs <census-record taker= 9170 > <date><month>?</month><day>110</day><year>03</year> </date> <address><city>munkinland</city> <street></street><postalcode></postalcode> </address> <person employed= fulltime pid=? > <name> <last>burgle</last> <first>brad</first> </name> <age>2131234</age> <gender>yes</gender> </person> <census-record>

Προβλήματα με τα DTDs Τα παραπάνω προβλήματα δεν εντοπίζονται από το DTD. Θα μπορούσαν να εντοπιστούν αν γράφαμε τον σχετικό κώδικα που να ελέγχει τους τύπους των δεδομένων. Ωστόσο, μια τέτοια διαδικασία είναι επισφαλής και επιπλέον ξεφεύγει από την λογική της χρήσης των DTD. Τα DTD είναι ωστόσο αυστηρά όσον αφορά: Τη σειρά με την οποία εμφανίζονται τα στοιχεία ενός XML εγγράφου Την εισαγωγή σε ένα έγγραφο στοιχείων που ορίζονται σε χώρους ονομάτων διαφορετικούς από το DTD.

XML Schema Το XML Schema προσφέρει νέες δυνατότητες έναντι των DTD: Πλουσιότερη συλλογή τύπων (booleans, numbers, date and times, URIs, integers, intervals, etc) Διευκολύνσεις για δημιουργία νέων τύπων και αρχετύπων Refinable archetypes: models can be defined as open - all required elements must be present but additional elements may also be present, or refinable - additional elements may be present if the schema defines what they are (inheritance). Υποστήριξη namespaces Ομαδοποίηση ιδιοτήτων

XML Schema The purpose of a schema is to define a class of XML documents, and so the term "instance document" is often used to describe an XML document that conforms to a particular schema. In fact, neither instances nor schemas need to exist as documents per se -- they may exist as streams of bytes sent between applications, as fields in a database record, etc.

Παράδειγμα ενός XML Schema <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.books.org xmlns=http://www.books.org> <xsd:element name="bookstore"> <xsd:complextype> <xsd:sequence> <xsd:element ref="book" minoccurs="1 maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="book"> <xsd:complextype> <xsd:sequence> <xsd:element ref="title" minoccurs="1" maxoccurs="1"/> <xsd:element ref="author" minoccurs="1" maxoccurs="1"/> <xsd:element ref="date" minoccurs="1" maxoccurs="1"/> <xsd:element ref="isbn" minoccurs="1" maxoccurs="1"/> <xsd:element ref="publisher" minoccurs="1" maxoccurs="1"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="date" type="xsd:string"/> <xsd:element name="isbn" type="xsd:string"/> <xsd:element name="publisher" type="xsd:string"/> </xsd:schema>

Παράδειγμα XML Εγγράφου που υπακούει στο XML Schema <?xml version="1.0"?> <BookStore xmlns ="http://www.books.org" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.books.org/bookstore.xsd" > <Book> </Book> <Title>Web Services Security</Title> <Author>Ravi Trivedi</Author> <Date>Dec, 2002</Date> <ISBN>1861007655</ISBN> <Publisher>Wrox Publishing</Publisher> </BookStore>

Τι είναι ένα XML Schema? Το XML Schema ορίζει τα «νόμιμα» building blocks ενός εγγράφου XML, όπως το DTD Ένα XML Schema: Ορίζει τα στοιχεία που εμφανίζονται στο έγγραφο Ορίζει τις ιδιότητες που εμφανίζονται στο έγγραφο Ορίζει ποια elements είναι child elements Ορίζει τη σειρά των child elements Ορίζει το πλήθος των child elements Ορίζει αν ένα element είναι κενό ή περιλαμβάνει κείμενο Ορίζει τύπους δεδομένων για elements και attributes Ορίζει default και fixed τιμές για elements και attributes Τα XML Schemas είναι οι απόγονοι των DTDs Τα XML Schemas είναι επεκτάσιμα σε μελλοντικές προσθήκες Τα XML Schemas είναι πλουσιότερα και πιο δυναμικά από τα DTDs Τα XML Schemas γράφονται σε XML Τα XML Schemas υποστηρίζουν τύπους δεδομένων Τα XML Schemas υποστηρίζουν namespaces

XML Schema Παράδειγμα XML έγγραφο <?xml version="1.0" encoding="utf-8"?> <mobile_phone> <name>sony Xperia</name> <price>200</price> </mobile_phone> DTD <!DOCTYPE mobile_phone [ <!ELEMENT mobile_phone (name, price)> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> ]

XML Schema Παράδειγμα XML Schema (Α Τρόπος) <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="mobile_phone"> <xs:complextype> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="price" type="xs:string" /> </xs:sequence> </xs:complextype> </xs:element> </xs:schema>

XML Schema Παράδειγμα XML Schema (B Τρόπος) <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="mobile_phone type="phone_type /> <xs:complextype name= phone_type > <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="price" type="xs:string" /> </xs:sequence> </xs:complextype> </xs:schema>

Δήλωση elements Η δήλωση των στοιχείων γίνεται με την ετικέτα <xs:element>. Μπορούμε να αναφερθούμε σε ένα άλλο στοιχείο χρησιμοποιώντας την ιδιότητα ref, π.χ. <xs:element ref= Customer >. Συχνότητα εμφάνισης στοιχείων

Δήλωση elements Τα elements δηλώνονται με τη χρήση του <element> tag <element name = FirstName type = string /> Βασίζονται είτε σε απλούς είτε σε σύνθετους τύπους <element name Address type = AddressType /> Μπορεί να περιέχουν απλούς ή άλλους σύνθετους τύπους <element name = Orders > <complextype> <sequence> <element name = OrderNo type = string /> <element name = ProductNo type = string /> </sequence> </complextype> </element> Μπορεί να περιέχουν αναφορές σε υπάρχον element <element ref = FirstName />

Τύποι δεδομένων Ορισμός τύπος δεδομένων Απλοί (simple) ή βασικοί/πρωταρχικοί (primitive) τύποι Βασίζονται ή παράγονται από τους τύπους δεδομένων στο Schema extendable Σύνθετοι τύποι (complex) Περιέχουν άλλα στοιχεία και ορίζουν δομή στοιχείων extendable Facets Δήλωση τύπων δεδομένων

Τύποι δεδομένων Δύο τύποι δεδομένων: Εγγενείς και οριζόμενοι από το χρήστη Εγγενείς Βασικοί τύποι δεδομένων: string, double, recurringduration, κ.λπ. Παραγόμενοι (derived) τύποι δεδομένων: CDATA, integer, date, byte, κ.λπ. Παράγονται από τους βασικούς τύπους Παράδειγμα: ο τύπος integer προέρχεται από τον τύπο double Οριζόμενοι από το χρήστη Παράγονται από εγγενείς τύπους δεδομένων ή από άλλους τύπους δεδομένων που έχει ορίσει ο χρήστης

Απλός τύπος: <simpletype> Η απλούστερη δήλωση τύπου: <simpletype name = FirstName type = string /> Μπορεί να βασίζεται σε κάποιον εγγενή τύπο δεδομένων (βασικό ή παραγόμενο) Δεν μπορεί να περιέχει sub elements ή attributes Μπορεί να προσδιορίσει περιοριστικές ιδιότητες ( facets ) minlength, maxlength, Length, κ.λπ. Μπορεί να χρησιμοποιηθεί σαν τύπος βάσης για έναν σύνθετο τύπο (complextype)

Σύνθετος τύπος: <complextype> Χρησιμοποιείται για να δηλώσει ένα νέο σύνθετο τύπο Μπορεί να βασίζεται σε απλούς ή άλλους υπάρχοντες σύνθετους τύπους Μπορεί να δηλώνει elements ή element references: <element name=... type =... /> <element ref=... /> Μπορεί να δηλώνει attributes ή reference attribute groups <attribute name=... type=... /> <attributegroup ref =... />

Σύνθετος τύπος: <complextype> Element content models Simple Mixed Elements in mixed content can be ordered Sequences and choices All Can contain nested sequences and choices All elements required but order is not important

Σύνθετος τύπος: <complextype> Στοιχείο Choice Χρησιμοποιώντας την ετικέτα <xs:choice> μπορούμε να επιλέξουμε ένα στοιχείο από έναν συγκεκριμένο αριθμό στοιχείων που μας δίνονται. Στοιχείο Sequence Χρησιμοποιώντας την ετικέτα <xs:sequence> τα στοιχεία πρέπει να εμφανίζονται στην σειρά. Στοιχείο All Χρησιμοποιώντας την ετικέτα <xs:all> τα στοιχεία εμφανίζονται μία ή καμία φορά και με οποιαδήποτε σειρά.

Defining a Complex Element Ορισμός σύνθετων τύπων: <elementtype name = address > <sequence> <elementtyperef name = name minoccur= 1 maxoccur= 2 /> <elementtyperef name = street minoccur= 1 maxoccur = 2 /> <elementtyperef name = city minoccur= 1 maxoccur = 1 /> <elementtyperef name = zip minoccur= 1 maxoccur = 1 /> <elementtyperef name = country minoccur= 0 maxoccur = 1 /> </sequence> </elementtype>

Παράδειγμα ορισμού σύνθετου τύπου <complextype name= Customer > <sequence> <element name= Person type= Name /> <element name= Address type= Address /> </sequence> </complextype> <complextype name= Address > <sequence> <element name= Street type= string /> <element name= City type= string /> <element name= State type= State_Region /> <element name= PostalCode type= string /> <element name= Country type= string /> </sequence> </complextype>

Απαιτήσεις σε Complex Types Δύο δηλώσεις elements με το ίδιο name που εμφανίζονται στο ίδιο complex type πρέπει να έχουν ίδιο τύπο <complextype name= some_type"> <choice> </choice> </complextype> <element name= foo" type= string"/> <element name= foo" type= integer"/> Αυτή η απαίτηση επιτρέπει αποδοτική υλοποίηση Το all μπορεί να περιέχει element (π.χ. όχι sequence)

Δήλωση Κενού Στοιχείου Κενά στοιχεία Στο στοιχείο <xs:complextype> προσθέτουμε την ιδιότητα content= empty.

Δήλωση attributes Δηλώνονται με τη χρήση του <attribute> tag Ζεύγη τιμών Μπορούν να ανατεθούν μόνο σε σύνθετους τύπους <complextype> Μπορούν να ομαδοποιηθούν σε μια ομάδα (attribute group) Βασίζονται σε απλούς τύπους (<simpletype>) είτε με αναφορά είτε άμεσα <attribute name = age type= integer /> <!-- OR --> <attribute name = age > </attribute> <simpletype> </simpletype> <restriction base= integer > <maxlength = 3 /> </restriction>

Δήλωση attributes Χρήση της ιδιότητας use: Required: Η ιδιότητα είναι υποχρεωτική και μπορεί να έχει οποιαδήποτε τιμή. (default τιμή) Optional: Η ιδιότητα είναι προαιρετική και μπορεί να έχει οποιαδήποτε τιμή. Fixed: Η τιμή της ιδιότητας είναι σταθερή και δίνεται με την ιδιότητα value. Default: Αν η ιδιότητα έχει τιμή, τότε είναι αυτή που υπάρχει στο XML Schema έγγραφο. Αν η ιδιότητα δεν έχει τιμή, τότε παίρνει την προκαθορισμένη τιμή που δίνεται από την ιδιότητα value. Prohibited: Η ιδιότητα δεν πρέπει να εμφανιστεί.

Δήλωση ομάδων attributes (Attribute Groups) Τρόπος ομαδοποίησης σχετιζόμενων attributes Διευκολύνει στη λογική οργάνωση Διευκολύνει την επαναχρησιμοποίηση Διευκολύνει τη συντήρηση Βελτιώνει την αναγνωσιμότητα ενός Schema Πρέπει να είναι μοναδική μέσα σε ένα XML Schema Μπορεί να γίνεται αναφορά σε μια ομάδα μέσα σε ορισμούς σύνθετων τύπων

Δήλωση ομάδων attributes (Attribute Groups) <!-- Define the unique group: --> <attributegroup name = CreditCardInfo > <attribute name = CardNumber type = integer use = required /> <attribute name = ExpirationDate type = date use = required /> <attribute name = CardHolder type = FullName use = required /> </attributegroup> <!-- Then you can reference it from a complextype: --> <complextype name = CreditInformation > <attributegroup ref = CreditCardInfo /> </complextype>

Facets Ένας τρόπος να οριστούν περιορισμοί στους τύπους δεδομένων Περιορίζουν το διάστημα τιμών ενός τύπου δεδομένων Specify enumerated values Restrict lexical space Allowed length, pattern, etc Restrict value space Minimum/maximum values, etc Προσδιορίζουν προαιρετικές ιδιότητες Παραδείγματα περιοριστικών facets: precision, minlength,enumeration,... <simpletype name= FirstName > </simpletype> <restriction base = string > </restriction> <minlength value = 0 /> <maxlength value = 25 />

Defines an element called "initials" with a restriction. The only acceptable value is THREE of the LOWERCASE OR UPPERCASE letters from a to z: <xs:element name="initials"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z][a-za-z][a-za-z]"/> </xs:restriction> </xs:simpletype> </xs:elemen Defines an element called "choice" with a restriction. The only acceptable value is ONE of the following letters: x, y, OR z: <xs:element name="choice"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpletype> </xs:element>

Defines an element called "prodid" with a restriction. The only acceptable value is FIVE digits in a sequence, and each digit must be in a range from 0 to 9: <xs:element name="prodid"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpletype> </xs:element>

Defines an element called "letter" with a restriction. The acceptable value is zero or more occurrences of lowercase letters from a to z: <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpletype> </xs:element> The next example also defines an element called "letter" with a restriction. The acceptable value is one or more pairs of letters, each pair consisting of a lower case letter followed by an upper case letter. For example, "stop" will be validated by this pattern, but not "Stop" or "STOP" or "stop": <xs:element name="letter"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][a-z])+"/> </xs:restriction> </xs:simpletype> </xs:element>

Defines an element called "gender" with a restriction. The only acceptable value is male OR female: <xs:element name="gender"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="male female"/> </xs:restriction> </xs:simpletype> </xs:element> The next example defines an element called "password" with a restriction. There must be exactly eight characters in a row and those characters must be lowercase or uppercase letters from a to z, or a number from 0 to 9: <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[a-za-z0-9]{8}"/> </xs:restriction> </xs:simpletype> </xs:element>

Defines an element called "address" with a restriction. The whitespace constraint is set to "preserve", which means that the XML processor WILL NOT remove any white space characters: <xs:element name="address"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:whitespace value="preserve"/> </xs:restriction> </xs:simpletype> </xs:element> Defines an element called "address" with a restriction. The whitespace constraint is set to "replace", which means that the XML processor WILL REPLACE all white space characters (line feeds, tabs, spaces, and carriage returns) with spaces: <xs:element name="address"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:whitespace value="replace"/> </xs:restriction> </xs:simpletype> </xs:element>

Defines an element called "address" with a restriction. The whitespace constraint is set to "collapse", which means that the XML processor WILL REMOVE all white space characters (line feeds, tabs, spaces, carriage returns are replaced with spaces, leading and trailing spaces are removed, and multiple spaces are reduced to a single space): <xs:element name="address"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:whitespace value="collapse"/> </xs:restriction> </xs:simpletype> </xs:element>

To limit the length of a value in an element, we would use the length, maxlength, and minlength constraints. This example defines an element called "password" with a restriction. The value must be exactly eight characters: <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpletype> </xs:element> This example defines another element called "password" with a restriction. The value must be minimum five characters and maximum eight characters: <xs:element name="password"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:minlength value="5"/> <xs:maxlength value="8"/> </xs:restriction> </xs:simpletype> </xs:element>

A Simple Type Example Integer with value (1234, 5678] 01 <xsd:simpletype name= MyInteger > 02 <xsd:restriction base= xsd:integer > 03 <xsd:minexclusive value= 1234 /> 04 <xsd:maxinclusive value= 5678 /> 05 </xsd:restriction> 06 </xsd:simpletype>

A Simple Type Example Validating integer with value (1234, 5678] 01 <data xsi:type='myinteger'></data> INVALID 02 <data xsi:type='myinteger'>andy</data> INVALID 03 <data xsi:type='myinteger'>-32</data> INVALID 04 <data xsi:type='myinteger'>1233</data> INVALID 05 <data xsi:type='myinteger'>1234</data> INVALID 06 <data xsi:type='myinteger'>1235</data> 07 <data xsi:type='myinteger'>5678</data> 08 <data xsi:type='myinteger'>5679</data> INVALID

Converting DTD Original DTD grammar <!ELEMENT order (item)+ > <!ELEMENT item (name,price)> <!ATTLIST item code NMTOKEN #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ATTLIST price currency NMTOKEN USD >

Converting DTD Declare elements <xsd:schema xmlns:xsd='http://www.w3.org/2001/xmlschema'> <xsd:element name= order type='order'/> <xsd:element name='item type='item'/> <xsd:element name='name type='name'/> <xsd:element name='price type='price'/>

Converting DTD Define type for <order> element <!-- <!ELEMENT order (item)+> --> <xsd:complextype name='order'> <xsd:sequence> <xsd:element ref='item' minoccurs='1' maxoccurs='unbounded'/> </xsd:sequence> </xsd:complextype>

Converting DTD Define type for <item> element <!-- <!ELEMENT item (name,price)> --> <xsd:complextype name='item'> <xsd:sequence> <xsd:element ref='name'/> <xsd:element ref='price'/> </xsd:sequence>

Converting DTD Define type for <item> element <!-- <!ATTLIST item code NMTOKEN #REQUIRED> --> <xsd:attribute name='code'> <xsd:simpletype> <xsd:restriction base='xsd:string'> <xsd:pattern value='[a-z]{2}\d{3}'/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:complextype>

Converting DTD Define type for <name> element <!-- <!ELEMENT name (#PCDATA)> --> <xsd:simpletype name='name'> <xsd:restriction base='xsd:string'/> </xsd:simpletype>

Converting DTD Define type for <price> element <!-- <!ELEMENT price (#PCDATA)> --> <xsd:complextype name='price'> <xsd:simplecontent> <xsd:extension base='nonnegativedouble'> <!-- <!ATTLIST price currency NMTOKEN 'USD'> --> <xsd:attribute name='currency' default='usd'> <xsd:simpletype> <xsd:restriction base='xsd:string'> <xsd:pattern value='[a-z]{3}'/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:extension> </xsd:simplecontent> </xsd:complextype>

Converting DTD Define simple type for use with Price type <xsd:simpletype name='nonnegativedouble'> <xsd:restriction base='xsd:double'> <xsd:mininclusive value='0.00'/> </xsd:restriction> </xsd:simpletype> </xsd:schema>

Converting DTD DTD <!ELEMENT order (item)+> <!ELEMENT item (name,price)> <!ATTLIST item code NMTOKEN #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ATTLIST price currency NMTOKEN 'USD'> XML Schema <xsd:schema xmlns:xsd='http://www.w3.org/2001/xmlschema'> <xsd:element name='order' type='order'/> <xsd:element name='item' type='item'/> <xsd:element name='name' type='name'/> <xsd:element name='price' type='price'/> <!-- <!ELEMENT order (item)+> --> <xsd:complextype name='order'> <xsd:sequence> <xsd:element ref='item' minoccurs='1' maxoccurs='unbounded'/> </xsd:sequence> </xsd:complextype> <!-- <!ELEMENT item (name,price)> --> <xsd:complextype name='item'> <xsd:sequence> <xsd:element ref='name'/> <xsd:element ref='price'/> </xsd:sequence> <!-- <!ATTLIST item code NMTOKEN #REQUIRED> --> <xsd:attribute name='code'> <xsd:simpletype> <xsd:restriction base='xsd:string'> <xsd:pattern value='[a-z]{2}\d{3}'/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:complextype> Size comparison!!! XML Schema (continued) <!-- <!ELEMENT name (#PCDATA)> --> <xsd:simpletype name='name'> <xsd:restriction base='xsd:string'/> </xsd:simpletype> <!-- <!ELEMENT price (#PCDATA)> --> <xsd:complextype name='price'> <xsd:simplecontent> <xsd:extension base='nonnegativedouble'> <!-- <!ATTLIST price currency NMTOKEN 'USD'> --> <xsd:attribute name='currency' default='usd'> <xsd:simpletype> <xsd:restriction base='xsd:string'> <xsd:pattern value='[a-z]{3}'/> </xsd:restriction> </xsd:simpletype> </xsd:attribute> </xsd:extension> </xsd:simplecontent> </xsd:complextype> <xsd:simpletype name='nonnegativedouble'> <xsd:restriction base='xsd:double'> <xsd:mininclusive value='0.00'/> </xsd:restriction> </xsd:simpletype> </xsd:schema>

XML Validation XML Schema XML Schema <element name="root"> <complextype content="elementonly"> <sequence> <element ref="a"> <element ref= B"> </sequence> </complextype> </element> DTD <!ELEMENT ROOT (A,B)>

XML Validation XML Schema XML Schema <element name="root"> <complextype content="elementonly"> <choice> <element ref= A"> <element ref= B"> </choice> </complextype> </element> DTD <!ELEMENT ROOT (A B)>

XML Validation XML Schema XML Schema <element name="root"> <complextype content="elementonly"> <choice> <element ref="a"> <sequence> <element ref="b"> <element ref="c"> </sequence> </choice> </complextype> </element> DTD <!ELEMENT ROOT (A (B,C))>

XML Validation XML Schema <element name="root"> XML Schema <complextype content="elementonly"> <sequence> <element ref="a" minoccurs="0 /> <element ref="b MaxOccurs="unbounded /> <element ref="c" minoccurs="0 maxoccurs="unbounded /> <sequence> </complextype> </element> The? sign in the example declares that the child element "message" can occur zero or one time inside the "note" element. The + sign in the example declares that the child element "message" must occur one or more times inside the "note" element. The * sign in the example declares that the child element "message" can occur zero or more times inside the "note" element. DTD <!ELEMENT ROOT (A?,B+,C*) >

XML Validation XML Schema XML Schema <element name="root"> <complextype content="elementonly"> <attribute name="a" type="string" use="required"/> </complextype> </element> DTD <!ATTLIST ROOT a CDATA #REQUIRED>

XML Validation XML Schema <element name="root"> XML Schema <complextype content="elementonly"> <attribute name="a" type="string" use="optional"/> </complextype> </element> DTD <!ATTLIST ROOT a CDATA #IMPLIED>

XML Validation XML Schema XML Schema <element name="root"> <complextype content="elementonly"> <attribute name="a"> <simpletype base="string"> <enumeration value="x"/> <enumeration value="y"/> <enumeration value="z"/> </simpletype> </attribute> </complextype> </element> DTD <!ATTLIST ROOT a (x y z) #REQUIRED;>

XML Validation XML Schema XML Schema <element name="root"> <complextype content="elementonly"> <attribute name="a" type="string" use="fixed" value="x"/> </complextype> </element> DTD <!ATTLIST ROOT a CDATA #FIXED "x">

1) Select which of the following are the XML Schema element that defines a number of occurrences between 1 and 5 for the Telephone_Number element. <xs:element name="telephone_number" type="xs:string" /> a. <xs:element ref="telephone_number" mininclusive="1" maxinclusive="5" /> b. <xs:element ref="telephone_number" minoccurs="1" maxoccurs="5" /> c. <xs:element ref="telephone_number" maxinclusive="5" /> d. <xs:element ref="telephone_number" maxoccurs="5" />

2) Select which of the following are valid XML document with respect to XML Schema Document below. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="data" type="datatype" /> <xs:complextype name="datatype"> <xs:sequence> <xs:element ref="datafile" maxoccurs="100" /> </xs:sequence> </xs:complextype> <xs:element name="datafile" type="datafiletype" /> <xs:complextype name="datafiletype"> <xs:sequence> <xs:element ref="datafilename" /> </xs:sequence> </xs:complextype> <xs:element name="datafilename" type="xs:string" /> </xs:schema> a. <?xml version="1.0" encoding="utf-8"?> <Data> <DataFile> <DataFileName>accountList.xml</DataFileName> </DataFile> <DataFile> <DataFileName>productList.xml</DataFileName> </DataFile> </Data>

2) Select which of the following are valid XML document with respect to XML Schema Document below. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="data" type="datatype" /> <xs:complextype name="datatype"> <xs:sequence> <xs:element ref="datafile" maxoccurs="100" /> </xs:sequence> </xs:complextype> <xs:element name="datafile" type="datafiletype" /> <xs:complextype name="datafiletype"> <xs:sequence> <xs:element ref="datafilename" /> </xs:sequence> </xs:complextype> <xs:element name="datafilename" type="xs:string" /> </xs:schema> b. <?xml version="1.0" encoding="utf-8"?> <Data> <DataFile> <DataFileName>accountList.xml</DataFileName> <DataFileName>productList.xml</DataFileName> </DataFile> </Data>

2) Select which of the following are valid XML document with respect to XML Schema Document below. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="data" type="datatype" /> <xs:complextype name="datatype"> <xs:sequence> <xs:element ref="datafile" maxoccurs="100" /> </xs:sequence> </xs:complextype> <xs:element name="datafile" type="datafiletype" /> <xs:complextype name="datafiletype"> <xs:sequence> <xs:element ref="datafilename" /> </xs:sequence> </xs:complextype> <xs:element name="datafilename" type="xs:string" /> </xs:schema> c. <?xml version="1.0" encoding="utf-8"?> <Data> <DataFile><DataFileName>accountList.xml</DataFileName></DataFile> </Data>

2) Select which of the following are valid XML document with respect to XML Schema Document below. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="data" type="datatype" /> <xs:complextype name="datatype"> <xs:sequence> <xs:element ref="datafile" maxoccurs="100" /> </xs:sequence> </xs:complextype> <xs:element name="datafile" type="datafiletype" /> <xs:complextype name="datafiletype"> <xs:sequence> <xs:element ref="datafilename" /> </xs:sequence> </xs:complextype> <xs:element name="datafilename" type="xs:string" /> </xs:schema> d. <?xml version="1.0" encoding="utf-8"?> <Data> <DataFile/> </Data>

Πηγές / Acknowledgements Βιβλιογραφία http://www.w3schools.com/xml/ http://www.w3.org/xml/ http://www.xml.com/ http://www.xml.org/