Dereferenciácia je proces, kedy je URI referencovateľný 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 jednotné referencovateľné 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 jednotný referencovateľných identifikátorov zohrávajú dva komponenty : MetaIS ako referenčný register URI referencovateľných 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 :
Code Block |
---|
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
Code Block |
---|
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 HTTP 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 referencovateľných identifikátorov 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 referencovateľných identifikátorov.
Ž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 :
Code Block |
---|
https://data.gov.sk/id/legal-subject/{id} |
pre potreby URI jednotnej referencovateľnej identifikácie RPO entít. Samotný menný priestor je
Code Block |
---|
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 :
Code Block |
---|
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 referencovateľný identifikátor entity, ktorá je v gescii MetaIS, MetaIS presmeruje URI referencovateľný identifikátor samo do seba. V príklade je zobrazená verzionovateľná entita tj. entita, ktorá má verzie .
...
Code Block |
---|
https://data.gov.sk/def/ontology/{id}/{version} |
URI Jednotný referencovateľný identifikátor ontológie právneho subjektu je :
Code Block |
---|
https://data.gov.sk/def/ontology/legal-subject/2017-05-30.owl |
Code Block |
---|
https://metais.finance.gov.sk/refid/def/ontology/legal-subject/2017-05-30.owl |
Nakoľko MetaIS je priamo správcom ontológiíí, v rámci MetaIS prebehne presmerovanie napríklad na URI
Code Block |
---|
https://metais.finance.gov.sk/view/ontology?view=legal-subject&version=2017-05-30.owl |
Entity, ktoré nemajú verzie a sú v správe MetaIS časť s definovaným parametrom {version} nemajú.
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.
...
Code Block |
---|
https://nejaky-portal.sk/nejaky-context/view?id_parameter={id}&verzia_parameter={version} alebo ako friendly URL https://nejaky-portal.sk/nejaky-context/{id}/{version} |
Note |
---|
Názvy parametrov id_parameter a verzia_parameter v príklade sú ilustratívne a vlastník URI šablóny si ich môže pomenovať ľubovolne. Placeholdery {id},{uri},{version} sú dané a na ich základe je možné vytvoriť šablónu na presmerovanie. |
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 základe týchto požiadaviek je vytvorená metodika, ktorá povoľuje dynamicky dereferencovať zdroj a to :
...
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.
...
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 HTTP hlavičky
Výsledok dereferenciácie je možné ovplyvňovať aj na základe HTTP hlavičiek. Povolené sú preto HTTP hlavičky :
...
Všeobecná špecifikácia tejto HTTP hlavičky sa nachádza na https://tools.ietf.org/html/rfc7232#section-3.3
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.
Príklad:
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í HTTP 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)