Dereferenciácia je proces, kedy je URI identifikátor entity zároveň možné použiť aj ako URL lokátor entity. Tým je možné zabezpečiť zobrazenie entity vo webovom prehliadači ako aj získať informácii o entite v štrukturovanom formáte (RDF/XML, JSON, XML...). Aby bola zabezpečená šifrovaná komunikácia od počiatku, všetky referenčné URI identifikátory vydávane MetaIS majú doménu data.gov.sk a komunikačný protokol https tj. https://data.gov.sk. Zobrazenie informácií, ktoré sú výsledkom dereferenciácie sú plne v kompetencii zdroja tj. vlastníka menného priestoru. Dereferenciácia môže zohľadňovať prístupové práva a zobrazovať citlivé údaje v zmysle platnej legislatívy.
Kľúčovú rolu v dereferenciacii referenčných URI zohrávajú dva komponenty : MetaIS ako referenčných register URI identifikátorov a portál data.gov.sk, ktorý je doménou pre referenčné dáta.
Riešenie dereferenciácie na sieťovej úrovni pozostáva z nastavenia presmerovania všetkých dopytov na data.gov.sk, ktoré spĺňajú regulárny výraz :
https://data.gov.sk/(id|def|set|doc)/.*
na stránku MetaIS a to takým spôsobom, že všetko čo sa nachádza za https://data.gov.sk/(id|def|set|doc)/.* automaticky presmeruje na
https://metais.finance.gov.sk/refid/(id|def|set|doc)/.*
Primárnym účelom dereferenciácie je zobrazenie entity v čitateľnom tvare vo webovom prehliadači. Preto je pre dereferenciáciu pre webový prehliadač vyžadované použitie GET metódy a hlavičky Content-type: text/html alebo application/xhtml+xml
1.Algoritmus vyhodnocovania dereferenciácie prostredníctvom MetaIS
1.1 Dereferenciácia menného priestoru - bez zadania identifikátora entity
Nakoľko je MetaIS referenčným registrom URI a tým pádom sú všetky menné priestory registrované v ňom, MetaIS sa stáva primárnym kameňom pre dereferenciáciu pridelených menných URI priestorov.
Žiadateľ môže v systéme MetaIS požiadať o pridelenie celého menného priestoru. Napr. RPO požiada o zaregistrovanie menného priestoru :
https://data.gov.sk/id/legal-subject/{id}
pre potreby URI identifikácie RPO entít. Samotný menný priestor je
https://data.gov.sk/id/legal-subject/
Po zadaní tohto menného priestoru do webového prehliadača, portál data.gov.sk presmeruje dopyt na :
https://metais.finance.gov.sk/refid/id/legal-subject/
Nakoľko nie je zadaná presná entita ale menný priestor, MetaIS zobrazí stránku o popise menného priestoru s údajmi ako kto je vlastníkom daného menného priestoru, dátum registrácie a pod.
1.2. Dereferenciácia URI entít v správe MetaIS
MetaIS je primárnym registrátorom niektorých základných entít ako napríklad dátové prvky, ontológie a preto v prípade zadania do webového prehliadača URI entity, ktorá je v gescii MetaIS, MetaIS presmeruje URI samo do seba ako je definované v bode 2. V príklade v bode 2 je zobrazená neverzionovateľná entita tj. entita, ktorá nemá verzie . Jediným rozdielom je pridanie parametru version, ktorý je nutné špecifikovať
Príklad šablóny verzionovateľnej entity:
https://data.gov.sk/def/ontology/{id}/{version}
URI ontológie právneho subjektu je :
https://data.gov.sk/def/ontology/legal-subject/2017-05-30.owl
https://metais.finance.gov.sk/refid/def/ontology/legal-subject/2017-05-30.owl
Nakoľko MetaIS je priamo správcom ontológiíí, vrámci MetaIS prebehne presmerovanie napríklad na URI
https://metais.finance.gov.sk/view/ontology?view=legal-subject&version=2017-05-30.owl
1.3. Dereferenciácia entity mimo správy MetaIS
Žiadateľ môže v systéme MetaIS požadať o pridelenie celého menného priestoru tj. identický proces ako v bode 1.
1.3.1 Neverzionovateľné URI entity
RPO požiada o zaregistrovanie menného priestoru :
https://data.gov.sk/id/legal-subject/{id}
pre potreby URI identifikácie RPO entít.Samotný vlastník menného priestoru RPO, môže definovať šablónu na presmerovania pri dereferenciácii v dvoch možnostiach
a) Použitím celej URI tj. využitie nahradzujúceho vzoru {uri} napr.
https://rpo.statistics.sk/rpo/view?uri={uri} // Konkrétny príklad pre UPVII https://rpo.statistics.sk/rpo/view?uri=https://data.gov.sk/id/legal-subject/50349287
b) Použitím ID časti tj. využitie nahradzujúceho vzoru {id}
https://rpo.statistics.sk/rpo/view?id={id} alebo https://rpo.statistics.sk/rpo/view/{id} // Konkrétny príklad pre UPVII https://rpo.statistics.sk/rpo/view?id=50349287 https://rpo.statistics.sk/rpo/view/50349287
Entita Úradu podpredsedu vlády SR pre investície a informatizáciu pre daný menný priestor by vyzerala nasledovne :
https://data.gov.sk/id/legal-subject/50349287
Po zadaní tohto URI identifikátora do webového prehliadača, portál data.gov.sk presmeruje dopyt na :
https://metais.finance.gov.sk/refid/id/legal-subject/50349287
V prípade, že RPO vyplní šablónu na presmerovanie, MetaIS spraví presmerovanie na stránku registrátora podľa definovaného zdroja.
https://rpo.statistics.sk/rpo/view?id=50349287 alebo https://rpo.statistics.sk/rpo/view/50349287
V prípade, že RPO nevyplní šablónu na presmerovani, MetaIS zobrazí stránku o popise menného priestoru s údajmi ako napríklad kto je vlastníkom daného menného priestoru, dátum registrácie a pod.
1.3.2 Verzionovateľné URI entity (verzionovateľné entity podliehajú špeciálnej špecifikácii)
a) Typ DOC
Verzionovateľné entity typu doc predstavujú špeciálnu kategóriu pre potreby dereferenciácie. Hlavným rozdielom je referencia statických súborov v namapovanom úložisku.
Žiadateľ môže v systéme MetaIS požadať o pridelenie celého menného priestoru. Napr. MEF (modul elektronických formulárov) požiada o zaregistrovanie menného priestoru pre úložisko na dereferenciáciu súborov z definičného balíčka elektronických formulárov:
https://data.gov.sk/doc/egov/eform/{id}/{version}
Samotný unikátny menný priestor je
https://data.gov.sk/doc/egov/eform/
Entita v konkrétnej verzii, ktorý je zároveň jednoznačným URI pre úložisko je
https://data.gov.sk/id/egov/eform/ICO_poskytovatela.nazov_elektronickeho_formulara.jazyk.doplnujuca_informacia/1.1
kde za verziou nasleduje cesta v úložisku na súbor schema.xsd
https://data.gov.sk/doc/egov/eform/ICO_poskytovatela.nazov_elektronickeho_formulara.jazyk.doplnujuca_informacia/1.1/schema.xsd
Nakoľko pre dokumenty typu /doc sú nie je URI časť {id} ani {version} požadovaná, je možné si zaregistrovať aj úložisko ako (ide čisto o príklad, bez reálneho URI pre UPVII dokumenty)
https://data.gov.sk/doc/egov/filesystem/upvii/
A následne je možné pre toto úložisko referovať súbor ako :
https://data.gov.sk/doc/egov/filesystem/upvii/nazov_dokument.pdf
b) Ostatné verzionovateľné entity
Príklad verzionovateľnej entity aplikačná služba
https://data.gov.sk/id/egov/app-service/55119/1.0
2. Technická špecifkácia dopytovania a odpovedí dereferenciácie
2.1 Dynamická zmena dereferenciácie prostredníctvom parametrov
V určitých prípadoch je vhodné, aby mal zdroj viacero možností návratových hodnôt URI entity tj. nie len vizualizácia vo webovom prehliadači, ale aj štruktúrovaná odpoveď vo formáte RDF/XML, JSON, XML. Na zaklade tychto poziadaviek je vytvorená metodika, ktorá povoľuje dynamicky dereferencovať zdroj a to :
- použitím query časti v URI tj. časti za otáznikom
- modifikovaním odpovede dereferenciácie prostredníctvom hlavičky
Tým vzniká pre vlastníka URI šablóny, ktorý dereferenciuje svoje entity povinnosť zdokumentovať v MetaIS parametre dereferenciacie. Parametre či už v hlavičke alebo za znakom otáznik nemenia samotnú identitu URI. Je možné ich chápať ako parametre služby na ten istý zdroj. Identifikátor entity v štandarde nepoužíva query časť v URI tj. identita medzi dvoma URI je preto určená bez query časti v URI.
2.1.1 Prostredníctvom query part v URI
Modifikácia dereferenciácie použitím otáznika, za ktorým pokračujú key=value parametre väzbené cez & znak. Pre každý registrovaný URI menný priestor je vyžadované aby všetky vstupné parametre "key" ako aj ich hodnoty "value" boli štrukturovane zdokumentované v MetaIS.
Modelová situácia (slúži len ako príklad. Samotnú dereferenciáciu https://data.gov.sk/id/egov/app-service/ bude mat v kompetencii subjekt, ktorý vlastní daný menný priestor)
Pri štandardnom dopyte na:
https://data.gov.sk/id/egov/app-service/55119/1.0
sa používateľovi vo webovom rozhraní zobrazia informácie o vlastníkovi, ostatných verziách danej služby, kedy bola služba registrovaná. Nakoľko je dobré aby bola dereferenciácia používaná aj pre vývojárov, pridaním parametra view s hodnotou apidoc by sa zobrazila iná vizualizácia entity so štruktúrovanou dokumentáciou volania služby.
Príklad možnosti získania API dokumentácie k službe
https://data.gov.sk/id/egov/app-service/55119/1.0?view=apidoc
Referenčný identifikátor služby je stále identicky tj.
https://data.gov.sk/id/egov/app-service/55119/1.0
nakoľko čast URI query (časť key=value za ?) nie je braná ako súčasť referenčného identifikátora URI.
2.1.2 Prostredníctvom hlavičky
Výsledok dereferenciácie je možné ovplyvňovať aj na základe hlavičiek. Povolené sú preto hlavičky :
Content-Type
Použitie tejto hlavičky dovoľuje dereferencovať zdroj a to ako pre bežného používateľa, ktorý očakáva webovú vizualizáciu, tak aj pre technického používateľa, ktorý by chcel dostať informácie o zdroji v štruktúrovanej podobe tj. prostredníctom JSON, XML alebo RDF/XML formátu.
Štandardne používame nasledovné hodnoty pre Content-Type hlavičku :
- Vizualizácia pre koncového použ ívateľa
- application/xhtml+xml
- text/html
- Strojov spracovateľný výstup
- application/xml
- application/json
- application/ld+json
- application/rdf+xml
- application/zip
- ...
Media type versioning
Nakoľko sa API poskytovateľov dereferenciácie môže vyvíjať v čase, je možné výsledok/návratovú hodnotu dereferenciácie verzionovať. Na tento účel slúži Media Type Versioning koncept.
Príklad media type versioningu
application/vnd.myname.v1+json
Táto hlavička nemení verziu entity (napr. pri verzionovateľných entitých) ale LEN návratovú hodnotu pri dereferenciácii. V prípade, že pri volaní nie je verzia špecifikovaná, používa sa najnovšia verzia.
If-Modified-Since
Používatelia sa môžu často dopytovať na zdroj, ktorý je verzionovateľný. V prípade, že nie je zadaná verzia v URI, automaticky sa vracia vždy posledná verzia, čo môže byť požadovaná integračná vlastnosť pre mnohé systémy. Pre optimalizáciu poskytovania obsahu sa preto používa práve táto hlavička.
Príklad:
Používateľ chce sťahovať zoznam právnických osôb, ktoré sú vypublikované na portály data.gov.sk. Nakoľko chce mať vždy prehľad o najnovších entitách dopytuje sa na dataset všetkých právnických osôb s URI bez verzie. Daný dataset je ale veľký a tým pádom by často sťahoval obsah čo zaťažuje infraštruktúru. Prostredníctvom tejto hlavičky vie nastaviť, že nový obsah sťahuje len v prípade, že je vypublikovaná nová verzia. Ak sa obsah nezmenil, návratová hodnota má HTTP Status code 304 Not Modified
2.2 HTTP Status codes
1. Dereferenciácia URI pre neregistrovaný menný priestor
V prípade, že používateľ chce dereferencovať URI, ktorého menný priestor nie je registrovaný v MetaIS alebo daná entita nie je v správe MetaIS, systém MetaIS vráti HTTP status code 404.
2. Dereferenciácia URI pre registrovaný menný priestor no neexistujúcu entitu
V prípade, že entita identifikovaná prostredníctvom URI neexistuje v systéme na ktorý bolo z MetaIS spravené presmerovanie, daný systém má povinnosť vrátiť návratovú hodnotu HTTP status code 404. V takom prípade MetaIS zobrazí vlastníka menného priestoru s oznamom, že daná entita neexistuje v zdrojovom systéme.
3. Dereferenciácia nereferenčného URI prvku - prvky, bez data.gov.sk domény
V praxi môže nastať situácia, kedy je jedna entita reprezentovaná viacerými URI. Podľa štandardu je povinnosť mať vytvorený mapovací dataset, ktorý premapováva vlastné URI na referenčné URI, ktoré sú schválené v MetaIS.
Priklad:
Bratislavský kraj sa nachádza vo viacerých číselníkoch s rozdielnymi URI, kde jedno referenčné a používa data.gov.sk. Poskytovateľ má mapovací dataset, kde pozná vzťah :
<https://statistics.sk/id/region/1> owl:sameAs <https://data.gov.sk/id/nuts3/SK010>
V prípade, že poskytovateľ (v tomto príklade štatistický úrad) by mal implementovanú dereferenciáciu, je požadované, aby na zadanie URI https://statistics.sk/id/region/1 do webového prehliadača bola odpoveď HTTP Status code 303 (See Other), ktorá vráti pre danú entitu referenčné URI tj https://data.gov.sk/id/nuts3/SK010 čí sa postupne prečistí celý URI priestor.
4. Not modified pri použití hlavičky If-Modified-Since
V prípade, že sa nezmení verzinovateľný zdroj od času definovaného v If-Modified-Since, je návratová hodnota HTTP Status Code 304 Not Modified.
2.3 Použitie Fragment Identifier (#) v URI na určenie podriadeného prvku vrámci zdroja
Dereferenciácia dokáže odkazovať aj na obsah, pre ktorý je v mnohých prípadoch nutné identifikovať podriadený prvok vrámci dereferencovaného obsahu. Táto požiadavka je riešená pre dokumenty typu /doc pomocou Fragment identifier .
Takýmto spôsobom je možné ukázať
- pri HTML stránke na konkrétnu oblasť stánky (anchor/kotva na stránke)
- pri PDF na konkrétnu stránku. Príklad : tps://data.gov.sk/doc/egov/metais/ADRESAR/V/METAIS/strategicka-priorita.pdf#page=20
- Odkaz na XML prvok, ktorý vychádza z W3C špecifikácie https://www.w3.org/TR/xptr-framework/ . Tento spôsob bude možno súčasťou mapovania centrálneho modelu údajov na XML elektronických súborov. Príklad definovania XML časti pomocou Xpath /Osoba/Priezvisko https://data.gov.sk/doc/egov/eform/ICO_poskytovatela.nazov_elektronickeho_formulara.jazyk.doplnujuca_informacia/1.1/ADRESARE/Subor.xml#xpointer(/Osoba/Priezviesko)