datagov-cz / otevrene-formalni-normy

V tomto repozitáři jsou otevřené formální normy pro otevřená data v ČR a sbíráme zde na ně další požadavky. Tento repozitář je udržován v rámci projektu OPZ č. CZ.03.4.74/0.0/0.0/15_025/0013983.
https://ofn.gov.cz
17 stars 13 forks source link

Rozhodnout, zda přeskakovat Umístění při mapování JSON do RDF, nebo G-SGoV výše #363

Closed jakubklimek closed 4 years ago

jakubklimek commented 4 years ago

Varianta 1 - Umístění v G-SGoV Vycházíme z existujícího příkladu sportoviště a existujícího JSON-LD kontextu. Tedy máme

{
    "@context": "https://pod-test.mvcr.gov.cz/otevřené-formální-normy/sportoviště/draft/kontexty/sportoviště.jsonld",
    "typ": "Sportoviště",
    "iri": "http://www.hulkgym.cz/zdroj/gym/pardubice/",
    "název": {
        "cs": "HULK GYM",
        "en": "HULK GYM"
    },
    "umístění": {
        "typ": "Umístění",
        "geometrie": {
            "type": "Point",
            "coordinates": [15.9915114, 48.8566829]
        },
        "adresa": {
            "typ": "Adresa",
            "adresní_místo": "https://linked.cuzk.cz/resource/ruian/adresni-misto/16135661"
        }
    }
}

a z toho RDF:

@prefix ns1: <https://slovník.gov.cz/generický/věci/pojem/> .
@prefix ns2: <https://purl.org/geojson/vocab#> .
@prefix ns3: <https://slovník.gov.cz/generický/místa/pojem/> .
@prefix ns4: <https://slovník.gov.cz/dokumentový/ofn-adresy-1.0.1/pojem/> .
@prefix ns5: <https://slovník.gov.cz/generický/umístění/pojem/> .
@prefix ns6: <https://slovník.gov.cz/veřejný-sektor/pojem/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://www.hulkgym.cz/zdroj/gym/pardubice/> a <https://slovník.gov.cz/generický/sportoviště/pojem/sportoviště> ;
    ns3:má-umístění [ a ns6:lokalizace-prostorového-objektu ;
            ns5:má-adresu [ a <https://slovník.gov.cz/legislativní/sbírka/111/2009/pojem/adresa> ;
                    ns4:adresní-místo <https://linked.cuzk.cz/resource/ruian/adresni-misto/16135661> ] ;
            ns6:má-geometrii [ a ns2:Point ;
                    ns2:coordinates ( 1.599151e+01 4.885668e+01 ) ] ] ;
    ns1:název "HULK GYM"@cs,
        "HULK GYM"@en .

Místo ns6:lokalizace-prostorového-objektu by bylo GSGoV Umístění ale jinak by cesta byla ?sportoviště/ns3:má-umístění/ns5:má-adresu ?adresa.

Varianta 2 - Přeskok Umístění pomocí @nested V existujícím příkladu sportoviště změníme kontext na https://pod-test.mvcr.gov.cz/otevřené-formální-normy/sportoviště/draft/kontexty/sportoviště2.jsonld, který používá změněný kontext https://pod-test.mvcr.gov.cz/otevřené-formální-normy/umístění/draft/kontexty/umístění-nested.jsonld. Tedy:

{
    "@context": "https://pod-test.mvcr.gov.cz/otevřené-formální-normy/sportoviště/draft/kontexty/sportoviště2.jsonld",
    "typ": "Sportoviště",
    "iri": "http://www.hulkgym.cz/zdroj/gym/pardubice/",
    "název": {
        "cs": "HULK GYM",
        "en": "HULK GYM"
    },
    "umístění": {
        "typ": "Umístění",
        "geometrie": {
            "type": "Point",
            "coordinates": [15.9915114, 48.8566829]
        },
        "adresa": {
            "typ": "Adresa",
            "adresní_místo": "https://linked.cuzk.cz/resource/ruian/adresni-misto/16135661"
        }
    }
}

a z toho RDF:

@prefix ns1: <https://slovník.gov.cz/veřejný-sektor/pojem/> .
@prefix ns2: <https://purl.org/geojson/vocab#> .
@prefix ns3: <https://slovník.gov.cz/dokumentový/ofn-adresy-1.0.1/pojem/> .
@prefix ns4: <https://slovník.gov.cz/generický/umístění/pojem/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://www.hulkgym.cz/zdroj/gym/pardubice/> a <https://json-ld.org/playground/Umístění>,
        <https://slovník.gov.cz/generický/sportoviště/pojem/sportoviště> ;
    ns4:má-adresu [ a <https://slovník.gov.cz/legislativní/sbírka/111/2009/pojem/adresa> ;
            ns3:adresní-místo <https://linked.cuzk.cz/resource/ruian/adresni-misto/16135661> ] ;
    ns1:má-geometrii [ a ns2:Point ;
            ns2:coordinates ( 1.599151e+01 4.885668e+01 ) ] ;
    ns1:má-lokalizaci-názvem "HULK GYM"@cs,
        "HULK GYM"@en .

Tedy umístění je přeskočeno. Je ale vidět, že

Varianta 2 ale neřeší ISA Core Location Vocabulary, které odpovídá variantě 1 a změnit ho (v dohledné době, jednoduše) nemůžeme, takže to mapování stejně budeme muset řešit.

martinnec commented 4 years ago

Druhá varianta pořešit to na úrovni JSON-LD kontextu mi přijde čistší. Mapování mezi slovníky budem muset vymyslet v obou variantách. První varianta je mapování té GSGoV Umístění na Michaluv SGoV a na ISA . Druhá varianta je mapování ISA na Michaluv SGoV. Čili druhá varianta zda se je i min mapování. I když to složitější mapování je v obou variantách. Čili já jsem pro druhou variantu.

MichalMed commented 4 years ago

Za mě taky druhá varianta čistší. Pokud se na tom shodneme, předělám V-SGoV. BTW v adrese taky nejsme namapovaní na všechny prvky ISA2 Core, ale jen ty, které dávají v kontextu smysl.

jakubklimek commented 4 years ago

Závěr tedy je, s příhlédnutím k #317, že pro SSP-based kontext umístění se bude přeskakovat v JSON-LD pomocí @nest. V Playgroundu je bug, který způsobuje, že "typ": "Umístění" se aktuálně blbě přeloží do RDF, ale to bych neřešil.