1 Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. Obsah JSON ............................................................................................................................... 2 Základní charakteristika ............................................................................................... 2 Datové typy ............................................................................................................... 2 Ukázka zprávy ve formátu JSON a odpovídající XML dokument ........................................ 2 Zpracování formátu JSON ............................................................................................ 3 Co je YAML ..................................................................................................................... 3 Motivace ................................................................................................................... 3 YAML Ain't Markup Language ..................................................................................... 4 Příklad ...................................................................................................................... 4 Možnosti celkově ....................................................................................................... 4 Srovnání ................................................................................................................... 4 Struktura YAML souboru ..................................................................................................... 5 Dokumenty ................................................................................................................ 5 Identifikace uzlů (objektů) a reference ............................................................................ 5 Asociativní pole ......................................................................................................... 5 Asociativní pole na řádku ............................................................................................ 6 Seznamy po řádcích .................................................................................................... 6 Seznamy na řádku ...................................................................................................... 6 Zpracování YAML dat ......................................................................................................... 6 Pořizování, úprava ...................................................................................................... 6 Kombinace s XML a JSON .......................................................................................... 6 Nástroje a API v programovacích jazycích ...................................................................... 7 XML rozhraní pro C/C++ .................................................................................................... 7 Základní knihovny ...................................................................................................... 7 XML rozhraní pro PHP ....................................................................................................... 7 Koncepce .................................................................................................................. 7 Příklad (1) - DOM ...................................................................................................... 8 Příklad (2) - SAX ....................................................................................................... 8 Příklad - SimpleXML .................................................................................................. 9 Další zdroje - weby .................................................................................................... 9 Další zdroje - knihy .................................................................................................... 9 Rámce pro metadata popisující XML a jiné datové zdroje ........................................................ 10 Rámec RDF ............................................................................................................. 10 RDF Model ............................................................................................................. 10 RDF Schema ............................................................................................................ 10 RDF reprezentace užívaných metadatových schémat - Z39.50, Dublin Core atd. .................... 10 Dublin Core - příklad konkrétního metadatového schématu ....................................................... 11 Co je Dublin Core? ................................................................................................... 11 Jednoduchý (Simple) Dublin Core ............................................................................... 11 Dublin Core - elementy ............................................................................................. 11 DC - příklad metadatového popisu ............................................................................... 11 Kvalifikovaný Dublin Core ......................................................................................... 12 Kódování DC v XML ................................................................................................ 12 Nástroje pro práci s RDF ........................................................................................... 12 Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 2 Příklady praktického použití metadat - veřejná správa .............................................................. 12 Rámec pro metadata ISVS ČR .................................................................................... 12 Adaptace Dublin Core pro potřeby veřejné správy .......................................................... 12 Aplikační profil NMS ................................................................................................ 13 Ontologie ........................................................................................................................ 13 Co jsou ontologie? .................................................................................................... 13 Aplikace ontologií (Use Cases) ................................................................................... 14 XML Topic Maps ..................................................................................................... 14 JSON Základní charakteristika • JavaScript Object Notation • založen na podmnožině jazyka JavaScript • specifikace RFC 4627 • MIME type: application/json • přípona souboru .json • využití - serializace a posílání strukturovaných dat přes síť, např. webové služby, ... • alternativa k XML • snadný převod XML-JSON Datové typy • čísla - celá (integer), reálná (real) • řetězce (String) • Unicode znaky • ohraničené úvozovkami '"' • boolean - true, false • pole (Array) - seznam hodnot oddělených čárkou, ohraničený hranatými závorkami • Objekt - kolekce dvojic klíč:hodnota • null Ukázka zprávy ve formátu JSON a odpovídající XML dokument { "jméno":"Jan", "příjmení":"Novák", Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 3 "adresa": { "typ":"pracovní", "ulice":"Botanická", "čísloOrganizační":"68a", "město":"Brno" } } Jan Novák Botanická <čísloOrganizační>68a Brno Zpracování formátu JSON • 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 [http://www.json.org] Co je YAML Motivace • poptávka po lidsky čitelném, tzn. textovém formátu pro serializaci dat Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 4 • méně strojově náročné na zpracování (parsing) než XML • vhodné i pro ruční zápis (to XML neni!) • menší paměťová režie než XML YAML Ain't Markup Language YAML [http://www.yaml.org] 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) [http://www.yaml.org/spec/1.2/spec.html] Příklad Příklad asociativního pole (mapy): • skalární hodnota (řetězec) -> skalární hodnota (číslo) • ... a komentáře za # hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In Možnosti celkově YAML nabízí strukturálně více možností než XML: • snadné zobrazení datových struktur (dokumenty, seznamy, asociativné pole) • různé možnosti pro zápis literálů (skalárních hodnot) - s nebo bez konci řádků atd. • snadný mechanizmus pro reference a odkazování • možnost přesného označení typu dat (nebo využití autodetekce) Srovnání Blízkými příbuznými co do účelu použití jsou • JSON (ten má navíc přímou vazbu na konkrétní pg. jazyk - JavaScript, což může být výhoda i nedostatek) • formát e-mailových zpráv (RFC 2822) • XML • literálové zápisy datových struktur v řadě pg. jazyků: Perl, PHP, C Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 5 Struktura YAML souboru Dokumenty • 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 ... Identifikace uzlů (objektů) a reference • Symbol & slouží k označení a symbolickému pojmenování uzlu, • na nějž se dále odkazuje pomocí * --- hr: - Mark McGwire # Following node labeled SS - &SS Sammy Sosa rbi: - *SS # Subsequent occurrence - Ken Griffey Asociativní pole Mohou mapovat jak mezi skalárními, tak strukturovanými objekty, pomocí dvojice ? : ? - Detroit Tigers Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 6 - Chicago cubs : - 2001-07-23 ? [ New York Yankees, Atlanta Braves ] : [ 2001-07-02, 2001-08-12, 2001-08-14 ] Asociativní pole na řádku V jednodušších případech je úspornější zapsat asociativní pole na řádek {name: John Smith, age: 33} Seznamy po řádcích Prvky seznamu mohou být na jednotlivých řádcích, uvozené znaky - a mezera - item1 continuing - item2 another item Seznamy na řádku Prvky seznamu mohou být na jednom řádku celé [item1, item 2, item3 still item3] Zpracování YAML dat Pořizování, úprava YAML je založen na prostém textovém formátu, přináší proto řadu výhod: • nemá přísně hierarchickou strukturu (tedy žádný kořenový element jako v XML) • prostým spojením dvou YAML dokumentů vznikne opět YAML • dokument v YAML neobsahuje na rozdíl od JSON žádné příkazy, interpretace tedy nepřináší žádná bezpečnostní rizika Kombinace s XML a JSON Integrace XML fragmentů do YAML je snadná: --- example: > HTML goes into YAML without modification message: |

"Three is always greater than Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 7 two, even for large values of two"

--Author Unknown

date: 2007-06-01 Nástroje a API v programovacích jazycích Běžné programovací jazyky nabízejí knihovny pro práci s YAML: C/C++ yaml-cpp [http://code.google.com/p/yaml-cpp/] (pro YAML 1.2) Java jyaml [http://jyaml.sourceforge.net/] .NET/C# Yaml Library for .NET (C#) [http://yaml-net-parser.sourceforge.net/] PHP Spyc [http://code.google.com/p/spyc/] XML rozhraní pro C/C++ Základní knihovny Expat autor J. Clark, klasický parser pro zpracování řízené událostmi (call-back), koncepčně podobné SAX, velmi rychlé, část knihovny libexpat.so [http://www.google.com/search? q=libexpat.so] [http://cs.wikipedia.org/wiki/Speci%C3%A1ln %C3%AD:Search?search=libexpat.so] pro Linux MSXML knihovna pro systémy Windows, použitelná z různých programovacích jazyků libxml2 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 [http:// www.google.com/search?q=libxslt] [http://cs.wikipedia.org/ wiki/Speci%C3%A1ln%C3%AD:Search?search=libxslt]) Xerces-C++ port parseru Xerces pro C++ XML rozhraní pro PHP Koncepce V zásadě shodná s přístupem v Javě, existují rozhraní: stromově orientovaná DOM [http://php.net/manual/en/book.dom.php] 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.) proudové (typu pull) SimpleXML [http://php.net/manual/en/book.simplexml.php] - velmi jednoduché a hojně používané, umožňuje iteraci po prvcích XML, přímé vyhodnocování XPath výrazů atd. Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 8 událostmi řízené SAX [http://php.net/manual/en/book.xml.php] - obdobně jako v Javě, princip stejný, obsaženo ve většině PHP kompilací Příklad (1) - DOM 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'); Příklad (2) - SAX 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) Příklad - SimpleXML Převzato z SimpleXML processing with PHP A markup-specific library for XML processing in PHP by Elliotte Rusty Harold, IBM Developerworks, 2006 XPath Example xpath('//title') as $title) { echo "

" . $title . "

"; } ?> Další zdroje - weby DOM Výborný úvodní článek ke XML v PHP na IBM Developerworks: Reading and writing the XML DOM with PHP [http://www.ibm.com/developerworks/library/os-xmldomphp/] SimpleXML Elliotte Rusty Harold: SimpleXML processing with PHP A markup-specific library for XML processing in PHP [http://www.ibm.com/developerworks/library/x- simplexml.html] Další zdroje - knihy Jiří Kosek: PHP a XML Grada Publishing, 2010 - výborný, dobře čitelný, obsažný přehled jak základů XML, tak možností zpracování v PHP, XML Schema, Relax NG, XSLT, webové služby Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 10 Rámce pro metadata popisující XML a jiné datové zdroje Rámec RDF RDF Model a RDf Schema jsou doporučeními W3C Specifikace a další informace pracovní skupiny - http://www.w3.org/RDF RDF Model RDF je obecný mechanizmus pro specifikaci metadat je použitelný s libovolnými (i ne-digitálními) zdroji základem modelu jsou trojice: • 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 Trojice je možné znázornit • graficky, • jako trojice (r, p, v) nebo • XML syntaxí Blíže viz • Dobrý úvodní článek na xml.com: What is RDF? [http://www.xml.com/pub/a/2001/01/24/rdf.html] • RDF Tutoriál - Zvon RDF Tutorial [http://www.zvon.org/xxl/RDFTutorial/General/book.html] • RDF Tutoriál - W3Schools RDF Tutoriál [http://www.w3schools.com/rdf/default.asp] • RDF Tutorial http://www710.univ-lyon1.fr/~champin/rdf-tutorial/node1.html • Další RDF Tutorial (.ppt) [http://www.aifb.uni-karlsruhe.de/WBS/sst/Teaching/Intelligente%20System %20im%20WWW%20SS%202000/RDF-Tutorial.pdf] RDF Schema • Specifikuje omezení na množiny vlastností, jejich definičních oborů a oborů hodnot • Modeluje se opět v RDF RDF reprezentace užívaných metadatových schémat Z39.50, Dublin Core atd. • RDF je obecný rámec pro modelování metadat, pro konkrétní použití je obvykle nutné definovat schéma přípustných vlastností, jejich domén a množin (přípustných) hodnot. Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 11 • Tím se vytvoří RDF reprezentace daného metadatového schématu. • Reprezentace může mít podobu RDF Schematu. Dublin Core - příklad konkrétního metadatového schématu Co je Dublin Core? • 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ý (Simple) Dublin Core "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 [http://ietf.org] jako tzv. dokument RFC (Request For Comment) 2431rovněž od 2003 jako ISO Standard 15836-2003 Dublin Core - elementy 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 DC - příklad metadatového popisu 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:????? Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 12 Kvalifikovaný Dublin Core • (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). Kódování DC v XML DTD - http://dublincore.org/documents/2001/11/28/dcmes-xml/dcmes-xml-dtd.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 [http:// dublincore.org/documents/2001/11/28/dcmes-xml/dcmes-xml-xsd.xsd] RDF Schema - rdf/dc-rdf-schema-cz.rdf [/~tomp/xml/rdf/dc-rdf-schema-cz.rdf] RDF Schema pro slovník typů (Type Vocabulary) - /~tomp/xml/rdf/dc-tv-rdf-schema-cz.rdf [/~tomp/xml/ rdf/dc-tv-rdf-schema-cz.rdf] Nástroje pro práci s RDF Jena Java RDF API and toolkit [ http://www.hpl.hp.com/semweb/] The ICS-FORTH RDFSuite [http://139.91.183.30:9090/RDF/] DC Creator na University of Bath [http://www.ukoln.ac.uk/cgi-bin/dcdot.pl] další viz http://www.w3.org/RDF [http://www.w3.org/RDF/] Příklady praktického použití metadat - veřejná správa Rámec pro metadata ISVS ČR Kroky budování • 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. Adaptace Dublin Core pro potřeby 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. Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 13 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 Aplikační profil NMS zahrnuje: • 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. Ontologie Co jsou ontologie? 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 Výměnné formáty aplikací -- JSON, YAML. Metadata, sémantický web. 14 jsou vybudovány obecné rámce pro tvorbu ontologií pro specifické domény Aplikace ontologií (Use Cases) • Webové portály, integrace dat na webu • Multimediální kolekce • Správa velkých webů • Dokumentace návrhu • Inteligentní agenti • "Všudypřítomné počítání" Pracovní skupina při W3C [http://www.w3.org/2001/sw/WebOnt/] XML Topic Maps Další návrh pracovní skupině WebOnt - http://www.topicmaps.org/xtm/1.0 [http://www.topicmaps.org/ xtm/1.0/]