• No results found

Structured vs. unstructured data. Semistructured data, XML, DTDs. Motivation for self-describing data

N/A
N/A
Protected

Academic year: 2021

Share "Structured vs. unstructured data. Semistructured data, XML, DTDs. Motivation for self-describing data"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

Semistructured data, XML, DTDs

Introduction to databases

CSCC43 Winter 2011

Ryan Johnson

Thanks to Ramona Truta and Renee Miller for material in these slides

Structured vs. unstructured data

• Databases are highly structured

– Well-known data format: relations and tuples – Every tuple conforms to a known schema

– Data independence? Woe unto you if you lose the schema

• Plain text is unstructured

– Cannot assume any predefined format – Apparent organization makes no guarantees – Self-describing: little external knowledge needed

... but have to infer what the data means

2

Irony: database cannot stand alone

Motivation for self-describing data

• Consider a C struct

• Description:

• struct {

int id;

int type;

char name[8];

struct {

double x;

double y;

} location;

} shape;

• Data at code level:

• {1, 101, “square”,

{1.5, 5.0}}

• Data at byte-level:

• 0x0000000100000065

0x7371756172650000

0x3FF8000000000000

0x4014000000000000

• Pointers? Nightmare!

3

*Very* hard not to embed schema in logic

Enter semistructured data

• Observation: most data has some structure

– Text: sentences, paragraphs, sections, ... – Books: chapters

– Web pages: HTML

• Idea of semistructured data:

– Enforce “well-formatted” data

=> Always know how to read/parse/manipulate it – Optionally, enforce “well-structured” data also => Might help us interpret the data, too

4

(2)

Why not use...

• HTML? <dt style=“color:red”>id<dd>1 <dt>type<dd>101</dd> <dt>name<dd>square <dt>location<dd><dl> <dt>x<dd>1.5 <dt>y</dt><dd>5</dd> </dl> • Pro: popular

• Con: inconsistent, buggy

– div, table, ul instead of dl? – Parsing is *hard*

• Con: data+presentation

– More like a query result – Fixed meaning for all tags

• JSON? { id:1, type:101, name:‘square’, location:{ x:1.5, y:5 }} • Pro: portable • Con: underspecified

– e.g. can’t constrain types

• Con: schema still partly embedded

– what do field names mean?

5

XML: designed for data interchange

6

<books search-terms=“database+design”> <book>

<title>Database Design for Mere Mortals </title> <author>Michael J. Hernandez</author> <date>13/03/2003 </date>

</book> <book id=“B2” >

<title>Beginning Database Design</title> <subtitle>From Novice to Professional</subtitle> <author>Clare Churcher</author>

</book> </books>

Features of XML

• Intentionally similar syntax to HTML

– Tree-structured (hierarchical) format

– Elements surrounded by opening and closing tags – Attributes embedded in opening tags

=> <tag-name attr-name=“attribute”>data</tag-name>

• But with important differences

– Strictly well-formed (must close all tags, etc.) – Tag/attribute names carry no semantic meaning – Data-only format: no implied presentation

• Valid identifiers (for elements and attributes)

– [a-z][A-Z]

7

Both descendants of SGML

<?xml version=“1.0” ?>

<PersonListType=“Student” Date=“2002-02-02” > <Title Value=“Student List” />

<Person> … … … </Person> <Person> … … … </Person> </PersonList>

 Elements are nested

 Root element contains all others

8

Element (or tag) names el em en ts R o o t e le m e n t Empty element attributes

XML terminology

(3)

XML terminology (cont.)

<Person Name = “John” Id = “s111111111”>

John is a nice fellow <Address> <Number>21</Number> <Street>Main St.</Street> </Address> … … … </Person> Opening tag Closing tag: What is open must be closed

Nested element, child of Person

Parent of Address, Ancestor of number “standalone” text, not

very useful as data, non-uniform Child of Address, Descendant of Person C o n te n t o f P e rs o n

Rules for well-formed XML

• Must have a

root element

• Every

opening tag

must have matching closing tag

• Elements must be

properly nested

– <foo><bar></foo></bar>is a no-no

• An

attribute

name can occur at most once in an

opening tag. If it occurs,

– It must have an explicitly specified value (Boolean attrs, like in HTML, are not allowed)

– The value must be quoted (with “ or ‘)

• XML processors not allowed to “fix” ill-formed

documents (HTML browsers expected to!)

Valid names in XML

• Simple rules for elements/attributes names

– may include letters (case sensitive!)

– may include (but not start with) digits and punctuation – no reserved words or keywords

• But lots of gotchas

– Names must not start with “xml” (case insensitive)

– Non-ASCII/latin letters: legal but not all parsers support them – Punctuation is iffy business (one exception: “-”)

• Entity characters always verboten: < > & ’ ”

• Spec recommends “_” instead of “-” (real life: the opposite is true) • “:” is “reserved” for namespaces (not enforced)

• “.” officially discouraged (real life: very rare)

• “$” often used for parameter substitution by XML processors (XQuery, etc.) • Other punctuation vanishingly rare: @ # % ...

– Upper case letters legal but fairly rare

• All caps very rare (just like rest of Internet)

• Often see “book-list” instead of camel case (e.g. BookList)

11

Rule of thumb: lower case and ‘-’ usually best

XML, text, and whitespace

• Adjacent non-tag chars parsed as “text” nodes

• Parser never ignores whitespace

– Leading and trailing space left with its text node – Whitespace between tags produces “empty” text nodes

• Example:

<foo> hi<bar>

ho

</bar> </foo>

12 foo “ hi” bar “\n ho \n” “ “

(4)

Document type definition (DTD)

• Enforces more than “well-formed”-ness

– Which entities may (or must) appear where – Attributes entities may (or must) have – Types attributes and data must adhere to

• DTD “separate” from XML it constraints

– May be embedded in separate section – Most often referenced externally

• Validation: checking XML against its DTD(s)

– Important for interpreting/validating data – Not necessary for parsing

13

Embedded vs. external DTD

• Specified as part of a document

<?xml version=“1.0” ?> <!DOCTYPE Book [

… … … ]>

<Book> … … … </Book>

• Reference to external (stand-alone) DTD

<?xml version=“1.0” ?>

<!DOCTYPE Book “http://csc343.com/book.dtd”> <Book> … … … </Book>

DTD building blocks

• Elements (<an-element>...</an-element>)

– Must always close tags

– If no contents: <empty-element/>

• Attributes (<... an-attr=“...”...>)

• Entities (“special” tokens)

– e.g. &lt; &gt; &amp; &quot; &apos; – HTML defines lots of others (e.g. &nbsp;) – More on this later

• PCDATA (parsed character data)

– Mixed text and markup

– Use entities to escape ‘>’, etc. which should not be parsed

• CDATA ([non-parsed] character data)

– Plain text data

– Tags not parsed, entities not expanded

15

DTD elements

• <!ELEMENT $e ...>

• May contain any of

– Nothing: <!ELEMENT $e EMPTY> – Anything: <!ELEMENT $e ANY> – Text data: <!ELEMENT $ (#PCDATA)>

• Always parsed (#CDATA not allowed here) – Child elements: <!ELEMENT $e (...)>

• Any child referenced must also be declared • Child elements may themselves have children – Mixed content: <!ELEMENT $e (#PCDATA|...

(5)

DTD elements: children

• Base construct: sequence

<!ELEMENT $e (a)> <!ELEMENT $e (a, b, c, ...)>

– Children in XML must appear in DTD declaration order

• Either-or content

<!ELEMENT $e (a|b|...)>

– Exactly one of the options must appear in the XML

• Constraining child cardinality

<!ELEMENT $e (a, b+, c*, d?)> – exactly one (a), at least one (b) – zero or more (c), at most one (d)

17

DTD elements: examples

• <!ELEMENT resume (

bio,interests,education,

experience,awards,service)>

• <!ELEMENT bio (

name, addr, phone, email?, fax?, url?)>

• <!ELEMENT interests (interest+)>

• <!ELEMENT education (degree*)>

• <!ELEMENT awards ((award|honor)*)>

• ...

18

Sequences and either-or can both nest

DTD attributes

• <!ATTLIST $e $a $type $required>

• Declares an attribute $a on element $e

• $type may be any of

– character data: CDATA

– one of a set of values: (v1|v2|...)

– unique identifier (or reference to one/many): ID[REF][S] – valid xml name (or list of names): NMTOKEN[S] – entity (or entities): ENTITY/ENTITIES

• $required may be

– required (not required): #REQUIRED/#IMPLIED – fixed value (always the same): #FIXED “$value” – default value (used if none given): “$value”

19

DTD attributes: examples

• <!ATTLIST person

sin ID #REQUIRED

spouse IDREF #IMPLIED

name CDATA “John Doe”

trusted (yes|no) “no”

species #FIXED “homo sapiens”

alive (yes|no) #IMPLIED

>

20

(6)

DTD attributes: ID[REF][S]

• ID attribute type

– Uniquely identifies an element in the document – Error to have two

– Like HTML ‘id’ attribute, but can have any name

• IDREF

– Refers to another element by ID – Error if corresponding ID does not exist – Like HTML ‘href’ attribute, but no ‘#’ needed

• IDREFS

– List of IDREF attributes, separated by whitespace

21

Problem: only one global set of IDs

DTD entities

• The XML equivalent of #define

<!ENTITY $name “$substituted-value”> – Can’t take parameters, though

• Used just like other entities

<politician-speak>

I vow to lead the fight to stamp out &buzz-word; by instituting powerful new programs that will ...

</politician-speak>

– Pick your favorite substitution: <!ENTITY buzz-word “communism”> <!ENTITY buzz-word “racism”> <!ENTITY buzz-word “terrorism”> <!ENTITY buzz-word “illegal file sharing”>

22

Not heavily used: better templating methods exist

Limitations of DTDs

• Don’t understand namespaces

• Very limited typing (just strings and xml names)

• Very weak referential integrity

– All ID / IDREF / IDREFSuse global ID space

• Can’t express unordered contents conveniently

– How to specify that a,b,c must all appear, but in any order?

• All element names are global

– Is <name> for people or companies?

– can’t declare both in the same DTD

23

XML Schema

• Designed to improve on DTDs

• Advantages:

– Integrated with namespaces – Many built-in types

– User-defined types – Has local element names

– Powerful key and referential constraints

• Disadvantages:

– Unwieldy, much more complex than DTDs

24

References

Related documents

We provide them either a stand alone service (like accounts payable processing) or completely integrated accounting services comprising accounting, financial analysis and

A data model (in a self-describing format such as XML or a specific markup language) holding the information for the Service Catalog to describe standard and extended attributes

Meanwhile, the Respondent Manuel Tiong also filed a case against Sun Insurance for the refund of premiums and the issuance of a writ of preliminary attachment, seeking the payment

Adopting a player centered approach, we delve in particular into the relationship and interactions these games trigger among people (between players, and between players

XML schema allows definition of data types as well as declarations of elements and attributes. simple

Ako vyplýva z grafu (pozri obr. 5.3) najväčší počet respondentov a to 27 % má internetové pripojenie od spoločnosti T-com. Spoločnosť booTIS figuruje na druhom mieste

[r]

In 2011, Trip Advisor started a project to implement an intranet in their company to communicate with their employees and keep them updated about the