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

Rozmyslet vztah mezi LOD slovníky, SSP a JSON-LD kontexty v OFN #317

Closed jakubklimek closed 4 years ago

jakubklimek commented 4 years ago

Pod diskuzi k mapování obsahu OFN na SSP mi není jasný vztah toho, co budeme doporučovat v OFN pro RDF data. Např. best-practices na reuse existujících slovníků vs. užívání toho, co je/bude namodelováno v SSP.

Vezměme si konkrétní příklad s částkou. Podle normálních best-practice s reuse slovníků by se pro specifikaci částky doporučilo GoodRelations, tak, jak to tam teď je. Pomineme-li problém, že nám to neumožňuje využít EU čísleník pro měny (v době GR nebyl), z diskuze mi plyne, že budeme buďto doporučovat částku namodelovanou SSP, nebo dokonce nic jako "reusovatelná specifikace částky v RDF" nebude, protože to bude vždy vztaženo k vlastnosti nějakého subjektu (např. cena vstupného na hřiště) a tedy reuse existujících běžných RDF slovníků nepřichází v úvahu.

Jde mi o to, že samozřejmě pokud doporučíme vše modelovat pomocí SSP, tak jsme my schopni udělat transformaci do běžných slovníků jako jednu z distribucí. Pokud ale doporučíme vše v RDF v českých datech modelovat pomocí SSP, tak bez té transformace (kterou budeme schopni udělat jen my) těm datům nikdo cizí (třeba ze zahraničí) nemá šanci porozumět.

martinnec commented 4 years ago

V SSP se už teď počítá s tím, že pro každý prvek, který namodeluješ můžeš, specifikovat 0..* externích resources, který tvůj prvek specializuje.

On je tam sémantický rozdíl, který se tímhle vyjádří. Představ si např. v SSP pojem "Číselník". Bude se tím myslet ale něco poměrně speciálního - instancí "Číselník" je číselník vedený v nějakém informačním systému veřejné správy. Takže to bude <číselník> a sgov:Číselník . Ale zároveň budeme mít v SSP že sgov:Číselník rfds:subClassOf skos:ConceptScheme. Čili je jen otázkou, zda inferovaný triple <čísleník> a skos:ConceptScheme generujeme do distribucí nebo ne. Můžeme mít klidně distribuci bez materializované inference a distribuci s materializovanou inferencí.

jakubklimek commented 4 years ago

Dle @psiotwo nechceme zatěžovat české poskytovatele dat cizími slovníky, a proto bychom měli linkovat vždy na SSP (a tedy pak pomocí SSP řešit "generování" mezinárodní distribuce). Dle @martinnec ale někdy přímo na slovníky z LOV, např. time ontology. Je třeba to tedy ještě dořešit.

martinnec commented 4 years ago

U tak jasných generických věcí jako price specification, time apod. my přijde už dost divné tam nereusovat existující slovníky. Po tom, co si sepsal tuto issue jsme ústně domlouvali, jak by to mohlo být, tak to sem sepisuju:

Varianta 1) Máme 2 JSON-LD kontexty pro 2 různé distribuce - 1. mapuje na G-SGoV a definuje tak distribuci s plnou sémantickou dle SGoV, 2. mapuje na Good Relations a definuje tak distribuci s plnou compliance s LOD principy, ale ztrátovou vůči plné sémantice SGoV.

Varianta 2) Máme 1 JSON-LD kontext pro 1 distribuci - mapuje na G-SGoV a definuje tak distribuci s plnou sémantickou dle SGoV. Součástí definic G-SGoV je ta ekvivalence uvedená výše (a možná by zde stačila jen specializace, kterou už umíme vyjádřit) s reusovanými slovníky a reprezentace dle reusovaných slovníku se tak dá inferovat.

Vzhledem k tomu, že většina lidí inferovat neumí bych se klonil k té obojetné variantě 1).

jakubklimek commented 4 years ago

K Variantě 1

  1. Bude jeden default? Nebo všechny JSON příklady ve všech OFN 2x s tím, že to budeme muset nějak vysvětlovat? To IMHO nikdo nepochopí, co na to řekne takový Drahomír či Brňáci?
  2. Jaké bude doporučení pro publikující? Který si vybrat?
  3. Jaké bude doporučení pro konzumenty? Slibovali jsme, že ukážou na X datasetů, stáhnou a jedou. Teď půl z nich bude jiné RDF než druhá půlka s tím, že integrace bude zahrnovat proprietární inferenci, která teď nikde není vysvětlená.

K Variantě 2 Je to čisté, ale používá to slovník vycházející z české legislativy, takže tomu nebude rozumět nikdo v zahraničí, bez proprietární inference, která není nikde popsaná. Otázkou pak je, co je interoperabilnější.

Tedy já bych do diskuze zahrnul ještě Variantu 3: mít kontexty co nejvíce LOD, a vše pořešené v SSP. Kdo nechce využívat SSP, nic neřeší. Kdo chce, SSP rozumí, umí inferovat, tak by měl být schopen si to nějak přechroustat.

jakubklimek commented 4 years ago

Pro představu varianty 1 tedy sportoviště s SSP kontextem:

@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ns1: <https://slovník.gov.cz/generický/čas/pojem/> .
@prefix ns2: <https://slovník.gov.cz/dokumentový/ofn-adresy-1.0.1/pojem/> .
@prefix ns3: <https://purl.org/geojson/vocab#> .
@prefix ns4: <https://slovník.gov.cz/veřejný-sektor/pojem/> .
@prefix ns5: <https://slovník.gov.cz/generický/umístění/pojem/> .
@prefix ns6: <https://slovník.gov.cz/generický/věci/pojem/> .
@prefix ns7: <https://slovník.gov.cz/generický/veřejná-místa/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/veřejný-sektor/pojem/prostorový-objekt>,
        <https://slovník.gov.cz/generický/sportoviště/pojem/sportoviště> ;
    ns5:má-adresu [ a <https://slovník.gov.cz/legislativní/sbírka/111/2009/pojem/adresa> ;
            ns2:adresní-místo <https://linked.cuzk.cz/resource/ruian/adresni-misto/16135661> ] ;
    ns7:má-otevírací-dobu [ a <https://slovník.gov.cz/základní/pojem/časová-specifikace> ;
            dcterms:description "Otevírací doba během měsíců červen, červenec, srpen"@cs,
                "Opening hours during June, July and August"@en ;
            dcterms:title "letní otevírací doba"@cs,
                "summer opening hours"@en ;
            ns1:má-časovou-dobu [ a ns1:časová-doba ;
                    ns1:do "22:00:00"^^xsd:time ;
                    ns1:od "06:00:00"^^xsd:time ] ] ;
    ns6:název "HULK GYM"@cs,
        "HULK GYM"@en ;
    ns4:má-geometrii [ a ns3:Point ;
            ns3:coordinates ( 1.599151e+01 4.885668e+01 ) ] .

a sportoviště s LOD kontextem:

@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix locn: <http://www.w3.org/ns/locn#> .
@prefix ns1: <https://purl.org/geojson/vocab#> .
@prefix ns2: <https://slovník.gov.cz/generický/čas/pojem/> .
@prefix ns3: <https://slovník.gov.cz/generický/místa/pojem/> .
@prefix ns4: <https://slovník.gov.cz/generický/veřejná-místa/pojem/> .
@prefix ns5: <https://slovník.gov.cz/dokumentový/ofn-adresy-1.0.1/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ě> ;
    dcterms:title "HULK GYM"@cs,
        "HULK GYM"@en ;
    ns3:má-umístění [ a dcterms:Location ;
            locn:address [ a <https://slovník.gov.cz/legislativní/sbírka/111/2009/pojem/adresa> ;
                    ns5:adresní-místo <https://linked.cuzk.cz/resource/ruian/adresni-misto/16135661> ] ;
            locn:geometry [ a ns1:Point ;
                    ns1:coordinates ( 1.599151e+01 4.885668e+01 ) ] ] ;
    ns4:má-otevírací-dobu [ a <https://slovník.gov.cz/základní/pojem/časová-specifikace> ;
            dcterms:description "Otevírací doba během měsíců červen, červenec, srpen"@cs,
                "Opening hours during June, July and August"@en ;
            dcterms:title "letní otevírací doba"@cs,
                "summer opening hours"@en ;
            ns2:má-časovou-dobu [ a ns2:časová-doba ;
                    ns2:do "22:00:00"^^xsd:time ;
                    ns2:od "06:00:00"^^xsd:time ] ] .
MichalMed commented 4 years ago

Podle mě je správnější přístup mapovat kontext na G-SGoV a ten potom na ISA2 Core Location, z toho ovšem vyplývá , že ten, kdo to zpracovává musí umět aspoň trochu OWL, aby si to vyinferoval.

jakubklimek commented 4 years ago

Připravil jsem oba kontexty, tj. jak LOD-based, tak SSP-based. Tím, jak se rozhodneme je používat, tak můžeme realizovat všechny 3 varianty s tím, že samozřejmě chybí mapování na LOD v SSP, ale to jsme říkali, že teď nehoří. Každá z vydávaných OFN a specifikací má tedy

  1. LOD-based kontext, např. https://pod-test.mvcr.gov.cz/otevřené-formální-normy/sportoviště/draft/kontexty/sportoviště.jsonld
  2. SSP-based kontext, např. https://pod-test.mvcr.gov.cz/otevřené-formální-normy/sportoviště/draft/kontexty/sportoviště.ssp.jsonld

V JSON-LD playgroundu lze tedy koukat, jak se RDF mění podle toho, zda v kontextu je .ssp nebo ne.

Zbývá tedy rozhodnout variantu a zrealizovat, tj. vymyslet a napsat, jak o tomhle budeme čtenáře OFN informovat.

jakubklimek commented 4 years ago

Po diskuzi jsme dospěli k tomu, že minimálně pro účely obcí půjdeme Variantou 3.