Scraping script version 2 (CS)

Podobné dokumenty
Linked Data a jazyk RDF

RDF API a SPARQL syntaxe, API, příklady. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

RDF serializace Turtle

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

Principy XQuery. funkcionální jazyk vše je výraz, jehož vyhodnocením vznikne určitá hodnota základní typy stejné jako v XML Schema:

NSWI096 - INTERNET JavaScript

Příklad buňka tabulky

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

8 Třídy, objekty, metody, předávání argumentů metod

Maturitní otázky z předmětu PROGRAMOVÁNÍ

NSWI142 Webové aplikace Zkouškový test

Prezentace XML. XML popisuje strukturu dat, neřeší vzhled definice vzhledu:

Formuláře. Internetové publikování. Formuláře - příklad

Zápis programu v jazyce C#

Software602 Form Designer

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Dokumentace k nevizuálnímu rozhraní aplikace DopisOnline

Linked Data a jazyk RDF

Správa VF XML DTM DMVS Datový model a ontologický popis

Rozšíření ksh vůči sh při práci s proměnnými

dovolují dělení velkých úloh na menší = dekompozice

Sémantický web 10 let poté

SPARQL teorie, endpointy, pojmenované grafy, web API. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

XML a XSLT. Kapitola seznamuje s šablonami XSLT a jejich použití při transformaci z XML do HTML

Popis XML rozhraní Veřejného webu RŽP

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Tvorba WWW stránek. Mojmír Volf

PRG036 Technologie XML

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Programování v jazyce JavaScript

podnikatele ve formě PDF dokumentu nebo budou jednotlivé datové položky rozvedeny v XML subelementech.

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

Popis XML rozhraní Veřejného webu RŽP

PRG036 Technologie XML

Výčtový typ strana 67

Jak číst a psát RDF. Reprezentace a zpracování znalostí na WWW, Jindřich Mynarz

Výměnný formát XML DTM DMVS PK

Programování v jazyce JavaScript

1. Úvod Vztah k OAI-PMH Terminologie

Další XML technologie

XSLT a jmenné prostory

Syntaxe XML XML teorie a praxe značkovacích jazyků (4IZ238)

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

SPARQL.

Databázové systémy Cvičení 5.2

Algoritmizace a programování

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

PREPROCESOR POKRAČOVÁNÍ

DUM 06 téma: Tvorba makra pomocí VBA

JSON API pro zjišťování cen MtG karet

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Databázové systémy. Cvičení 6: SQL

Dotazování nad XML daty a jazyk XPath

Funkční specifikace ABOKWS. Aplikační rozhraní elektronického bankovnictví ABO-K. Verze 0.5

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Logický datový model VF XML DTM DMVS

Katalog egon služeb verze: 0.01

Oracle XML DB. Tomáš Nykodým

Vývoj Internetových Aplikací

Struktura programu v době běhu

1 Webový server, instalace PHP a MySQL 13

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

RESTful API TAMZ 1. Cvičení 11

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Parsování HTML. Pro účely testování jsem vytvořil stránku parsovani.html. Zdrojový kód:

Knihovna XmlLib TXV druhé vydání říjen 2012 změny vyhrazeny

Obsah. Předmluva Kapitola 1 Úvod 1. Web v kostce 1 Kdo je webmaster? 4 Doporučená literatura 4. Kapitola 2 Přehled jazyka HTML 5

Datový slovník. Datum vyhlášení :00:00. Platnost od data. Platnost do data. Název oblasti datových prvků. Verze 102

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Programování v jazyce JavaScript

NPRG030 Programování I, 2015/16 1 / :25:32

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Formuláře. Internetové publikování

Algoritmizace prostorových úloh

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

Denotační sémantika. Marek Běhálek

XML a DTD. <!DOCTYPE kořenový_element [deklarace definující vlastnosti jednotlivých elementů a atributů]> externí deklarace:

DUM 14 téma: Interakce s uživatelem

APLIKACE XML PRO INTERNET

Integrace meteostanice WANET ME11/ME12 do nadřazených systémů. (pro firmware EM20468)

PŘETĚŽOVÁNÍ OPERÁTORŮ

XPath je jazyk, který slouží k

Kolaborativní aplikace

Aplikace SDNS. XML struktura pro nahrání dat ze souboru. Příručka uživatele (programátora) Sekce informatiky Odbor informačních systémů. verze 1.

Komunikace se serverem IPAS skrze knihovnu clsipas

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Transkript:

Scraping script version 2 (CS) http://sourceforge.net/projects/strigil/ 16.6.2012

Popisuje výběr dat ze zdrojového dokumentu / URL Popisuje mapování dat na ontologické prvky Obsahuje instrukce pro zpracování vstupů (datový protokol, kontrola mime type souboru) Skript začíná zpracováním elementu call-template, který volá hlavní template scriptu Výstup: Zpracování skriptu vznikne jeden nebo více RDF souborů. Jeden výstupní soubor obsahuje všechny sémanticky platné RDF trojice. Zvlášť je důležité dodržet vazby blank nodes v jednom RDF souboru.

Kořenový element script @prefix deklarace namespace ontologií @id unikátní identifikátor skriptu @version verze skriptu <>params parametry skriptu <>call-template začátek zpracování skriptu, volá se hlavní template celého skriptu, najčastěji se začíná na pevné URL <>template definice templatů/šablon <?xml version="1.0" encoding="windows-1250"?> <scr:script version= 2.0 xmlns:scr= http://sourceforge.net/projects/strigil/ prefix= rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema#...

Element param (parent: params) Deklarace pojmenovaných parametrů skriptu @name jméno parametru @default navrhovaná hodnota může být i v těle elementu, přednost má hodnota v atributu <?xml version="1.0" encoding="windows-1250"?> <scr:script > <scr:params> <scr:param name= currentdate >2011-12-20</scr:param> </scr:params> </sscr:script>

Element meta (parent: script) Instrukce pro zpracování (frekvence spouštění, doména použití skriptu) @status draft skript se nespouští, je ve zpracování released skript je uvolněný @maxrate, frequency regx: [0-9]+[dmYh] Pokud by se skutečná frekvence spouštění měnila, neměla by přesáhnout maxrate @maxrate kolikrát se maximálně spustí skript za časovou jednotku @frequency navrhovaná doba mezi dvěma následujícími spuštěními skriptu <scr:meta domain=www.softender.cz/ frequency= 14d author= Karel Dvořák date= 2011-12-23 status= released maxrate= 1000d />

Element call-template (parent: template, ontoelem,script) Volá template a předává parametry URL, cookies získané v předchozích voláních, RDF kontext, pojmenované parametry <>value-of function vrací pole URL adress, na každou z nich se zavolá template, před samotným spuštěním templatu se provede download URL. <> with-param přiřazuje hodnotu pojmenovaným parametrům volané templatu <> http-param dovoluje nastavit parametry pro volání POST nebo GET a pevné hodnoty cookies. Dynamické cookies se předávají v běhovém prostředí. @type protokol a příkaz pro stažení URL adres (např. http/get) @name jedinečné jméno templatu uvnitř skriptu

Element call-template (parent: template, ontoelem,script) Pokud se volá template uvnitř <>ontoelem předává se v kontextu volání i RDF graf a odkaz na právě zpracovávaný uzel grafu. Tím by měli být použity ve vnořeném volání i stejné blank nodes ID. Volání template uvnitř <>script je první element, který se aktivně zpracovává. Představuje vstupní bod procesu zpracování skriptu. <scr:call-template name= SoftenderContract type= hhtp/get > <scr:value-of select=.column-three a @href /> </scr:call-template>

Element template (parent: script) @name unikátní identifikátor templatu @mime internet media type (např.html/text) <>samplepage URL stránky, která byla vzorem pro sestavení templatu <>params deklarace parametrů templatu <>variables deklarace proměnných, proměnné mají platnost pro template <>assign dosazení do proměnné <>ontoelem mapování dat na ontologii <>call-script asynchronní volání skriptu <scr:template name= SoftenderContract mime= text/html >

Element template (parent: script) Template očekává na vstupu následující parametry: odkaz na stažený soubor (např. InputStream) mime type souboru ověřuje se jestli je s tímto typem kompatibilní cookies získané při stahování URL RDF graf odkaz na uzel v RDF grafu, který se zpracovává a bude se uvnitř templatu rozvětvovat. pojmenované parametry

Element group functionorvaluetype(parent: ontoelem) Skupina zaměnitelných elementů použávaných uvnitř ontoelem elementu <>value-of v tomto kontextu použití je element typu value-oftype. Tento typ umožňuje vnořovat ontologické typy a používat výčtové prvky <>function volání funkce. Definice implementovaných funkcí je součástí samostatného dokumentu. Zatím je implementována funkce []string concatenate(string prefix, []string args) (spojování řetězců ). <>switch výběr hodnoty podle podmínek

Element value-of(in group: functionorvaluetype) Návratová hodnota se hledá podle následující hierachie v pořadí: 1. @text 2. @var 3. @value (pokud je definovaná a atributy 4.,5. nebo 6. vrací neprázdnou hodnotu) 4. @replace 5. @regexp (pole hodnot všech matching groups) 6. @select @property - ontologický typ hodnoty <scr:template name= SoftenderContract >.<scr:value-of select=".column-two p @name property= gr:legalname />...

Element value-of(in group: functionorvaluetype) Typ hodnoty vrácené elementem závisí na typu selektoru. Pro html/text platí: Pokud se vybírá element se stromovou strukturou návratová hodnota je pole html elementů. Pokud se vybírá atribut nebo textový uzel - návratová hodnota je pole textových řetězců. Pro každou vybranou hodnotu se prochází tělo elementu value-of. Další vnořené selektory mohou vybírat pouze z části dokumentu vybrané v nadřazeném value-of elementu. Zpracování tabulky může probíhat např. následujícím způsobem vyberu celý řádek pomocí jednoho value-of a buňky v řádku vybírám pomocí vnořených value-of <value-of select="div#uchazecmore tr:not(.dod)" > <scr:ontoelem rel="pc:tender" typeof="pc:tender"> <scr:ontoelem rel="pc:supplier" typeof="gr:businessentity > </scr:ontoelem > </scr:ontoelem > </value-of>

Element value-of(in group: functionorvaluetype) @value Obsahuje hodnotu výčtového typu ontologie Hodnota platí pokud select, regexp, replace dává neprázdnou hodnotu Nahrazuje hodnotu selektoru na výstupu <scr:switch > <scr:value-of select="div#content th:contains(druh zakázky) + td regexp= "(?/d(/w)) property= pc:kind value= pc:supplies /> <scr:value-of select= div#content th:contains(druh zakázky) + td property= pc:kind value= pc:works /> <scr:value-of select=" div#content th:contains(druh zakázky) + td property= pc:kind value= pc:services /> </scr:switch >... @regexp - regulární výraz (...javase/tutorial/essential/regex/) @replace nahradí všechny capturing groups vyhledané regulárním výrazem za řetězec uvedený v atributu INPUT = "aabfooaabfooabfoob"; REGEXP = "a*b"; REPLACE = "- "; OUTPUT = -foo-foo-foo- ;

Element group functionorvalueselect (parent: assign with-apram call-tamplate) Skupina zaměnitelných elementů použávaných hlavně uvnitř volání templatu nebo v parametrech funkcí. Není možné použít <>switch <>value-of v tomto kontextu použití je element typu value-selecttype. Tento typ nedovoluje přiřazovat ontologickou property a výčtové prvky <> function použitá funkce by měla mít návratový typ vyhovující kontextu, ve kterém se používá. Ve schématu skriptu žádné omezení není. Nejčastěji se očekává, že funkce vrací pole textových řetězců, které se podle kontextu např: převedou na URL adresy. Pokud konverze není možná, nastane běhová chyba programu skriptu.

Element function(in group: functionorvaluetype functionorvalueselect) Volání pojmenované funkce. Definice implementovaných funkcí je/bude součástí jiného samostatného dokumentu. Autor skriptu by měl použít jména známých implementovaných funkcí. <>with-param zadání hodnoty parametru funkce, počet parametrů se řídí signaturou implementované funkce. Program skriptu @text jméno volané funkce <function name="concatenate"> <with-param> <value-of var="baseuri"/> </with-param> <with-param> <value-of select="tr:nthchild(odd)"/> </with-param> </function> se pokusí přetypovat parametry a pokud to není možné, dojde k běhové chybě. <function name= add"> <with-param> <value-of var="counter"/> </with-param> </function>...

Element variables (parent: template) Deklaruje jména proměnných platných v kontextu jednoho templatu. Typ proměnné je pole textových řetězců (string[] a;) @name jméno proměnné Příklad: <variables> <variable name="baseuri"/> <variable name="counter"/> </variables> Element assign(parent: template, value-of) Dosazení hodnoty do proměnné <assign var="baseuri"> <value-of text="http://www.samplepage.com/ "/> </assign> Čtení z proměnné <value-of var="baseuri"/>

Element switch(in group: functionorvaluetype) Vytváří větevní programu skriptu. Vnořené value-of se postupně vyhodnocují a vyhodnocování se zastaví u prvního value-of elementu, který vrací hodnotu. <>value-of - může obsahovat vnořené ontoelementya vyhodnotí se pokud je první v poředí, který se vzhodnotí na neprázdnou hodnotu. <scr:switch > <scr:value-of select="div#content th:contains(druh zakázky) + td regexp= "(?/d(/w)) property= pc:kind value= pc:supplies /> <scr:value-of select= div#content th:contains(druh zakázky) + td property= pc:kind value= pc:works /> <scr:value-of select=" div#content th:contains(druh zakázky) + td property= pc:kind value= pc:services /> </scr:switch >...

Element http-params (parent: call-template) Parametry volání http <>cookies pevné hodnoty cookies. Dynamické cookies se předávají v programu automaticky bez definice ve scriptu. <>with-param hodnoty parametrů jak GET/POST <http-params> <cookies> <cookie name="216-ad" domain="www.samplepage.com"> 5646-464-AD5-AD45654A-AD4-HRVSD5-GAH4-45649</cookie> <cookie name="sfaaa >5S66A5E8EGA654JS6556546;G;4S554</cookie> </cookies> <with-param name="datumod">2012-01-01</with-param> </http-params>

Element ontoelem(parent: ontoelem template value-of) Kostruktor RDF dat. OntoElem se mohou do sebe zanořovat. Pro první ontoelem, který se vyskytne ve skriptu může existovat samostantý RDF graf, protože jeho graf není závislý na žádném kontextu. Proto je možné pro něj vytvořit samostatný výstup. @rel ontologický predikát, popisuje vztah mezi objektem a subjektem v RDF trojci. @typeof ontologický typ pro uzel blank node nebo rdf:ressource @about rdf:ressource URI, pokud se dá definovat pevnou hodnotou <>value-of pokud value-of neobsahuje @property ani zanořené ontoelem elementy chápe se výsledek selektoru jako URI označující rdf:ressource ontologického typu definovaného v ontoelem elmentu. Má stejný význam jako hodnota @about.

RDF výstup blank node <scr:template name= SoftenderContract >... <scr:ontoelem rel="pc:bid typeof="pc:bid" >...<scr:call-template name= Foo >... pc: - jmenný prostor ontologie deklarovaný v prefix atributu script elementu Když ve <>value-of není uveden atribut @about vzniká blank node typu @typeof Blank node musí mít jednoznačné ID v rámci jednoho výstupu Template Foo získá RDF graf z kontextu volání a odkaz na právě zpracovávaný blank node (na výstupu templatu budou trojice vztahující se k objektu typu pc:bid)

Příklad zdroj http://www.semily.cz/cz/podnikatel/verejne-zakazky/archiv-verejnychzakazek/nakup-4-elektrokol-pro-sportovni-centrum-semilyhtml pro RDF výstup ve fiktivní ontologii : http://foo/publiccontracts.owl (neexistuje pouze fiktivní) Vstup

<?xml version="1.0" encoding="utf-8"?> <scr:script xmlns:scr="http://sourceforge.net/projects/strigil" version="2.0" prefix="rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs: http://www.w3.org/2000/01/rdf-schema# foo: http://foo/publiccontracts.owl# foaf: http://xmlns.com/foaf/0.1/primarytopic#" id="semilyscript"> <scr:meta author="xx" domain="www.semily.cz" date="2012-06-16" frequency="1m" maxrate="1d" status="released"/> <scr:call-template name="maintemplate" type="http/get"> <scr:value-of text="http://www.semily.cz/cz/podnikatel/verejne-zakazky/archiv-verejnychzakazek/nakup-4-elektrokol-pro-sportovni-centrum-semilyhtml"/> </scr:call-template> <scr:template name="maintemplate" mime="text/html"> <scr:ontoelem typeof="foo:publiccontract"> <scr:ontoelem rel="foo:submittedby" typeof="foaf:organization"> <scr:value-of select=".mod-vz-detail table tr(/td/text()='zadavatel')/td[2]" property="foaf:name"/> </scr:ontoelem> <scr:ontoelem rel="foo:disclosedin" typeof="foaf:document"> <scr:value-of select=".mod-vz-detail table tr(/td/text()='připojené soubory')/td[2]/a(text()='oznámení o zakázce')/@href"/> </scr:ontoelem> <scr:value-of select=".mod-vz-detail table tr(/td/text()='platnost od')/td[2]" property="foo:validfrom"/> <scr:value-of select=".mod-vz-detail table tr(/td/text()='platnost do')/td[2]" property="foo:validuntil"/> <scr:value-of select=".mod-vz-detail table tr(/td/text()='název poptávky')/td[2]" property="foo:hasdescription"/> </scr:ontoelem> </scr:template> </scr:script> Příklad

Příklad očekávaný výstup subject predicate object <http://www.semily.cz/customers/semily/st orage/seznamverzakazky/1297839196.pdf> <Id:1> rdf:type rdf:type foaf:document <http://foo/publiccontracts.owl#p ubliccontract> <Id:7> rdf:type foaf:organization <Id:1> <http://foo/publiccontracts.owl# submittedby> <Id:7> <Id:1> <http://foo/publiccontracts.owl# validfrom> "2011-02-16T00:00:00+01:00"@cs <Id:1> <http://foo/publiccontracts.owl# validuntil> "2011-03-04T12:00:00+01:00"@cs <Id:1> <http://foo/publiccontracts.owl# disclosedin> <http://www.semily.cz/customers/ semily/storage/seznamverzakazky/1297839196.pdf> <Id:1> <http://foo/publiccontracts.owl# hasdescription> <Id:7> foaf:name "SC města X p.o."@cs "Nákup 4 elektrokol pro Sportovní centrum Semily"@cs