pondělí 7. března 2016

SGG zápočet (2)

Ještě k diskuzi v minulém týdnu. Samozřejmě můžeme využít tu nejpřesnější metodu získávání dat. Rozhodně nikomu nebudu bránit (ani nějakým způsobem znesnadňovat získávání zápočtu) pustit se do mapování v zájmové oblasti. To se týká i využívání jiných typů měření, například GPS. Jen je potřeba si uvědomit, že v praxi při sběru dat typu POI hraje hlavní roli nikoli přesnost (užvatel nemusí mít přesné souřadnice vstupu do restaurace, stačí když uvidí poutač nebo vývěsní ceduli). Důležitá je aktuálnost dat (mimochodem srovnání situace v Klatovech, Google Maps a Mapy.cz nebylo zcela lichotivé) a rychlost jejich sběru, protože to je riziková část projektu z hlediska financí. Nezapomeňte, že data (včetně jejich pořízení) tvoří 70% ceny informačního systému.

Teď k dalším krokům. Minule jsme skončili u CSV souboru. Ten jsem upravil v kancelářském editoru - vymazal zbytečné sloupce, doplnil identifikátor a změnil (pomocí hromadných oprav) kódy Waze klasifikace na URI odkazující na konkrétní prvky ve slovníku. Mimochodem právě tenhle krok by se dal udělat efektivněji.
Dále je potřeba přetransformovat CSV do RDF. Co můžeme použít? Rozhodně neexistuje nějaká univerzální služba nebo software, protože RDF je velice otevřený a univerzální formát. Proto existují dvě možnosti - ručně data přepsat nebo si vytvořit jednoduchý skript. V mém případě jsem uvažoval o XSLT, ale nakonec jsem skončil u BASH skriptu (jednoduchý jazyk pro interpretaci příkazového řádku v Linuxu).

A výsledkem je RDF soubor obsahující POI, resp. POI s povinnými vlastnostmi z datového modelu SPOI. Následující ukázka obsahuje pouze jeden POI.

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:dcterms="http://purl.org/dc/terms/1.1/"
         xmlns:foaf="http://xmlns.com/foaf/0.1/"
         xmlns:geos="http://www.opengis.net/ont/geosparql#"
         xmlns:owl="http://www.w3.org/2002/07/owl#"
         xmlns:poi="http://www.openvoc.eu/poi#"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
         xmlns:sf="http://www.opengis.net/ont/sf#"
         xmlns:skos="http://www.w3.org/2004/02/skos/core#">
<rdf:Description rdf:about="Cerba1">
<rdfs:label xml:lang="cs">Náměstí míru</rdfs:label>
<geos:asWKT rdf:datatype="http://www.openlinksw.com/schemas/virtrdf#Geometry">POINT(13.2934651 49.3951162)</geos:asWKT>
<poi:categoryWaze rdf:resource="http://www.openvoc.eu/waze_classification#Other"/>
<geos:sfWithin rdf:resource="http://dbpedia.org/resource/Czech_Republic"/>
<geos:sfWithin rdf:resource="http://www.geonames.org/3077311"/>
<dc:identifier rdf:resource="Cerba1"/>
<dc:publisher>SPOI (http://sdi4apps.eu/spoi)</dc:publisher>
<dc:title>Náměstí míru</dc:title>
<dc:rights rdf:resource="http://opendatacommons.org/licenses/odbl/1.0/"/>
<dc:source rdf:resource="Otakar Čerba, ZČU"/>
<dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2016-05-21</dcterms:created>
</rdf:Description>
<rdf:RDF>

10 komentářů:

  1. Dobrý den,
    já jsem posledně nepřevedl soubor kml do csv a v Q-GIS se mi to nepodařilo, tak jsem zkusil jiný konvertor. Pro ostatní se chci podělit o odkaz na stažení... převod se mi zde podařil. http://www.benichou-software.com/index.php?option=com_content&view=article&id=1&Itemid=4&lang=fr
    S pozdravem Petr Fiala

    OdpovědětVymazat
  2. Mám dotaz. Ve Vaší ukázce máte jako dc:source uveden string "Otakar Čerba, ZČU", přestože doména vlastnosti dc:source je podle datového modelu SPOI xsd:anyURI. Uniklo mi něco?

    OdpovědětVymazat
    Odpovědi
    1. Pardon, místo doména jsem chtěl napsat rozsah (range)...

      Vymazat
    2. Výborně! V příští verzi opravím na URI (směřované na veřejný profil na LinkedIn).

      Vymazat
  3. V tomto kroku se již budeme o něco lišit.
    CSV jsem otevřel v LibreOffice Calc, uložil jako .ods a doplnil všechny povinné sloupce. Samotný soubor by nedával moc smyslu, protože jsem si obsah buněk "předžvýkal" pro další úpravu v textovém editoru.
    Vyplněná data jsem opět uložil jako CSV a dále editoval v PSPadu. Z CSV jsem ruční editací (poměrně jednoduchou, ale časově asi náročnější než vytvoření skriptu v Bashi) vytvořil RDF soubor v Turtle serializaci.
    Na závěr jsem .ttl soubor prohnal přes online překladač (http://www.easyrdf.org/converter) a výsledkem je RDF/XML s novými body a povinnými informacemi. K nahlédnutí zde: https://drive.google.com/file/d/0BzPnfI3jo4ITZEVWNjZxSmFWcVU/view?usp=sharing

    OdpovědětVymazat
    Odpovědi
    1. Děkuji za soubor. Možná není nutné uvádět element rdf:about, stejnou hodnotu máte v atributu výše. Každopádně je ale nutné uvádět souřadnice v podobě POINT(13.2927677 49.3957446), tedy s atributem rdf:datatype. Je to kvůli systému Virtuoso, který daný atribut vyžaduje pro některé typy dotazů.

      Vymazat
    2. Děkuji za připomínky. Nevěděl jsem, jak přesně se bude překladač chovat, proto jsem raději element rdf:about uvedl explicitně. Datový typ mi unikl, doplním.

      Vymazat
    3. Aha. Teď jsem ale opět narazil na něco, čemu nerozumím. Ve Vámi poskytnutém schematu SPOI (https://drive.google.com/file/d/0B4P8WefNVti-RWRzMjVPNWZteWs/view?usp=sharing) je uvedeno, že rozsahem (range) vlastnosti geos:asWKT je "Literal". To je ale v rozporu jednak se standardem GeoSPARQL: http://www.opengeospatial.org/standards/geosparql (kap. 8.5), ale jednak i s tím, co uvádíte ve Vaší ukázce, tj. "http://www.openlinksw.com/schemas/virtrdf#Geometry". Kde je tedy chyba? A proč nepoužít geos:wktLiteral?

      Vymazat
    4. Ještě jeden komentář: teď vidím, že "Literal" uvádí jen .ods dokument, v UML diagramech publikovaných na blogu je vždy uvedeno WKTLiteral, takže geos:wktLiteral beru jako závazné.

      Vymazat
    5. Díky za připomínku. V .ods dokumentu chybu opravím (objeví se v další publikované verzi).

      Vymazat