From c24a83498c9767125be9b293a27d139cedff81ed Mon Sep 17 00:00:00 2001 From: CLARVIE Date: Thu, 19 Oct 2017 16:27:27 +0200 Subject: [PATCH] adding timeline of concept versions --- controller/RestController.php | 57 +- model/Vocabulary.php | 7 + model/VocabularyConfig.php | 8 + resource/css/stylesheet.css | 222 ++ resource/js/docready.js | 14 +- resource/js/hierarchy.js | 2 + resource/js/timeLine.js | 90 + rest.php | 4 +- swagger.json | 3622 +++++++++++++++++---------------- view/concept-shared.twig | 13 + 10 files changed, 2276 insertions(+), 1763 deletions(-) create mode 100644 resource/css/stylesheet.css create mode 100644 resource/js/timeLine.js diff --git a/controller/RestController.php b/controller/RestController.php index da79d78b7..88b97024a 100644 --- a/controller/RestController.php +++ b/controller/RestController.php @@ -96,7 +96,62 @@ public function vocabularies($request) return $this->returnJson($ret); } - + //gives the history of thesaurus versions + public function history($request){ + + $vocabMatch=array(); + $vocabId= $request->getVocab()->getId(); + $uriConcept=$request->getUri(); + $vocabVersion=$request->getVocab()->getConfig()->version(); + $vocabVersionDate=$request->getVocab()->getConfig()->versionDate(); + $lang = $request->getLang(); + $graph=array(); + $graph['uri']=$uriConcept; + foreach ($this->model->getVocabularies() as $voc) { + if($voc->getConceptInfo($uriConcept, $lang)!=null){ + array_push($vocabMatch, $voc); + } + } + foreach ($vocabMatch as $v) { + $iscurrent=false; + if($v->getId()==$vocabId) + { + $iscurrent=true; + } + $graph['hasVersion'][]=array( + 'skosmosVocab'=>$v->getId(), + 'version'=>$v->getConfig()->version(), + 'createdOn'=>$v->getConfig()->versionDate(), + 'iscurrent'=>$iscurrent + ); + } + + $ret = array_merge_recursive($this->context, array( + '@context' => array( + 'rdfs' => 'http://www.w3.org/2000/01/rdf-schema#', + 'onki' => 'http://schema.onki.fi/onki#', + 'dct' => 'http://purl.org/dc/terms/', + 'dcterms' =>'http://purl.org/dc/terms/', + 'altLabel' => 'skos:altLabel', + 'broader' => 'skos:broader', + 'dc11' => 'http://purl.org/dc/elements/1.1/', + 'dct' => 'http://purl.org/dc/terms/', + 'graph' => '@graph', + 'pav' => 'http://purl.org/pav/', + 'hiddenLabel' => 'skos:hiddenLabel', + 'inScheme' => 'skos:inScheme', + 'isothes' => 'http://purl.org/iso25964/skos-thes#', + 'prefLabel' => 'skos:prefLabel', + 'owl'=>'http://www.w3.org/2002/07/owl#', + 'lang'=>'@language', + 'related'=>'skos:related', + 'value'=>'@value' + ), + 'graph' => array($graph)) + ); + + return $this->returnJson($ret); + } private function constructSearchParameters($request) { $parameters = new ConceptSearchParameters($request, $this->model->getConfig(), true); diff --git a/model/Vocabulary.php b/model/Vocabulary.php index f4a9ceac3..065742ebe 100644 --- a/model/Vocabulary.php +++ b/model/Vocabulary.php @@ -176,6 +176,11 @@ public function getInfo($lang = null) if (isset($ret['owl:versionInfo'])) { // if version info availible for vocabulary convert it to a more readable format $ret['owl:versionInfo'][0] = $this->parseVersionInfo($ret['owl:versionInfo'][0]); } + + if (isset($ret['pav:hasVersion'])) { // if version info availible for vocabulary convert it to a more readable format + $ret['pav:hasVersion']['pav:version'] []= $this->parseVersionInfo($ret['pav:hasVersion'][0]); + } + // remove duplicate values foreach (array_keys($ret) as $prop) { $ret[$prop] = array_unique($ret[$prop]); @@ -609,4 +614,6 @@ public function getShortName() { public function getId() { return $this->config->getId(); } + + } diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 4885dd71e..f8539927e 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -121,6 +121,14 @@ public function getTitle($lang = null) { return $this->getLiteral('dc:title', $lang); } + public function version($lang = null) + { + return $this->getLiteral('pav:hasVersion'); + } + public function versionDate($lang = null) + { + return $this->getLiteral('pav:createdOn'); + } /** * Returns a boolean value set in the vocabularies.ttl config. diff --git a/resource/css/stylesheet.css b/resource/css/stylesheet.css new file mode 100644 index 000000000..40926ea79 --- /dev/null +++ b/resource/css/stylesheet.css @@ -0,0 +1,222 @@ +.headerbar-coloured { + position: absolute; + background-color: #003a80; + width: 100%; + margin: 0 0 0 15px; + height: 50px; +} +.headerbar{ + margin-top: 10px; +} +.search-vocab-text { + background-color: #a4c400; + opacity: 0.95; + height: 40px; + float: left; + text-align: right; + line-height: 40px; +} + +.header-left > h1 { + background-color: #003a80; + line-height: 50px; + margin: 0 0 0 15px; + opacity: 0.99; + overflow: hidden; +} + +.topbar-white { + background-color: #003a80; + height: 70px; + +} + +#language, #navigation{ + background-color: #a4c400; + float: right; + height: 50px; + line-height: 70px; + padding-left: 0; + padding-right: 2%; + text-align: right; + width: auto; + margin-top: 10px; +} +#logo{ + min-width: 30px; + width:6%; + display: normal; + position: absolute; +} +/* Timeline */ +.timeline, +.timeline-horizontal { + list-style: none; + padding: 20px; + position: relative; +} +.timeline:before { + top: 40px; + bottom: 0; + position: absolute; + content: " "; + width: 3px; + background-color: #eeeeee; + left: 50%; + margin-left: -1.5px; +} +.timeline .timeline-item { + margin-bottom: 20px; + position: relative; +} +.timeline .timeline-item:before, +.timeline .timeline-item:after { + content: ""; + display: table; +} +.timeline .timeline-item:after { + clear: both; +} +.timeline .timeline-item .timeline-badge { + color: #fff; + width: 54px; + height: 54px; + line-height: 52px; + font-size: 22px; + text-align: center; + position: absolute; + top: 18px; + left: 50%; + margin-left: -25px; + background-color: #7c7c7c; + border: 3px solid #ffffff; + z-index: 100; + border-top-right-radius: 50%; + border-top-left-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} +.timeline .timeline-item .timeline-badge i, +.timeline .timeline-item .timeline-badge .fa, +.timeline .timeline-item .timeline-badge .glyphicon { + top: 2px; + left: 0px; +} +.timeline .timeline-item .timeline-badge.primary { + background-color: #a4c400; +} +.timeline .timeline-item .timeline-badge.info { + background-color: #003a80; +} +.timeline .timeline-item .timeline-badge.success { + background-color: #59ba1f; +} +.timeline .timeline-item .timeline-badge.warning { + background-color: #d1bd10; +} +.timeline .timeline-item .timeline-badge.danger { + background-color: #ba1f1f; +} +.timeline .timeline-item .timeline-panel { + position: relative; + width: 10%; + float: left; + right: 16px; + border: 1px solid #c0c0c0; + background: #ffffff; + border-radius: 2px; + padding: 20px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); +} +.timeline .timeline-item .timeline-panel:before { + position: absolute; + top: 5px; + right: -16px; + display: inline-block; + border-top: 16px solid transparent; + border-left: 16px solid #c0c0c0; + border-right: 0 solid #c0c0c0; + border-bottom: 16px solid transparent; + content: " "; +} +.timeline .timeline-item .timeline-panel .timeline-title { + margin-top: 0; + color: inherit; + text-align: center; +} +.timeline .timeline-item .timeline-panel .timeline-body > p, +.timeline .timeline-item .timeline-panel .timeline-body > ul { + margin-bottom: 0; +} +.timeline .timeline-item .timeline-panel .timeline-body > p + p { + margin-top: 2px; +} +.timeline .timeline-item:last-child:nth-child(even) { + float: right; +} +.timeline .timeline-item:nth-child(even) .timeline-panel { + float: right; + left: 16px; +} +.timeline .timeline-item:nth-child(even) .timeline-panel:before { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; +} +.timeline-horizontal { + list-style: none; + position: relative; + padding: 20px 0px 20px 0px; + display: inline-block; +} +.timeline-horizontal:before { + height: 3px; + top: auto; + bottom: 26px; + left: 56px; + right: 0; + width: 100%; + margin-bottom: 20px; +} +.timeline-horizontal .timeline-item { + display: table-cell; + height: 170px; + width: 10%; + min-width: 320px; + float: none !important; + padding-left: 0px; + padding-right: 5px; + margin: 0 auto; + vertical-align: bottom; +} +.timeline-horizontal .timeline-item .timeline-panel { + top: auto; + bottom: 64px; + display: inline-block; + float: none !important; + left: 0 !important; + right: 0 !important; + width: 50%; + margin-bottom: 20px; +} +.timeline-horizontal .timeline-item .timeline-panel:before { + top: auto; + bottom: -16px; + left: 28px !important; + right: auto; + border-right: 16px solid transparent !important; + border-top: 16px solid #c0c0c0 !important; + border-bottom: 0 solid #c0c0c0 !important; + border-left: 16px solid transparent !important; +} +.timeline-horizontal .timeline-item:before, +.timeline-horizontal .timeline-item:after { + display: none; +} +.timeline-horizontal .timeline-item .timeline-badge { + top: auto; + bottom: 0px; + left: 43px; +} \ No newline at end of file diff --git a/resource/js/docready.js b/resource/js/docready.js index 0eea7d1ad..f1ca8e564 100644 --- a/resource/js/docready.js +++ b/resource/js/docready.js @@ -1,5 +1,6 @@ -$(function() { // DOCUMENT READY +$(function() { // DOCUMENT READY + var spinner = '
'+ loading_text + '
'; var searchString = ''; // stores the search field's value before autocomplete selection changes it var selectedVocabs = []; @@ -280,10 +281,17 @@ $(function() { // DOCUMENT READY updateTitle(data); updateTopbarLang(data); makeCallbacks(data); + var uri = $('.uri-input-box').html(); + getConceptVersions(uri,lang); // take the content language buttons from the response $('.header-float .dropdown-menu').empty().append($('.header-float .dropdown-menu', data).html()); + } + }); + + + return false; } ); @@ -361,9 +369,9 @@ $(function() { // DOCUMENT READY return false; } var uri = $('.uri-input-box').html(); - var base_href = $('base').attr('href'); // see #315, #633 - var redirectUrl = base_href + vocab + '/' + lang + '/page/?uri=' + uri; + var redirectUrl = vocab + '/' + lang + '/page/?uri=' + uri; window.location.replace(encodeURI(redirectUrl)); + return false; } ); diff --git a/resource/js/hierarchy.js b/resource/js/hierarchy.js index ece9a3711..71459450c 100644 --- a/resource/js/hierarchy.js +++ b/resource/js/hierarchy.js @@ -508,6 +508,7 @@ function getTreeConfiguration() { nodeId = node.uri; json_url = (rest_base_url + vocab + '/children'); } + $.ajax({ data: params, url: json_url, @@ -521,6 +522,7 @@ function getTreeConfiguration() { } } }); + } } }); diff --git a/resource/js/timeLine.js b/resource/js/timeLine.js new file mode 100644 index 000000000..64248c5ca --- /dev/null +++ b/resource/js/timeLine.js @@ -0,0 +1,90 @@ + + + +/* + * For legacy browsers that don't natively support Object.size(). + * @param {Object} obj + */ +Object.size = function (obj) { + var size = 0, key; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + size += 1; + } + } + return size; +}; + + +function getAllVersions(graph,lang) { + var tab=[]; + + for (var i = 0; i < graph.length ; i++) { + console.log('graph :'+i); + var groupPage = graph[i].uri.indexOf(uriSpace) !== -1 ? graph[i].uri.substr(uriSpace.length) : '?uri=' + encodeURIComponent(graph[i].uri); + for (var k = 0; k < graph[i].hasVersion.length; k++) { + console.log('version: '+k); + console.log('version value: '+graph[i].hasVersion[k].version); + var objectInfos={ + text : graph[i].uri, + a_attr : { "href" : graph[i].hasVersion[k].skosmosVocab + '/' + lang + '/page/' + groupPage }, + version: graph[i].hasVersion[k].version, + date : graph[i].hasVersion[k].createdOn, + iscurrent : graph[i].hasVersion[k].iscurrent + }; + tab.push(objectInfos); + } + } + console.log(JSON.stringify(tab)); + return tab; +} +// adds a delay before showing the spinner configured above + function delaySpinner(loading) { + loading = setTimeout(function() { $('.history-spinner').show() }, 500); + } + +function getConceptVersions(uri,lang) { + var results=[]; + var html=''; + var loading; + var json_url = (rest_base_url + vocab + '/history'); + $.ajax({ + data: $.param({'uri': uri, 'lang' : lang}), + url: json_url, + beforeSend: delaySpinner(loading), + complete: clearTimeout(loading), + success: function (response) { + $('.history-spinner').hide(); + results= getAllVersions(response.graph,lang); + + console.log(JSON.stringify(results)); + $('.page-header').append('

Versions

'); + for(var i=0; i' + +'
' + + '
' + +'

'+results[i].version+'

' + +'

'+results[i].date+'

' + +'
' + +'
' + +''; + }else{ + html='
  • ' + +'
    ' + +'
    ' + + '
    ' + +'

    '+results[i].version+'

    ' + +'

    '+results[i].date+'

    ' + +'
    ' + +'
    ' + +'
  • '; + } + $('.concept-main #history').append(html); + } + } + }); + } + +//''+results[i].text+''+results[i].version+''+results[i].date+'' diff --git a/rest.php b/rest.php index 6b0e5ea89..f815aa43a 100644 --- a/rest.php +++ b/rest.php @@ -59,7 +59,9 @@ $controller->label($request); } elseif ($parts[2] == 'lookup') { $controller->lookup($request); - } elseif ($parts[2] == 'broader') { + } elseif ($parts[2] == 'history') { + $controller->history($request); + }elseif ($parts[2] == 'broader') { $controller->broader($request); } elseif ($parts[2] == 'broaderTransitive') { $controller->broaderTransitive($request); diff --git a/swagger.json b/swagger.json index 2189cfcfd..450c1902b 100644 --- a/swagger.json +++ b/swagger.json @@ -1,1810 +1,1916 @@ { - "swagger": "2.0", - "info": { - "title": "Skosmos API", - "version": "v1", - "description": "The Skosmos REST API is a read-only interface to the data stored on the vocabulary server. The URL namespace is the base URL of the Skosmos instance followed by `/rest/v1/`. \n\nMost methods return the data as UTF-8 encoded JSON-LD, served using the `application/json` MIME type. The data consists of a single JSON object which includes JSON-LD context information (in the `@context` field) and one or more fields which contain the actual data. Some methods (`data`) return other formats (RDF/XML, Turtle, RDF/JSON) with the appropriate MIME type.\n\nThe API supports Cross-Origin Resource Sharing by setting the Access-Control-Allow-Origin HTTP header to `\"*\"` for all requests.\n\nThe API supports the JSONP convention of appending a callback parameter to any URL. The returned data will then be wrapped in a JavaScript function call using the function name provided as the callback parameter value. JSONP wrapped data will be served using the `application/javascript` MIME type.\n" - }, - "schemes": [ - "http", - "https" - ], - "basePath": "/rest/v1", - "produces": [ - "application/rdf+xml", - "text/turtle", - "application/ld+json", - "application/json" - ], - "paths": { - "/vocabularies": { - "get": { - "summary": "Available vocabularies", - "parameters": [ - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "required": true, - "type": "string" - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "a list of vocabularies on the server", - "schema": { - "$ref": "#/definitions/VocabularyList" - } - } - }, - "tags": [ - "Global methods" - ] + "swagger": "2.0", + "info": { + "title": "Skosmos API", + "version": "v1", + "description": "The Skosmos REST API is a read-only interface to the data stored on the vocabulary server. The URL namespace is the base URL of the Skosmos instance followed by `/rest/v1/`. \n\nMost methods return the data as UTF-8 encoded JSON-LD, served using the `application/json` MIME type. The data consists of a single JSON object which includes JSON-LD context information (in the `@context` field) and one or more fields which contain the actual data. Some methods (`data`) return other formats (RDF/XML, Turtle, RDF/JSON) with the appropriate MIME type.\n\nThe API supports Cross-Origin Resource Sharing by setting the Access-Control-Allow-Origin HTTP header to `\"*\"` for all requests.\n\nThe API supports the JSONP convention of appending a callback parameter to any URL. The returned data will then be wrapped in a JavaScript function call using the function name provided as the callback parameter value. JSONP wrapped data will be served using the `application/javascript` MIME type.\n" + }, + "schemes": [ + "http", + "https" + ], + "basePath": "/rest/v1", + "produces": [ + "application/rdf+xml", + "text/turtle", + "application/ld+json", + "application/json" + ], + "paths": { + "/vocabularies": { + "get": { + "summary": "Available vocabularies", + "parameters": [ + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "required": true, + "type": "string" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "a list of vocabularies on the server", + "schema": { + "$ref": "#/definitions/VocabularyList" } + } }, - "/search": { - "get": { - "summary": "Search concepts and collections by query term", - "parameters": [ - { - "name": "query", - "in": "query", - "description": "the term to search for e.g. \"cat*\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels to match, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - }, - { - "name": "labellang", - "in": "query", - "description": "language of labels to return, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - }, - { - "name": "vocab", - "in": "query", - "description": "vocabulary/vocabularies to limit search to, e.g. \"yso\" or \"yso allars\"", - "required": false, - "type": "string" - }, - { - "name": "type", - "in": "query", - "description": "limit search to concepts of the given type(s), e.g. \"skos:Concept\".", - "required": false, - "type": "string" - }, - { - "name": "parent", - "in": "query", - "description": "limit search to concepts which have the given concept (specified by URI) as parent in their transitive broader hierarchy", - "required": false, - "type": "string" - }, - { - "name": "group", - "in": "query", - "description": "limit search to concepts in the given group (specified by URI)", - "required": false, - "type": "string" - }, - { - "name": "maxhits", - "in": "query", - "description": "Maximum number of results to return. If not given, maxhits will default to 100. (default settable in config.inc)", - "required": false, - "type": "integer" - }, - { - "name": "offset", - "in": "query", - "description": "offset where to start in ther esult set, useful for paging the result. If not given, defaults to 0.", - "required": false, - "type": "integer" - }, - { - "name": "fields", - "in": "query", - "description": "space-separated list of extra fields to include in the results. e.g. \"related\" or \"prefLabel\" or any other skos property.", - "required": false, - "type": "string" - }, - { - "name": "unique", - "in": "query", - "description": "boolean flag to indicate that each concept should be returned only once, instead of returning all the different ways it could match (for example both via prefLabel and altLabel).", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "data of the concepts matching the search term", - "schema": { - "$ref": "#/definitions/SearchResults" - } - } - }, - "tags": [ - "Global methods" - ] + "tags": [ + "Global methods" + ] + } + }, + "/search": { + "get": { + "summary": "Search concepts and collections by query term", + "parameters": [ + { + "name": "query", + "in": "query", + "description": "the term to search for e.g. \"cat*\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels to match, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + }, + { + "name": "labellang", + "in": "query", + "description": "language of labels to return, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + }, + { + "name": "vocab", + "in": "query", + "description": "vocabulary/vocabularies to limit search to, e.g. \"yso\" or \"yso allars\"", + "required": false, + "type": "string" + }, + { + "name": "type", + "in": "query", + "description": "limit search to concepts of the given type(s), e.g. \"skos:Concept\".", + "required": false, + "type": "string" + }, + { + "name": "parent", + "in": "query", + "description": "limit search to concepts which have the given concept (specified by URI) as parent in their transitive broader hierarchy", + "required": false, + "type": "string" + }, + { + "name": "group", + "in": "query", + "description": "limit search to concepts in the given group (specified by URI)", + "required": false, + "type": "string" + }, + { + "name": "maxhits", + "in": "query", + "description": "Maximum number of results to return. If not given, maxhits will default to 100. (default settable in config.inc)", + "required": false, + "type": "integer" + }, + { + "name": "offset", + "in": "query", + "description": "offset where to start in ther esult set, useful for paging the result. If not given, defaults to 0.", + "required": false, + "type": "integer" + }, + { + "name": "fields", + "in": "query", + "description": "space-separated list of extra fields to include in the results. e.g. \"related\" or \"prefLabel\" or any other skos property.", + "required": false, + "type": "string" + }, + { + "name": "unique", + "in": "query", + "description": "boolean flag to indicate that each concept should be returned only once, instead of returning all the different ways it could match (for example both via prefLabel and altLabel).", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "data of the concepts matching the search term", + "schema": { + "$ref": "#/definitions/SearchResults" } + } }, - "/data": { - "get": { - "summary": "RDF data of the requested concept", - "parameters": [ - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose data to return", - "required": true, - "type": "string" - }, - { - "name": "format", - "in": "query", - "description": "the MIME type of the serialization format, e.g. \"text/turtle\" or \"application/rdf+xml\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/rdf+xml", - "text/turtle", - "application/ld+json", - "application/json" - ], - "responses": { - "200": { - "description": "the data of the requested concept" - }, - "404": { - "description": "the URI did not match any known concept" - } - }, - "tags": [ - "Global methods" - ] - } + "tags": [ + "Global methods" + ] + } + }, + "/data": { + "get": { + "summary": "RDF data of the requested concept", + "parameters": [ + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose data to return", + "required": true, + "type": "string" + }, + { + "name": "format", + "in": "query", + "description": "the MIME type of the serialization format, e.g. \"text/turtle\" or \"application/rdf+xml\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/rdf+xml", + "text/turtle", + "application/ld+json", + "application/json" + ], + "responses": { + "200": { + "description": "the data of the requested concept" + }, + "404": { + "description": "the URI did not match any known concept" + } }, - "/types": { - "get": { - "summary": "Information about the types (classes) of objects contained in all vocabularies", - "parameters": [ - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "required": true, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the data of the requested concept", - "schema": { - "$ref": "#/definitions/TypeList" - } - } - }, - "tags": [ - "Global methods" - ] + "tags": [ + "Global methods" + ] + } + }, + "/types": { + "get": { + "summary": "Information about the types (classes) of objects contained in all vocabularies", + "parameters": [ + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "required": true, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the data of the requested concept", + "schema": { + "$ref": "#/definitions/TypeList" } + } }, - "/{vocid}/": { - "get": { - "summary": "General information about the vocabulary", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "The Skosmos vocabulary id e.g. stw or yso", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "information about the requested vocabulary", - "schema": { - "$ref": "#/definitions/VocabularyInfo" - } - }, - "404": { - "description": "no vocabulary could be found with the requested id" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Global methods" + ] + } + }, + "/{vocid}/": { + "get": { + "summary": "General information about the vocabulary", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "The Skosmos vocabulary id e.g. stw or yso", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "information about the requested vocabulary", + "schema": { + "$ref": "#/definitions/VocabularyInfo" } + }, + "404": { + "description": "no vocabulary could be found with the requested id" + } }, - "/{vocid}/types": { - "get": { - "summary": "Information about the types (classes) of objects in the vocabulary", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "type information about the requested vocabulary", - "schema": { - "$ref": "#/definitions/TypeList" - } - }, - "404": { - "description": "no vocabulary could be found with the requested id" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/types": { + "get": { + "summary": "Information about the types (classes) of objects in the vocabulary", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "type information about the requested vocabulary", + "schema": { + "$ref": "#/definitions/TypeList" } + }, + "404": { + "description": "no vocabulary could be found with the requested id" + } }, - "/{vocid}/topConcepts": { - "get": { - "summary": "Top concepts of the vocabulary", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "type": "string" - }, - { - "name": "scheme", - "in": "query", - "description": "concept scheme whose top concepts to return. If not given, the default concept scheme of the vocabulary will be used.", - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "type information about the requested vocabulary", - "schema": { - "$ref": "#/definitions/TopConcepts" - } - }, - "404": { - "description": "no vocabulary could be found with the requested id" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/topConcepts": { + "get": { + "summary": "Top concepts of the vocabulary", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "type": "string" + }, + { + "name": "scheme", + "in": "query", + "description": "concept scheme whose top concepts to return. If not given, the default concept scheme of the vocabulary will be used.", + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "type information about the requested vocabulary", + "schema": { + "$ref": "#/definitions/TopConcepts" } + }, + "404": { + "description": "no vocabulary could be found with the requested id" + } + }, + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/data": { + "get": { + "summary": "RDF data of the whole vocabulary or a specific concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "format", + "in": "query", + "description": "The MIME type of the serialization format, e.g \"text/turtle\" or \"application/rdf+xml\". If not specified, HTTP content negotiation (based on the Accept header) is used to determine a suitable serialization format from among the available ones.", + "required": false, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the desired concept. When no uri parameter is given, the whole vocabulary is returned instead.", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/rdf+xml", + "text/turtle", + "application/ld+json", + "application/json" + ], + "responses": { + "200": { + "description": "the RDF data of the requested vocabulary/concept" + }, + "404": { + "description": "no vocabulary/concept could be found with the requested id/uri" + } }, - "/{vocid}/data": { - "get": { - "summary": "RDF data of the whole vocabulary or a specific concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "format", - "in": "query", - "description": "The MIME type of the serialization format, e.g \"text/turtle\" or \"application/rdf+xml\". If not specified, HTTP content negotiation (based on the Accept header) is used to determine a suitable serialization format from among the available ones.", - "required": false, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the desired concept. When no uri parameter is given, the whole vocabulary is returned instead.", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/rdf+xml", - "text/turtle", - "application/ld+json", - "application/json" - ], - "responses": { - "200": { - "description": "the RDF data of the requested vocabulary/concept" - }, - "404": { - "description": "no vocabulary/concept could be found with the requested id/uri" - } - }, - "tags": [ - "Vocabulary-specific methods", - "Concept-specific methods" - ] + "tags": [ + "Vocabulary-specific methods", + "Concept-specific methods" + ] + } + }, + "/{vocid}/search": { + "get": { + "summary": "Finds concepts and collections from a vocabulary by query term", + "description": "Returns a list of search results. The search is performed as a case-insensitive pattern, where an asterisk (*) may be used as wildcard. E.g. \"cat*\" may return results such as \"CATCH-22\" and \"categorization\". If decoded into RDF, the result is a vocabulary fragment expressed as SKOS.", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "query", + "in": "query", + "description": "the term to search for e.g. \"cat*\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels to match, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + }, + { + "name": "type", + "in": "query", + "description": "limit search to concepts of the given type, e.g. \"skos:Concept\"; multiple types can be specified as a space-separated list", + "required": false, + "type": "string" + }, + { + "name": "parent", + "in": "query", + "description": "limit search to concepts which have the given concept (specified by URI) as parent in their transitive broader hierarchy", + "required": false, + "type": "string" + }, + { + "name": "group", + "in": "query", + "description": "limit search to concepts in the given group (specified by URI)", + "required": false, + "type": "string" + }, + { + "name": "maxhits", + "in": "query", + "description": "Maximum number of results to return. If not given, maxhits will default to 100. (default settable in config.inc)", + "required": false, + "type": "integer" + }, + { + "name": "offset", + "in": "query", + "description": "offset where to start in ther esult set, useful for paging the result. If not given, defaults to 0.", + "required": false, + "type": "integer" + }, + { + "name": "fields", + "in": "query", + "description": "space-separated list of extra fields to include in the results. e.g. \"related\" or \"prefLabel\" or any other skos property.", + "required": false, + "type": "string" + }, + { + "name": "unique", + "in": "query", + "description": "boolean flag to indicate that each concept should be returned only once, instead of returning all the different ways it could match (for example both via prefLabel and altLabel).", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "data of the concepts matching the search term", + "schema": { + "$ref": "#/definitions/SearchResults" } + } }, - "/{vocid}/search": { - "get": { - "summary": "Finds concepts and collections from a vocabulary by query term", - "description": "Returns a list of search results. The search is performed as a case-insensitive pattern, where an asterisk (*) may be used as wildcard. E.g. \"cat*\" may return results such as \"CATCH-22\" and \"categorization\". If decoded into RDF, the result is a vocabulary fragment expressed as SKOS.", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "query", - "in": "query", - "description": "the term to search for e.g. \"cat*\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels to match, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - }, - { - "name": "type", - "in": "query", - "description": "limit search to concepts of the given type, e.g. \"skos:Concept\"; multiple types can be specified as a space-separated list", - "required": false, - "type": "string" - }, - { - "name": "parent", - "in": "query", - "description": "limit search to concepts which have the given concept (specified by URI) as parent in their transitive broader hierarchy", - "required": false, - "type": "string" - }, - { - "name": "group", - "in": "query", - "description": "limit search to concepts in the given group (specified by URI)", - "required": false, - "type": "string" - }, - { - "name": "maxhits", - "in": "query", - "description": "Maximum number of results to return. If not given, maxhits will default to 100. (default settable in config.inc)", - "required": false, - "type": "integer" - }, - { - "name": "offset", - "in": "query", - "description": "offset where to start in ther esult set, useful for paging the result. If not given, defaults to 0.", - "required": false, - "type": "integer" - }, - { - "name": "fields", - "in": "query", - "description": "space-separated list of extra fields to include in the results. e.g. \"related\" or \"prefLabel\" or any other skos property.", - "required": false, - "type": "string" - }, - { - "name": "unique", - "in": "query", - "description": "boolean flag to indicate that each concept should be returned only once, instead of returning all the different ways it could match (for example both via prefLabel and altLabel).", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/json" - ], - "responses": { - "200": { - "description": "data of the concepts matching the search term", - "schema": { - "$ref": "#/definitions/SearchResults" - } - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/lookup": { + "get": { + "summary": "Look up concepts by label", + "description": "Returns the best matching concept(s) for the given label in JSON-LD format. In case the label matches several concepts with the same precedence, all of them are returned.", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "label", + "in": "query", + "description": "the label to look for, e.g. \"cat\" or \"dog\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "search language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "type information about the requested vocabulary", + "schema": { + "$ref": "#/definitions/LookupResults" } + }, + "404": { + "description": "no concept could be found with the requested label" + } }, - "/{vocid}/lookup": { - "get": { - "summary": "Look up concepts by label", - "description": "Returns the best matching concept(s) for the given label in JSON-LD format. In case the label matches several concepts with the same precedence, all of them are returned.", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "label", - "in": "query", - "description": "the label to look for, e.g. \"cat\" or \"dog\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "search language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "type information about the requested vocabulary", - "schema": { - "$ref": "#/definitions/LookupResults" - } - }, - "404": { - "description": "no concept could be found with the requested label" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/vocabularyStatistics": { + "get": { + "summary": "Number of Concepts and Collections in the vocabulary", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the concept and group counts for the vocabulary", + "schema": { + "$ref": "#/definitions/VocabularyStatistics" } + }, + "404": { + "description": "no vocabulary could be found with the requested id" + } }, - "/{vocid}/vocabularyStatistics": { - "get": { - "summary": "Number of Concepts and Collections in the vocabulary", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the concept and group counts for the vocabulary", - "schema": { - "$ref": "#/definitions/VocabularyStatistics" - } - }, - "404": { - "description": "no vocabulary could be found with the requested id" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/labelStatistics": { + "get": { + "summary": "Number of labels by language", + "description": "Returns a list of label (skos:prefLabel, skos:altLabel and skos:hiddenLabel) counts in all the different languages.", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "language of labels, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the concept and group counts for the vocabulary", + "schema": { + "$ref": "#/definitions/LabelStatistics" } + }, + "404": { + "description": "no vocabulary could be found with the requested id" + } }, - "/{vocid}/labelStatistics": { - "get": { - "summary": "Number of labels by language", - "description": "Returns a list of label (skos:prefLabel, skos:altLabel and skos:hiddenLabel) counts in all the different languages.", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "language of labels, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the concept and group counts for the vocabulary", - "schema": { - "$ref": "#/definitions/LabelStatistics" - } - }, - "404": { - "description": "no vocabulary could be found with the requested id" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/label": { + "get": { + "summary": "Preferred label for the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose label to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "search language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "preferred label for the requested concept", + "schema": { + "$ref": "#/definitions/PrefAndUri" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/label": { - "get": { - "summary": "Preferred label for the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose label to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "search language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "preferred label for the requested concept", - "schema": { - "$ref": "#/definitions/PrefAndUri" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/broader": { + "get": { + "summary": "Broader concepts of the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose broader concept to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the broader concept(s) of the requested concept or an empty array if there are none", + "schema": { + "$ref": "#/definitions/BroaderResult" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/broader": { - "get": { - "summary": "Broader concepts of the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose broader concept to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the broader concept(s) of the requested concept or an empty array if there are none", - "schema": { - "$ref": "#/definitions/BroaderResult" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/broaderTransitive": { + "get": { + "summary": "Broader transitive hierarchy for the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose broader transitive hierarchy to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the broader transitive hierarchy for the requested concept or an empty array if there concept does not have broaders", + "schema": { + "$ref": "#/definitions/BroaderTransitiveResult" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/broaderTransitive": { - "get": { - "summary": "Broader transitive hierarchy for the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose broader transitive hierarchy to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the broader transitive hierarchy for the requested concept or an empty array if there concept does not have broaders", - "schema": { - "$ref": "#/definitions/BroaderTransitiveResult" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/narrower": { + "get": { + "summary": "Narrower concepts of the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose narrower concept to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the narrower concept(s) of the requested concept or an empty array if there are none", + "schema": { + "$ref": "#/definitions/NarrowerResult" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/narrower": { - "get": { - "summary": "Narrower concepts of the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose narrower concept to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the narrower concept(s) of the requested concept or an empty array if there are none", - "schema": { - "$ref": "#/definitions/NarrowerResult" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/narrowerTransitive": { + "get": { + "summary": "Narrower transitive hierarchy for the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose narrower transitive hierarchy to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the narrower transitive hierarchy for the requested concept or an empty array if there concept does not have narrowers", + "schema": { + "$ref": "#/definitions/NarrowerTransitiveResult" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/narrowerTransitive": { - "get": { - "summary": "Narrower transitive hierarchy for the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose narrower transitive hierarchy to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the narrower transitive hierarchy for the requested concept or an empty array if there concept does not have narrowers", - "schema": { - "$ref": "#/definitions/NarrowerTransitiveResult" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/related": { + "get": { + "summary": "Related concepts of the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose related concept to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "the related concept(s) of the requested concept or an empty array if there are none", + "schema": { + "$ref": "#/definitions/RelatedResult" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/related": { - "get": { - "summary": "Related concepts of the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose related concept to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "the related concept(s) of the requested concept or an empty array if there are none", - "schema": { - "$ref": "#/definitions/RelatedResult" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/children": { + "get": { + "summary": "Narrower concepts of the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose narrower concepts to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "Returns the children of the requested concept. The data is intended to be used in a hierarchical display.", + "schema": { + "$ref": "#/definitions/ChildrenResult" } + }, + "404": { + "description": "no concept could be found with the requested URI" + } }, - "/{vocid}/children": { - "get": { - "summary": "Narrower concepts of the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose narrower concepts to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "Returns the children of the requested concept. The data is intended to be used in a hierarchical display.", - "schema": { - "$ref": "#/definitions/ChildrenResult" - } - }, - "404": { - "description": "no concept could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/groups": { + "get": { + "summary": "Concept groups in the vocabulary", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "concept groups of the vocabulary", + "schema": { + "$ref": "#/definitions/GroupResult" } + }, + "404": { + "description": "no vocabulary could be found with the requested id" + } }, - "/{vocid}/groups": { - "get": { - "summary": "Concept groups in the vocabulary", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "concept groups of the vocabulary", - "schema": { - "$ref": "#/definitions/GroupResult" - } - }, - "404": { - "description": "no vocabulary could be found with the requested id" - } - }, - "tags": [ - "Vocabulary-specific methods" - ] + "tags": [ + "Vocabulary-specific methods" + ] + } + }, + "/{vocid}/groupMembers": { + "get": { + "summary": "Members of the requested concept group", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "concept groups of the vocabulary", + "schema": { + "$ref": "#/definitions/GroupMembers" } + }, + "404": { + "description": "no concept group could be found with the requested URI" + } }, - "/{vocid}/groupMembers": { - "get": { - "summary": "Members of the requested concept group", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "concept groups of the vocabulary", - "schema": { - "$ref": "#/definitions/GroupMembers" - } - }, - "404": { - "description": "no concept group could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/hierarchy": { + "get": { + "summary": "Hierarchical context of the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept whose hierarchical context to return", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": false, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "Returns the hierarchical context of the requested concept. The hierarchy is intended to be used in a hierarchical display.", + "schema": { + "$ref": "#/definitions/Hierarchy" } + }, + "404": { + "description": "no concept group could be found with the requested URI" + } }, - "/{vocid}/hierarchy": { - "get": { - "summary": "Hierarchical context of the requested concept", - "parameters": [ - { - "name": "vocid", - "in": "path", - "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", - "required": true, - "type": "string" - }, - { - "name": "uri", - "in": "query", - "description": "URI of the concept whose hierarchical context to return", - "required": true, - "type": "string" - }, - { - "name": "lang", - "in": "query", - "description": "label language, e.g. \"en\" or \"fi\"", - "required": false, - "type": "string" - } - ], - "produces": [ - "application/ld+json" - ], - "responses": { - "200": { - "description": "Returns the hierarchical context of the requested concept. The hierarchy is intended to be used in a hierarchical display.", - "schema": { - "$ref": "#/definitions/Hierarchy" - } - }, - "404": { - "description": "no concept group could be found with the requested URI" - } - }, - "tags": [ - "Concept-specific methods" - ] + "tags": [ + "Concept-specific methods" + ] + } + }, + "/{vocid}/history": { + "get": { + "summary": "get all versions of the requested concept", + "parameters": [ + { + "name": "vocid", + "in": "path", + "description": "a Skosmos vocabulary identifier e.g. \"stw\" or \"yso\"", + "required": true, + "type": "string" + }, + { + "name": "uri", + "in": "query", + "description": "URI of the concept for which we want to obtain versions", + "required": true, + "type": "string" + }, + { + "name": "lang", + "in": "query", + "description": "label language, e.g. \"en\" or \"fi\"", + "required": true, + "type": "string" + } + ], + "produces": [ + "application/ld+json" + ], + "responses": { + "200": { + "description": "Returns versions of the requested concept. These versions are used to display the timeline", + "schema": { + "$ref": "#/definitions/History" } + }, + "404": { + "description": "uri undefined" + } + }, + "tags": [ + "Concept-specific methods" + ] + } + } + }, + "definitions": { + "VocabularyList": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "vocabularies": { + "type": "array", + "items": { + "$ref": "#/definitions/Vocabulary" + } } + }, + "required": [ + "uri", + "vocabularies" + ] }, - "definitions": { - "VocabularyList": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "vocabularies": { - "type": "array", - "items": { - "$ref": "#/definitions/Vocabulary" - } - } - }, - "required": [ - "uri", - "vocabularies" - ] - }, - "Vocabulary": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "id": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "uri", - "id", - "title" - ] - }, - "TypeList": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "types": { - "type": "array", - "items": { - "$ref": "#/definitions/Type" - } - } - } + "Vocabulary": { + "type": "object", + "properties": { + "uri": { + "type": "string" }, - "Type": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "Concept scheme URI" - }, - "label": { - "type": "string", - "description": "Label of type" - }, - "superclass": { - "type": "string", - "description": "URI of the superclass type, which this type is an extension/specialization of" - } - }, - "required": [ - "uri" - ] - }, - "SearchResults": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "vocabularies": { - "type": "array", - "items": { - "$ref": "#/definitions/SearchResult" - } - } - }, - "required": [ - "uri", - "vocabularies" - ] - }, - "SearchResult": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "prefLabel": { - "type": "string" - }, - "altLabel": { - "type": "string" - }, - "hiddenLabel": { - "type": "string" - }, - "lang": { - "type": "string" - }, - "vocab": { - "type": "string" - }, - "exvocab": { - "type": "string" - }, - "notation": { - "type": "string" - } - }, - "required": [ - "uri" - ] - }, - "VocabularyInfo": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "defaultLanguage": { - "type": "string" - }, - "languages": { - "type": "array", - "items": { - "type": "string" - } - }, - "conceptschemes": { - "type": "array", - "items": { - "$ref": "#/definitions/ConceptScheme" - } - }, - "type": { - "description": "Optional vocabulary classification e.g. 'http://publications.europa.eu/resource/authority/dataset-type/ONTOLOGY'", - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUri" - } - } - }, - "required": [ - "uri", - "id", - "title", - "defaultLanguage", - "languages", - "conceptschemes" - ] - }, - "ConceptScheme": { - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "Label of concept scheme (rdfs:label)" - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept scheme (skos:prefLabel)" - }, - "title": { - "type": "string", - "description": "Title of concept scheme (dc:title)" - }, - "uri": { - "type": "string", - "description": "Concept scheme URI" - }, - "type": { - "type": "string", - "description": "Type of object (currently always \"skos:ConceptScheme\")" - } - } + "id": { + "type": "string" }, - "TopConcepts": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "topconcepts": { - "type": "array", - "items": { - "$ref": "#/definitions/TopConcept" - } - } - }, - "required": [ - "uri", - "topconcepts" - ] - }, - "TopConcept": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "label": { - "type": "string", - "description": "Label of the concept" - }, - "topConceptOf": { - "type": "string" - }, - "notation": { - "type": "string", - "description": "Notation of the concept" - }, - "hasChildren": { - "type": "boolean", - "description": "Boolean value indicating whether the concept has narrower concepts" - } - }, - "required": [ - "uri", - "hasChildren" - ] - }, - "LookupResults": { - "type": "object", - "properties": { - "result": { - "type": "array", - "items": { - "$ref": "#/definitions/SearchResult" - } - } - }, - "required": [ - "result" - ] - }, - "VocabularyStatistics": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Skosmos vocabulary identifier" - }, - "title": { - "type": "string", - "description": "Vocabulary title" - }, - "concepts": { - "$ref": "#/definitions/CountObject" - }, - "subTypes": { - "type": "array", - "items": { - "$ref": "#/definitions/TypeCountObject" - } - }, - "conceptsGroups": { - "$ref": "#/definitions/CountObject" - } - } + "title": { + "type": "string" + } + }, + "required": [ + "uri", + "id", + "title" + ] + }, + "TypeList": { + "type": "object", + "properties": { + "uri": { + "type": "string" }, - "CountObject": { - "type": "object", - "properties": { - "class": { - "type": "string", - "description": "Class/type of concepts" - }, - "label": { - "type": "string", - "description": "Label of the class" - }, - "count": { - "type": "integer" - } - }, - "required": [ - "count", - "class" - ] - }, - "TypeCountObject": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Class/type of concepts" - }, - "label": { - "type": "string", - "description": "Label of the type" - }, - "count": { - "type": "integer" - } - }, - "required": [ - "count", - "type" - ] - }, - "LabelStatistics": { - "type": "object", - "properties": { - "uri": { - "type": "string" - }, - "id": { - "type": "string", - "description": "Skosmos vocabulary identifier" - }, - "title": { - "type": "string", - "description": "Vocabulary title" - }, - "languages": { - "type": "array", - "items": { - "$ref": "#/definitions/LanguageObject" - } - } - } + "types": { + "type": "array", + "items": { + "$ref": "#/definitions/Type" + } + } + } + }, + "Type": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "Concept scheme URI" }, - "LanguageObject": { - "type": "object", - "properties": { - "language": { - "type": "string", - "description": "Language code e.g. \"fi\" or \"en\"" - }, - "literal": { - "type": "string", - "description": "language name e.g. \"Finnish\" or \"English\" (if lang parameter was used)" - }, - "properties": { - "type": "array", - "items": { - "$ref": "#/definitions/LabelCount" - } - } - }, - "required": [ - "language", - "properties" - ] - }, - "LabelCount": { - "type": "object", - "properties": { - "property": { - "type": "string", - "description": "property identifier, either \"skos:prefLabel\" or \"skos:altLabel\" or \"skos:hiddenLabel\"" - }, - "labels": { - "type": "integer", - "description": "number of labels with the specified property in the given language" - } - } + "label": { + "type": "string", + "description": "Label of type" + }, + "superclass": { + "type": "string", + "description": "URI of the superclass type, which this type is an extension/specialization of" + } + }, + "required": [ + "uri" + ] + }, + "SearchResults": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "vocabularies": { + "type": "array", + "items": { + "$ref": "#/definitions/SearchResult" + } + } + }, + "required": [ + "uri", + "vocabularies" + ] + }, + "SearchResult": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "prefLabel": { + "type": "string" + }, + "altLabel": { + "type": "string" + }, + "hiddenLabel": { + "type": "string" + }, + "lang": { + "type": "string" + }, + "vocab": { + "type": "string" + }, + "exvocab": { + "type": "string" + }, + "notation": { + "type": "string" + } + }, + "required": [ + "uri" + ] + }, + "VocabularyInfo": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "defaultLanguage": { + "type": "string" + }, + "languages": { + "type": "array", + "items": { + "type": "string" + } + }, + "conceptschemes": { + "type": "array", + "items": { + "$ref": "#/definitions/ConceptScheme" + } + }, + "type": { + "description": "Optional vocabulary classification e.g. 'http://publications.europa.eu/resource/authority/dataset-type/ONTOLOGY'", + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUri" + } + } + }, + "required": [ + "uri", + "id", + "title", + "defaultLanguage", + "languages", + "conceptschemes" + ] + }, + "ConceptScheme": { + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "Label of concept scheme (rdfs:label)" + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept scheme (skos:prefLabel)" + }, + "title": { + "type": "string", + "description": "Title of concept scheme (dc:title)" + }, + "uri": { + "type": "string", + "description": "Concept scheme URI" + }, + "type": { + "type": "string", + "description": "Type of object (currently always \"skos:ConceptScheme\")" + } + } + }, + "TopConcepts": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "topconcepts": { + "type": "array", + "items": { + "$ref": "#/definitions/TopConcept" + } + } + }, + "required": [ + "uri", + "topconcepts" + ] + }, + "TopConcept": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "label": { + "type": "string", + "description": "Label of the concept" + }, + "topConceptOf": { + "type": "string" + }, + "notation": { + "type": "string", + "description": "Notation of the concept" + }, + "hasChildren": { + "type": "boolean", + "description": "Boolean value indicating whether the concept has narrower concepts" + } + }, + "required": [ + "uri", + "hasChildren" + ] + }, + "LookupResults": { + "type": "object", + "properties": { + "result": { + "type": "array", + "items": { + "$ref": "#/definitions/SearchResult" + } + } + }, + "required": [ + "result" + ] + }, + "VocabularyStatistics": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Skosmos vocabulary identifier" + }, + "title": { + "type": "string", + "description": "Vocabulary title" + }, + "concepts": { + "$ref": "#/definitions/CountObject" + }, + "subTypes": { + "type": "array", + "items": { + "$ref": "#/definitions/TypeCountObject" + } + }, + "conceptsGroups": { + "$ref": "#/definitions/CountObject" + } + } + }, + "CountObject": { + "type": "object", + "properties": { + "class": { + "type": "string", + "description": "Class/type of concepts" + }, + "label": { + "type": "string", + "description": "Label of the class" + }, + "count": { + "type": "integer" + } + }, + "required": [ + "count", + "class" + ] + }, + "TypeCountObject": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Class/type of concepts" + }, + "label": { + "type": "string", + "description": "Label of the type" + }, + "count": { + "type": "integer" + } + }, + "required": [ + "count", + "type" + ] + }, + "LabelStatistics": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "id": { + "type": "string", + "description": "Skosmos vocabulary identifier" + }, + "title": { + "type": "string", + "description": "Vocabulary title" + }, + "languages": { + "type": "array", + "items": { + "$ref": "#/definitions/LanguageObject" + } + } + } + }, + "LanguageObject": { + "type": "object", + "properties": { + "language": { + "type": "string", + "description": "Language code e.g. \"fi\" or \"en\"" + }, + "literal": { + "type": "string", + "description": "language name e.g. \"Finnish\" or \"English\" (if lang parameter was used)" + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/definitions/LabelCount" + } + } + }, + "required": [ + "language", + "properties" + ] + }, + "LabelCount": { + "type": "object", + "properties": { + "property": { + "type": "string", + "description": "property identifier, either \"skos:prefLabel\" or \"skos:altLabel\" or \"skos:hiddenLabel\"" + }, + "labels": { + "type": "integer", + "description": "number of labels with the specified property in the given language" + } + } + }, + "PrefAndUri": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + } + }, + "required": [ + "uri", + "prefLabel" + ] + }, + "PrefAndUriAndBroader": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "broader": { + "type": "array", + "items": { + "type": "string", + "description": "URI of the broader concept" + } + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + } + }, + "required": [ + "uri", + "prefLabel" + ] + }, + "PrefAndUriAndNarrower": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "narrower": { + "type": "array", + "items": { + "type": "string", + "description": "URI of the narrower concept" + } + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + } + }, + "required": [ + "uri", + "prefLabel" + ] + }, + "BroaderResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "broader": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUri" + } + } + }, + "required": [ + "uri", + "broader" + ] + }, + "BroaderTransitiveResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "broaderTransitive": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUriAndBroader" + } + } + }, + "required": [ + "uri", + "broaderTransitive" + ] + }, + "NarrowerResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "narrower": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUri" + } + } + }, + "required": [ + "uri", + "narrower" + ] + }, + "RelatedResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "related": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUri" + } + } + }, + "required": [ + "uri", + "related" + ] + }, + "NarrowerTransitiveResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "narrowerTransitive": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUriAndNarrower" + } + } + }, + "required": [ + "uri", + "narrowerTransitive" + ] + }, + "PrefAndUriAndChildren": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "hasChildren": { + "type": "boolean", + "description": "Indicates whether the concept has children of its' own (narrower concepts)" + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + }, + "notation": { + "type": "string", + "description": "Notation code" + } + }, + "required": [ + "uri", + "prefLabel", + "hasChildren" + ] + }, + "ChildrenResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "narrower": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUriAndChildren" + } + } + }, + "required": [ + "uri", + "narrower" + ] + }, + "GroupResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/definitions/PrefAndUriAndMembers" + } + } + }, + "required": [ + "uri", + "groups" + ] + }, + "PrefAndUriAndMembers": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "childGroups": { + "type": "array", + "items": { + "type": "string", + "description": "Member URI" + } + }, + "hasMembers": { + "type": "boolean", + "description": "Indicates whether the group has members" + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + }, + "notation": { + "type": "string", + "description": "Notation code" + } + }, + "required": [ + "uri", + "prefLabel", + "hasMembers" + ] + }, + "MembersList": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "type": { + "type": "array", + "items": { + "type": "string" + } + }, + "isSuper": { + "type": "boolean", + "description": "Indicates whether the group is a superGroup to an another group" + }, + "hasMembers": { + "type": "boolean", + "description": "Indicates whether the group has members" + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + }, + "notation": { + "type": "string", + "description": "Notation code" + } + }, + "required": [ + "uri", + "prefLabel", + "hasMembers" + ] + }, + "GroupMembers": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/MembersList" + } + } + }, + "required": [ + "uri", + "members" + ] + }, + "Hierarchy": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "broaderTransitive": { + "type": "array", + "items": { + "$ref": "#/definitions/HierarchyResult" + } + } + }, + "required": [ + "uri", + "broaderTransitive" + ] + }, + "HierarchyResult": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "broader": { + "type": "array", + "items": { + "type": "string", + "description": "broader concept URI" + } + }, + "narrower": { + "type": "array", + "items": { + "$ref": "#/definitions/LabelAndUriAndChildren" + } + }, + "hasChildren": { + "type": "boolean", + "description": "Indicates whether the concept has narrower concepts" + }, + "prefLabel": { + "type": "string", + "description": "Preferred label of concept" + }, + "notation": { + "type": "string", + "description": "Notation code" + }, + "top": { + "type": "string", + "description": "This field is present if the current concept is a toplevel concept in the vocabulary and contains the concept scheme URI" + } + }, + "required": [ + "uri", + "hasChildren", + "prefLabel" + ] + }, + "HistoryVersion": { + "type": "object", + "properties": { + "skosmosVocab": { + "type": "string", + "description": "vocabulary which contains the concept" + }, + "version": { + "type": "string", + "description": "vocabulary's version eg \"3.0\"" + }, + "createdOn": { + "type": "string", + "description": "date of the vocabulary version" + }, + "iscurrent": { + "type": "boolean", + "description": "flag to know in which version of the concept we are watching" + } + }, + "required": [ + "skosmosVocab", + "version", + "createdOn", + "iscurrent" + ] + }, + "HistoryData": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "hasVersion": { + "type": "array", + "description": "Array of concept's versions contains version, date and the vocabulary which contains this concept", + "items": { + "$ref": "#/definitions/HistoryVersion" + } + } + }, + "required": [ + "uri", + "hasVersion" + ] + }, + "History": { + "type": "object", + "properties": { + "graph": { + "type": "array", + "items": { + "$ref": "#/definitions/HistoryData" + } + } + }, + "required": [ + "graph" + ] + }, + "LabelAndUriAndChildren": { + "type": "object", + "properties": { + "uri": { + "type": "string", + "description": "URI of the concept" + }, + "hasChildren": { + "type": "boolean", + "description": "Indicates whether the concept has children of its' own (narrower concepts)" + }, + "label": { + "type": "string", + "description": "Preferred label of concept" }, - "PrefAndUri": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - } - }, - "required": [ - "uri", - "prefLabel" - ] - }, - "PrefAndUriAndBroader": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "broader": { - "type": "array", - "items": { - "type": "string", - "description": "URI of the broader concept" - } - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - } - }, - "required": [ - "uri", - "prefLabel" - ] - }, - "PrefAndUriAndNarrower": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "narrower": { - "type": "array", - "items": { - "type": "string", - "description": "URI of the narrower concept" - } - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - } - }, - "required": [ - "uri", - "prefLabel" - ] - }, - "BroaderResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "broader": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUri" - } - } - }, - "required": [ - "uri", - "broader" - ] - }, - "BroaderTransitiveResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "broaderTransitive": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUriAndBroader" - } - } - }, - "required": [ - "uri", - "broaderTransitive" - ] - }, - "NarrowerResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "narrower": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUri" - } - } - }, - "required": [ - "uri", - "narrower" - ] - }, - "RelatedResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "related": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUri" - } - } - }, - "required": [ - "uri", - "related" - ] - }, - "NarrowerTransitiveResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "narrowerTransitive": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUriAndNarrower" - } - } - }, - "required": [ - "uri", - "narrowerTransitive" - ] - }, - "PrefAndUriAndChildren": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "hasChildren": { - "type": "boolean", - "description": "Indicates whether the concept has children of its' own (narrower concepts)" - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - }, - "notation": { - "type": "string", - "description": "Notation code" - } - }, - "required": [ - "uri", - "prefLabel", - "hasChildren" - ] - }, - "ChildrenResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "narrower": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUriAndChildren" - } - } - }, - "required": [ - "uri", - "narrower" - ] - }, - "GroupResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "groups": { - "type": "array", - "items": { - "$ref": "#/definitions/PrefAndUriAndMembers" - } - } - }, - "required": [ - "uri", - "groups" - ] - }, - "PrefAndUriAndMembers": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "childGroups": { - "type": "array", - "items": { - "type": "string", - "description": "Member URI" - } - }, - "hasMembers": { - "type": "boolean", - "description": "Indicates whether the group has members" - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - }, - "notation": { - "type": "string", - "description": "Notation code" - } - }, - "required": [ - "uri", - "prefLabel", - "hasMembers" - ] - }, - "MembersList": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "type": { - "type": "array", - "items": { - "type": "string" - } - }, - "isSuper": { - "type": "boolean", - "description": "Indicates whether the group is a superGroup to an another group" - }, - "hasMembers": { - "type": "boolean", - "description": "Indicates whether the group has members" - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - }, - "notation": { - "type": "string", - "description": "Notation code" - } - }, - "required": [ - "uri", - "prefLabel", - "hasMembers" - ] - }, - "GroupMembers": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/MembersList" - } - } - }, - "required": [ - "uri", - "members" - ] - }, - "Hierarchy": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "broaderTransitive": { - "type": "array", - "items": { - "$ref": "#/definitions/HierarchyResult" - } - } - }, - "required": [ - "uri", - "broaderTransitive" - ] - }, - "HierarchyResult": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "broader": { - "type": "array", - "items": { - "type": "string", - "description": "broader concept URI" - } - }, - "narrower": { - "type": "array", - "items": { - "$ref": "#/definitions/LabelAndUriAndChildren" - } - }, - "hasChildren": { - "type": "boolean", - "description": "Indicates whether the concept has narrower concepts" - }, - "prefLabel": { - "type": "string", - "description": "Preferred label of concept" - }, - "notation": { - "type": "string", - "description": "Notation code" - }, - "top": { - "type": "string", - "description": "This field is present if the current concept is a toplevel concept in the vocabulary and contains the concept scheme URI" - } - }, - "required": [ - "uri", - "hasChildren", - "prefLabel" - ] - }, - "LabelAndUriAndChildren": { - "type": "object", - "properties": { - "uri": { - "type": "string", - "description": "URI of the concept" - }, - "hasChildren": { - "type": "boolean", - "description": "Indicates whether the concept has children of its' own (narrower concepts)" - }, - "label": { - "type": "string", - "description": "Preferred label of concept" - }, - "notation": { - "type": "string", - "description": "Notation code" - } - }, - "required": [ - "uri", - "label", - "hasChildren" - ] + "notation": { + "type": "string", + "description": "Notation code" } + }, + "required": [ + "uri", + "label", + "hasChildren" + ] } -} + } +} \ No newline at end of file diff --git a/view/concept-shared.twig b/view/concept-shared.twig index dd6e528ff..7480b71a1 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -143,6 +143,7 @@ {% endif %} {% if concept.foreignLabels %}
    +
    {{ 'foreign prefLabels'|trans|upper }}
    {% set prevlang = '' %}{# Only displaying the language when it appears for the very first time #} @@ -171,6 +172,18 @@ JSON-LD {% if concept.date %}{{ concept.date }}{% endif %}
    + +
    +

    + +
    +
      + +
    +
    +
    {% set appendixProperties = concept.mappingProperties %}