JSON, JSON Schema, JSON-LD
Data Formats tutorial
This work is licensed under a Creative Commons Attribution 4.0 International License.
Initial information
The data is sometimes too big to fit in a slide. In that case, copy it from the slide to e.g. Visual Studio Code to see it properly and whole.
2
Task 1
Create a simple JSON document on arbitrary topic with at least
Make sure the JSON is syntactically correct using JSONLint
3
Task 1 - solution
{
"iri": "https://data.gov.cz/lkod/mdcr/katalog",
"type": "Catalog",
"title": {
"cs": "Katalog otevřených dat Ministerstva dopravy",
"en": "Open Data Catalog of the Ministry of Transport"
},
"description": {
"cs": "Otevřená data Ministerstva dopravy. Obsahuje datové sady o jízdních řádech a liniových vedeních veřejné dopravy.",
"en": "Open data of the Ministry of Transport. It contains datasets regarding timetables of public transport."
},
"contact_point": {
"type": "Organization",
"title": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy",
"en": "Ministry of Transport"
},
"e-mail": "mailto:sekretariat.190@mdcr.cz"
},
"public": true,
"homepage": "https://data.gov.cz/datové-sady?poskytovatel=https%3A%2F%2Frpp-opendata.egon.gov.cz%2Fodrpp%2Fzdroj%2Forgán-veřejné-moci%2F66003008",
"publisher": "https://rpp-opendata.egon.gov.cz/odrpp/zdroj/orgán-veřejné-moci/66003008",
"datasets": 3,
"dataset": [
"https://data.gov.cz/lkod/mdcr/datové-sady/vld",
"https://data.gov.cz/lkod/mdcr/datové-sady/seznam-zastavky",
"https://data.gov.cz/lkod/mdcr/datové-sady/seznam-trate"
]
}
4
jq
Now, we will be working with jq using this JSON file, again representing a data catalog with datasets and their distributions.
{
"iri": "https://data.gov.cz/lkod/mdcr/katalog",
"type": "Catalog",
"title": {
"cs": "Katalog otevřených dat Ministerstva dopravy",
"en": "Open Data Catalog of the Ministry of Transport"
},
"description": {
"cs": "Otevřená data Ministerstva dopravy. Obsahuje datové sady o jízdních řádech a liniových vedeních veřejné dopravy.",
"en": "Open data of the Ministry of Transport. It contains datasets regarding timetables of public transport."
},
"contact_point": {
"type": "Organization",
"name": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy",
"en": "Ministry of Transport"
},
"e-mail": "mailto:sekretariat.190@mdcr.cz"
},
"homepage": "https://data.gov.cz/datové-sady?poskytovatel=https%3A%2F%2Frpp-opendata.egon.gov.cz%2Fodrpp%2Fzdroj%2Forgán-veřejné-moci%2F66003008",
"publisher": "https://rpp-opendata.egon.gov.cz/odrpp/zdroj/orgán-veřejné-moci/66003008",
"dataset": [
{
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld",
"type": "Dataset",
"title": {
"cs": "Jízdní řády veřejné linkové dopravy",
"en": "Public transport timetables"
},
"description": {
"cs": "Obsahem datové sady jsou schválené a aktuálně platné jízdní řády veřejné linkové dopravy postoupené do Celostátního informačního systému o jízdních řádech ve strojově zpracovatelném formátu.",
"en": "This dataset contains approved timetables and timetables in effect for public transport entered into the state-wide timetable information system."
},
"publisher": "https://rpp-opendata.egon.gov.cz/odrpp/zdroj/orgán-veřejné-moci/66003008",
"theme": [
"http://publications.europa.eu/resource/authority/data-theme/TRAN"
],
"accrual_periodicity": "http://publications.europa.eu/resource/authority/frequency/WEEKLY_3",
"keyword": {
"cs": [
"jízdní řády",
"veřejná linková doprava",
"autobus"
],
"en": [
"timetable",
"public transport",
"bus"
]
},
"spatial": [
"http://publications.europa.eu/resource/authority/continent/EUROPE"
],
"rúian": [
"https://linked.cuzk.cz/resource/ruian/stat/1"
],
"temporal": {
"type": "Time interval",
"start": "2009-01-01",
"end": "2017-12-31"
},
"contact_point": {
"type": "Organization",
"name": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy",
"en": "Ministry of Transport"
},
"e-mail": "mailto:sekretariat.191@mdcr.cz"
},
"documentation": "https://www.mdcr.cz/Dokumenty/Verejna-doprava/Jizdni-rady,-kalendare-pro-jizdni-rady,-metodi-(1)/Jizdni-rady-verejne-dopravy",
"specification": [
"https://ofn.gov.cz/jízdní-řády/2020-05-01/"
],
"euroVoc": [
"http://eurovoc.europa.eu/4512"
],
"spatial_resolution_in_meters": 12,
"temporal_resolution": "P1D",
"distribution": [
{
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld/distribuce/csv",
"type": "Distribution",
"terms_of_use": {
"type": "Terms of use specification",
"autorské_dílo": "https://creativecommons.org/licenses/by/4.0/",
"autor": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy"
},
"databáze_chráněná_zvláštními_právy": "https://data.gov.cz/podmínky-užití/není-chráněna-zvláštním-právem-pořizovatele-databáze/",
"databáze_jako_autorské_dílo": "https://creativecommons.org/licenses/by/4.0/",
"autor_databáze": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy"
},
"osobní_údaje": "https://data.gov.cz/podmínky-užití/neobsahuje-osobní-údaje/"
},
"access_url": "https://portal.cisjr.cz/pub/draha/mestske/JDF.zip",
"download_url": "https://portal.cisjr.cz/pub/draha/mestske/JDF.zip",
"format": "http://publications.europa.eu/resource/authority/file-type/ZIP",
"media_type": "http://www.iana.org/assignments/media-types/application/json",
"schema": "https://portal.cisjr.cz/schemata/json-schema.json",
"compression_media_type": "http://www.iana.org/assignments/media-types/application/zip",
"package_media_type": "http://www.iana.org/assignments/media-types/application/zip",
"title": {
"en": "JSON distribution in ZIP file",
"cs": "JSON distribuce v ZIP soubrou"
}
},
{
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld/distribuce/sparql",
"type": "Distribution",
"terms_of_use": {
"type": "Terms of use specification",
"autorské_dílo": "https://data.gov.cz/podmínky-užití/neobsahuje-autorská-díla/",
"databáze_chráněná_zvláštními_právy": "https://data.gov.cz/podmínky-užití/není-chráněna-zvláštním-právem-pořizovatele-databáze/",
"databáze_jako_autorské_dílo": "https://data.gov.cz/podmínky-užití/není-autorskoprávně-chráněnou-databází/",
"osobní_údaje": "https://data.gov.cz/podmínky-užití/neobsahuje-osobní-údaje/"
},
"access_url": "https://portal.cisjr.cz/sparql",
"title": {
"en": "SPARQL endpoint for timetables",
"cs": "SPARQL endpoint pro jízdní řády"
},
"access_service": {
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld/služba/sparql",
"type": "Data Service",
"title": {
"cs": "SPARQL endpoint pro jízdní řády",
"en": "SPARQL endpoint for timetables"
},
"specification": [
"https://www.w3.org/TR/sparql11-protocol/"
],
"access_point": "https://portal.cisjr.cz/sparql",
"access_point_description": "https://portal.cisjr.cz/sparql"
}
}
]
},
{
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/žld",
"type": "Dataset",
"title": {
"cs": "Jízdní řády železniční linkové dopravy",
"en": "Railroad timetables"
},
"description": {
"cs": "Obsahem datové sady jsou schválené a aktuálně platné jízdní řády železniční linkové dopravy postoupené do Celostátního informačního systému o jízdních řádech ve strojově zpracovatelném formátu.",
"en": "This dataset contains approved railroad timetables entered into the state-wide timetable information system."
},
"publisher": "https://rpp-opendata.egon.gov.cz/odrpp/zdroj/orgán-veřejné-moci/66003008",
"theme": [
"http://publications.europa.eu/resource/authority/data-theme/TRAN"
],
"accrual_periodicity": "http://publications.europa.eu/resource/authority/frequency/WEEKLY_3",
"keyword": {
"cs": [
"jízdní řády",
"železniční doprava",
"vlak"
],
"en": [
"timetable",
"railroad",
"train"
]
},
"spatial": [
"http://publications.europa.eu/resource/authority/continent/EUROPE"
],
"rúian": [
"https://linked.cuzk.cz/resource/ruian/stat/1"
],
"temporal": {
"type": "Time interval",
"start": "2009-01-01",
"end": "2017-12-31"
},
"contact_point": {
"type": "Organization",
"name": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy",
"en": "Ministry of Transport"
},
"e-mail": "mailto:sekretariat.190@mdcr.cz"
},
"documentation": "https://www.mdcr.cz/Dokumenty/Verejna-doprava/Jizdni-rady,-kalendare-pro-jizdni-rady,-metodi-(1)/Jizdni-rady-verejne-dopravy",
"specification": [
"https://ofn.gov.cz/jízdní-řády/2020-05-01/"
],
"euroVoc": [
"http://eurovoc.europa.eu/4512"
],
"spatial_resolution_in_meters": 12,
"temporal_resolution": "P1D",
"distribution": [
{
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld/distribuce/csv",
"type": "Distribution",
"terms_of_use": {
"type": "Terms of use specification",
"autorské_dílo": "https://creativecommons.org/licenses/by/4.0/",
"autor": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy"
},
"databáze_chráněná_zvláštními_právy": "https://data.gov.cz/podmínky-užití/není-chráněna-zvláštním-právem-pořizovatele-databáze/",
"databáze_jako_autorské_dílo": "https://creativecommons.org/licenses/by/4.0/",
"autor_databáze": {
"cs": "Ministerstvo dopravy, Odbor veřejné dopravy"
},
"osobní_údaje": "https://data.gov.cz/podmínky-užití/neobsahuje-osobní-údaje/"
},
"access_url": "https://portal.cisjr.cz/pub/draha/mestske/JDF.zip",
"download_url": "https://portal.cisjr.cz/pub/draha/mestske/JDF.zip",
"format": "http://publications.europa.eu/resource/authority/file-type/ZIP",
"media_type": "http://www.iana.org/assignments/media-types/application/json",
"schema": "https://portal.cisjr.cz/schemata/json-schema.json",
"compression_media_type": "http://www.iana.org/assignments/media-types/application/zip",
"package_media_type": "http://www.iana.org/assignments/media-types/application/zip",
"title": {
"en": "JSON distribution in ZIP file",
"cs": "JSON distribuce v ZIP soubrou"
}
},
{
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld/distribuce/sparql",
"type": "Distribution",
"terms_of_use": {
"type": "Terms of use specification",
"autorské_dílo": "https://data.gov.cz/podmínky-užití/neobsahuje-autorská-díla/",
"databáze_chráněná_zvláštními_právy": "https://data.gov.cz/podmínky-užití/není-chráněna-zvláštním-právem-pořizovatele-databáze/",
"databáze_jako_autorské_dílo": "https://data.gov.cz/podmínky-užití/není-autorskoprávně-chráněnou-databází/",
"osobní_údaje": "https://data.gov.cz/podmínky-užití/neobsahuje-osobní-údaje/"
},
"access_url": "https://portal.cisjr.cz/sparql",
"title": {
"en": "SPARQL endpoint for timetables",
"cs": "SPARQL endpoint pro jízdní řády"
},
"access_service": {
"iri": "https://data.gov.cz/lkod/mdcr/datové-sady/vld/služba/sparql",
"type": "Data Service",
"title": {
"cs": "SPARQL endpoint pro jízdní řády",
"en": "SPARQL endpoint for timetables"
},
"specification": [
"https://www.w3.org/TR/sparql11-protocol/"
],
"access_point": "https://portal.cisjr.cz/sparql",
"access_point_description": "https://portal.cisjr.cz/sparql"
}
}
]
}
]
}
5
Task 2
Using jq, create a JSON object with the English data catalog name.
6
Task 2 - solution
{"title": .title.en}
�����{
"title": "Open Data Catalog of the Ministry of Transport"
}
7
Task 3
Using jq, create a JSON object with the English title of the first dataset.
8
Hint: .[0]
Task 3 - solution
.dataset | .[0] | {"title": .title.en}
{"title": .dataset | .[0] | .title.en}
{
"title": "Public transport timetables"
}
9
Task 4
Using jq, create a JSON array with e-mails of contact points of datasets in the catalog.
10
Hint: .[]
Task 4
{"e-mails": [.dataset | .[] | .contact_point."e-mail"]}
{
"e-mails": [
"mailto:sekretariat.191@mdcr.cz",
"mailto:sekretariat.190@mdcr.cz"
]
}
11
Task 5
Create a JSON Schema and corresponding valid JSON instance describing public contracts
12
Conceptually:
Task 5 - solution
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.org/public-contracts-schema.json",
"type": "array",
"title": "Public contracts",
"minItems": 1,
"items": {
"type": "object",
"title": "Public contract",
"properties": {
"uri": {
"type": "string",
"format": "uri"
},
"publishedTime": {
"type": "string",
"format": "date-time"
}
},
"required": [
"uri",
"publishedTime",
"contractData"
]
}
}
[
{
"type": "Contract",
"uri": "http://ex.org/contracts/1",
"publishedTime": "2021-04-30T01:00:00",
"contractData": null
}
]
13
Task 6
Extend the previous JSON Schema and JSON document so that
14
Conceptually:
Hierarchically:
See the speaker notes for details about the notations.
Task 6 - solution - part 1 - $defs
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.org/public-contracts-schema.json",
"$defs": {
"company": {
"type": "object",
"required": [
"name",
"id",
"address"
],
"properties": {
"name": {
"anyOf": [
{
"type": "object",
"required": [
"cs"
],
"properties": {
"cs": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"en"
],
"properties": {
"en": {
"type": "string"
}
}
}
]
},
"id": {
"type": "string",
"pattern": "^[0-9]{8}$"
},
"address": {
"type": "string"
}
}
}
}
}
[
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
},
"price": {
"value": 35678,
"currency": "http://publications.europa.eu/resource/authority/currency/CZK"
},
"contracting_authority": {
"type": ["Company", "Contracting Authority"],
"name": {
"cs": "Česká republika - Ministerstvo životního prostředí"
},
"id": "00164801",
"address": "Vršovická 1442/65 Praha 10010 Czech Republic"
},
"supplier": {
"type": ["Company", "Supplier"],
"name": {
"cs": "Kamil M"
},
"id": "67416501",
"address": "Pernerova 536/6 Praha 18600 Czech Republic"
},
"publisher": "Ing. Miroslava, ředitelka odboru vnitřní správy"
}
}
]
15
Task 6 - solution - part 2 - language map
"anyOf": [
{
"type": "object",
"required": [
"cs"
],
"properties": {
"cs": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"en"
],
"properties": {
"en": {
"type": "string"
}
}
}
]
[
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
},
"price": {
"value": 35678,
"currency": "http://publications.europa.eu/resource/authority/currency/CZK"
},
"contracting_authority": {
"type": ["Company", "Contracting Authority"],
"name": {
"cs": "Česká republika - Ministerstvo životního prostředí"
},
"id": "00164801",
"address": "Vršovická 1442/65 Praha 10010 Czech Republic"
},
"supplier": {
"type": ["Company", "Supplier"],
"name": {
"cs": "Kamil M"
},
"id": "67416501",
"address": "Pernerova 536/6 Praha 18600 Czech Republic"
},
"publisher": "Ing. Miroslava, ředitelka odboru vnitřní správy"
}
}
]
16
Task 6 - solution - part 3 - $ref
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.org/public-contracts-schema.json",
"type": "array",
"title": "Public contracts",
"minItems": 1,
"items": {
"type": "object",
"title": "Public contract",
"properties": {
"contractData": {
"type": "object",
"properties": {
"price": {
"type": "object",
"required": [
"value",
"currency"
],
"properties": {
"value": {
"type": "number"
},
"currency": {
"type": "string",
"format": "uri"
}
}
},
"contracting_authority": {
"$ref": "#/$defs/company"
},
"supplier": {
"$ref": "#/$defs/company"
},
}
[
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
},
"price": {
"value": 35678,
"currency": "http://publications.europa.eu/resource/authority/currency/CZK"
},
"contracting_authority": {
"type": ["Company", "Contracting Authority"],
"name": {
"cs": "Česká republika - Ministerstvo životního prostředí"
},
"id": "00164801",
"address": "Vršovická 1442/65 Praha 10010 Czech Republic"
},
"supplier": {
"type": ["Company", "Supplier"],
"name": {
"cs": "Kamil M"
},
"id": "67416501",
"address": "Pernerova 536/6 Praha 18600 Czech Republic"
},
"publisher": "Ing. Miroslava, ředitelka odboru vnitřní správy"
}
}
]
17
Task 6 - solution (copy & paste somewhere else)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.org/public-contracts-schema.json",
"$defs": {
"company": {
"type": "object",
"required": [
"name",
"id",
"address"
],
"properties": {
"name": {
"anyOf": [
{
"type": "object",
"required": [
"cs"
],
"properties": {
"cs": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"en"
],
"properties": {
"en": {
"type": "string"
}
}
}
]
},
"id": {
"type": "string",
"pattern": "^[0-9]{8}$"
},
"address": {
"type": "string"
}
}
}
},
"type": "array",
"title": "Public contracts",
"minItems": 1,
"items": {
"type": "object",
"title": "Public contract",
"properties": {
"uri": {
"type": "string",
"format": "uri"
},
"publishedTime": {
"type": "string",
"format": "date-time"
},
"contractData": {
"type": "object",
"properties": {
"title": {
"anyOf": [
{
"type": "object",
"required": [
"cs"
],
"properties": {
"cs": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"en"
],
"properties": {
"en": {
"type": "string"
}
}
}
]
},
"price": {
"type": "object",
"required": [
"value",
"currency"
],
"properties": {
"value": {
"type": "number"
},
"currency": {
"type": "string",
"format": "uri"
}
}
},
"contracting_authority": {
"$ref": "#/$defs/company"
},
"supplier": {
"$ref": "#/$defs/company"
},
"publisher": {
"type": "string"
}
},
"required": [
"title",
"price",
"contracting_authority",
"supplier"
]
}
},
"required": [
"uri",
"publishedTime",
"contractData"
]
}
}
[
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
},
"price": {
"value": 35678,
"currency": "http://publications.europa.eu/resource/authority/currency/CZK"
},
"contracting_authority": {
"type": ["Company", "Contracting Authority"],
"name": {
"cs": "Česká republika - Ministerstvo životního prostředí"
},
"id": "00164801",
"address": "Vršovická 1442/65 Praha 10010 Czech Republic"
},
"supplier": {
"type": ["Company", "Supplier"],
"name": {
"cs": "Kamil M"
},
"id": "67416501",
"address": "Pernerova 536/6 Praha 18600 Czech Republic"
},
"publisher": "Ing. Miroslava, ředitelka odboru vnitřní správy"
}
},
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153341",
"publishedTime": "2018-02-01T07:33:14+01:00",
"contractData": {
"title": {
"cs": "Smlouva o projektové přípravě (akce III/3963, ul.Rakšická)"
},
"price": {
"value": 24,
"currency": "http://publications.europa.eu/resource/authority/currency/USD"
},
"contracting_authority": {
"type": ["Company", "Contracting Authority"],
"name": {
"cs": "Město Moravský Krumlov"
},
"id": "00293199",
"address": "Nám. Klášterní 125 Moravský Krumlov 67201 Czech Republic"
},
"supplier": {
"type": ["Company", "Supplier"],
"name": {
"cs": "Sivio Plan, s.r.o."
},
"id": "27738809",
"address": "Sochorova 3178/23 Brno 61600 Czech Republic"
}
}
},
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153345",
"publishedTime": "2019-02-01T07:33:39+01:00",
"contractData": {
"title": {
"cs": "Dohoda o zabezpečení vzdělávací aktivity zaměstnanců a potencionálních zaměstnanců a poskytnutí příspěvku v rámci projektu \"POVEZ II\" č. CVA-MN-26/2016"
},
"price": {
"value": 2159400,
"currency": "http://publications.europa.eu/resource/authority/currency/CZK"
},
"contracting_authority": {
"type": ["Company", "Contracting Authority"],
"name": {
"cs": "Úřad práce ČR - krajská pobočka v Ústí nad Labem"
},
"id": "72496991",
"address": "Cihlářská 4107 Chomutov 43003 Czech Republic"
},
"supplier": {
"type": ["Company", "Supplier"],
"name": {
"cs": "Etalon Industries s.r.o."
},
"id": "26729610",
"address": "Karlovarská 5578 Chomutov 43001 Czech Republic"
},
"publisher": "Mgr. et Mgr. Robert"
}
}
]
18
Task 7 - very basic JSON-LD
Using JSON-LD, map the following JSON file to the given RDF shape.
Use JSON-LD Playground,
Apache Jena riot: riot --pretty=turtle data.jsonld
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ns1: <http://example.org/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://smlouvy.gov.cz/smlouva/1153037> a ns1:PublicContract ;
ns1:publishTime "2017-02-01T00:13:13+01:00"^^xsd:dateTime ;
dcterms:title "Pomocné práce v závodní jídelně"@cs .
19
{
"@type": "http://example.org/vocabulary/PublicContract",
"@id": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"title": {
"cs": "Pomocné práce v závodní jídelně"
}
}
Task 7 - solution
{
"@context": {
"publishedTime": {
"@id": "http://example.org/vocabulary/publishTime",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"title": {
"@id": "http://purl.org/dc/terms/title",
"@container": "@language"
}
},
"@type": "http://example.org/vocabulary/PublicContract",
"@id": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"title": {
"cs": "Pomocné práce v závodní jídelně"
}
}
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ns1: <http://example.org/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://smlouvy.gov.cz/smlouva/1153037> a ns1:PublicContract ;
ns1:publishTime "2017-02-01T00:13:13+01:00"^^xsd:dateTime ;
dcterms:title "Pomocné práce v závodní jídelně"@cs .
20
Task 8 - basic JSON-LD
Using JSON-LD, map the following JSON file to the given RDF shape.
Use JSON-LD Playground, Apache Jena riot.
HINT: you can use "@nest" from JSON-LD 1.1 to deal with the "contractData" artificially nested object.
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ns1: <http://example.org/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://smlouvy.gov.cz/smlouva/1153037> a ns1:PublicContract ;
ns1:publishTime "2017-02-01T00:13:13+01:00"^^xsd:dateTime ;
dcterms:title "Pomocné práce v závodní jídelně"@cs .
21
{
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
}
}
}
Task 8 - solution
{
"@context": {
"ex": "http://example.org/vocabulary/",
"dcterms": "http://purl.org/dc/terms/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"type": "@type",
"Contract": "ex:PublicContract",
"uri": "@id",
"publishedTime": {
"@id": "ex:publishTime",
"@type": "xsd:dateTime"
},
"contractData": "@nest",
"title": {
"@id": "dcterms:title",
"@container": "@language"
}
},
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
}
}
}
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ns1: <http://example.org/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://smlouvy.gov.cz/smlouva/1153037> a ns1:PublicContract ;
ns1:publishTime "2017-02-01T00:13:13+01:00"^^xsd:dateTime ;
dcterms:title "Pomocné práce v závodní jídelně"@cs .
22
Task 8 - solutions with array
{
"@context": {
"ex": "http://example.org/vocabulary/",
"dcterms": "http://purl.org/dc/terms/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"type": "@type",
"Contract": "ex:PublicContract",
"uri": "@id",
"publishedTime": {
"@id": "ex:publishTime",
"@type": "xsd:dateTime"
},
"contractData": "@nest",
"title": {
"@id": "dcterms:title",
"@container": "@language"
}
},
"@graph": [
{
"@type": "Contract",
"@id": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00"
},
{
"@type": "Contract",
"@id": "https://smlouvy.gov.cz/smlouva/1154037",
"publishedTime": "2017-02-01T00:13:13+01:00"
}
]
}
[
{
"@context": {
"ex": "http://example.org/vocabulary/",
"dcterms": "http://purl.org/dc/terms/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"type": "@type",
"Contract": "ex:PublicContract",
"uri": "@id",
"contracts": "@nest",
"publishedTime": {
"@id": "ex:publishTime",
"@type": "xsd:dateTime"
},
"contractData": "@nest",
"title": {
"@id": "dcterms:title",
"@container": "@language"
}
},
"type": "Contract",
"uri": "https://smlouvy.gov.cz/smlouva/1153037",
"publishedTime": "2017-02-01T00:13:13+01:00",
"contractData": {
"title": {
"cs": "Pomocné práce v závodní jídelně"
}
}
}
]
23
Task 9
By adding JSON-LD @context to data from Task 6, transform the displayed subset of data to RDF Turtle.
24
Task 9 - solution
Add this to every object in the Contract array. In production, this can be shortened by using an external @context or embedding the array in an object alongside the @context.��If we would like to change companies to use IRIs and not be blank nodes, we would have to add their IRIs to the base JSON.
"@context": {
"ex": "http://example.org/vocabulary/",
"dcterms": "http://purl.org/dc/terms/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"type": "@type",
"Contract": "ex:PublicContract",
"Company": "ex:Company",
"Supplier": "ex:Supplier",
"Contracting Authority": "ex:ContractingAuthority",
"uri": "@id",
"publishedTime": {
"@id": "ex:publishTime",
"@type": "xsd:dateTime"
},
"contractData": "@nest",
"title": {
"@id": "dcterms:title",
"@container": "@language"
},
"contracting_authority": {
"@id": "ex:contractingAuthority"
},
"supplier": {
"@id": "ex:supplier"
},
"id": {
"@id": "ex:id"
}
},
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ns1: <http://example.org/vocabulary/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://smlouvy.gov.cz/smlouva/1153037> a ns1:PublicContract ;
ns1:contractingAuthority [ a ns1:Company,
ns1:ContractingAuthority ;
ns1:id "00164801" ] ;
ns1:publishTime "2017-02-01T00:13:13+01:00"^^xsd:dateTime ;
ns1:supplier [ a ns1:Company,
ns1:Supplier ;
ns1:id "67416501" ] ;
dcterms:title "Pomocné práce v závodní jídelně"@cs .
<https://smlouvy.gov.cz/smlouva/1153341> a ns1:PublicContract ;
ns1:contractingAuthority [ a ns1:Company,
ns1:ContractingAuthority ;
ns1:id "00293199" ] ;
ns1:publishTime "2018-02-01T07:33:14+01:00"^^xsd:dateTime ;
ns1:supplier [ a ns1:Company,
ns1:Supplier ;
ns1:id "27738809" ] ;
dcterms:title "Smlouva o projektové přípravě (akce III/3963, ul.Rakšická)"@cs .
<https://smlouvy.gov.cz/smlouva/1153345> a ns1:PublicContract ;
ns1:contractingAuthority [ a ns1:Company,
ns1:ContractingAuthority ;
ns1:id "72496991" ] ;
ns1:publishTime "2019-02-01T07:33:39+01:00"^^xsd:dateTime ;
ns1:supplier [ a ns1:Company,
ns1:Supplier ;
ns1:id "26729610" ] ;
dcterms:title "Dohoda o zabezpečení vzdělávací aktivity zaměstnanců a potencionálních zaměstnanců a poskytnutí příspěvku v rámci projektu \"POVEZ II\" č. CVA-MN-26/2016"@cs .
25