Obsah
{ "jméno":"Jan", "příjmení":"Novák", "adresa": { "typ":"pracovní", "ulice":"Botanická", "čísloOrganizační":"68a", "město":"Brno" } }
<?xml version="1.0" encoding="UTF-8"?> <osoba> <jméno>Jan</jméno> <příjmení>Novák</příjmení> <adresa typ="pracovní"> <ulice>Botanická</ulice> <čísloOrganizační>68a</čísloOrganizační> <město>Brno</město> </adresa> </osoba>
JavaScript
nativní podpora
parsing
funkce eval - vhodné pouze při práci s daty ze spolehlivého a důvěryhodného zdroje
var osoba = eval( "{" + kontakt + "}");
metoda JSON.parse() - součástí 4. vydání standardu ECMAScript
JSON parser - obsažen např. v moderních prohlížečích (Firefox 3.5, IE 8, Opera 10.5, Google Chrome, Safari, ...)
PHP - podpora od verze 5.2
Ostatní jazyky - pomocí knihoven
Java - org.json, Json-lib, ...
C - JSON_checker, JSON parser, ...
C++ - jsoncpp, zoolib, ...
další viz např www.json.org
YAML není přímou náhradou XML, není určen pro dokumenty, ale pro serializaci dat
akronym dříve označoval "Yet Another Markup Language", podobnost s XML ale není taková, aby to bylo vhodné
první specifikace květen 2001
nyní (květen 2010) aktuální verze YAML 1.2 (3rd Edition)
Příklad asociativního pole (mapy):
hr: 65 # Home runs
avg: 0.278 # Batting average
rbi: 147 # Runs Batted In
YAML dovoluje do jednoho proudu dat umístit i více dokumentů (souborů)
Oddělujeme je symbolem "tři znaky minus":
---
Dokument končí buďto začátkem dalšího nebo symbolem "tři
tečky": ...
# Ranking of 1998 home runs
---
- Mark McGwire
- Sammy Sosa
- Ken Griffey
# Team ranking
---
- Chicago Cubs
- St Louis Cardinals
---
time: 20:03:20
player: Sammy Sosa
action: strike (miss)
...
---
time: 20:03:47
player: Sammy Sosa
action: grand slam
...
---
hr:
- Mark McGwire
# Following node labeled SS
- &SS Sammy Sosa
rbi:
- *SS # Subsequent occurrence
- Ken Griffey
Mohou mapovat jak mezi skalárními, tak strukturovanými
objekty, pomocí dvojice ? :
? - Detroit Tigers
- Chicago cubs
:
- 2001-07-23
? [ New York Yankees,
Atlanta Braves ]
: [ 2001-07-02, 2001-08-12,
2001-08-14 ]
Integrace XML fragmentů do YAML je snadná:
---
example: >
HTML goes into YAML without modification
message: |
<font name='times' size=10>
<p><i>"Three is always greater than
two, even for large values of two"</i>
</p><p> --Author Unknown </p></font>
date: 2007-06-01
Běžné programovací jazyky nabízejí knihovny pro práci s YAML:
yaml-cpp (pro YAML 1.2)
autor J. Clark, klasický parser pro zpracování řízené
událostmi (call-back), koncepčně podobné SAX, velmi rychlé, část
knihovny libexpat.so
pro Linux
knihovna pro systémy Windows, použitelná z různých programovacích jazyků
je to knihovna pro systémy Linux/UNIX, použitelná např. z
C/C++, část projektu Gnome, ale nevyžaduje jej; zvládá parsing,
zápis, vyhodnocování XPath, XSLT transformace (separátně v
libxslt
)
port parseru Xerces pro C++
V zásadě shodná s přístupem v Javě, existují rozhraní:
DOM pro PHP - plná škála možností, na něž jsme z DOM zvyklí (čtení, validace, zápis vč. prettyprinting, přímé programové vytváření dokumentu, jeho elementů, atd.)
SimpleXML - velmi jednoduché a hojně používané, umožňuje iteraci po prvcích XML, přímé vyhodnocování XPath výrazů atd.
SAX - obdobně jako v Javě, princip stejný, obsaženo ve většině PHP kompilací
Následující kód načte (analyzuje, "parsuje") XML dokument a zapíše jej (serializuje) do souboru
$dom = new DOMDocument();
// konfigurace pro načtení
$dom->preserveWhiteSpace = FALSE;
$dom->load('input.xml');
// konfigurace pro uložení
$dom->formatOutput = TRUE;
$dom->encoding = 'utf-8';
$dom->save('output.xml');
Následující kód načte (analyzuje, "parsuje") XML dokument s knihami a informace o nich vypíše (převzato z Reading and writing the XML DOM with PHP Using the DOM library, SAX parser and regular expressions, Jack Herrington, IBM 2005)
<?php
$g_books = array();
$g_elem = null;
function startElement( $parser, $name, $attrs )
{
global $g_books, $g_elem;
if ( $name == 'BOOK' ) $g_books []= array();
$g_elem = $name;
}
function endElement( $parser, $name )
{
global $g_elem;
$g_elem = null;
}
function textData( $parser, $text )
{
global $g_books, $g_elem;
if ( $g_elem == 'AUTHOR' ||
$g_elem == 'PUBLISHER' ||
$g_elem == 'TITLE' )
{
$g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text;
}
}
$parser = xml_parser_create();
xml_set_element_handler( $parser, "startElement", "endElement" );
xml_set_character_data_handler( $parser, "textData" );
$f = fopen( 'books.xml', 'r' );
while( $data = fread( $f, 4096 ) )
{
xml_parse( $parser, $data );
}
xml_parser_free( $parser );
foreach( $g_books as $book )
{
echo $book['TITLE']." - ".$book['AUTHOR']." - ";
echo $book['PUBLISHER']."\n";
}
?>
Převzato z SimpleXML processing with PHP A markup-specific library for XML processing in PHP by Elliotte Rusty Harold, IBM Developerworks, 2006
<html xml:lang="en" lang="en">
<head>
<title>XPath Example</title>
</head>
<body>
<?php
$rss = simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
foreach ($rss->xpath('//title') as $title) {
echo "<h2>" . $title . "</h2>";
}
?>
</body>
</html>
Výborný úvodní článek ke XML v PHP na IBM Developerworks: Reading and writing the XML DOM with PHP
Elliotte Rusty Harold: SimpleXML processing with PHP A markup-specific library for XML processing in PHP
RDF Model a RDf Schema jsou doporučeními W3C
Specifikace a další informace pracovní skupiny - http://www.w3.org/RDF
RDF je obecný mechanizmus pro specifikaci metadat
je použitelný s libovolnými (i ne-digitálními) zdroji
zdroj (resource) - např.
http://www.fi.muni.cz/~tomp/xml
vlastnost (property) - např. popis
hodnota (value) - např. Domovská stránka předmětu
P138 na FI MU
Dobrý úvodní článek na xml.com
: What is
RDF?
RDF Tutoriál - Zvon RDF Tutorial
RDF Tutoriál - W3Schools RDF Tutoriál
RDF Tutorial http://www710.univ-lyon1.fr/~champin/rdf-tutorial/node1.html
Další RDF Tutorial (.ppt)
je generické metadatové schéma s univerzální použitelností
vznikl původně jako iniciativa knihovníků pro popis bibliografických informací
dnes univerzálně používán - např. pro metadatový popis informací ve veřejné správě (e-Government)
tvoří jej 15 základních elementů s rámcově definovanou sémantikou
elementy je možné rozšiřovat - rozkladem na (obvykle disjunktní) podmnožiny (vždy to musí být podmnožiny některého z původních elementů)
"Jednoduchý" nebo "základní" Dublin Core (angl. Simple Dublin Core nebo Unqualified Dublin Core, dále jen "jednoduchý DC") představuje základní soubor patnácti prvků, který vyvinula a podporuje
Iniciativa pro metadata Dublin Core (Dublin Core Metadata Initiative, DCMI, http://dublincore.org).
Momentálně je aktuální verzí Dublin Core 1.1.
je přijat konsorciem IETF jako tzv. dokument RFC (Request For Comment) 2431rovněž od 2003 jako ISO Standard 15836-2003
Název Jméno dané zdroji Tvůrce Entita primárně odpovědná za vytvoření obsahu zdroje Předmět a klíčová slova Téma obsahu zdroje Popis Vysvětlení obsahu zdroje Vydavatel Entita odpovědná za zpřístupnění zdroje Přispěvatel Entita, která přispěla k vytvoření obsahu zdroje Datum Datum spojené s určitou událostí během existence zdroje Typ zdroje Povaha nebo druh obsahu zdroje Formát Fyzická nebo digitální reprezentace zdroje Identifikátor zdroje Jednoznačný odkaz na zdroj v rámci daného kontextu Zdroj Odkaz na zdroj, z něhož je popisovaný zdroj odvozen Jazyk Jazyk intelektuálního obsahu zdroje Vztah Odkaz na příbuzný zdroj Pokrytí Rozsah nebo záběr obsahu zdroje Správa autorských práv Informace o právech vztahujících se k popisovanému zdroji
Název Zelená kniha o elektronickém obchodu Tvůrce Úřad pro veřejné informační systémy, Úřad vlády Předmět Elektronický obchod, elektronický podpis, bezpečnost, správa Popis Vládní návrh podpory elektronického obchodu v České republice Datum vytvoření 2001-09-20 Datum zveřejnění 2001-10-17 Identifikátor ISBN:?????
(Qualified Dublin Core) obsahuje stejný soubor prvků jako jednoduchý DC a doporučuje další upřesnění a omezení každého prvku.
Typicky se tak děje na základě formálního nebo de-facto mezinárodního standardu, např. může požadovat, aby prvek "jazyk" byl vyplněn v souladu se seznamem ISO pro jazyky (ISO 639).
DTD - http://dublincore.org/documents/2001/11/28/dcmes-xml/dcmes-xml-dtd.dtd
XML Schema - http://dublincore.org/documents/2001/11/28/dcmes-xml/dcmes-xml-xsd.xsd
RDF Schema - rdf/dc-rdf-schema-cz.rdf
RDF Schema pro slovník typů (Type Vocabulary) - /~tomp/xml/rdf/dc-tv-rdf-schema-cz.rdf
Přijmout doporučení Dublin Core a osvojit jej jako Národní metadatový standard (NMS).
Rozšířit tento standard tak, aby vyhovoval potřebám veřejné správy jak pro snadné vyhledávání informací, tak pro správu informačních zdrojů.
Vyvinout Aplikační profil NMS, který bude obsahovat předepsaná kódovací schémata a závazný výklad jednotlivých metadatových prvků.
Připravit Tezaurus veřejné správy.
pro potřeby veřejné správy v zemích Evropské Unie, Austrálie, Kanady a Nového Zélandu je rozpracováván specifický aplikační profil Dublin Core.
Cílem MIReG je vytvořit metadatový rámec (metadata framework), příslušné referenční softwarové nástroje a soubor osvědčených postupů (best practice) pro implementaci rámce v jednotlivých zemích a sektorech. Přitom spolupracuje také s evropskou standardizační autoritou CEN, což dává předpoklad celoevropského respektování vzniklého doporučení.
proces zahájen na sérii pracovních seminářů Managing information resources for e-government (MIReG) a stal se součástí programu Interchange of Data between Administrations (IDA) Evropské Unie.
Dalším partnerem při vytváření evropského metadatového rámce je též projekt ParlML, zaměřený na zpřístupňování informací Evropského parlamentu.
Příslušná pracovní skupina připravuje doporučení DC-Gov Application Profile
Upřesnění (zjemnění, kvalifikaci, specializaci angl. element refinement) metadatových prvků, které přesněji určuje sémantiku daného prvku a tím jej rozděluje na jemněji (přesněji) určené podprvky - např. obecné datum lze kvalifikací rozdělit na menší části, a místo "datum" uvádět přesněji např. "datum vytvoření", "datum zveřejnění", "datum platnosti", "nástupnické datum".
Kvalifikovaný prvek lze však i nadále zpracovávat nástroji, které příslušné kvalifikaci "nerozumějí" - tyto nástroje potom chápou prvek jako by zůstal nekvalifikovaný (všeobecnější), tj. "datum zveřejnění" mohou chápat jako prosté "datum", čímž je sice část sémantiky ztracena, ale prvek může být stále užitečný např. pro vyhledávání.
Kódovací schémata (též kvalifikace hodnoty, angl. encoding scheme nebo value qualification) specifikující formát, ve kterém bude uložena hodnota pro příslušný metadatový prvek, např. "datum" vždy bude uváděno ve formátu rrrr-mm-dd (rok-měsíc-den), což definuje standard ISO 8601.
Kromě formátu může být kvalifikací hodnoty též např. specifikace měrné jednotky, v níž bude hodnota uváděna.
prostředek jak popisovat znalosti
množina pojmů a konstruktů, jak je odvozovat, spojovat atd.
základní kategorie ontologií jsou
Classes (general things) in the many domains of interest
The relationships that can exist among things
The properties (or attributes) those things may have
používá metadatové rámce (např. RDF), ale je
bohatší s přesnější sémantikou
jsou vybudovány obecné rámce pro tvorbu ontologií pro specifické domény
Další návrh pracovní skupině WebOnt - http://www.topicmaps.org/xtm/1.0