From 32fd9150470ddc2e797a9e7c070e6c2487f46b77 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 29 Sep 2014 14:44:48 +1000 Subject: [PATCH 01/19] Adding detail to readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 23e5d14..3830538 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ sissvoc ======= +vanilla branch +contact: Jonathan Yu (jonathan.yu[ at ] csiro.au) + +Contains a minimal configuration required to setup a SISSVoc instance. From 3003bfeac91f1080d5acf74e35c547f71817ecbe Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 29 Sep 2014 14:51:09 +1000 Subject: [PATCH 02/19] Changing detail of readme --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 3830538..49ae6c7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ sissvoc ======= -vanilla branch -contact: Jonathan Yu (jonathan.yu[ at ] csiro.au) +master branch -Contains a minimal configuration required to setup a SISSVoc instance. From 3b02a89938a0907498df6379d537f4a12a33a95c Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 29 Sep 2014 14:52:44 +1000 Subject: [PATCH 03/19] Changing detail of readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 23e5d14..ab996ca 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ sissvoc ======= +vanilla branch From 5b922c03a84a1134ed297dec883309ef46ae36fc Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Mon, 29 Sep 2014 14:53:41 +1000 Subject: [PATCH 04/19] Adding detail to Readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index ab996ca..002fbc4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ sissvoc ======= vanilla branch +contact: Jonathan Yu (jonathan.yu [ at ] csiro.au) + +A minimal config package for setting up sissvoc. From df181c6b592adc9d99100cb15bb1cd67181997ae Mon Sep 17 00:00:00 2001 From: jyucsiro Date: Mon, 29 Sep 2014 14:59:52 +1000 Subject: [PATCH 05/19] removing org/project specific configs --- .../cgi/config/CGI-201211-ELDAConfig.ttl | 618 ----- resources/cgi/config/CGI-ELDAConfig.ttl | 617 ----- resources/cgi/config/CGI-TEST-ELDAConfig.ttl | 638 ----- resources/cgi/css/mystyle.css | 8 - resources/cgi/images/CGI.png | Bin 106494 -> 0 bytes resources/cgi/images/GeoSciML-64.png | Bin 7223 -> 0 bytes resources/cgi/images/GeoSciML.png | Bin 11244 -> 0 bytes resources/cgi/images/IUGS-64.png | Bin 5534 -> 0 bytes resources/cgi/images/IUGS-CGI-GeoSciML.png | Bin 143707 -> 0 bytes resources/cgi/images/IUGS.png | Bin 9055 -> 0 bytes .../config/SISSvoc3-ELDAConfig-template.ttl | 0 .../css/jquery-ui.css | 0 .../{siss-default => default}/css/mystyle.css | 0 .../css/sissstyle.css | 0 .../images/molecule.png | Bin .../images/siss-favicon.png | Bin .../images/siss-icon-64.png | Bin .../images/sissvoc-banner.png | Bin .../js/jquery-1.10.2.min.js | 0 .../js/jquery-ui.min.js | 0 .../js/jquery.min.js | 0 .../transform/ashtml-sissvoc.xsl | 0 .../config/eea-europa-ELDAConfig.ttl | 615 ----- resources/eea-europa/css/mystyle.css | 11 - .../config/commodity-vocab-ELDAConfig.ttl | 591 ----- ...ionalStratigraphicChart2004-ELDAConfig.ttl | 590 ----- ...ionalStratigraphicChart2005-ELDAConfig.ttl | 590 ----- ...ionalStratigraphicChart2006-ELDAConfig.ttl | 591 ----- ...ionalStratigraphicChart2008-ELDAConfig.ttl | 590 ----- ...ionalStratigraphicChart2009-ELDAConfig.ttl | 590 ----- ...ionalStratigraphicChart2010-ELDAConfig.ttl | 590 ----- ...ionalStratigraphicChart2012-ELDAConfig.ttl | 614 ----- ...ionalStratigraphicChart2013-ELDAConfig.ttl | 674 ------ ...ionalStratigraphicChart2014-ELDAConfig.ttl | 682 ------ resources/ics/css/mystyle.css | 8 - resources/ics/images/ics-logo-64.gif | Bin 2826 -> 0 bytes resources/ics/images/ics-logo.gif | Bin 5541 -> 0 bytes .../isotc211/config/ISOTC211-ELDAConfig.ttl | 832 ------- resources/isotc211/css/mystyle.css | 6 - resources/isotc211/css/sissstyle.css | 33 - resources/isotc211/images/molecule.png | Bin 5533 -> 0 bytes resources/isotc211/images/siss-favicon.png | Bin 614 -> 0 bytes resources/isotc211/images/siss-icon-64.png | Bin 3842 -> 0 bytes resources/isotc211/images/sissvoc-banner.png | Bin 6957 -> 0 bytes .../isotc211/transform/ashtml-sissvoc.xsl | 2109 ----------------- resources/nerc/config/NERC-ELDAConfig.ttl | 788 ------ resources/nerc/css/mystyle.css | 11 - resources/nerc/images/molecule.png | Bin 5533 -> 0 bytes resources/nerc/images/siss-favicon.png | Bin 614 -> 0 bytes resources/nerc/images/siss-icon-64.png | Bin 3842 -> 0 bytes resources/nerc/images/sissvoc-banner.png | Bin 6957 -> 0 bytes .../nvcl/config/nvcl-scalars-ELDAConfig.ttl | 557 ----- resources/ogc/config/OGC-def-ELDAConfig.ttl | 609 ----- resources/ogc/css/mystyle.css | 6 - resources/ogc/images/OGC.jpg | Bin 10522 -> 0 bytes resources/ogc/images/OGChex.jpg | Bin 2138 -> 0 bytes resources/ogc/images/newOGCHeader.jpg | Bin 18972 -> 0 bytes resources/ogc/images/ogc-banner.png | Bin 22808 -> 0 bytes resources/siss-default/images/molecule.png | Bin 5533 -> 0 bytes .../siss-default/images/siss-favicon.png | Bin 614 -> 0 bytes .../siss-default/images/siss-icon-64.png | Bin 3842 -> 0 bytes .../siss-default/images/sissvoc-banner.png | Bin 6957 -> 0 bytes resources/slake/config/Slake-ELDAConfig.ttl | 564 ----- resources/slake/css/mystyle.css | 6 - resources/slake/images/bom_logo_clr.gif | Bin 3636 -> 0 bytes resources/slake/images/favicon.ico | Bin 1406 -> 0 bytes resources/wq/config/WQ-ELDAConfig.ttl | 618 ----- resources/wq/css/mystyle.css | 6 - resources/wq/css/sissstyle.css | 33 - resources/wq/images/molecule.png | Bin 5533 -> 0 bytes resources/wq/images/siss-favicon.png | Bin 614 -> 0 bytes resources/wq/images/siss-icon-64.png | Bin 3842 -> 0 bytes resources/wq/images/sissvoc-banner.png | Bin 6957 -> 0 bytes resources/wq/transform/ashtml-sissvoc.xsl | 2109 ----------------- 74 files changed, 16904 deletions(-) delete mode 100644 resources/cgi/config/CGI-201211-ELDAConfig.ttl delete mode 100644 resources/cgi/config/CGI-ELDAConfig.ttl delete mode 100644 resources/cgi/config/CGI-TEST-ELDAConfig.ttl delete mode 100644 resources/cgi/css/mystyle.css delete mode 100644 resources/cgi/images/CGI.png delete mode 100644 resources/cgi/images/GeoSciML-64.png delete mode 100644 resources/cgi/images/GeoSciML.png delete mode 100644 resources/cgi/images/IUGS-64.png delete mode 100644 resources/cgi/images/IUGS-CGI-GeoSciML.png delete mode 100644 resources/cgi/images/IUGS.png rename resources/{siss-default => default}/config/SISSvoc3-ELDAConfig-template.ttl (100%) rename resources/{siss-default => default}/css/jquery-ui.css (100%) rename resources/{siss-default => default}/css/mystyle.css (100%) rename resources/{siss-default => default}/css/sissstyle.css (100%) rename resources/{eea-europa => default}/images/molecule.png (100%) rename resources/{eea-europa => default}/images/siss-favicon.png (100%) rename resources/{eea-europa => default}/images/siss-icon-64.png (100%) rename resources/{eea-europa => default}/images/sissvoc-banner.png (100%) rename resources/{siss-default => default}/js/jquery-1.10.2.min.js (100%) rename resources/{siss-default => default}/js/jquery-ui.min.js (100%) rename resources/{siss-default => default}/js/jquery.min.js (100%) rename resources/{siss-default => default}/transform/ashtml-sissvoc.xsl (100%) delete mode 100644 resources/eea-europa/config/eea-europa-ELDAConfig.ttl delete mode 100644 resources/eea-europa/css/mystyle.css delete mode 100644 resources/erml/config/commodity-vocab-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2004-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2005-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2006-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2008-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2009-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2010-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2012-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2013-ELDAConfig.ttl delete mode 100644 resources/ics/config/InternationalStratigraphicChart2014-ELDAConfig.ttl delete mode 100644 resources/ics/css/mystyle.css delete mode 100644 resources/ics/images/ics-logo-64.gif delete mode 100644 resources/ics/images/ics-logo.gif delete mode 100644 resources/isotc211/config/ISOTC211-ELDAConfig.ttl delete mode 100644 resources/isotc211/css/mystyle.css delete mode 100644 resources/isotc211/css/sissstyle.css delete mode 100644 resources/isotc211/images/molecule.png delete mode 100644 resources/isotc211/images/siss-favicon.png delete mode 100644 resources/isotc211/images/siss-icon-64.png delete mode 100644 resources/isotc211/images/sissvoc-banner.png delete mode 100644 resources/isotc211/transform/ashtml-sissvoc.xsl delete mode 100644 resources/nerc/config/NERC-ELDAConfig.ttl delete mode 100644 resources/nerc/css/mystyle.css delete mode 100644 resources/nerc/images/molecule.png delete mode 100644 resources/nerc/images/siss-favicon.png delete mode 100644 resources/nerc/images/siss-icon-64.png delete mode 100644 resources/nerc/images/sissvoc-banner.png delete mode 100644 resources/nvcl/config/nvcl-scalars-ELDAConfig.ttl delete mode 100644 resources/ogc/config/OGC-def-ELDAConfig.ttl delete mode 100644 resources/ogc/css/mystyle.css delete mode 100644 resources/ogc/images/OGC.jpg delete mode 100644 resources/ogc/images/OGChex.jpg delete mode 100644 resources/ogc/images/newOGCHeader.jpg delete mode 100644 resources/ogc/images/ogc-banner.png delete mode 100644 resources/siss-default/images/molecule.png delete mode 100644 resources/siss-default/images/siss-favicon.png delete mode 100644 resources/siss-default/images/siss-icon-64.png delete mode 100644 resources/siss-default/images/sissvoc-banner.png delete mode 100644 resources/slake/config/Slake-ELDAConfig.ttl delete mode 100644 resources/slake/css/mystyle.css delete mode 100644 resources/slake/images/bom_logo_clr.gif delete mode 100644 resources/slake/images/favicon.ico delete mode 100644 resources/wq/config/WQ-ELDAConfig.ttl delete mode 100644 resources/wq/css/mystyle.css delete mode 100644 resources/wq/css/sissstyle.css delete mode 100644 resources/wq/images/molecule.png delete mode 100644 resources/wq/images/siss-favicon.png delete mode 100644 resources/wq/images/siss-icon-64.png delete mode 100644 resources/wq/images/sissvoc-banner.png delete mode 100644 resources/wq/transform/ashtml-sissvoc.xsl diff --git a/resources/cgi/config/CGI-201211-ELDAConfig.ttl b/resources/cgi/config/CGI-201211-ELDAConfig.ttl deleted file mode 100644 index 8692533..0000000 --- a/resources/cgi/config/CGI-201211-ELDAConfig.ttl +++ /dev/null @@ -1,618 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix cgi: . - - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:cgi201211 a api:API - -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/cgi/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "CGI Controlled Vocabulary (2012-11)"] - , [api:name "serviceAuthor"; api:value "Guillaume Duclaux"] - , [api:name "serviceAuthorEmail"; api:value "Guillaume.Duclaux@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.cgi-iugs.org/tech_collaboration/interoperability_working_group.html/"] - , [api:name "configID"; api:value "$Header$"] -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint, - svoc:conceptSchemeEndpoint, - svoc:conceptCollectionEndpoint, - svoc:conceptListEndpoint, - svoc:conceptByLabelEndpoint, - svoc:conceptByLabelLooseEndpoint, - svoc:broaderThanURIEndpoint, - svoc:narrowerThanURIEndpoint, - svoc:broaderTransitiveThanURIEndpoint, - svoc:narrowerTransitiveThanURIEndpoint, - svoc:broaderByLabelEndpoint, - svoc:narrowerByLabelEndpoint, - svoc:broaderTransitiveByLabelEndpoint, - svoc:narrowerTransitiveByLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true -############################################################## -## -## TODO: deployer to make changes here -## -## set title of service - - ; rdfs:label "IUGS Commission for the Management and Application of Geoscience Information Vocabularies (2012-11 edition)"@en - -#### -## set service shortname - change value of "test" here -# ; api:variable -# [ api:name "vocab" ; api:value "test" ] -## was trying to set constant here to be inserted as the first step of the uriTemplates below -## but the {variable} syntax in uriTemplates is for catching values, not expanding them, so this approach failed -#### -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - -# ; api:sparqlEndpoint - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - -################ -## -## LDA documentation is unclear about syntax for api_template, and in particular how to pass in the URI for the item -## -#svoc:labelledDescribeConceptViewer a api:Viewer -# ; api:name "conceptFull" -# ; api:template " CONSTRUCT { ?item ?p ?o . ?o skos:prefLabel ?l } WHERE { ?item ?p ?o ; rdf:type skos:Concept . OPTIONAL { ?o skos:prefLabel ?l } } " -# . -# -## -################ - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/cgi201211" - ; api:exampleRequestPath "/cgi201211" - ; api:itemTemplate "http://resource.geosciml.org/classifierscheme/cgi/201211/geologicunittype" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/cgi201211/resource?uri={URI}" - ; api:exampleRequestPath "/cgi201211/resource?uri=http://resource.geosciml.org/classifier/cgi/geologicunittype/geologic_unit" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi201211/conceptscheme" - ; api:exampleRequestPath "/cgi201211/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi201211/collection" - ; api:exampleRequestPath "/cgi201211/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi201211/concept" - ; api:exampleRequestPath "/cgi201211/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text, in English -svoc:conceptByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text, in English" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept?anylabel=monzogranite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptByLabelLooseEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept?labelcontains={text}" - ; api:exampleRequestPath "/cgi201211/concept?labelcontains=Monzogranite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER regex( str(?l) , ?text , 'i' ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/broader?uri=http://resource.geosciml.org/classifier/cgi/lithology/chalk" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/narrower?uri=http://resource.geosciml.org/classifier/cgi/lithology/compound_material" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/cgi/lithology/basic_igneous_material" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/cgi/lithology/compound_material" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text, in English -svoc:broaderByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/broader?anylabel=chalk" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broader ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text, in English -svoc:narrowerByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/narrower?anylabel=granite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrower ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text, in English -svoc:broaderTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/broaderTransitive?anylabel=chalk" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broaderTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text, in English -svoc:narrowerTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/narrowerTransitive?anylabel=granite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrowerTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## DC -dc:source - api:label "source" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:memberList - api:label "memberList" ; - rdfs:domain skos:OrderedCollection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:semanticRelation - api:label "semanticRelation" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:related - api:label "related" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:mappingRelation - api:label "mappingRelation" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:closeMatch - api:label "closeMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:exactMatch - api:label "exactMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broadMatch - api:label "broadMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowMatch - api:label "narrowMatch " ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:relatedMatch - api:label "relatedMatch " ; - api:multiValued true ; - rdfs:range skos:Concept . - - diff --git a/resources/cgi/config/CGI-ELDAConfig.ttl b/resources/cgi/config/CGI-ELDAConfig.ttl deleted file mode 100644 index d5df436..0000000 --- a/resources/cgi/config/CGI-ELDAConfig.ttl +++ /dev/null @@ -1,617 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix cgi: . - - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:cgi201211 a api:API - -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/cgi/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "CGI Controlled Vocabulary (2012-11)"] - , [api:name "serviceAuthor"; api:value "Guillaume Duclaux"] - , [api:name "serviceAuthorEmail"; api:value "Guillaume.Duclaux@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.cgi-iugs.org/tech_collaboration/interoperability_working_group.html/"] - , [api:name "configID"; api:value "$Header$"] -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint, - svoc:conceptSchemeEndpoint, - svoc:conceptCollectionEndpoint, - svoc:conceptListEndpoint, - svoc:conceptByLabelEndpoint, - svoc:conceptByLabelLooseEndpoint, - svoc:broaderThanURIEndpoint, - svoc:narrowerThanURIEndpoint, - svoc:broaderTransitiveThanURIEndpoint, - svoc:narrowerTransitiveThanURIEndpoint, - svoc:broaderByLabelEndpoint, - svoc:narrowerByLabelEndpoint, - svoc:broaderTransitiveByLabelEndpoint, - svoc:narrowerTransitiveByLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true -############################################################## -## -## TODO: deployer to make changes here -## -## set title of service - - ; rdfs:label "IUGS Commission for the Management and Application of Geoscience Information Vocabularies (2012-11 edition)"@en - -#### -## set service shortname - change value of "test" here -# ; api:variable -# [ api:name "vocab" ; api:value "test" ] -## was trying to set constant here to be inserted as the first step of the uriTemplates below -## but the {variable} syntax in uriTemplates is for catching values, not expanding them, so this approach failed -#### -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - -################ -## -## LDA documentation is unclear about syntax for api_template, and in particular how to pass in the URI for the item -## -#svoc:labelledDescribeConceptViewer a api:Viewer -# ; api:name "conceptFull" -# ; api:template " CONSTRUCT { ?item ?p ?o . ?o skos:prefLabel ?l } WHERE { ?item ?p ?o ; rdf:type skos:Concept . OPTIONAL { ?o skos:prefLabel ?l } } " -# . -# -## -################ - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/cgi201211" - ; api:exampleRequestPath "/cgi201211" - ; api:itemTemplate "http://resource.geosciml.org/classifierscheme/cgi/201211/geologicunittype" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/cgi201211/resource?uri={URI}" - ; api:exampleRequestPath "/cgi201211/resource?uri=http://resource.geosciml.org/classifier/cgi/geologicunittype/geologic_unit" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi201211/conceptscheme" - ; api:exampleRequestPath "/cgi201211/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi201211/collection" - ; api:exampleRequestPath "/cgi201211/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi201211/concept" - ; api:exampleRequestPath "/cgi201211/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text, in English -svoc:conceptByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text, in English" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept?anylabel=monzogranite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptByLabelLooseEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept?labelcontains={text}" - ; api:exampleRequestPath "/cgi201211/concept?labelcontains=Monzogranite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER regex( str(?l) , ?text , 'i' ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/broader?uri=http://resource.geosciml.org/classifier/cgi/lithology/chalk" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/narrower?uri=http://resource.geosciml.org/classifier/cgi/lithology/compound_material" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/cgi/lithology/basic_igneous_material" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/cgi201211/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/cgi/lithology/compound_material" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text, in English -svoc:broaderByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/broader?anylabel=chalk" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broader ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text, in English -svoc:narrowerByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/narrower?anylabel=granite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrower ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text, in English -svoc:broaderTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/broaderTransitive?anylabel=chalk" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broaderTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text, in English -svoc:narrowerTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi201211/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/cgi201211/concept/narrowerTransitive?anylabel=granite" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrowerTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## DC -dc:source - api:label "source" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:memberList - api:label "memberList" ; - rdfs:domain skos:OrderedCollection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:semanticRelation - api:label "semanticRelation" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:related - api:label "related" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:mappingRelation - api:label "mappingRelation" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:closeMatch - api:label "closeMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:exactMatch - api:label "exactMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broadMatch - api:label "broadMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowMatch - api:label "narrowMatch " ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:relatedMatch - api:label "relatedMatch " ; - api:multiValued true ; - rdfs:range skos:Concept . - - diff --git a/resources/cgi/config/CGI-TEST-ELDAConfig.ttl b/resources/cgi/config/CGI-TEST-ELDAConfig.ttl deleted file mode 100644 index a441c33..0000000 --- a/resources/cgi/config/CGI-TEST-ELDAConfig.ttl +++ /dev/null @@ -1,638 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix cgi: . - - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:cgi a api:API - -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/cgi/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "CGI Controlled Vocabulary Interface"] - , [api:name "serviceAuthor"; api:value "GILLY!"] - , [api:name "serviceAuthorEmail"; api:value "Guillaume.Duclaux@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.cgi-iugs.org/tech_collaboration/interoperability_working_group.html/"] - , [api:name "configID"; api:value "$Header$"] -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptByLabelEndpoint , - svoc:conceptByLabelLooseEndpoint , - svoc:conceptByNotationEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderByLabelEndpoint , - svoc:narrowerByLabelEndpoint , - svoc:broaderTransitiveByLabelEndpoint , - svoc:narrowerTransitiveByLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true -############################################################## -## -## TODO: deployer to make changes here -## -## set title of service - - ; rdfs:label "IUGS Commission for the Management and Application of Geoscience Information - vocabulary service API"@en - -#### -## set service shortname - change value of "test" here -# ; api:variable -# [ api:name "vocab" ; api:value "test" ] -## was trying to set constant here to be inserted as the first step of the uriTemplates below -## but the {variable} syntax in uriTemplates is for catching values, not expanding them, so this approach failed -#### -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - -################ -## -## LDA documentation is unclear about syntax for api_template, and in particular how to pass in the URI for the item -## -#svoc:labelledDescribeConceptViewer a api:Viewer -# ; api:name "conceptFull" -# ; api:template " CONSTRUCT { ?item ?p ?o . ?o skos:prefLabel ?l } WHERE { ?item ?p ?o ; rdf:type skos:Concept . OPTIONAL { ?o skos:prefLabel ?l } } " -# . -# -## -################ - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/cgi" - ; api:exampleRequestPath "/cgi" - ; api:itemTemplate "http://resource.geosciml.org/classifierscheme/cgi/201202/faultmovementtype" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/cgi/resource?uri={URI}" - ; api:exampleRequestPath "/cgi/resource?uri=http://resource.geosciml.org/classifier/cgi/faultmovementtype/dip_slip" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi/conceptscheme" - ; api:exampleRequestPath "/cgi/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi/collection" - ; api:exampleRequestPath "/cgi/collection" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a ?type . FILTER ( ?type = skos:Collection || ?type = skos:OrderedCollection ) " ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/cgi/concept" - ; api:exampleRequestPath "/cgi/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text, in English -svoc:conceptByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text, in English" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept?anylabel={text}" - ; api:exampleRequestPath "/cgi/concept?anylabel=dip%20slip" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4a. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptByLabelLooseEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept?labelcontains={text}" - ; api:exampleRequestPath "/cgi/concept?labelcontains=slip" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER regex( str(?l) , ?text , 'i' ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where the skos:notation matches the quoted text -svoc:conceptByNotationEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where notation property has exact match to this string" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of notation= to a code for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept?notation={nn}" - ; api:exampleRequestPath "/cgi/concept?notation=a1.1.3.6" - -## end of TODO: -############################################################## - ; api:selector [ -## this match isn't quite right - it is not exact, but must use regex and str() because in general don't know the datatype - api:where " ?item a skos:Concept . ?item skos:notation ?n . FILTER regex( str(?n),?nn ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/cgi/concept/broader?uri=http://resource.geosciml.org/classifier/cgi/faultmovementtype/transcurrent" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/cgi/concept/narrower?uri=http://resource.geosciml.org/classifier/cgi/faultmovementtype/extraction" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/cgi/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/cgi/faultmovementtype/extraction" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/cgi/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/cgi/faultmovementtype/extraction" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text, in English -svoc:broaderByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/cgi/concept/broader?anylabel=dip%20slip" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broader ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text, in English -svoc:narrowerByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/cgi/concept/narrower?anylabel=dip%20slip" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrower ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text, in English -svoc:broaderTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/cgi/concept/broaderTransitive?anylabel=dip%20slip" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broaderTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text, in English -svoc:narrowerTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/cgi/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/cgi/concept/narrowerTransitive?anylabel=dip%20slip" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrowerTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = rdfs:label || ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## DC -dc:source - api:label "source" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:memberList - api:label "memberList" ; - rdfs:domain skos:OrderedCollection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:semanticRelation - api:label "semanticRelation" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:related - api:label "related" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:mappingRelation - api:label "mappingRelation" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:closeMatch - api:label "closeMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:exactMatch - api:label "exactMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broadMatch - api:label "broadMatch" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowMatch - api:label "narrowMatch " ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:relatedMatch - api:label "relatedMatch " ; - api:multiValued true ; - rdfs:range skos:Concept . - - diff --git a/resources/cgi/css/mystyle.css b/resources/cgi/css/mystyle.css deleted file mode 100644 index c2e8a18..0000000 --- a/resources/cgi/css/mystyle.css +++ /dev/null @@ -1,8 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* we are replacing the icon near the title. */ -header h1 { - background: url("../images/GeoSciML-64.png") no-repeat scroll 0 0 transparent; - font-size: 36px; - font-family: Calibri, Helvetica Neue, Helvetica, sans-serif; -} \ No newline at end of file diff --git a/resources/cgi/images/CGI.png b/resources/cgi/images/CGI.png deleted file mode 100644 index 23133e39c9fff00fc53fe3a77aa37ddd862fa8e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106494 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%0Du_62hEAUS%Y_{So7 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 z%0A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 FV1nyI20;J- diff --git a/resources/cgi/images/GeoSciML.png b/resources/cgi/images/GeoSciML.png deleted file mode 100644 index 66cdc070015017cc96a625ae1486b9d902db1290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11244 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 WDoYL?Rt{JI000055@00004XF*Lt006O% z3;baP00009a7bBm000XQ000XQ0h0Lxr2qf`2XskIMF-Uj7!o%zvLU`r0000QbVXQn zQ*UN;cVTj608n9RZgehAMN}YmGcGkQF)%Rna-jeK6$eQ~K~!i%-CFrqT3NR4_s?|q z>i(tI>i(s>*Q)AD(w$VQx+{a4sBxZ>I44eVh;cR!(HJ8tf+CX$f`WjGA}9y~A~+!; z0xF_73*v$&%yZ-0A#d!KX9|D2wl{^}QY0Hj~o@vGC5 z6Qq6WfWIOg&i--rbl-Gx>}n^c$FASACw=;1mu&%Sq5jpcuR@AaKPOvod0S~jP? zafHU0?BeN$q!zwlu8TL#<7)@Sy75Ufkmhv$2QmE&NUnf!>>Yva$0t|N&BJNA?8i@O zVKJnzXkt=&2O6vB@y+3SdNZP z7R}oOq8TcEvI?0#k3l3Ee19 zf8J5@s!uRzR;n!Hlgo3)?aAp?^~ADLwIm-|9FiL33gePx`{)S7<&3UNf%iF(U<}sIHR{DU%&+T_4{d9$Ju(SVqUzS=^bzQZ}u9LZjW%&2AV?TMK5} z?A*qbc6DrGMWI|8l9hv4) zi}q3V61_vQXx_D2cQ-cnp>1yOFIsl=h7EASklJCO5ry+sQ z+wBJu*&LlY!RXX6xrWXz1B;`lwrjA>^2)cuf|BmC*S(w`t!{41Y_ZSJZ>z`5E7rZO ztpkU{32n!Au)eWpn%|n9K?Fl8GxrY~xx8t)avsFf6Qum$86Sn@atFKZ0AjkWT}@|B zvAEiv-dTarBpzA>XOk(GB{B=AdluC&NFWbS&uq>w*yiVVVDzi2jvd?K;lat#;R#q| zb8F9R-kF(2APvjS0+ET+J=4jZFq$?lB?W&1lJn?fWOTl@O-ZFsw0CORUAkVren4cB z3@<81mek`bQ<^ocZbv-4)X_Pvo>-fjUe)T>Obc69t9@&Ge}B&jZO691zP@W&w!0xo zHBeg4{X=uLptd>YeNBH*$Jr+dHRQ>0_-l zHH|UGU`?{RG(CN@gF`0yh*>?cGOb%Tm^K%ec9xgz%PaOJi_K`MEFv#vl&SS`ii;G*dHYJ`kN~VstF*Pi%j?=9t zx2iEXc|BHET`R7Kgo}42+|DUZ4^jt7qzj;FW0NbO1dxvAjGNFv!L>7MQyS~Eb{)!y z{sChbPtRaY!;Q^EWgBA@y!0%rm7NO8G3{FX;sHyFfVD+9pyg9OS7y_w7 z1A}O297Z=Pnh5IGHR7_@1J$+CI*bBGRJG8?>FrYx9tf%dKm2BmI*R-vJNv`Q!l~dl!TV?ntEwTh2ZsDaZNptro@w7s5&&A+?np)**<|mIB0~> z5=$1ul6ldPX+Ui36V3@mroo{FI&+djp8)cKZQ!}GTFCAiI}0ZdA%d_xo7L_g9#^3H zd_u7P5u}JXT0$x-{Y6(v#XwEH>`ko{Jgo*j+=L%(p-vLW<7JfsAgZcn2-P5mN*qu@ zY=DX|+0&4702r@N-`j5hCE)S(a0;r;?U@mZ7h7m50!0OesBMtHK}kw0`II)9&Axvr zEIIa^MU`DXAsGKiLU=4CE~O(ao10VEn^)XdSjK<#X0Qe=g#x^VHo;)dG&ISJ%KHG- z8x)`#Zony;NlG$R-AV_#CfhqTEcP^uqh)cXnVe}jrFTrVb&U57%r}!2m}W(7!!X=f zUNuly%EJ-GTRVFm^t*Q~?e00>VuUd%w1jk4YBndUpgZqnUuoq)X;@%RQFA7&G>x(2w8gcFf6*4l=!)XqXMu)B4jfsn^Q@u5Nd06Zo~Gaxa8`V(8# zIN~Tm6bASgwbEtVw#$LEcX*5;N)ysMlC!%q@_0GL{K7Ipd6l>dC9TDbG~!|0pcB)b zTyQEw|KK8-I)OqDqp>56&8lY77)<^sv`H#m1AQ1QEmRvF>=}21Q;0NRuYb@?YE|RO zV_5tsx=~q!mcK@c+uD^j+vPak!O_VZG~YW2eLoBz{D>SCM~zLQCuOkGbGYDpr4_=e z8ZjCx!;@4%2!l2Ax<>RokDFW6TU6R#QXvG-tU`(3)=2>;OgbQUp_}9|FRaJP;S`0I z)?+2$v9GFxzcMD)}4 zqzra?c2`beUvc?BWwqFqi$-z8u{!KXdJa1+o1K-{1AonbDJUvO#`>yi5W0bEK&XJq zzd<3bss{3y7`&83nJ6md7nJnFEm?WIXD_(PnG6O?1*=FdNFJ(-E+9c(;t6L0A2!|# zBLqAohsRPMB{H6*u~M_R&+~Z&C4%BtgLyCc*#$h{EitVXS4}KGtRT= zpr;{$nI>meqLYbUA-D&Tq|oTrsCarp3KNLR%mFI+PtrR>qRAnT$>A}SsCb0KxD@8o z^iG(%Kg;gQ%I$%%g8B0R+sl4{S5PV_EEN=#2=j~k^NM?cSl}=#rz`yhHzkV$H-b?z za@)r>7SH+I**fr9UIIv4wu7?jp1VQdd&HoJE#WcL$4?jusm#<&7(~~DD57_0vtKwd zFp3=dm=Y07dziq8PU?tDWj=Yv0+Xjc=K{8j7u}h;Jz4p@=Xpp22g}TZ)9#vv5s1Cy z%uX;(Txv&jQv0JsT6JCD`liEEIrh9(yjVa!IX!ZoGP}m^hoPZ>2#5qiC=V0pF-h%+ zMblW`p}1RtIPVa=3l$0e8XiLfCINPAQb&9WGck>oln%bcPRZn?Jm&&Jq-AkaGT9k9 zoQk*7ry0!nRAx+a`=cj}sQ9*r@njZPjRcZskN4+GK$On79-mIU6V!M=oEQ)VK1Kyp zkalBJSm2P~_+t@N!35th!h=Y1U{nkEXGAO&#s`51t_Z`0&he=%FhRmIRs#H{vB1HA zrIOd;$4}c3FbQoCsG-p;O+!BdxsLhKLHrHD8g7Q6{=S6;SUTiuaEML2q%ZUt}WVP6+P$y@s#- zu-`mr0=n)7H~YAN`A5JI$-xLV;EfU%-5MSPjp}NxF-f$7@<9L={HO)Gfff8CaOpX1 zbEZwtDffH6`)&p3Skc>e>B z#{%m8Dd5FNq#efrnIZR!YPcQLh;S7_3Veu!O=MhKL_9t4aqF!h-1Ykn*AYL&e)|A% zMYsaq2=3|~(hP$>Z}K_*Tj0&c27W``uFKJH@+r1@c|b zy5T@I4gAx;=2l=6kN^e-wFrUGifN6AZwrrayBAKn>4&-IgZ}${%ynNZ#MrkFngH8( zfgp^{-vu_`4s5;^fQd4`KXp(d#^e z!@3OwRc<-kE2IuFZ7}{`D8vjYAgU$!F$Dr9G?o_ds1;yb^{%_(Q-AGVgBu&Pul*XK z-So%Yk0LxP65I~LeC^k8!x!_<2esLyOzqt2yQLG?>ppX_AG+=B?OCl>v)K&4@c$pb z@nh?Fu0@;EwavX&=19O}>^FY(VE(%ygnMB`C;|~|AmR@x4<5GO3dUdYuK&`j{%_E{ zk#@x!ebuM_+aPS*i=Nxz%~yPCuXv-b`n-)wA938=W(c8+pyM6&)?Nx77#hzJY}PvUJUaS`&(C1U{X?hLu+~5l2gG3haliWS_i91$ zZu&QY*MXYf@N4|ar~V6XG}2snZU$naGr4}Tl&^eHUwYM~6m>}_EUUIdX7AY3Y;tZT z?~B`IfAe}BmWZ8O+&pqRWir{H|NLhFu(r0Eo0|*p3Nq^s=+`hU;^=hJ z?Xdd4->0;GNWsCu0GPw! z{Qmd9XR%m63?4vx{rYu)2W&%sxDl2k--q-m%|U>joH`DiCd*F0R9{aN7glkS^J$MW zS|U?OaaoiXuUII&h|C-%F^0Q^lRDGp=+w#^j36Ky`>p@$2ag&GD|-lSDlB=F*{hAu zpoAx2hU9ZFPcs+|015oZ4GFx+4GBU8Ac;hx%F4>${`R*JEkDd%5Mzafg;%azsj8~l z-rhzqe?QfJ2joo>RZEj(EamBX2y|=S_xV?L@yAL1P5PpGy zZQH@HYN4X8FE|F{6;kgP(G>g`SApskNcCe{i_L*lL?46XW=SX%f;ax|cfSJ-KwReJ z1YiIsaJWSekVCxvM_D`qv#D9bhYP zPPlUS?p@%mrKM$db{1{{#^6t&6Cj&*yZv)E++^*zFD;k5^Mu1H)QbS%DGD<#O;eur~^Y0-toht+TW9uYdh3kOLPf6pELZ7XX0B z0j~ov(7&jt2wW80@+VU5&lvoVcfIh))6LEO$~Qf!S)H%~<8C=cY~9=%EaQM(!SHan zV-PYA#69>Az`J-VT!9f67Z*oGMMXzPgAxECfX7`uxYfd)vMw9a*^oe~Rbz|!#oQMK zy)O!Q?%&sM`D^R@KlI*@m3%N_AOVyb4gdp4K4Qkt+PwCEWy=QJ4A|z>wX#-A1AdkRTnI?jwp-IZ=9)mS0&mWfu$rY%GC#|mUc6N;uTUAts zYHY%?>u|yb6(U8!7i#{?Ai1LiGOTvS%H&MIMhB5(&Tc;hS(=zyX0X&^iO#ij{7w}; z!`S7q=#AQ|qctDl<-K%dyLx{ZjVtULGW;^VnwF+uC*jS7+7Nxjo_Z5Y`-^O!8a=y?fH-L2_?Og7%rqbRI*8 gK>EcUzd%U;3xxFPi%24^SpWb407*qoM6N<$f^`C%Q~&?~ diff --git a/resources/cgi/images/IUGS-CGI-GeoSciML.png b/resources/cgi/images/IUGS-CGI-GeoSciML.png deleted file mode 100644 index c18b1af4e41506c4fe7d7c6193058fd9ef3e58ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143707 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

unt7(9Y!M<8Wz}vx8 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 diff --git a/resources/cgi/images/IUGS.png b/resources/cgi/images/IUGS.png deleted file mode 100644 index 69081233715c34111145fe40c60ebb858737b50a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9055 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 z @Y-}%mWpdLLzkmAEpCU0~8`w%zRFr{%fv&DDyeTX!3>#>|@8j-l z`9F30#XD;<+a4P91?M$4U+i`(2bW*=8*wSd^G*Smuh`ngk9X`K1Yja~;DyE@G+}~N zJuonUtOR8p{#N`6-~Hns|A^rQ%4k%BcmNjYKvSA6x3;!`qrbl&T6-$4&j6aej-ZdY zC-ZT5k@r2Uropw{Qg7l4Z@JIC(tu!gr+h-aicgc`_9v6nyFOEn9u?0p9Y~|7s0cyl z>+6f$BoGLoxP!69(I@b=qIu?!P|@*)-2p*GSV5p}#8LvH1(Zd`R47MRK5BO5Fq$Jf zc@SJrV|X9&i&Xs?K?5bsFRbI{p1=@J&?6p}@B}{Ms-Mv+QmMkZ`6H%?k1Pc~+}oGj z?D-vEJDP(4!M$WL@m1l(>Kh@k00+-en#Rk?Z&<-F`$M_!Q}+3V2KZEiuM5q7#jN%Y z6uVgHUM`J}=fxyo!B$;NLTz+BR%hcyT}*rptGI>uO`unp5RUrj*N#TxsWWpMlyqTY zY8{E(KuWDkqls~I16D(lQt@YPSw;J%`Zlp+eY`F-2bl#O#vq`vWq^`VN6l)bW;JK$ zH{tH^_08Q%USC>9Lt2KITOg3I*vO|wfRg~h~b^QvkECU7+a&e8FuqEbl#Thh?ji+WET zP@mNwPWUgLto;&LwYs*|)G~};8!M~q#xEe@9(m2Q1)-+-wQ7N)v_je<8N?40s58|6 z0Gfknnx0*&t?R264)6qhozn4jT+`9`?XGHRdA*@=fXDCdkd8n#$L+(fE1>q!U{;}T zx=uWR8|lQ&Lz7c0Pw%c&K~S6Uow|m8Mb9`fBXP_r>h+-^;sept-idov$MD-yz5Uae z3_V=eK|wt|Q*G@d1A|kn|tOinK1M=~cS7ygIPAaYh#)+Z+y zCMTEB|CJS75<4sl0u3e&mX=rN=9ia=WfObT=EtX<*QFXvLanZDEG@1h4dKO+Qz!f5 ztUVg9Vleq4(60*(`l-G!4{3bte9Q3(<(Y3H(0u;*2m+s@`ABJej^-oL{6DY}Xrgoh R#s2^R002ovPDHLkV1hVywW9z4 diff --git a/resources/siss-default/config/SISSvoc3-ELDAConfig-template.ttl b/resources/default/config/SISSvoc3-ELDAConfig-template.ttl similarity index 100% rename from resources/siss-default/config/SISSvoc3-ELDAConfig-template.ttl rename to resources/default/config/SISSvoc3-ELDAConfig-template.ttl diff --git a/resources/siss-default/css/jquery-ui.css b/resources/default/css/jquery-ui.css similarity index 100% rename from resources/siss-default/css/jquery-ui.css rename to resources/default/css/jquery-ui.css diff --git a/resources/siss-default/css/mystyle.css b/resources/default/css/mystyle.css similarity index 100% rename from resources/siss-default/css/mystyle.css rename to resources/default/css/mystyle.css diff --git a/resources/siss-default/css/sissstyle.css b/resources/default/css/sissstyle.css similarity index 100% rename from resources/siss-default/css/sissstyle.css rename to resources/default/css/sissstyle.css diff --git a/resources/eea-europa/images/molecule.png b/resources/default/images/molecule.png similarity index 100% rename from resources/eea-europa/images/molecule.png rename to resources/default/images/molecule.png diff --git a/resources/eea-europa/images/siss-favicon.png b/resources/default/images/siss-favicon.png similarity index 100% rename from resources/eea-europa/images/siss-favicon.png rename to resources/default/images/siss-favicon.png diff --git a/resources/eea-europa/images/siss-icon-64.png b/resources/default/images/siss-icon-64.png similarity index 100% rename from resources/eea-europa/images/siss-icon-64.png rename to resources/default/images/siss-icon-64.png diff --git a/resources/eea-europa/images/sissvoc-banner.png b/resources/default/images/sissvoc-banner.png similarity index 100% rename from resources/eea-europa/images/sissvoc-banner.png rename to resources/default/images/sissvoc-banner.png diff --git a/resources/siss-default/js/jquery-1.10.2.min.js b/resources/default/js/jquery-1.10.2.min.js similarity index 100% rename from resources/siss-default/js/jquery-1.10.2.min.js rename to resources/default/js/jquery-1.10.2.min.js diff --git a/resources/siss-default/js/jquery-ui.min.js b/resources/default/js/jquery-ui.min.js similarity index 100% rename from resources/siss-default/js/jquery-ui.min.js rename to resources/default/js/jquery-ui.min.js diff --git a/resources/siss-default/js/jquery.min.js b/resources/default/js/jquery.min.js similarity index 100% rename from resources/siss-default/js/jquery.min.js rename to resources/default/js/jquery.min.js diff --git a/resources/siss-default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl similarity index 100% rename from resources/siss-default/transform/ashtml-sissvoc.xsl rename to resources/default/transform/ashtml-sissvoc.xsl diff --git a/resources/eea-europa/config/eea-europa-ELDAConfig.ttl b/resources/eea-europa/config/eea-europa-ELDAConfig.ttl deleted file mode 100644 index a6dc2cb..0000000 --- a/resources/eea-europa/config/eea-europa-ELDAConfig.ttl +++ /dev/null @@ -1,615 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml31: . -@prefix gml32: . -@prefix gtrs: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . -@prefix trs: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:eeaeuropa a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions -# remove the ones you don't want - ; elda:metadataOptions "bindings,versions,execution,formats" -# bindings - causes the inclusion of shortname to URI term bindings. -# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. -# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. -# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). - -############################################################## -## -## TODO: deployer to make changes here -## change "ashtml.xsl" to the path for the result stylesheet for this API - - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/eea-europa/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "EEA Europa-SISSVoc Test"] - , [api:name "serviceAuthor"; api:value "Prahaladhan Venkatesan"] - , [api:name "serviceAuthorEmail"; api:value "Prahaladhan.Venkatesan@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Overview"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "EEA Europa-SISSVoc Test"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/eeaeuropa" - ; api:exampleRequestPath "/eeaeuropa" - # NO CLUE how to work this one out. Simon? - ; api:itemTemplate "http://www.what.goes.here.com" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/eeaeuropa/resource?uri={URI}" - ; api:exampleRequestPath "/eeaeuropa/resource?uri=http://www.eea.europa.eu/themes/air" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/eeaeuropa/conceptscheme" - ; api:exampleRequestPath "/eeaeuropa/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/eeaeuropa/collection" - ; api:exampleRequestPath "/eeaeuropa/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/eeaeuropa/concept" - ; api:exampleRequestPath "/eeaeuropa/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept?anylabel={text}" - ; api:exampleRequestPath "/eeaeuropa/concept?anylabel=Agents%20of%20Coastal%20Change" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept?labelcontains={text}" - ; api:exampleRequestPath "/eeaeuropa/concept?labelcontains=Change" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/eeaeuropa/concept/broader?uri=http://vocab.eeaeuropa.ac.uk/collection/A01/current/Natural_Processes/" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/eeaeuropa/concept/narrower?uri=http://vocab.eeaeuropa.ac.uk/collection/A01/current/Human_Activity/" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/eeaeuropa/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/eeaeuropa/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/eeaeuropa/concept/broader?anylabel=Ikke%20tilgjengelig" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/eeaeuropa/concept/narrower?anylabel=Processus%20naturels" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/eeaeuropa/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/eeaeuropa/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/eeaeuropa/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/eea-europa/css/mystyle.css b/resources/eea-europa/css/mystyle.css deleted file mode 100644 index ec9f420..0000000 --- a/resources/eea-europa/css/mystyle.css +++ /dev/null @@ -1,11 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* replace the icon near the title. */ -header h1 { - background: url("http://www.eea.europa.eu/++resource++eea.translations.images/printlogo-en.gif") no-repeat scroll 0 0 transparent -} - -header a { - margin: 150px; - font-size: 70%; -} \ No newline at end of file diff --git a/resources/erml/config/commodity-vocab-ELDAConfig.ttl b/resources/erml/config/commodity-vocab-ELDAConfig.ttl deleted file mode 100644 index 55d2abb..0000000 --- a/resources/erml/config/commodity-vocab-ELDAConfig.ttl +++ /dev/null @@ -1,591 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml31: . -@prefix gml32: . -@prefix gtrs: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . -@prefix trs: . - - -svoc:commodity-vocab a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - - -# generic SISSvoc stuff - ; api:maxPageSize "1000" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions -# remove the ones you don't want - ; elda:metadataOptions "bindings,versions,execution,formats" -# bindings - causes the inclusion of shortname to URI term bindings. -# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. -# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. -# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). - -############################################################## -## -## TODO: deployer to make changes here -## change "ashtml.xsl" to the path for the result stylesheet for this API - - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ] - - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint , - svoc:commodityListEndpoint , - svoc:commodityLabelEndpoint , - svoc:commodityLabelContainsEndpoint , - svoc:commodityUrnContainsString - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Earth Resource Markup Language Commodity Vocabulary"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Overview"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "Earth Resource Markup Language Commodity Vocabulary"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - -svoc:basicCommodityViewer a api:Viewer - ; api:name "commodity" - ; api:property skos:prefLabel, owl:sameAs - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/commodity-vocab" - ; api:exampleRequestPath "/commodity-vocab" - ; api:itemTemplate "http://resource.geosciml.org/classifierscheme/cgi/201202/faultmovementtype" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" - ; api:uriTemplate "/commodity-vocab/resource?uri={URI}" - ; api:exampleRequestPath "/commodity-vocab/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" - ; api:uriTemplate "/commodity-vocab/conceptscheme" - ; api:exampleRequestPath "/commodity-vocab/conceptscheme" - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" - - ; api:uriTemplate "/commodity-vocab/collection" - ; api:exampleRequestPath "/commodity-vocab/collection" - - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" - - ; api:uriTemplate "/commodity-vocab/concept" - ; api:exampleRequestPath "/commodity-vocab/concept" - - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept?anylabel={text}" - ; api:exampleRequestPath "/commodity-vocab/concept?anylabel=Cambrian" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept?labelcontains={text}" - ; api:exampleRequestPath "/commodity-vocab/concept?labelcontains=cambrian" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/commodity-vocab/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/commodity-vocab/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/commodity-vocab/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/commodity-vocab/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/commodity-vocab/concept/broader?anylabel=Cambrian" - - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/commodity-vocab/concept/narrower?anylabel=Cambrian" - - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/commodity-vocab/concept/broaderTransitive?anylabel=Cambrian" - - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/commodity-vocab/concept/narrowerTransitive?anylabel=Cambrian" - - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 14. List of commodities - commodity-view -svoc:commodityListEndpoint a api:ListEndpoint - ; rdfs:comment "List all commodities" - - ; api:uriTemplate "/commodity-vocab/commodity" - ; api:exampleRequestPath "/commodity-vocab/commodity" - - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicCommodityViewer - ; api:viewer api:basicViewer,svoc:basicCommodityViewer - . - -## 15. List of concepts where a label matches the text -svoc:commodityLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List commodities where a skos label property has exact match to text" -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/commodity?anylabel={text}" - ; api:exampleRequestPath "/commodity-vocab/commodity?anylabel=gold" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicCommodityViewer - ; api:viewer api:basicViewer,svoc:basicCommodityViewer - . - -## 16. List of concepts where a label contains the text, any language, case-insensitive -svoc:commodityLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List commodities where a skos label property contains this text, case-insensitive" -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/commodity-vocab/commodity?labelcontains={text}" - ; api:exampleRequestPath "/commodity-vocab/commodity?labelcontains=gold" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicCommodityViewer - ; api:viewer api:basicViewer,svoc:basicCommodityViewer - . - -## 17. List of commodities where the owl:sameAs relation contains a particular string -svoc:commodityUrnContainsString a api:ListEndpoint - ; rdfs:comment "List of commodities where the owl:sameAs relation contains a particular string" - ; api:uriTemplate "/commodity-vocab/commodity?urncontains={text}" - ; api:exampleRequestPath "/commodity-vocab/commodity?urncontains=urn:cgi:classifier:GA:commodity:.*" - - ; api:selector [ - api:where - """ { ?item owl:sameAs ?l } - FILTER regex( str(?l) , ?text , '' ) """ - ] - ; api:defaultViewer svoc:basicCommodityViewer - ; api:viewer api:basicViewer,svoc:basicCommodityViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -## OWL -owl:sameAs - api:label "sameAs" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . diff --git a/resources/ics/config/InternationalStratigraphicChart2004-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2004-ELDAConfig.ttl deleted file mode 100644 index 1b3e657..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2004-ELDAConfig.ttl +++ /dev/null @@ -1,590 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2004 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2004)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2004 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2004" - ; api:exampleRequestPath "/isc2004" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2004" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2004/resource?uri={URI}" - ; api:exampleRequestPath "/isc2004/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2004/conceptscheme" - ; api:exampleRequestPath "/isc2004/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2004/collection" - ; api:exampleRequestPath "/isc2004/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2004/concept" - ; api:exampleRequestPath "/isc2004/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2004/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2004/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2004/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2004/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2004/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2004/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2004/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2004/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2004/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2004/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2004/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2005-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2005-ELDAConfig.ttl deleted file mode 100644 index 3991171..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2005-ELDAConfig.ttl +++ /dev/null @@ -1,590 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2005 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2005)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2005 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2005" - ; api:exampleRequestPath "/isc2005" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2005" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2005/resource?uri={URI}" - ; api:exampleRequestPath "/isc2005/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2005/conceptscheme" - ; api:exampleRequestPath "/isc2005/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2005/collection" - ; api:exampleRequestPath "/isc2005/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2005/concept" - ; api:exampleRequestPath "/isc2005/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2005/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2005/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2005/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2005/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2005/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2005/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2005/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2005/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2005/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2005/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2005/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2006-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2006-ELDAConfig.ttl deleted file mode 100644 index 5114479..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2006-ELDAConfig.ttl +++ /dev/null @@ -1,591 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2006 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2006)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2006 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2006" - ; api:exampleRequestPath "/isc2006" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2006" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2006/resource?uri={URI}" - ; api:exampleRequestPath "/isc2006/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2006/conceptscheme" - ; api:exampleRequestPath "/isc2006/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2006/collection" - ; api:exampleRequestPath "/isc2006/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2006/concept" - ; api:exampleRequestPath "/isc2006/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2006/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2006/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2006/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2006/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2006/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2006/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2006/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2006/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2006/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2006/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2006/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2008-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2008-ELDAConfig.ttl deleted file mode 100644 index 7d25e18..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2008-ELDAConfig.ttl +++ /dev/null @@ -1,590 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2008 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2008)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2008 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2008" - ; api:exampleRequestPath "/isc2008" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2008" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2008/resource?uri={URI}" - ; api:exampleRequestPath "/isc2008/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2008/conceptscheme" - ; api:exampleRequestPath "/isc2008/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2008/collection" - ; api:exampleRequestPath "/isc2008/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2008/concept" - ; api:exampleRequestPath "/isc2008/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2008/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2008/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2008/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2008/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2008/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2008/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2008/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2008/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2008/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2008/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2008/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2009-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2009-ELDAConfig.ttl deleted file mode 100644 index 4043a4f..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2009-ELDAConfig.ttl +++ /dev/null @@ -1,590 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2009 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2009)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2009 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2009" - ; api:exampleRequestPath "/isc2009" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2009" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2009/resource?uri={URI}" - ; api:exampleRequestPath "/isc2009/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2009/conceptscheme" - ; api:exampleRequestPath "/isc2009/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2009/collection" - ; api:exampleRequestPath "/isc2009/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2009/concept" - ; api:exampleRequestPath "/isc2009/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2009/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2009/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2009/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2009/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2009/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2009/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2009/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2009/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2009/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2009/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2009/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2010-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2010-ELDAConfig.ttl deleted file mode 100644 index 5432290..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2010-ELDAConfig.ttl +++ /dev/null @@ -1,590 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2010 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2010)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2010 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2010" - ; api:exampleRequestPath "/isc2010" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2010" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2010/resource?uri={URI}" - ; api:exampleRequestPath "/isc2010/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2010/conceptscheme" - ; api:exampleRequestPath "/isc2010/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2010/collection" - ; api:exampleRequestPath "/isc2010/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2010/concept" - ; api:exampleRequestPath "/isc2010/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2010/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2010/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2010/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2010/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2010/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2010/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2010/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2010/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2010/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2010/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2010/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2012-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2012-ELDAConfig.ttl deleted file mode 100644 index de2d968..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2012-ELDAConfig.ttl +++ /dev/null @@ -1,614 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2012 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2012)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2012 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2012" - ; api:exampleRequestPath "/isc2012" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2012" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2012/resource?uri={URI}" - ; api:exampleRequestPath "/isc2012/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2012/conceptscheme" - ; api:exampleRequestPath "/isc2012/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2012/collection" - ; api:exampleRequestPath "/isc2012/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2012/concept" - ; api:exampleRequestPath "/isc2012/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2012/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2012/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2012/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2012/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2012/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2012/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2012/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2012/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2012/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2012/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2012/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2013-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2013-ELDAConfig.ttl deleted file mode 100644 index fefb200..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2013-ELDAConfig.ttl +++ /dev/null @@ -1,674 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2013 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Land and Water -# PO Box 56 -# Highett -# Vic 3190 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dct: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix prov: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix vann: . -@prefix voaf: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix sccgi: . -@prefix rank: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2013 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2013)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2013 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicViewer a api:Viewer - ; api:name "skosbasic" - ; api:property - rdf:type, - skos:prefLabel - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property - skos:prefLabel, - (skos:topConceptOf skos:prefLabel) - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property - skos:prefLabel, - (skos:memberList skos:prefLabel), - (skos:member skos:prefLabel) - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property - skos:prefLabel - . - -svoc:skosViewer a api:Viewer - ; api:name "skos" - ; api:property - rdf:type, - skos:prefLabel, - skos:altLabel, - skos:definition, - dc:description, - rdfs:comment, - skos:note, - rdfs:seeAlso, - (skos:hasTopConcept skos:prefLabel), - (skos:topConceptOf skos:prefLabel), - (skos:member skos:prefLabel), - (skos:memberList skos:prefLabel), - (skos:related skos:prefLabel), - (skos:broaderTransitive skos:prefLabel), - (skos:broader skos:prefLabel), - (skos:narrower skos:prefLabel), - (skos:narrowerTransitive skos:prefLabel) - . - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2013" - ; api:exampleRequestPath "/isc2013" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2013" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2013/resource?uri={URI}" - ; api:exampleRequestPath "/isc2013/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2013/conceptscheme" - ; api:exampleRequestPath "/isc2013/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2013/collection" - ; api:exampleRequestPath "/isc2013/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2013/concept" - ; api:exampleRequestPath "/isc2013/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2013/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2013/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2013/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2013/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2013/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2013/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2013/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2013/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2013/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2013/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2013/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:memberList - api:label "memberList" ; - api:multiValued true ; - rdfs:domain skos:OrderedCollection ; - rdfs:range rdf:List . - -skos:note - api:label "note" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:definition - api:label "skosDefinition" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - - diff --git a/resources/ics/config/InternationalStratigraphicChart2014-ELDAConfig.ttl b/resources/ics/config/InternationalStratigraphicChart2014-ELDAConfig.ttl deleted file mode 100644 index 92e3536..0000000 --- a/resources/ics/config/InternationalStratigraphicChart2014-ELDAConfig.ttl +++ /dev/null @@ -1,682 +0,0 @@ -############################################################## -# -# This is the LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2014 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Land and Water -# PO Box 56 -# Highett -# Vic 3190 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dct: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix prov: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix vann: . -@prefix voaf: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml: . -@prefix thors: . -@prefix gts: . -@prefix isc: . -@prefix sccgi: . -@prefix rank: . -@prefix sam: . -@prefix tm: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isc2014 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ics/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Geologic timescale (2014)"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.stratigraphy.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "International Stratigraphic Chart (2014 edition)"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicViewer a api:Viewer - ; api:name "skosbasic" - ; api:property - rdf:type, - skos:prefLabel - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property - skos:prefLabel, - (skos:topConceptOf skos:prefLabel) - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property - skos:prefLabel, - (skos:memberList skos:prefLabel), - (skos:member skos:prefLabel) - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property - skos:prefLabel - . - -svoc:skosViewer a api:Viewer - ; api:name "skos" - ; api:property - rdf:type, - skos:prefLabel, - skos:altLabel, - skos:definition, - dc:description, - rdfs:comment, - skos:note, - rdfs:seeAlso, - (skos:hasTopConcept skos:prefLabel), - (skos:topConceptOf skos:prefLabel), - (skos:member skos:prefLabel), - (skos:memberList skos:prefLabel), - (skos:related skos:prefLabel), - (skos:broaderTransitive skos:prefLabel), - (skos:broader skos:prefLabel), - (skos:narrower skos:prefLabel), - (skos:narrowerTransitive skos:prefLabel) - . - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isc2014" - ; api:exampleRequestPath "/isc2014" - ; api:itemTemplate "http://resource.geosciml.org/vocabulary/timescale/isc2014" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/isc2014/resource?uri={URI}" - ; api:exampleRequestPath "/isc2014/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2014/conceptscheme" - ; api:exampleRequestPath "/isc2014/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2014/collection" - ; api:exampleRequestPath "/isc2014/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/isc2014/concept" - ; api:exampleRequestPath "/isc2014/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept?anylabel={text}" - ; api:exampleRequestPath "/isc2014/concept?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept?labelcontains={text}" - ; api:exampleRequestPath "/isc2014/concept?labelcontains=cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - UNION - { ?item rdfs:comment ?l } - UNION - { ?item skos:definition ?l } - UNION - { ?item dc:description ?l } - UNION - { ?item dct:description ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isc2014/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isc2014/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2014/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isc2014/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isc2014/concept/broader?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isc2014/concept/narrower?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2014/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/isc2014/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isc2014/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:memberList - api:label "memberList" ; - api:multiValued true ; - rdfs:domain skos:OrderedCollection ; - rdfs:range rdf:List . - -skos:note - api:label "note" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:definition - api:label "skosDefinition" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - - diff --git a/resources/ics/css/mystyle.css b/resources/ics/css/mystyle.css deleted file mode 100644 index 96f2f90..0000000 --- a/resources/ics/css/mystyle.css +++ /dev/null @@ -1,8 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* we are replacing the icon near the title. */ -header h1 { - background: url("../images/ics-logo-64.gif") no-repeat scroll 0 0 transparent; - font-size: 42px; - font-family: Calibri, Helvetica Neue, Helvetica, sans-serif; -} \ No newline at end of file diff --git a/resources/ics/images/ics-logo-64.gif b/resources/ics/images/ics-logo-64.gif deleted file mode 100644 index d833629387fab903fac3b416accdc696a6197cc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2826 zcmZ|O`#;l*9|!Qy%r%!Lg@}Z1F6HDXI;oLMS4USWN>NRSj%)XA?)OV>Awn32F=no9 zE~8=DXl8SnncX*+ROfU$`K~|U`+hthugClGem~wnzTHo|**n~Z0#M)^09;M1xtfT& znpAT&3FVbk>z#!1POiO{QhPn6&L>r_-Y2cjH?7_`9epzceJi8EFB9!2&#ZuO5oH~bZ}E|DJEF@wV=6ixS9CtE?0Wi6uKQV4_lxT8=hZzgs(axm zx%bFgLTnu&ww@SQPl&50CZOf|5*p?DlbYlPk}(4*n8CE>!Soh6Qbx;AW-BSHb?6n2 z^a?kW+dh=tHk^Z#`|zrroYy{FfFH{5AQyI$3%f=NJ4XvU$BMc~Uw6xsQrt@^>7~5s z{a8wn8-GirmiJL>NVICwWHsqiEs0h;M6dfmM~^TtV@&KvMjLgyoyKgX&a_cyaT9ZR z+H}_^R_EjlesZp3a=v?NzLzoIMQ3-@**y$)H)El9nnReL?_rP5~bjwX9$^DFt|1$c|1k<+6^{K)(gLQs;4Flu& z=BQoWw`sKET&LbsvcGuG+N=YFk+r&fv%K^oreYn)zhtJ+k%&Aj%OQ}@sFN^ zReoCHSMaxO@5J3UZ?JLb%lJ*|pa&TE-c=KQvGHx9gs)4E=cgzZV-DLa(_qzH+N=_AdGf(h0XuGS z_5STpC1V)W!1k(l*E)z_YL=jltz z#^Lx-Z~(z|XL-cux`%qkcyr)P_okpaB`rUbXlueQbhdP?4h7ar3j^x}V5mtB^!RGu zsMA(|aP{8P3j7pJh7lf5{(Nwhj|0rZz^JZ}Ks3TNroKeahrBmoX9dHu0xRBwiZ$x! zW{Nvq{x;m)+nYj4PQqVNvv~#Rm#05u4zwSD+;=->*!#+&J3|drt0d*JjlNeyWp; zxnEijK+R%e4|@k`w&`l7(vv1Q0qHn<=P>qHme%OdUFFcJ1|kS#>G^F=8@*u&C_jDg zsGtE#+|fAyuJjn6nqnqs1ZTNt0E<3u4;{FvEkT5(e6y^WC{352@Fkt3iS#3=O0D>r z3Pjd-@f?@-1!1`Z{8SWxRfn3jSI&*S2gL%b@d-N%k@gVVV>M(**`k-AyQt}eBIME2WIsjccbPA=#RXw_ zn1hM4HYc%nmp)NR$-)@3ucU`0xZA%Rt*>^L@r0n?H(Yffk5E;4 z7trg}*t3t0db4|%$rhqU^)}soMb757g)ftNw<;hQb^Vh?)U63Q2h;$?0fl1fWQEKC zM1lRaSR&vm+fCVlZokucLmX$6XaOnF72)d44?bp+m?{8x2B>m6 zwIAYA*aThxR8PS7dmyqZHhL~s@B5Dksc^asgV-6=o8vQ^8sVvsqf z)_w4SZdl9}wA+{3@qG#2<)HN4HV{xGB_2Fg zI!%_{(Q6EIwGO_Z?)Brg0vhb0ex0DOZ36{Y!VX%81Qp+4ad5cKyF?`glFD^7uC1;u z-rAd(av=-3`2^hBwkII|bcCr+0X}Ze(emVT5fwVqJp<9r^}e!u(OpGh&V-e5pNnb8 zjz$xu{Wgf?bFe$=S`lwS4*=Ek5e2T@-~VcSoma0~J?o;8-UtTwF;R};WD9csTeQU`OjB#+*AtnAzJ>;Sg(+YSMA zbLTi3rc}bZ5(`BmJD#{jSQb&!ZhAk_EhPP3WjULAE~toBQ0j`Z?GauG>fEFr12XVf z5MB%G{M3Ud*`a>Ze8BilZ>f%K2tBWP?cNGb6EI zVrxx9#{GJKCgVlaQOsCKU{DuJf{HrYI2!_szF{N_b9bcAW<<5e8Vjpcx@H|SBkGH1 zKR=A_ndp%{#{WCJN{RkM)FXTHquBT>X2?;OvJ$`7XF)SMrq9e{HSy99W8L@m1N)63 Hz#snu!*$q~ diff --git a/resources/ics/images/ics-logo.gif b/resources/ics/images/ics-logo.gif deleted file mode 100644 index bef8fa557efccefd6cf04285a2eb396c3cd88608..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5541 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 nz6u=P;UA9SA->@we𝔔wY}+D!$?(j^ZWW4;LQe0RaFzO_6^R diff --git a/resources/isotc211/config/ISOTC211-ELDAConfig.ttl b/resources/isotc211/config/ISOTC211-ELDAConfig.ttl deleted file mode 100644 index 5e556bb..0000000 --- a/resources/isotc211/config/ISOTC211-ELDAConfig.ttl +++ /dev/null @@ -1,832 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2013 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Land and Water -# PO Box 56 -# Highett -# Vic 3190 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## -# -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dct: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix prov: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix vann: . -@prefix voaf: . -@prefix xsd: . - -############################################################## -# -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix geo: . -@prefix assoc: . -@prefix basic: . -@prefix cell: . -@prefix char: . -@prefix ci: . -@prefix class: . -@prefix condition: . -@prefix cov: . -@prefix data: . -@prefix datetype: . -@prefix dim: . -@prefix dq: . -@prefix ds: . -@prefix eval: . -@prefix ex: . -@prefix format: . -@prefix geom: . -@prefix gm: . -@prefix h2o: . -@prefix init: . -@prefix key: . -@prefix li: . -@prefix maint: . -@prefix md: . -@prefix medium: . -@prefix online: . -@prefix present: . -@prefix progress: . -@prefix restrict: . -@prefix role: . -@prefix scope: . -@prefix spatial: . -@prefix tm: . -@prefix topic: . -@prefix topol: . -@prefix banddefinition: . -@prefix context: . -@prefix geometrytype: . -@prefix h2o: . -@prefix le: . -@prefix mi: . -@prefix objectivetype: . -@prefix operationtype: . -@prefix polarisationorientation: . -@prefix priority: . -@prefix qe: . -@prefix sensortype: . -@prefix sequence: . -@prefix transferfunction: . -@prefix trigger: . -@prefix couple: . -@prefix dcp: . -@prefix sv: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:isotc211 a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions -# remove the ones you don't want - ; elda:metadataOptions "bindings,versions,execution,formats" -# bindings - causes the inclusion of shortname to URI term bindings. -# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. -# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. -# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). - -############################################################## -## -## TODO: deployer to make changes here -## change "ashtml.xsl" to the path for the result stylesheet for this API - - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:relatedURIEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:relatedLabelEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/isotc211/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "ISO/TC 211 SISSvoc"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "simon.cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Overview"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "ISO/TC 211 SISSvoc"@en - -## document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -## set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicViewer a api:Viewer - ; api:name "skosbasic" - ; api:property - rdf:type, - skos:prefLabel - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property - skos:prefLabel, - (skos:topConceptOf skos:prefLabel) - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property - skos:prefLabel, - (skos:member skos:prefLabel) - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property - skos:prefLabel - . - -svoc:ontologyViewer a api:Viewer - ; api:name "ontology" - ; api:property - rdf:type, - dc:title, - rdfs:label, - dc:description, - dc:publisher, - dct:license, - rdfs:comment, - (dct:hasPart rdfs:Label) - . - -svoc:skosViewer a api:Viewer - ; api:name "skos" - ; api:property - rdf:type, - skos:prefLabel, - skos:altLabel, - skos:definition, - dc:description, - rdfs:comment, - skos:note, - rdfs:seeAlso, - (skos:hasTopConcept skos:prefLabel), - (skos:topConceptOf skos:prefLabel), - (skos:member skos:prefLabel), - (skos:related skos:prefLabel), - (skos:broaderTransitive skos:prefLabel), - (skos:broader skos:prefLabel), - (skos:narrower skos:prefLabel), - (skos:narrowerTransitive skos:prefLabel) - . - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/isotc211" - ; api:exampleRequestPath "/isotc211" - # NO CLUE how to work this one out. Simon? - ; api:itemTemplate "http://auscope-services-test.arrc.csiro.au/elda-demo/isotc211/collection" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - ; api:uriTemplate "/isotc211/resource?uri={URI}" - ; api:exampleRequestPath "/isotc211/resource?uri=http://def.seegrid.csiro.au/isotc211/iso19156/2011/sampling#SpatialSamplingFeature" -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer svoc:skosViewer - ; api:viewer - svoc:basicViewer, - api:basicViewer, - api:describeViewer, - api:labelledDescribeViewer, - svoc:skosViewer - . - -## 00. List of ontologies -svoc:ontologyEndpoint a api:ListEndpoint - ; rdfs:comment "List all ontologies" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - ; api:uriTemplate "/isotc211/ontology" - ; api:exampleRequestPath "/isotc211/ontology" -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a owl:Ontology . " ] - ; api:defaultViewer svoc:ontologyViewer - ; api:viewer api:basicViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - ; api:uriTemplate "/isotc211/conceptscheme" - ; api:exampleRequestPath "/isotc211/conceptscheme" -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - ; api:uriTemplate "/isotc211/collection" - ; api:exampleRequestPath "/isotc211/collection" -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - ; api:uriTemplate "/isotc211/concept" - ; api:exampleRequestPath "/isotc211/concept" -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept?anylabel={text}" - ; api:exampleRequestPath "/isotc211/concept?anylabel=snow" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept?labelcontains={text}" - ; api:exampleRequestPath "/isotc211/concept?labelcontains=smoke" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 60. List of concepts related to the one identified by this URI -svoc:relatedURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts related to the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/related?uri={baseConcept}" - ; api:exampleRequestPath "/isotc211/concept/related?uri=http://vocab.nerc.ac.uk/collection/P07/current/CFV13N44/" -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:related ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/isotc211/concept/broader?uri=http://vocab.nerc.ac.uk/collection/A01/current/Natural_Processes/" -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/isotc211/concept/narrower?uri=http://vocab.nerc.ac.uk/collection/A01/current/Human_Activity/" -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isotc211/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/isotc211/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 100. List of concepts related to the one where a label matches the text -svoc:relatedLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts related to any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/related?anylabel={text}" - ; api:exampleRequestPath "/isotc211/concept/related?anylabel=aerosol" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:related ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/isotc211/concept/broader?anylabel=Ikke%20tilgjengelig" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/isotc211/concept/narrower?anylabel=Processus%20naturels" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/isotc211/concept/broaderTransitive?anylabel=Cambrian" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - ; api:uriTemplate "/isotc211/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/isotc211/concept/narrowerTransitive?anylabel=Cambrian" -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -## skos:notation rdfs:range gts:EraCode . -## gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -#RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -#RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:seeAlso - api:label "seeAlso" ; - a rdf:Property . - -#SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a owl:AnnotationProperty . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a owl:AnnotationProperty . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:related - api:label "related" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:note - api:label "note" ; - a owl:AnnotationProperty . - -skos:definition - api:label "definition" ; - a owl:AnnotationProperty . - - diff --git a/resources/isotc211/css/mystyle.css b/resources/isotc211/css/mystyle.css deleted file mode 100644 index 058f00c..0000000 --- a/resources/isotc211/css/mystyle.css +++ /dev/null @@ -1,6 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* replace the icon near the title. */ -header h1 { - background: url("../images/molecule.jpg") no-repeat scroll 0 0 transparent; -} \ No newline at end of file diff --git a/resources/isotc211/css/sissstyle.css b/resources/isotc211/css/sissstyle.css deleted file mode 100644 index 56c5b93..0000000 --- a/resources/isotc211/css/sissstyle.css +++ /dev/null @@ -1,33 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* use the SISSvoc banner */ - -nav.site { - background: url("../images/sissvoc-banner.png") no-repeat 0% 0%; - padding-top: 54px; -} - -/* we are replacing the icon near the title. */ -header h1 { - background: url("../images/siss-icon-64.png") no-repeat scroll 0 0 transparent; -} - - -/* Hack to fix the nesting of tables.... - its even worse now.... */ -table { - table-layout: fixed; -} - -#page { - width: 1040px; -} - -#result { - width:620px; -} - -.panel section { - width: 575px; -} - -/* END Hack to fix the nesting of tables.... - its even worse now.... */ \ No newline at end of file diff --git a/resources/isotc211/images/molecule.png b/resources/isotc211/images/molecule.png deleted file mode 100644 index cbf5f29a69057a6c0409b0f74ba126eeb89b4b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5533 zcmV;O6=Ld%P)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3h)2`3h)6!tTdPa01{P6L_t(& z1;ttma9q`S{_fqo@0GNAYc0u=Z8?^0Y=Z&2WDLfoPC76!fdR@Sq*Ll<(j;`+VN%)- zQyxv))FhphCPS!8oDd2vX3~&C9UcK<1T>~`{SdZfS(aqIEopb9eed1fyZ!!icO}`e z4b2SV%-p??bI&>d_rL#hS1YpNV{DdHgsy9ff{BQUqx}h-Jd;8^W5L14!GHs6SNL&x zM*u;;q29AdvaZ=<~GMhl64eZs!XY1W!1X$Jnfe zTQ+#{?Juvu%8+*+$j1VrtPXD-jbi)m0W?w{R@AuR@)$4-4M`F_70oChgsQ-zsG+vP ziLqo6&SDO){Y|G0gxpwi5M=;^6KUM=P!G~+3(JBogc^Oy21J+6Or$WE%)_8Gl*y9N zVzB_H(}m@Yeq?e5RKUc(M=n#UMTJ|sCLW}0kl*{s2nHhs)cKt7^ALiC<#UM~A~8w< zIav7&P|Pd4(KH=qE{A>sT;AZpOisfyKO0lTFD(c$1h(#h1isl7#agP6Np%qb>2x0H zOdhjyDQH#(#e%60E0;#WOsR1Osf{I*n4U`FFYj!@b8m+cj!|N&cZq(K!{J(8M~4H}d}k%z+_K(*V%$%#2kPS;|Hc5|qAZs|Y> zIU3a^TL6yq5d;#*XDt-yeTs!Vjk7?#7Z4;}UCRjDGYNnq70g{3gxl-K`1mNk`D_e> zvl@EOB$p0^Vk$+E&J-{aNsv-e69Hgzy9fbM;ygj{Mjd>E;6>|c6K0;E6EN~|I2~U0 zON>b`AqZhHTfwrB%4Xp&np7DJ7D3Pl*-}s-gm_yb3W)US4ob>GCOU{hW)7Oe$u0ur zNHO*$wFv>?cIv426_L!Op}C!a08yMT6HbZ9i|VKJjKtcFfOV$=t)7qpL7%>qAcQK3 z!ho3!llU}MNtiAiWh<$Y9T$Xnk%)}pA)#Gk?jZ;7WsFWq!ql;*)xR_#O7xKcVBbrJ z@RQei(B2kAmWFNHL5Wy-K`zygT#$GftUwef1%s+(P_=T%aICk|jVn59FAYLXJ^v$< z%Y3CYz`p&!-*SW&f`0mX5AONv*U?mOFfPQP8!pagbJw0oDT$(e;a;R5&v{sR+P49( z+l5n;DcpB^8#-D77Y1Q-PP{^iU^U6P^a^q8wdX&#YyPglG}}>1v!8kC1nz$D6*SZ` zjix6;Aq$tzs7xI=?Ti~?4lrTV4L{e;dKb|h&AD%jlNB;RBR@O2;=M$Kk ziy%H1XOff!R#swVa~)E7$&)yil9>lmmH?-gJ~uAXvBrWs?*RAy8j%#bMb4!g%z+~w8P3C*|SQvlz z!(-Tgupg`aGdR`T2aHT1v^j`tHnwBa`VRCAhVk!@zl-KAjWC$tC3C_6Q8AISIA2*- zhmT&ZKTO~wc|5u29_+f~8umyp-y_!q#7a$Dcj)BOsnd%jzIftcygFqIi;5osBbh>Wkr%w_bt2 z{fp1z`mJk7u`L~?eF_8@mz$?vp1>bGIfiDxhNemv98Pg-oST_tK>`pXq$X-q$e}Kv zV>m8(P7XJ&^CD+yh{SW~W0u)H9OJkYTD2LB44%UMpT7+E-1RARcC@O+%RjouM+d`*Ergee7a(#-H5W@{@R?nY;?2YTSXQAc`x!en zfUaNe#kQ@Nt2t!6yt}yZUc-1ei~D{sjP@WoZy2ZyFp{!aQ@puerMqwj2htp?9@jDxQc;>M$W6i1-l`Dx( zp3gm5d~qxHZ@FSMu(=JnA{jYp;>yd{Ay^quuL{F2)Qo7Nfal){qovY`3^^{kKQx*l zXY!<#+|M(-GbL6&j#tVwbk+i{3f91sTs}_)%fqFyE{I04k=rYKzVU}N+!~c;J47cx zRI>?e3DscxrZqTvgm#tFaruT$HF~lAoIjm@ayWr^Mq&tP8C4FZk_pVs#gK@{kxnI; z-(-~piUpB`R9w85YbHKbRRPw;l8NTv6g{2F;DImQgcYp~N&+7q0Ldyb+2=K|xw9R! z#cIIk!^*a1MYF`Ci#20|it$?Nu(wS_|Ap(SfTw%4ff1nC4)4XVy@rLE@hA?wH>g$+wNQLG zcfCvAmC2mu-Yhhxdcj(B_f4oV7jv)DskhYoaoaT^j8DvPdoZbV-O5o_@<|>k9#Vk` zxUy#wV5NHn*kl~ZQX^An@Mf^<(RZ-FYfuF-O(VMA$=(!}y5fVdNC_Zqa3X_edzg3mov5v>!~Ox_VbIZ75cn`0*15P|t4x62$UU7qXWI&x71od!q!Q5u{&F;mqU| zlQt8#ZeNGiIyX*^&tUe@B<9i?tXO8?h5w17t2>Tr#-OHJ7ko_XWe-WCE#+vvvV9|m z;V2?Jo5Fwm;w*OmYz`qW(|!UgFn6mCRG^0$#HuDgmWQ}0K!yn87snyHo+v#Ofj<7! z%eePXpQL&f(AXYSiI}K`n6XYzlxGGz!F(#$7sm3fZTSA9U%`%Rui`dj9-|XsynlQU zFa7*5p4`_%iPH0}Zf7YO!q(0v+_tqESFa5qRHLz&;u1PDVmgL*y0iGst6BUv3!b%g ztY6#?X3t_zB#1y<^tjzKS=_$XkNbab8LsZ6`;{&p;tUolyG7^@laMF&K94;wbO8g= z((BBV)G!a$UAG)x`0S@~*KIpl^fNs;ugT;+eWQ5s<%4+m=_ANk6$mx8U?RtNy*{kv zu6BEMksnpKk<8ugr+Zzfaaj079TQO6f=T0!%!!B6C^3tSbWkD&PEMJaWNowWOU<}r zN0U-Z(V}?}LWixZ3!>_yuAd$p#>`BZ87s5gfFH|34OqKoCF*Lb6zS#qz#cCtHzmeu zOj34fJ*S58^>4q3XZKHH&H5IYMkUe=j0w%l-B=g7?!yXxi)*a&BES+r64l6TmQ`$u zY9{JOwPGOlaATk@D1lYSfj(A__btcG+Zxn*=YUYF@<$PJk+fId5yI_AN`o!ECwi(5 zf>8a`dD-!nFF$j!B>r*F%XsXGlUTkngtYE~%jJRF&-}<+kGk4QO4O~0<6qVL|1FlU68ohPXqGhkO|l|L$@+@!(hQ#Cyjc!@-dh+E%WB!^4_{ zL}s!gHO3*n7l|gJTMVY0Q|={oD`+|HnR%Jo5E%pT#FPVnbmJ;K`29Zgk1g62U*P@% zab;o`2p8`p+v^0wvjRrYLZF+(`~5!dig3eM6j>Ti<(x;DQ&&@ouigI{eCobepgXAs zBsFJdF+3hqsS8<8&{QK*E<5H#VNWCRflu9@YHm>E(Kk7Z|9Wc#|2vc9N0yi^30XkY zM7Sz0&pz{75iBZIu>JaCDF_e+#+Hncki<{pLi`HqG^hfUhE#QehoH*9uHL*FJAZ2o zU86a)y7{4nbn0AFFQxv(LE2?!oE-{;ob8V+GN0Q`iHFDV^qaF3iVH&%{K%rzM**;j z5|t5KSm3@*qyQ0VNh0QO$UdBS4I7-qh!`uucp{-x$zUeyl!HNn zu7!J|-$J}x%e!(fn_jjHWw0V(iN2<3sw0!hlF$^U6Df5TwX?sNO3-p3$<4CaSPWj) z)|rtB}J+kpw$Su96d~ zIh9`9QVQ+pu-%kNz3T$Y+hN(?=~z*t*T zjrzJ;9P2)T-oAdMC?R@$)Or%=4twC|E{S54kf^AXvoMbYst4*Juf?XQ8`K8r)1;P` z>bam}eYtaAj-BRu2+Z^yAf5X@#L_|Tg1p*0X}B1N~45o z#c}(*07JfEOBX><1&fRs0j~?a!zTXfvzrjAudsIjW!Oj2%BtDi975-s4u0Os@)Iz> zQLqwR-;_X36;|9bk}6W_7ao%C+as=h}K8_^+r!f+B7F{{P;5dQv;Z^o{>Z(>UBn+G8C zEtxvWV$v3ak^59CjYuTI-IlZHJ3WM>N8iV>6aB0ym`>1De_~}Tc3i&=+djDk9ql0* fqEu+{7S8_xv~m6?S>qyq00000NkvXXu0mjfnJjc; diff --git a/resources/isotc211/images/siss-favicon.png b/resources/isotc211/images/siss-favicon.png deleted file mode 100644 index 2cfe403dfd59704ca2427760c1346539459bd200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^4L^m3s900F*9 zL_t(IPh_z{qq|v{^#us z=MO6q{{Hz1SB9eD&$suVk4%0$!{zU9=&||a*7?q zc3kNF(rAdQ81CP@=RNI!b>-CE4Neyujc}n0&F1&++y*LU=_Y@S|c1<10-D{ z;#*@(`eJm^P;ZRx)CoP)rc7n{_3`P;iI#i%!aBPvVml{Ww69TZ-R{x8prWg3QE&Ru z{(yTE9bQkgcr(f3@2_tlC;k5P0?plTCz?K+Xmf3X>#_cToqge(d!x7ZMxL6V2lYcy zUS6)JR-UH@7-<68xnA12p4vb*7(v7}^1>X8@(X~7;pfkvuQye`nC<`e@bphluKf7^ z9Vh|>pB`U&xj6PkpV^Ckv*#0SzP@<`5eEh9@2~Iv{`rL^jeL9mZjLw5!NBN8is{nQ za@?pm&Zp2PoxA(t3y+9TL0KCBSGPa%tKL7v#07*qoM6N<$f;4Ix A5&!@I diff --git a/resources/isotc211/images/siss-icon-64.png b/resources/isotc211/images/siss-icon-64.png deleted file mode 100644 index 81d1da9750a92542b2220c531008a139c55dbe67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 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 Ef~rkBg#Z8m diff --git a/resources/isotc211/images/sissvoc-banner.png b/resources/isotc211/images/sissvoc-banner.png deleted file mode 100644 index 641f97c6a8aa1e71862e303c4a8329178e4a0bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6957 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 - - -/ - - - - - - -Test Title -Test Author -test.author@csiro.au -http://test.homepage/here - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - Linked Data - Object Viewer - - - - - - - - - - - - - - - - - - - - - - - - [if lt IE 9]> - <link rel="stylesheet" href="css/ie.css" type="text/css"></link> - <![endif] - - - - - - - - - - - - - - - - - -
-

-
- - - - - - - -
- - -
-
- - -
- - query col - - 1 - 2 - - -

- - Viewer - Selection - -

- - - - - - - - - - - - - - - - - -

- This is the SPARQL query that was generated to - - - pull together the data that is provided about - - each item. - the selected item. - - - identify the items to be shown in the page. - - - You can modify it here and re-run the query but you may find more options at the - endpoint's page - . -

-
- -

- -

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - v - - - - -
-
    - - -
  • - - first - - - last - - -
  • -
    -
-
-
- - -

- -

-
- - - -
-
- - -

Search Results

- -
- - - -
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - - - - -
-

On This Page

- - Links to the items within this page, and to the previous and/or next pages of results. - -
    - -
  • - -
  • -
    - -
  • - - - -
  • -
    - -
  • - -
  • -
    -
-
-
-
- - -
-

Find Concepts

- - Use this form to find concepts by 1) having the exact same text as input 2) having words containing the text input. - - - - - - - - - -
-
- Exact label
- -
-
-
- Text within label
- -
-
-
-
-
- - - - - - - - - - - - -
  • - - - - - - - - -
  • -
    - - - - - - - - - - - - - - - / - - - - - - - - - - - - - - item - - - - - - - - - - - - - - - -
    -

    Filter

    - - These are the filters currently being used to limit the search results. Click on the remove filter icon to remove the filter. - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    View

    - - - Choose what information you want to view about each item. - There are some pre-defined views, but starred properties are always present no matter what the view. - You can star properties by clicking on the - star this property - icon. The currently starred icons have a - unstar this property - icon; clicking on it will unstar the property. - - - -

    - - - - - - - - - reset - -

    -
    -
      - -
    • - - - -
    • -
      -
    -
      - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - unstar this property - - - - - - - - - - - - - -
  • - - - - - - -
    - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - star this property - - - -
  • -
    -
    - - -
    -

    Items per page

    - - Choose how many items to view on each page. The more items you view, the longer the page will take to load. - -
      -
    • - - - -
    • -
    • - - - -
    • -
    • - - - -
    • -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Sort by

    - - - This list shows the properties that you can sort by. Click on - sort in ascending order - to sort in ascending order and - sort in descending order - to sort in descending order. The properties that you're currently sorting by are shown at the top of the list. Click on - remove this sort - to remove a sort and - sort in descending order - or - sort in ascending order - to reverse the current sort order. - Click on the - remove all sorting - icon to remove all the sorting. - Note that sorting can significantly slow down the loading of the page. - - - -

    - - - - - - - - - reset - -

    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - remove this sort - - - - - - - - - - , - - - - - - - - - - - - - - - sort in ascending order - sort in descending order - - - - - sort in ascending order - - - sort in descending order - - - - - - - - - - - - - - -
  • - - - - - - - -
    - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - -
  • - - sort in ascending order - - - - - - - - - - , - - - - - - - - sort in descending order - - - - - -
  • -
    -
    - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
      - - - - -
    • -
      -
    -
    -
    -
    - - - - - « - - - - - - » - - - - - - - - - - - - - - - - - - - - - default - - - - - - - - - - - - - - - - - -
    -

    -

    -
    -
    - - - -
    -
    - - - - - - - -
    -

    No results

    -
    -
    -
    -
    - - -
    - - - -
    -
    - - - - - - - - - -
  • - - - - - - - - - - - - -
  • -
    - - - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - / - - - - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - help -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - , - - - - - - unstar this property - - - - - - - - - - - - , - - - - - - star this property - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove maximum value filter - - - - - - - - - - - - - - - - less than {$value} - - - less than {$value} - - - - - - - - - - - - - - - - more like this - - - - - - - - - - - - - - remove minimum value filter - - - - - - - - - - - - - - - - more than {$value} - - - more than {$value} - - - - - - - - - - - - - - - - - - more like this - - - - - - - - - - - - - - - - - - - - - - - - - - - - outlink - - - - - - - - - - - - - - - - - original - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - - - -
    - - -
    -
    - - - - - - - last - - - - - - - - - - - -
    -
    - - - - - - - diff --git a/resources/nerc/config/NERC-ELDAConfig.ttl b/resources/nerc/config/NERC-ELDAConfig.ttl deleted file mode 100644 index 9169519..0000000 --- a/resources/nerc/config/NERC-ELDAConfig.ttl +++ /dev/null @@ -1,788 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:nerc a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions -# remove the ones you don't want - ; elda:metadataOptions "bindings,versions,execution,formats" -# bindings - causes the inclusion of shortname to URI term bindings. -# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. -# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. -# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). - -############################################################## -## -## TODO: deployer to make changes here -## change "ashtml.xsl" to the path for the result stylesheet for this API - - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:relatedURIEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:relatedLabelEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/nerc/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "NERC-SISSVoc Test"] - , [api:name "serviceAuthor"; api:value "Terry Rankine"] - , [api:name "serviceAuthorEmail"; api:value "Terry.Rankine@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Overview"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "NERC-SISSVoc Test"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicViewer a api:Viewer - ; api:name "skosbasic" - ; api:property - rdf:type, - skos:prefLabel - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property - skos:prefLabel, - (skos:topConceptOf skos:prefLabel) - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property - skos:prefLabel, - (skos:member skos:prefLabel) - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property - skos:prefLabel - . - -svoc:skosViewer a api:Viewer - ; api:name "skos" - ; api:property - rdf:type, - skos:prefLabel, - skos:altLabel, - skos:definition, - dc:description, - rdfs:comment, - skos:note, - rdfs:seeAlso, - (skos:hasTopConcept skos:prefLabel), - (skos:topConceptOf skos:prefLabel), - (skos:member skos:prefLabel), - (skos:related skos:prefLabel), - (skos:broaderTransitive skos:prefLabel), - (skos:broader skos:prefLabel), - (skos:narrower skos:prefLabel), - (skos:narrowerTransitive skos:prefLabel) - . - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/nerc" - ; api:exampleRequestPath "/nerc" - # NO CLUE how to work this one out. Simon? - ; api:itemTemplate "http://auscope-services-test.arrc.csiro.au/elda-demo/nerc/collection" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/nerc/resource?uri={URI}" - ; api:exampleRequestPath "/nerc/resource?uri=http://vocab.nerc.ac.uk/collection/A01/current/Agents_of_Coastal_Change/" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer svoc:skosViewer - ; api:viewer - svoc:basicViewer, - api:basicViewer, - api:describeViewer, - api:labelledDescribeViewer, - svoc:skosViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/nerc/conceptscheme" - ; api:exampleRequestPath "/nerc/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/nerc/collection" - ; api:exampleRequestPath "/nerc/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/nerc/concept" - ; api:exampleRequestPath "/nerc/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept?anylabel={text}" - ; api:exampleRequestPath "/nerc/concept?anylabel=Agents%20of%20Coastal%20Change" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept?labelcontains={text}" - ; api:exampleRequestPath "/nerc/concept?labelcontains=Change" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 60. List of concepts related to the one identified by this URI -svoc:relatedURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts related to the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/related?uri={baseConcept}" - ; api:exampleRequestPath "/nerc/concept/related?uri=http://vocab.nerc.ac.uk/collection/P07/current/CFV13N44/" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:related ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/nerc/concept/broader?uri=http://vocab.nerc.ac.uk/collection/A01/current/Natural_Processes/" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/nerc/concept/narrower?uri=http://vocab.nerc.ac.uk/collection/A01/current/Human_Activity/" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/nerc/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/nerc/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 100. List of concepts related to the one where a label matches the text -svoc:relatedLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts related to any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/related?anylabel={text}" - ; api:exampleRequestPath "/nerc/concept/related?anylabel=aerosol" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:related ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/nerc/concept/broader?anylabel=Ikke%20tilgjengelig" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/nerc/concept/narrower?anylabel=Processus%20naturels" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/nerc/concept/broaderTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/nerc/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/nerc/concept/narrowerTransitive?anylabel=Cambrian" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer - svoc:skosViewer, - svoc:basicViewer, - api:basicViewer, - svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -## skos:notation rdfs:range gts:EraCode . -## gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:seeAlso - api:label "seeAlso" ; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a owl:AnnotationProperty . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a owl:AnnotationProperty . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:related - api:label "related" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:note - api:label "note" ; - a owl:AnnotationProperty . - -skos:definition - api:label "definition" ; - a owl:AnnotationProperty . - - diff --git a/resources/nerc/css/mystyle.css b/resources/nerc/css/mystyle.css deleted file mode 100644 index 444fd39..0000000 --- a/resources/nerc/css/mystyle.css +++ /dev/null @@ -1,11 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* replace the icon near the title. */ -header h1 { - background: url("http://www.nerc.ac.uk/images/logos/nerc/logo.gif") no-repeat scroll 0 0 transparent -} - -header a { - margin: 150px; - font-size: 70%; -} \ No newline at end of file diff --git a/resources/nerc/images/molecule.png b/resources/nerc/images/molecule.png deleted file mode 100644 index cbf5f29a69057a6c0409b0f74ba126eeb89b4b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5533 zcmV;O6=Ld%P)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3h)2`3h)6!tTdPa01{P6L_t(& z1;ttma9q`S{_fqo@0GNAYc0u=Z8?^0Y=Z&2WDLfoPC76!fdR@Sq*Ll<(j;`+VN%)- zQyxv))FhphCPS!8oDd2vX3~&C9UcK<1T>~`{SdZfS(aqIEopb9eed1fyZ!!icO}`e z4b2SV%-p??bI&>d_rL#hS1YpNV{DdHgsy9ff{BQUqx}h-Jd;8^W5L14!GHs6SNL&x zM*u;;q29AdvaZ=<~GMhl64eZs!XY1W!1X$Jnfe zTQ+#{?Juvu%8+*+$j1VrtPXD-jbi)m0W?w{R@AuR@)$4-4M`F_70oChgsQ-zsG+vP ziLqo6&SDO){Y|G0gxpwi5M=;^6KUM=P!G~+3(JBogc^Oy21J+6Or$WE%)_8Gl*y9N zVzB_H(}m@Yeq?e5RKUc(M=n#UMTJ|sCLW}0kl*{s2nHhs)cKt7^ALiC<#UM~A~8w< zIav7&P|Pd4(KH=qE{A>sT;AZpOisfyKO0lTFD(c$1h(#h1isl7#agP6Np%qb>2x0H zOdhjyDQH#(#e%60E0;#WOsR1Osf{I*n4U`FFYj!@b8m+cj!|N&cZq(K!{J(8M~4H}d}k%z+_K(*V%$%#2kPS;|Hc5|qAZs|Y> zIU3a^TL6yq5d;#*XDt-yeTs!Vjk7?#7Z4;}UCRjDGYNnq70g{3gxl-K`1mNk`D_e> zvl@EOB$p0^Vk$+E&J-{aNsv-e69Hgzy9fbM;ygj{Mjd>E;6>|c6K0;E6EN~|I2~U0 zON>b`AqZhHTfwrB%4Xp&np7DJ7D3Pl*-}s-gm_yb3W)US4ob>GCOU{hW)7Oe$u0ur zNHO*$wFv>?cIv426_L!Op}C!a08yMT6HbZ9i|VKJjKtcFfOV$=t)7qpL7%>qAcQK3 z!ho3!llU}MNtiAiWh<$Y9T$Xnk%)}pA)#Gk?jZ;7WsFWq!ql;*)xR_#O7xKcVBbrJ z@RQei(B2kAmWFNHL5Wy-K`zygT#$GftUwef1%s+(P_=T%aICk|jVn59FAYLXJ^v$< z%Y3CYz`p&!-*SW&f`0mX5AONv*U?mOFfPQP8!pagbJw0oDT$(e;a;R5&v{sR+P49( z+l5n;DcpB^8#-D77Y1Q-PP{^iU^U6P^a^q8wdX&#YyPglG}}>1v!8kC1nz$D6*SZ` zjix6;Aq$tzs7xI=?Ti~?4lrTV4L{e;dKb|h&AD%jlNB;RBR@O2;=M$Kk ziy%H1XOff!R#swVa~)E7$&)yil9>lmmH?-gJ~uAXvBrWs?*RAy8j%#bMb4!g%z+~w8P3C*|SQvlz z!(-Tgupg`aGdR`T2aHT1v^j`tHnwBa`VRCAhVk!@zl-KAjWC$tC3C_6Q8AISIA2*- zhmT&ZKTO~wc|5u29_+f~8umyp-y_!q#7a$Dcj)BOsnd%jzIftcygFqIi;5osBbh>Wkr%w_bt2 z{fp1z`mJk7u`L~?eF_8@mz$?vp1>bGIfiDxhNemv98Pg-oST_tK>`pXq$X-q$e}Kv zV>m8(P7XJ&^CD+yh{SW~W0u)H9OJkYTD2LB44%UMpT7+E-1RARcC@O+%RjouM+d`*Ergee7a(#-H5W@{@R?nY;?2YTSXQAc`x!en zfUaNe#kQ@Nt2t!6yt}yZUc-1ei~D{sjP@WoZy2ZyFp{!aQ@puerMqwj2htp?9@jDxQc;>M$W6i1-l`Dx( zp3gm5d~qxHZ@FSMu(=JnA{jYp;>yd{Ay^quuL{F2)Qo7Nfal){qovY`3^^{kKQx*l zXY!<#+|M(-GbL6&j#tVwbk+i{3f91sTs}_)%fqFyE{I04k=rYKzVU}N+!~c;J47cx zRI>?e3DscxrZqTvgm#tFaruT$HF~lAoIjm@ayWr^Mq&tP8C4FZk_pVs#gK@{kxnI; z-(-~piUpB`R9w85YbHKbRRPw;l8NTv6g{2F;DImQgcYp~N&+7q0Ldyb+2=K|xw9R! z#cIIk!^*a1MYF`Ci#20|it$?Nu(wS_|Ap(SfTw%4ff1nC4)4XVy@rLE@hA?wH>g$+wNQLG zcfCvAmC2mu-Yhhxdcj(B_f4oV7jv)DskhYoaoaT^j8DvPdoZbV-O5o_@<|>k9#Vk` zxUy#wV5NHn*kl~ZQX^An@Mf^<(RZ-FYfuF-O(VMA$=(!}y5fVdNC_Zqa3X_edzg3mov5v>!~Ox_VbIZ75cn`0*15P|t4x62$UU7qXWI&x71od!q!Q5u{&F;mqU| zlQt8#ZeNGiIyX*^&tUe@B<9i?tXO8?h5w17t2>Tr#-OHJ7ko_XWe-WCE#+vvvV9|m z;V2?Jo5Fwm;w*OmYz`qW(|!UgFn6mCRG^0$#HuDgmWQ}0K!yn87snyHo+v#Ofj<7! z%eePXpQL&f(AXYSiI}K`n6XYzlxGGz!F(#$7sm3fZTSA9U%`%Rui`dj9-|XsynlQU zFa7*5p4`_%iPH0}Zf7YO!q(0v+_tqESFa5qRHLz&;u1PDVmgL*y0iGst6BUv3!b%g ztY6#?X3t_zB#1y<^tjzKS=_$XkNbab8LsZ6`;{&p;tUolyG7^@laMF&K94;wbO8g= z((BBV)G!a$UAG)x`0S@~*KIpl^fNs;ugT;+eWQ5s<%4+m=_ANk6$mx8U?RtNy*{kv zu6BEMksnpKk<8ugr+Zzfaaj079TQO6f=T0!%!!B6C^3tSbWkD&PEMJaWNowWOU<}r zN0U-Z(V}?}LWixZ3!>_yuAd$p#>`BZ87s5gfFH|34OqKoCF*Lb6zS#qz#cCtHzmeu zOj34fJ*S58^>4q3XZKHH&H5IYMkUe=j0w%l-B=g7?!yXxi)*a&BES+r64l6TmQ`$u zY9{JOwPGOlaATk@D1lYSfj(A__btcG+Zxn*=YUYF@<$PJk+fId5yI_AN`o!ECwi(5 zf>8a`dD-!nFF$j!B>r*F%XsXGlUTkngtYE~%jJRF&-}<+kGk4QO4O~0<6qVL|1FlU68ohPXqGhkO|l|L$@+@!(hQ#Cyjc!@-dh+E%WB!^4_{ zL}s!gHO3*n7l|gJTMVY0Q|={oD`+|HnR%Jo5E%pT#FPVnbmJ;K`29Zgk1g62U*P@% zab;o`2p8`p+v^0wvjRrYLZF+(`~5!dig3eM6j>Ti<(x;DQ&&@ouigI{eCobepgXAs zBsFJdF+3hqsS8<8&{QK*E<5H#VNWCRflu9@YHm>E(Kk7Z|9Wc#|2vc9N0yi^30XkY zM7Sz0&pz{75iBZIu>JaCDF_e+#+Hncki<{pLi`HqG^hfUhE#QehoH*9uHL*FJAZ2o zU86a)y7{4nbn0AFFQxv(LE2?!oE-{;ob8V+GN0Q`iHFDV^qaF3iVH&%{K%rzM**;j z5|t5KSm3@*qyQ0VNh0QO$UdBS4I7-qh!`uucp{-x$zUeyl!HNn zu7!J|-$J}x%e!(fn_jjHWw0V(iN2<3sw0!hlF$^U6Df5TwX?sNO3-p3$<4CaSPWj) z)|rtB}J+kpw$Su96d~ zIh9`9QVQ+pu-%kNz3T$Y+hN(?=~z*t*T zjrzJ;9P2)T-oAdMC?R@$)Or%=4twC|E{S54kf^AXvoMbYst4*Juf?XQ8`K8r)1;P` z>bam}eYtaAj-BRu2+Z^yAf5X@#L_|Tg1p*0X}B1N~45o z#c}(*07JfEOBX><1&fRs0j~?a!zTXfvzrjAudsIjW!Oj2%BtDi975-s4u0Os@)Iz> zQLqwR-;_X36;|9bk}6W_7ao%C+as=h}K8_^+r!f+B7F{{P;5dQv;Z^o{>Z(>UBn+G8C zEtxvWV$v3ak^59CjYuTI-IlZHJ3WM>N8iV>6aB0ym`>1De_~}Tc3i&=+djDk9ql0* fqEu+{7S8_xv~m6?S>qyq00000NkvXXu0mjfnJjc; diff --git a/resources/nerc/images/siss-favicon.png b/resources/nerc/images/siss-favicon.png deleted file mode 100644 index 2cfe403dfd59704ca2427760c1346539459bd200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^4L^m3s900F*9 zL_t(IPh_z{qq|v{^#us z=MO6q{{Hz1SB9eD&$suVk4%0$!{zU9=&||a*7?q zc3kNF(rAdQ81CP@=RNI!b>-CE4Neyujc}n0&F1&++y*LU=_Y@S|c1<10-D{ z;#*@(`eJm^P;ZRx)CoP)rc7n{_3`P;iI#i%!aBPvVml{Ww69TZ-R{x8prWg3QE&Ru z{(yTE9bQkgcr(f3@2_tlC;k5P0?plTCz?K+Xmf3X>#_cToqge(d!x7ZMxL6V2lYcy zUS6)JR-UH@7-<68xnA12p4vb*7(v7}^1>X8@(X~7;pfkvuQye`nC<`e@bphluKf7^ z9Vh|>pB`U&xj6PkpV^Ckv*#0SzP@<`5eEh9@2~Iv{`rL^jeL9mZjLw5!NBN8is{nQ za@?pm&Zp2PoxA(t3y+9TL0KCBSGPa%tKL7v#07*qoM6N<$f;4Ix A5&!@I diff --git a/resources/nerc/images/siss-icon-64.png b/resources/nerc/images/siss-icon-64.png deleted file mode 100644 index 81d1da9750a92542b2220c531008a139c55dbe67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 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 Ef~rkBg#Z8m diff --git a/resources/nerc/images/sissvoc-banner.png b/resources/nerc/images/sissvoc-banner.png deleted file mode 100644 index 641f97c6a8aa1e71862e303c4a8329178e4a0bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6957 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 -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Andrew Rodger -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# aaron.rodger@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix basic: . -@prefix geo: . -@prefix gm: . -@prefix gml31: . -@prefix gml32: . -@prefix gtrs: . -@prefix gts: . -@prefix isc: . -@prefix ogcsf: . -@prefix sam: . -@prefix tm: . -@prefix trs: . - - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:nvcl-scalars a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - - -# generic SISSvoc stuff - ; api:maxPageSize "1000" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions -# remove the ones you don't want - ; elda:metadataOptions "bindings,versions,execution,formats" -# bindings - causes the inclusion of shortname to URI term bindings. -# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. -# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. -# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). - -############################################################## -## -## TODO: deployer to make changes here -## change "ashtml.xsl" to the path for the result stylesheet for this API - - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ] - - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint , - svoc:scalarLabelContainsEndpoint , - svoc:scalarLabelEndpoint , - svoc:scalarListEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "National Virtual Core Library - Scalars"] - , [api:name "serviceAuthor"; api:value "Aaron Rodger"] - , [api:name "serviceAuthorEmail"; api:value "Aaron.Rodger@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Overview"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "National Virtual Core Library - Scalars"@en - -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - -svoc:basicScalarViewer a api:Viewer - ; api:name "scalar" - ; api:property skos:prefLabel, skos:definition - . - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/nvcl-scalars" - ; api:exampleRequestPath "/nvcl-scalars" - ; api:itemTemplate "http://resource.geosciml.org/classifierscheme/cgi/201202/faultmovementtype" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" - ; api:uriTemplate "/nvcl-scalars/resource?uri={URI}" - ; api:exampleRequestPath "/nvcl-scalars/resource?uri=http://vocabs.auscope.org/ontology/vocabs/nvcl-scalars/0.2/TSA_S_Mineral1" - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" - ; api:uriTemplate "/nvcl-scalars/conceptscheme" - ; api:exampleRequestPath "/nvcl-scalars/conceptscheme" - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" - ; api:uriTemplate "/nvcl-scalars/collection" - ; api:exampleRequestPath "/nvcl-scalars/collection" - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" - ; api:uriTemplate "/nvcl-scalars/concept" - ; api:exampleRequestPath "/nvcl-scalars/concept" - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" - ; api:uriTemplate "/nvcl-scalars/concept?anylabel={text}" - ; api:exampleRequestPath "/nvcl-scalars/concept?anylabel=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" - - ; api:uriTemplate "/nvcl-scalars/concept?labelcontains={text}" - ; api:exampleRequestPath "/nvcl-scalars/concept?labelcontains=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" - - ; api:uriTemplate "/nvcl-scalars/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/nvcl-scalars/concept/broader?uri=http://vocabs.auscope.org/ontology/vocabs/nvcl-scalars/0.2/TSA_S_Mineral1" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" - - ; api:uriTemplate "/nvcl-scalars/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/nvcl-scalars/concept/narrower?uri=http://vocabs.auscope.org/ontology/vocabs/nvcl-scalars/0.2/TSA_S_Mineral1" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" - - ; api:uriTemplate "/nvcl-scalars/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/nvcl-scalars/concept/broaderTransitive?uri=http://vocabs.auscope.org/ontology/vocabs/nvcl-scalars/0.2/TSA_S_Mineral1" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" - - ; api:uriTemplate "/nvcl-scalars/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/nvcl-scalars/concept/narrowerTransitive?uri=http://vocabs.auscope.org/ontology/vocabs/nvcl-scalars/0.2/TSA_S_Mineral1" - - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" - - ; api:uriTemplate "/nvcl-scalars/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/nvcl-scalars/concept/broader?anylabel=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" - - ; api:uriTemplate "/nvcl-scalars/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/nvcl-scalars/concept/narrower?anylabel=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" - - ; api:uriTemplate "/nvcl-scalars/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/nvcl-scalars/concept/broaderTransitive?anylabel=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" - - ; api:uriTemplate "/nvcl-scalars/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/nvcl-scalars/concept/narrowerTransitive?anylabel=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 14. List of scalars - basic-view -svoc:scalarListEndpoint a api:ListEndpoint - ; rdfs:comment "List all scalars" - ; api:uriTemplate "/nvcl-scalars/scalar" - ; api:exampleRequestPath "/nvcl-scalars/scalar" - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicScalarViewer - ; api:viewer api:basicViewer,svoc:basicScalarViewer - . - -## 15. List of scalars where a label matches the text -svoc:scalarLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List scalars where a skos label property has exact match to text" - ; api:uriTemplate "/nvcl-scalars/scalar?anylabel={text}" - ; api:exampleRequestPath "/nvcl-scalars/scalar?anylabel=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicScalarViewer - ; api:viewer api:basicViewer,svoc:basicScalarViewer - . - -## 16. List of scalars where a label contains the text, any language, case-insensitive -svoc:scalarLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List scalars where a skos label property contains this text, case-insensitive" - - ; api:uriTemplate "/nvcl-scalars/scalar?labelcontains={text}" - ; api:exampleRequestPath "/nvcl-scalars/scalar?labelcontains=TSA_S_Mineral1" - - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicScalarViewer - ; api:viewer api:basicViewer,svoc:basicScalarViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . - - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:definition - api:label "definition" ; - a rdf:Property . diff --git a/resources/ogc/config/OGC-def-ELDAConfig.ttl b/resources/ogc/config/OGC-def-ELDAConfig.ttl deleted file mode 100644 index adf3b55..0000000 --- a/resources/ogc/config/OGC-def-ELDAConfig.ttl +++ /dev/null @@ -1,609 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - -@prefix crs: . -@prefix def: . -@prefix policy: . - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:ogc-def a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/test" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions - ; elda:metadataOptions "bindings,versions,execution,formats" - ] - -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/ogc/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "OGC Definitions Service"] - , [api:name "serviceAuthor"; api:value "Simon Cox"] - , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] - , [api:name "serviceHomePage"; api:value "http://www.opengeospatial.org/"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "OGC Definitions - vocabulary service API"@en - -# document the provenance of this vocabulary with links to the source - - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/ogc-def" - ; api:exampleRequestPath "/ogc-def" - ; api:itemTemplate "http://www.opengis.net/def/ogc/" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/ogc-def/resource?uri={URI}" - ; api:exampleRequestPath "/ogc-def/resource?uri=http://www.opengis.net/def/ogc/inapplicable" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/ogc-def/conceptscheme" - ; api:exampleRequestPath "/ogc-def/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/ogc-def/collection" - ; api:exampleRequestPath "/ogc-def/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/ogc-def/concept" - ; api:exampleRequestPath "/ogc-def/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept?anylabel={text}" - ; api:exampleRequestPath "/ogc-def/concept?anylabel=West" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept?labelcontains={text}" - ; api:exampleRequestPath "/ogc-def/concept?labelcontains=vertical" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/ogc-def/concept/broader?uri=http://www.opengis.net/def/ogc-eo/CoverageType/MULTIPASS" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/ogc-def/concept/narrower?uri=http://www.opengis.net/def/ogc-eo/CoverageType" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/ogc-def/concept/broaderTransitive?uri=http://www.opengis.net/def/ogc-eo/CoverageType/MULTIPASS" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/ogc-def/concept/narrowerTransitive?uri=http://www.opengis.net/def/ogc-eo/CoverageType" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/ogc-def/concept/broader?anylabel=Multi-Pass" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/ogc-def/concept/narrower?anylabel=Coverage%20Type" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/ogc-def/concept/broaderTransitive?anylabel=Multi-Pass" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/ogc-def/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/ogc-def/concept/narrowerTransitive?anylabel=Coverage%20Type" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains "skos:notation" values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -# skos:notation rdfs:range gts:EraCode . -# gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - -skos:definition - a owl:AnnotationProperty; - api:label "definition" . - -skos:broaderTransitive - api:label "broaderTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:broader - api:label "broader" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrower - api:label "narrower" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - -skos:narrowerTransitive - api:label "narrowerTransitive" ; - api:multiValued true ; - rdfs:domain skos:Concept ; - rdfs:range skos:Concept . - - - diff --git a/resources/ogc/css/mystyle.css b/resources/ogc/css/mystyle.css deleted file mode 100644 index b0a8143..0000000 --- a/resources/ogc/css/mystyle.css +++ /dev/null @@ -1,6 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* we are replacing the icon near the title. */ -header h1 { - background: url("../images/OGChex.jpg") no-repeat scroll 0 0 transparent; -} \ No newline at end of file diff --git a/resources/ogc/images/OGC.jpg b/resources/ogc/images/OGC.jpg deleted file mode 100644 index ffed44edf72cfd74b9b3f61dd319570597aaf7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10522 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 D^1#%& diff --git a/resources/siss-default/images/molecule.png b/resources/siss-default/images/molecule.png deleted file mode 100644 index cbf5f29a69057a6c0409b0f74ba126eeb89b4b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5533 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 diff --git a/resources/siss-default/images/siss-favicon.png b/resources/siss-default/images/siss-favicon.png deleted file mode 100644 index 2cfe403dfd59704ca2427760c1346539459bd200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^4L^m3s900F*9 zL_t(IPh_z{qq|v{^#us z=MO6q{{Hz1SB9eD&$suVk4%0$!{zU9=&||a*7?q zc3kNF(rAdQ81CP@=RNI!b>-CE4Neyujc}n0&F1&++y*LU=_Y@S|c1<10-D{ z;#*@(`eJm^P;ZRx)CoP)rc7n{_3`P;iI#i%!aBPvVml{Ww69TZ-R{x8prWg3QE&Ru z{(yTE9bQkgcr(f3@2_tlC;k5P0?plTCz?K+Xmf3X>#_cToqge(d!x7ZMxL6V2lYcy zUS6)JR-UH@7-<68xnA12p4vb*7(v7}^1>X8@(X~7;pfkvuQye`nC<`e@bphluKf7^ z9Vh|>pB`U&xj6PkpV^Ckv*#0SzP@<`5eEh9@2~Iv{`rL^jeL9mZjLw5!NBN8is{nQ za@?pm&Zp2PoxA(t3y+9TL0KCBSGPa%tKL7v#07*qoM6N<$f;4Ix A5&!@I diff --git a/resources/siss-default/images/siss-icon-64.png b/resources/siss-default/images/siss-icon-64.png deleted file mode 100644 index 81d1da9750a92542b2220c531008a139c55dbe67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 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 Ef~rkBg#Z8m diff --git a/resources/siss-default/images/sissvoc-banner.png b/resources/siss-default/images/sissvoc-banner.png deleted file mode 100644 index 641f97c6a8aa1e71862e303c4a8329178e4a0bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6957 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 -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . -@prefix slake: . -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:slake a api:API - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ; api:mimeType "text/html" - ] - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/slake/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Slake Vocabulary"] - , [api:name "serviceAuthor"; api:value "Florence Tan"] - , [api:name "serviceAuthorEmail"; api:value "Florence.Tan@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/ASRDC/SlakeUOMVocabulary-FormalisationDeploymentGuide"] - , [api:name "configID"; api:value "$Header$"] -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptByLabelEndpoint , - svoc:conceptByLabelLooseEndpoint , - svoc:conceptByNotationEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderByLabelEndpoint , - svoc:narrowerByLabelEndpoint , - svoc:broaderTransitiveByLabelEndpoint , - svoc:narrowerTransitiveByLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true -############################################################## -## -## TODO: deployer to make changes here -## -## set title of service - - ; rdfs:label "slake - vocabulary service API"@en - -#### -## set service shortname - change value of "test" here -# ; api:variable -# [ api:name "vocab" ; api:value "test" ] -## was trying to set constant here to be inserted as the first step of the uriTemplates below -## but the {variable} syntax in uriTemplates is for catching values, not expanding them, so this approach failed -#### -# document the provenance of this vocabulary with links to the source - - ; foaf:primaryTopic - ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - -################ -## -## LDA documentation is unclear about syntax for api_template, and in particular how to pass in the URI for the item -## -#svoc:labelledDescribeConceptViewer a api:Viewer -# ; api:name "conceptFull" -# ; api:template " CONSTRUCT { ?item ?p ?o . ?o skos:prefLabel ?l } WHERE { ?item ?p ?o ; rdf:type skos:Concept . OPTIONAL { ?o skos:prefLabel ?l } } " -# . -# -## -################ - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this resource" - ; api:uriTemplate "/test" - ; api:exampleRequestPath "/test" - # This URI is wrong but I cant find the metadata owl:ontology uri.... - ; api:itemTemplate "http://vocabs.auscope.org/classifier/bom/slake/0.1" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/slake/resource?uri={URI}" - ; api:exampleRequestPath "/slake/resource?uri=http://vocabs.auscope.org/classifier/bom/slake/0.1/uom/ML" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/slake/conceptscheme" - ; api:exampleRequestPath "/slake/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/slake/collection" - ; api:exampleRequestPath "/slake/collection" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a ?type . FILTER ( ?type = skos:Collection || ?type = skos:OrderedCollection ) " ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/slake/concept" - ; api:exampleRequestPath "/slake/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text, in English -svoc:conceptByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text, in English" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept?anylabel={text}" - ; api:exampleRequestPath "/slake/concept?anylabel=storage%20volume" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4a. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptByLabelLooseEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept?labelcontains={text}" - ; api:exampleRequestPath "/slake/concept?labelcontains=volume" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . ?item ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER regex( str(?l) , ?text , 'i' ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where the skos:notation matches the quoted text -svoc:conceptByNotationEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where notation property has exact match to this string" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of notation= to a code for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept?notation={nn}" - ; api:exampleRequestPath "/slake/concept?notation=67" - -## end of TODO: -############################################################## - ; api:selector [ -## this match isn't quite right - it is not exact, but must use regex and str() because in general don't know the datatype - api:where " ?item a skos:Concept . ?item skos:notation ?n . FILTER regex( str(?n),?nn ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/slake/concept/broader?uri=http://vocabs.auscope.org/classifier/bom/slake/0.1/uom/ML" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/slake/concept/narrower?uri=http://vocabs.auscope.org/classifier/bom/slake/0.1/uom/ML" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/slake/concept/broaderTransitive?uri=http://vocabs.auscope.org/classifier/bom/slake/0.1/observedproperty/accessiblecapacity" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/slake/concept/narrowerTransitive?uri=http://vocabs.auscope.org/classifier/bom/slake/0.1/observedproperty/accessiblecapacity" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text, in English -svoc:broaderByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/slake/concept/broader?anylabel=ML" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broader ?item . ?i0 ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text, in English -svoc:narrowerByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/slake/concept/narrower?anylabel=storage%20volume" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrower ?item . ?i0 ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text, in English -svoc:broaderTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/slake/concept/broaderTransitive?anylabel=meter" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:broaderTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text, in English -svoc:narrowerTransitiveByLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/slake/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/slake/concept/narrowerTransitive?anylabel=ML" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?i0 skos:narrowerTransitive ?item . ?i0 ?label ?l . FILTER ( ?label = skos:prefLabel || ?label = skos:altLabel ) FILTER ( ?l = ?text@en ) " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/slake/css/mystyle.css b/resources/slake/css/mystyle.css deleted file mode 100644 index e35821e..0000000 --- a/resources/slake/css/mystyle.css +++ /dev/null @@ -1,6 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* replace the icon near the title. */ -header h1 { - background: url("../images/bom_logo_clr.gif") no-repeat scroll 0 0 transparent; -} \ No newline at end of file diff --git a/resources/slake/images/bom_logo_clr.gif b/resources/slake/images/bom_logo_clr.gif deleted file mode 100644 index 52076f05df4897b506e3814a8345d3cf5c94c56a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3636 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 diff --git a/resources/slake/images/favicon.ico b/resources/slake/images/favicon.ico deleted file mode 100644 index 6ae30042c052bec216277ac96d495e5fc301ffe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmeHGu};G<5PcD<@D{g?pe>Qg$X~$c@E7DG7+D!RcC3^sW5$dTTSj;Df^@t)r<5Tx zQ_g}_z Hy@~t)CuI^a diff --git a/resources/wq/config/WQ-ELDAConfig.ttl b/resources/wq/config/WQ-ELDAConfig.ttl deleted file mode 100644 index f134f4b..0000000 --- a/resources/wq/config/WQ-ELDAConfig.ttl +++ /dev/null @@ -1,618 +0,0 @@ -############################################################## -# -# This is the template LDA configuration for a SISSvoc service -# Reference - -# -# Copyright (c) CSIRO 2012 -# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) -# see -# -# Contact: Simon J D Cox -# CSIRO Earth Science and Resource Engineering -# PO Box 1130 -# Bentley -# WA 6102 -# Australia -# simon.cox@csiro.au -# -# The configuration must be customized for each vocabulary -# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block -# -############################################################## - -## Common prefixes - don't change these. -@prefix api: . -@prefix dc: . -@prefix dcterms: . -@prefix elda: . -@prefix foaf: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix svoc: . -@prefix xsd: . - -############################################################## -## -## TODO: deployer to make changes here -## other namespaces that appear in this vocabulary - - -@prefix wq: . -@prefix wqi: . -@prefix wqk: . -@prefix wqo: . -@prefix wqp: . -@prefix wqq: . -@prefix wqu: . -@prefix chebi-skos: . -@prefix wq-chebi: . -@prefix prov: . -@prefix dtype: . -@prefix qudt: . -@prefix qudt-skos: . -@prefix qudt_owl: . -@prefix vaem: . - - -## end of TODO: -############################################################## - - -############################################################## -## -## TODO: deployer to make changes here -## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service - -svoc:wq a api:API - -## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it -# ; api:base "http://def.seegrid.csiro.au/sissvoc/wq" - -## end of TODO: -############################################################## - -# generic SISSvoc stuff - ; api:maxPageSize "50" - ; api:defaultPageSize "10" - ; api:defaultFormatter [ - a api:XsltFormatter - ; api:name "html" - ; api:mimeType "text/html" -# the following property enables the stylesheet to work better, including linking the item properties to their definitions -# remove the ones you don't want - ; elda:metadataOptions "bindings,versions,execution,formats" -# bindings - causes the inclusion of shortname to URI term bindings. -# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. -# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. -# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). - -############################################################## -## -## TODO: deployer to make changes here -## change "ashtml.xsl" to the path for the result stylesheet for this API - - ; api:stylesheet "lda-assets/resources/siss-default/transform/ashtml-sissvoc.xsl" - ] - -## end of TODO: -############################################################## - - ; api:endpoint - svoc:LandingPage, - svoc:URIEndpoint , - svoc:conceptSchemeEndpoint , - svoc:conceptCollectionEndpoint , - svoc:conceptListEndpoint , - svoc:conceptLabelEndpoint , - svoc:conceptLabelContainsEndpoint , - svoc:broaderThanURIEndpoint , - svoc:narrowerThanURIEndpoint , - svoc:broaderTransitiveThanURIEndpoint , - svoc:narrowerTransitiveThanURIEndpoint , - svoc:broaderLabelEndpoint , - svoc:narrowerLabelEndpoint , - svoc:broaderTransitiveLabelEndpoint , - svoc:narrowerTransitiveLabelEndpoint - ; api:defaultViewer api:describeViewer - ; elda:enableETags true - -############################################################## -## -## TODO: deployer to make changes here -## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths - - ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] - ; api:variable - [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] - , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] - , [api:name "serviceTitle"; api:value "Water Quality Definitions Service"] - , [api:name "serviceAuthor"; api:value "Bruce Simons"] - , [api:name "serviceAuthorEmail"; api:value "Bruce.Simons@csiro.au"] - , [api:name "serviceHomePage"; api:value "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Overview"] - , [api:name "configID"; api:value "$Header$"] - -## set title of service - - ; rdfs:label "SISSVOC WQ - vocabulary service API"@en - -# document the provenance of this vocabulary with links to the source -# -# ; foaf:primaryTopic -# ; rdfs:seeAlso - -# set the SPARQL endpoint - - ; api:sparqlEndpoint - . - -## end of TODO: -############################################################## - -############################################################## -## -## TODO: deployer to make changes here -## SPARQL 1.1 endpoints ONLY! -## remove this if the endpoint does not support SPARQL 1.1 - - elda:supportsNestedSelect true . - -## end of TODO: -############################################################## - -#VIEWERS - -svoc:viewerNone a api:Viewer - ; api:name "none" - . - -svoc:basicConceptSchemeViewer a api:Viewer - ; api:name "conceptScheme" - ; api:property rdfs:label, skos:hasTopConcept - . - -svoc:basicCollectionViewer a api:Viewer - ; api:name "collection" - ; api:property rdfs:label, skos:member - . - -svoc:basicConceptViewer a api:Viewer - ; api:name "concept" - ; api:property skos:prefLabel - . - - -#ENDPOINTS - -## 000.000. This is the metadata identifier for the vocabulary content. -svoc:LandingPage a api:ItemEndpoint - ; rdfs:comment "Landing Page for this vocabulary" - ; api:uriTemplate "/wq" - ; api:exampleRequestPath "/wq" - ; api:itemTemplate "/wq/collection" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:labelledDescribeViewer - . - - -## 0. This is the basic "tell me what you know about the resource identified by this URI" request. -svoc:URIEndpoint a api:ItemEndpoint - ; rdfs:comment "Describe this resource" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## set value of uri= to a URI from the vocabulary - - ; api:uriTemplate "/wq/resource?uri={URI}" - ; api:exampleRequestPath "/wq/resource?uri=http://def.seegrid.csiro.au/resources/water/water-quality/wq-observed-property/wqo-instance/pesticide_concentration" - -## end of TODO: -############################################################## - ; api:itemTemplate "{URI}" - ; api:defaultViewer api:labelledDescribeViewer - ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer -# ; api:viewer svoc:labelledDescribeConceptViewer - . - -## 1. List of concept schemes - basic-view -svoc:conceptSchemeEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept-schemes" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/wq/conceptscheme" - ; api:exampleRequestPath "/wq/conceptscheme" - -## end of TODO: -############################################################## - ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] - ; api:defaultViewer svoc:basicConceptSchemeViewer - ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer - . - -## 2. List of concept collections - basic-view -svoc:conceptCollectionEndpoint a api:ListEndpoint - ; rdfs:comment "List all concept collections" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/wq/collection" - ; api:exampleRequestPath "/wq/collection" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" - ] - ; api:defaultViewer svoc:basicCollectionViewer - ; api:viewer api:basicViewer,svoc:basicCollectionViewer - . - -## 3. List of concepts - basic-view -svoc:conceptListEndpoint a api:ListEndpoint - ; rdfs:comment "List all concepts" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name - - ; api:uriTemplate "/wq/concept" - ; api:exampleRequestPath "/wq/concept" - -## end of TODO: -############################################################## - ; api:selector [ - api:where " ?item a skos:Concept . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 4. List of concepts where a label matches the text -svoc:conceptLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property has exact match to text" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept?anylabel={text}" - ; api:exampleRequestPath "/wq/concept?anylabel=pesticide%20concentration" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 5. List of concepts where a label contains the text, any language, case-insensitive -svoc:conceptLabelContainsEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of labelcontains= to a word in a label for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept?labelcontains={text}" - ; api:exampleRequestPath "/wq/concept?labelcontains=pesticide" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ { ?item skos:prefLabel ?l } - UNION - { ?item skos:altLabel ?l } - UNION - { ?item rdfs:label ?l } - FILTER regex( str(?l) , ?text , 'i' ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 6. List of concepts broader than the one identified by this URI -svoc:broaderThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/broader?uri={baseConcept}" - ; api:exampleRequestPath "/wq/concept/broader?uri=http://def.seegrid.csiro.au/resources/water/water-quality/wq-observed-property/wqo-instance/pesticide_organochlorine_concentration" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broader ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 7. List of concepts narrower than the one identified by this URI -svoc:narrowerThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/narrower?uri={baseConcept}" - ; api:exampleRequestPath "/wq/concept/narrower?uri=http://def.seegrid.csiro.au/resources/water/water-quality/wq-observed-property/wqo-instance/organochlorine_pesticide_concentration" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrower ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 8. List of concepts broaderTransitive than the one identified by this URI -svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/broaderTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/wq/concept/broaderTransitive?uri=http://def.seegrid.csiro.au/resources/water/water-quality/wq-observed-property/wqo-instance/organochlorine_pesticide_concentration" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:broaderTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 9. List of concepts narrowerTransitive than the one identified by this URI -svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of uri= to a uri for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/narrowerTransitive?uri={baseConcept}" - ; api:exampleRequestPath "/wq/concept/narrowerTransitive?uri=http://def.seegrid.csiro.au/resources/water/water-quality/wq-observed-property/wqo-instance/organochlorine_pesticide_concentration" - -## end of TODO: -############################################################## - ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] - ; api:selector [ - api:where " ?baseConcept skos:narrowerTransitive ?item . " - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 10. List of concepts broader than the one where a label matches the text -svoc:broaderLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broader than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/broader?anylabel={text}" - ; api:exampleRequestPath "/wq/concept/broader?anylabel=aldrin%20concentration" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broader ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 11. List of concepts narrower than the one where a label matches the text -svoc:narrowerLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrower than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/narrower?anylabel={text}" - ; api:exampleRequestPath "/wq/concept/narrower?anylabel=organochlorine%20pesticide%20concentration" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrower ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 12. List of concepts broaderTransitive than the one where a label matches the text -svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/broaderTransitive?anylabel={text}" - ; api:exampleRequestPath "/wq/concept/broaderTransitive?anylabel=organochlorine%20pesticide%20concentration" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:broaderTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -## 13. List of concepts narrowerTransitive than the one where a label matches the text -svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint - ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" -############################################################## -## -## TODO: deployer to make changes here -## change "test" to vocab name -## change value of anyLabel= to a label for a concept in this vocabulary - - ; api:uriTemplate "/wq/concept/narrowerTransitive?anylabel={text}" - ; api:exampleRequestPath "/wq/concept/narrowerTransitive?anylabel=organochlorine%20pesticide%20concentration" - -## end of TODO: -############################################################## - ; api:selector [ - api:where - """ ?i0 skos:narrowerTransitive ?item . - { ?i0 rdfs:label ?l } - UNION - { ?i0 skos:prefLabel ?l } - UNION - { ?i0 skos:altLabel ?l } - FILTER ( str(?l)=?text ) """ - ] - ; api:defaultViewer svoc:basicConceptViewer - ; api:viewer api:basicViewer,svoc:basicConceptViewer - . - -############################################################## -## -## TODO: deployer to make changes here -## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -## skos:notation rdfs:range gts:EraCode . -## gts:EraCode a rdfs:DataType . - -## end of TODO: -############################################################## - - -# -# VOCABULARY -# -# The vocabulary declarations say which properties can be used in queries -# and by what short name those properties are known. If property P with short -# name Q has range type T, then a query parameters Q=V is translated to -# a WHERE clause fragment ?item P V' where V' is a literal which is V -# with type T. This is especially important for numbers and booleans. -# - -## RDF -rdf:type - api:label "type" ; - rdfs:range rdfs:Class . - -## RDFS -rdfs:label - api:label "label" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -rdfs:comment - api:label "comment" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -## SKOS -skos:Concept - api:label "Concept" ; - a rdfs:Class . - -skos:ConceptScheme - api:label "ConceptScheme" ; - a rdfs:Class . - -skos:topConceptOf - api:label "topConceptOf" ; - rdfs:range skos:ConceptScheme . - -skos:hasTopConcept - api:label "hasTopConcept" ; - api:multiValued true ; - rdfs:range skos:Concept . - -skos:inScheme - api:label "inScheme" ; - rdfs:domain skos:Concept ; - rdfs:range skos:ConceptScheme . - -skos:member - api:label "member" ; - api:multiValued true ; - rdfs:domain skos:Collection ; - rdfs:range skos:Concept . - -skos:prefLabel - api:label "prefLabel" ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:altLabel - api:label "altLabel" ; - api:multiValued true ; - api:structured "true"^^xsd:boolean; - a rdf:Property . - -skos:notation - a owl:DatatypeProperty; - api:label "notation" . - - diff --git a/resources/wq/css/mystyle.css b/resources/wq/css/mystyle.css deleted file mode 100644 index 058f00c..0000000 --- a/resources/wq/css/mystyle.css +++ /dev/null @@ -1,6 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* replace the icon near the title. */ -header h1 { - background: url("../images/molecule.jpg") no-repeat scroll 0 0 transparent; -} \ No newline at end of file diff --git a/resources/wq/css/sissstyle.css b/resources/wq/css/sissstyle.css deleted file mode 100644 index 56c5b93..0000000 --- a/resources/wq/css/sissstyle.css +++ /dev/null @@ -1,33 +0,0 @@ -/* This is the last CSS loaded - you can destroy incoming formatting! */ - -/* use the SISSvoc banner */ - -nav.site { - background: url("../images/sissvoc-banner.png") no-repeat 0% 0%; - padding-top: 54px; -} - -/* we are replacing the icon near the title. */ -header h1 { - background: url("../images/siss-icon-64.png") no-repeat scroll 0 0 transparent; -} - - -/* Hack to fix the nesting of tables.... - its even worse now.... */ -table { - table-layout: fixed; -} - -#page { - width: 1040px; -} - -#result { - width:620px; -} - -.panel section { - width: 575px; -} - -/* END Hack to fix the nesting of tables.... - its even worse now.... */ \ No newline at end of file diff --git a/resources/wq/images/molecule.png b/resources/wq/images/molecule.png deleted file mode 100644 index cbf5f29a69057a6c0409b0f74ba126eeb89b4b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5533 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 diff --git a/resources/wq/images/siss-favicon.png b/resources/wq/images/siss-favicon.png deleted file mode 100644 index 2cfe403dfd59704ca2427760c1346539459bd200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^4L^m3s900F*9 zL_t(IPh_z{qq|v{^#us z=MO6q{{Hz1SB9eD&$suVk4%0$!{zU9=&||a*7?q zc3kNF(rAdQ81CP@=RNI!b>-CE4Neyujc}n0&F1&++y*LU=_Y@S|c1<10-D{ z;#*@(`eJm^P;ZRx)CoP)rc7n{_3`P;iI#i%!aBPvVml{Ww69TZ-R{x8prWg3QE&Ru z{(yTE9bQkgcr(f3@2_tlC;k5P0?plTCz?K+Xmf3X>#_cToqge(d!x7ZMxL6V2lYcy zUS6)JR-UH@7-<68xnA12p4vb*7(v7}^1>X8@(X~7;pfkvuQye`nC<`e@bphluKf7^ z9Vh|>pB`U&xj6PkpV^Ckv*#0SzP@<`5eEh9@2~Iv{`rL^jeL9mZjLw5!NBN8is{nQ za@?pm&Zp2PoxA(t3y+9TL0KCBSGPa%tKL7v#07*qoM6N<$f;4Ix A5&!@I diff --git a/resources/wq/images/siss-icon-64.png b/resources/wq/images/siss-icon-64.png deleted file mode 100644 index 81d1da9750a92542b2220c531008a139c55dbe67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 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 Ef~rkBg#Z8m diff --git a/resources/wq/images/sissvoc-banner.png b/resources/wq/images/sissvoc-banner.png deleted file mode 100644 index 641f97c6a8aa1e71862e303c4a8329178e4a0bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6957 zcmY*d1ymc`x~7HVP#g*rcXxLPS}5*X+`T}9I{}KjYk}awDOQTRyK8Z`A}{BydwP4b z)=Xw5$z;#|_y1XhvXTrMG9fYy3=Eo_tduGY3~V{{m=5tZbnhO!E(U#rvlLephk>by zL3uQJ13gD_lGSmAfkDCeXM0sa+2#(th~Ort2tZhZ$3r4yG%yNkgHy@FB z_)u-GO$p#dDf+*ktviaX>zV#|h+x0D`Ro_eHi;MU|G)Y724W!?+ME>CPT6ad_z7Um z3SDw^d#BBllhqDCzc#}T_rqDq;=Ts^rDSG39_JsyJobxx{QRYNbyXTwWf>`L8Tik2 z;7SX6{!+DXN>$lywGc?7-6}=sQjKZf#mby=+dx==th> zo1tW8g=8kL^B#P?MhAnoFYakzc=ybw16(7tmFCajos0N-IHQ-$T<~q<^j9xAvQx#1S{3@&Qy)d2#x4p_%E?+WH(zRn&59Q{viNpv_lwEN*QDyN#6g_gN+V8ic@Z21}wELAwt0jO{6 z*a#9SE=IEic@^Iln!em^y&YKJ=nmtyon?wa%;vFA=U9I0aSGbNxV>HTOF{L$-@!i( z-4%U1zqC}PT_f@9;O2NKpYhJj5BT)p-az-Gr}W_$zXTzH0Kr^xO`Psp;D8BQEKKMl zGsnJ@@DzhG7@?N-&lH7sb_Du^U855}lSlR@?@|^mg^K)k2vEZ6x-+@l4z`)8n@N>` zqrIM?3G9n{*UiuaygkX2Xaq*m39 zp)R75i<$I)I?x~S(H8Lz*i2*?J}`!Y|Fyj+jo!tFL8OUoEC;tMBs6zVkb6o>7L0gv zb@jLrMoLBRb$_vQcIK26UhO!MA2LGG1Z}-Wht>EWD=qGf4MhQHYY0#=NXDoAUiJ}^BA82GbvsKj!S?O1Ixi-xm1|VO(x1f)L%g9r|>#U!2L_$ zX$=d+_W3c@+ca?#v?|cHGVb6E3G-MKDcJHrNf=(hse1SPxTguBe_0eXHMhM&=`u9LgUyq6WK0=u#u}v9m?GW91ZofiqZeQk;pwK3%r^_r>hSaA{E`jFx`T4+9#`A`3aecqAD(0>CW&jW2eri`oGSgp( zp&SRdD1C3p&Q-6zYTSLvYZ!TUUN!~+R8SBYbW?Fh)Zhq_tJ^^-gOad z`mtvuN3=tza+Pp$nJSRnrhxSzA$F(!z+Q)NQ9d=9z)j{`eVtatp{$aU@9m1mSdM7S zQT@Cf`p%r_^W7E{@Msm&w+|0(xicqoovlpke(-tUu`Sxl+Q<9-zSiQpz1!aU7&{#U znp9r1>xTaym>tBhA|-MO;fJ*h+U9QE4*A+8lnY%xun6d~WjM8{%=n)9+O;(dfpZml zv>`!mkx|piCrl_0Gg?M+mE#2SLqkKmS+|O3oJ9dD^JM#rv=lzm26+yAqTkH(#QTX0 zh(Eb_M8Y0#Zf=S^U8yw;)z*U96P*nWNggbmPDmBmW-ASB-D{B^7=fOiP7hR^e-Tt- zq`y&+fTb$~2Lcn)=95~}RlX)>l#Q-tvUtr*rNNQ~oF;&cL2lk@&HFNXL;`ICGquQpTZ5-x^(08{`v$tWCpr^?LafE|a@v%hZz`Uh%tdnKra& zB({^yfz>AmEx$h9rfN8v{VNHeOca1jw!W@x?;-sGP~>aw>p&>!^Szw*rVeDRrKQzC z@mlv_x>SwFFTp_ruE3!8-gQr>=kvyokl6~|C9w|Qrw0!Hy9LV}dcjw&Uko|rt*(s; z-+vQiXVh%_F3yJM(u>j6Vt}0wR%geS;^~L=S{TXTefwTO9lt{1!w2t+0ou5y9y$@c zo&|{IjQd$4z1qCa7j59n^AnUz{Gk7gvAoqAox$h4S!+I&`z;O_%D&f@@a``X9R!e7 zOTJhym^zFy3ZCVgp}KhWIA|3L&b7q z8N5}7ZC~UYJ5!fi++}5Dn^#BbQvd35A-FRB=IJ4!v;M1?rBPisp+Ep~rOb9|xlI~Q8EH{FJ^hJn_7iCLY$al)Zi zrM}9*X?_L5(is8qa03tp8PyEo_lBB$42dwG5e^6Ce-T=Y8tV-Bg#f48b7pW^RM2+* z+A9E;F@(1`V}NGRVSopd30cj%(V<};2Ny+FGC#hHK|~1?RTL_?uCfF@hC_pFeiFA5 za&K==s=5(CgoAW)=#Ka28d)vps*kr!d(7BC#3ET1zM7mj)z)^2^mdi!=pnqSwG!T!}->TCh~`}%k@v^?g(@C)GhoY0!JL)4w*Im%Bg-#C1_D(icyF4m>0*tU#2#1(Jrl29?hnACW|F=1noeYXeOum}|fB z2^VK$-MCbFY2Y+T>>;e&eH)&hzWI2@9-Y#Sn^hI#QO?4O6Jh(VZ&g-a9(nBd+iyGb zZ($w3pToBzv$AKve~pgVIhW)4OE#3ay;dYSBxW;(sH5jS=Jj56XIU_7$FJN5w%3es zV;vf@xgyJdcHF`5%I}6pBNRK#5%f?hRh+9ZutX|BqtJE>p}{SX{`yJATGrX)ba6y2 zg4}+fuaDOB!YmV@cA`(ilH^fyO)dVMURjdG3SdNA&A~CXp&-AK(TgX{<4R>Sc}+Ao zHI;BVl9H3d$}Hsj$k%E!S7|U=HLm`3iaZVT)t{x2JBfs9MH*U+LAuv4JSy+=<#YB} zl)Z-hL6CXiJpHBeMR^Y=B=mI1>nOc9f8&~Rgo~nt3X`b?a8T#>@?4^tgfw_{-WsZ;87Ip^#p1+PvPOckwWq3FMJ9CO!xyYi%eA{gC2NAw493=xBeZqi za$MOfr#*J_anKg=cSLg!RI%hEgoP`7a%f={1$|l9W^d4 zE`=d{d$iXgl6feC&RaVvM!UCie+f&3fa$EsmmrT~mwByFq#Lrx3U6s@7FU!PL0b#~ z`u^lTqEU`T`FCZWNjG{xno$El2ZdZ_mEV=D!;e%;@^gGDyKw-4OW66vn!nui<1 z0mOftthDNw*fb<)g@hXiLmDAQtrloR=$9MitF1b)w6xy}WMXP7r}Y@^-p@%Wcm8N@ z+)wJJ)XpK2X%tHfCJT&KX@*VDK=atVbEcpDdMtQ%o0*lx%>4N4Th8(_C}t-wg>6X* z>N89pMF!&kVEj56*)M=N{j(fL(<6npf#lY#lyg*=90upE#8DP9=IARWwqH5h=8{FM zKhJL;VlN+h_ZhwUXsz{>`ZQcySw>D^?*(~ntt@5{^|5!OWCZwqMw@==6tvK44OXL$ z0;M2&4cPD6+qGEA=`c~plmqOxs-g1S=|s&s6ykAY&5ydP?95H~&fY(y%t&_Q(sip$ z3xXfbPPqjV8C6HgV`Tf;%gZCGxb^cKJ3bizMtc^9P!Oa!T6?OlzCO#f_PO(uX#Y9UpEF ze^PTOehpyDtTJfTMD{pdoDY$FJoZ0ly4~0PCC1S-3uj=%h5LAdXEV^f*%MhLOqn+{ zMWyZLel*W+O-?0vm?KOOmXDJ`J}&VG(K?9(CIfXjp+kEDF<@eSwzN4=5*JU#9JBjX zR5~lB;@_#8sAI_FHFNOJOkN`yK~o*3yP%e4{yQQ|!bXEG%4CHeFBiKpsU*Cxhqc_d z$2ZPN9u-51NpF&#L1|{HoGbFUU6*@fDTW=KmZNmIhCQHl>#1V74Tsh51N?U*N1~2( z6v_H|Qrb_VuYwYu6cN@bCg?Yvq@xUy7`WfRzi`F=P^;~+fD_KK_;hPj z>v^o$aqhd@*y_^Qc0U-eCBu}KbTfnZRCGLba++1xQ1){p>uE|RhOiWsK_rO9LRGav z6>tU>+tZQA(E3%GjP|Bgw6DL=4({sk+AkKiv-Lwh2h9lC;qS z&fndhtRzempu5mFss~Wa_w?*QQBjpI>gyI&E*A!VkV!;3a)BL7zYTzHW-LN zb>A^rA6F_SK|qr-t0cmpvx}BBQD`rT5eAo$Ce+6wKGZmaLe2H|@7$dwSSD1B*K z7ge1G&-`C+KZwPqg$AaJ!$@Yc$CY<4+y{R^;YjFAEV504AI^t_s^<;n4>tq{ng+Q! zRbF{Wm;rQ~-CBRp3wEXYNDmuu($~i;52hpOsXO^=W$9f;5Fk zYh$kPv(mjXl1883H%FrrCE7k0mj^Roo!?LkP5)FN7Ff^kya|`cK6add_Q$E5jZql0 zls~(toQUMKD_<}-c;M=}jySTa4 z;q=VSX<03I361}pE3bh%muD=3$4I5NS~J>1GlcXpZ}Q`e>yqTz0#GJ zJ|h0wN4O)6h-In^|B|9j7_>)o<~d6h7>AuSYPzBDIg>>4-nzBnIGxw=Yh`CmO%2q3 zOG)2AgT(U3ALHEn>O@l2U@&94P#V0}n3zy2p&mRG{XGbk@uK}`bSz7d_Igbt3~9v2 z3R$XpoJOJrIjThj$ycZem$1l6-cjAEnTOX4;Zr=%l`P zWfh)VJx)iJMmi;?b;azzp?{Z{-pLE>= zO7Z7SZB84nl`76Vda(rx(D~wLy6{~$ZD!Y>Vqwk48hEfh5Pf1Q2{C?#goM-zZ>8Pc zZHlub^YDA$IW9^a7U^fO+n125sIiT)6jKO!O= z2jk^=S8>nV7(%C&-`mkbPx{%)eDWcL%IEbHRDmX^ntja2AzW7?rj|HETzJ0qzAG(X z-wW#c+#9Ik^B0}EDXsnDvQBZ0M3)ERl%YdSILrYS3ZY3Xl^zf zwRQ3Gl`<=-LR+l|8Pf+RBw!<}s;R0LD`l1O3R{e3rX?pQXJ!uT$bhXItx_>aNWNmb zsBv)obb?rp_0B!nFEzNkPAS7i=VHv#rFlNz@3HGkx`lj1FD)&Nh=}mZ>Ne>|F3{x_ z7B*NW_w9@msqkQ+jM5~6#-E8NUuK7ON*ucmq2VX9V%3{>*nc#d)H - - -/ - - - - - - -Test Title -Test Author -test.author@csiro.au -http://test.homepage/here - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - -
    - - - Linked Data - Object Viewer - - - - - - - - - - - - - - - - - - - - - - - - [if lt IE 9]> - <link rel="stylesheet" href="css/ie.css" type="text/css"></link> - <![endif] - - - - - - - - - - - - - - - - - -
    -

    -
    -
    - - - - - - -
    - - -
    -
    - - -
    - - query col - - 1 - 2 - - -

    - - Viewer - Selection - -

    - - - - - - - - - - - - - - - - - -

    - This is the SPARQL query that was generated to - - - pull together the data that is provided about - - each item. - the selected item. - - - identify the items to be shown in the page. - - - You can modify it here and re-run the query but you may find more options at the - endpoint's page - . -

    -
    - -

    - -

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - v - - - - -
    -
      - - -
    • - - first - - - last - - -
    • -
      -
    -
    -
    - - -

    - -

    -
    - - - -
    -
    - - -

    Search Results

    - -
    - - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - - - - -
    -

    On This Page

    - - Links to the items within this page, and to the previous and/or next pages of results. - -
      - -
    • - -
    • -
      - -
    • - - - -
    • -
      - -
    • - -
    • -
      -
    -
    -
    -
    - - -
    -

    Find Concepts

    - - Use this form to find concepts by 1) having the exact same text as input 2) having words containing the text input. - - - - - - - - - -
    -
    - Exact label
    - -
    -
    -
    - Text within label
    - -
    -
    -
    -
    -
    - - - - - - - - - - - - -
  • - - - - - - - - -
  • -
    - - - - - - - - - - - - - - - / - - - - - - - - - - - - - - item - - - - - - - - - - - - - - - -
    -

    Filter

    - - These are the filters currently being used to limit the search results. Click on the remove filter icon to remove the filter. - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    View

    - - - Choose what information you want to view about each item. - There are some pre-defined views, but starred properties are always present no matter what the view. - You can star properties by clicking on the - star this property - icon. The currently starred icons have a - unstar this property - icon; clicking on it will unstar the property. - - - -

    - - - - - - - - - reset - -

    -
    -
      - -
    • - - - -
    • -
      -
    -
      - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - unstar this property - - - - - - - - - - - - - -
  • - - - - - - -
    - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - star this property - - - -
  • -
    -
    - - -
    -

    Items per page

    - - Choose how many items to view on each page. The more items you view, the longer the page will take to load. - -
      -
    • - - - -
    • -
    • - - - -
    • -
    • - - - -
    • -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Sort by

    - - - This list shows the properties that you can sort by. Click on - sort in ascending order - to sort in ascending order and - sort in descending order - to sort in descending order. The properties that you're currently sorting by are shown at the top of the list. Click on - remove this sort - to remove a sort and - sort in descending order - or - sort in ascending order - to reverse the current sort order. - Click on the - remove all sorting - icon to remove all the sorting. - Note that sorting can significantly slow down the loading of the page. - - - -

    - - - - - - - - - reset - -

    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - remove this sort - - - - - - - - - - , - - - - - - - - - - - - - - - sort in ascending order - sort in descending order - - - - - sort in ascending order - - - sort in descending order - - - - - - - - - - - - - - -
  • - - - - - - - -
    - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - -
  • - - sort in ascending order - - - - - - - - - - , - - - - - - - - sort in descending order - - - - - -
  • -
    -
    - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
      - - - - -
    • -
      -
    -
    -
    -
    - - - - - « - - - - - - » - - - - - - - - - - - - - - - - - - - - - default - - - - - - - - - - - - - - - - - -
    -

    -

    -
    -
    - - - -
    -
    - - - - - - - -
    -

    No results

    -
    -
    -
    -
    - - -
    - - - -
    -
    - - - - - - - - - -
  • - - - - - - - - - - - - -
  • -
    - - - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - / - - - - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - help -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - , - - - - - - unstar this property - - - - - - - - - - - - , - - - - - - star this property - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove maximum value filter - - - - - - - - - - - - - - - - less than {$value} - - - less than {$value} - - - - - - - - - - - - - - - - more like this - - - - - - - - - - - - - - remove minimum value filter - - - - - - - - - - - - - - - - more than {$value} - - - more than {$value} - - - - - - - - - - - - - - - - - - more like this - - - - - - - - - - - - - - - - - - - - - - - - - - - - outlink - - - - - - - - - - - - - - - - - original - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - - - -
    - - -
    -
    - - - - - - - last - - - - - - - - - - - -
    -
    - - - - - - - From c0d46856d71afeb76ad5642e0c04bbd8be2c96de Mon Sep 17 00:00:00 2001 From: jyucsiro Date: Mon, 29 Sep 2014 15:04:40 +1000 Subject: [PATCH 06/19] removing org/project specific configs --- default-landing/LandingPage-isc2004.jsp | 5 - default-landing/LandingPage-isc2005.jsp | 5 - default-landing/LandingPage-isc2006.jsp | 5 - default-landing/LandingPage-isc2008.jsp | 5 - default-landing/LandingPage-isc2009.jsp | 5 - default-landing/LandingPage-isc2010.jsp | 5 - default-landing/LandingPage-ogc-def.jsp | 277 -------------------- default-landing/LandingPage.jsp | 314 ----------------------- default-landing/generic.jsp | 321 ------------------------ default-landing/index.html | 16 +- 10 files changed, 7 insertions(+), 951 deletions(-) delete mode 100644 default-landing/LandingPage-isc2004.jsp delete mode 100644 default-landing/LandingPage-isc2005.jsp delete mode 100644 default-landing/LandingPage-isc2006.jsp delete mode 100644 default-landing/LandingPage-isc2008.jsp delete mode 100644 default-landing/LandingPage-isc2009.jsp delete mode 100644 default-landing/LandingPage-isc2010.jsp delete mode 100644 default-landing/LandingPage-ogc-def.jsp delete mode 100644 default-landing/LandingPage.jsp delete mode 100644 default-landing/generic.jsp diff --git a/default-landing/LandingPage-isc2004.jsp b/default-landing/LandingPage-isc2004.jsp deleted file mode 100644 index e7058f8..0000000 --- a/default-landing/LandingPage-isc2004.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<%! - int year = 2004; -%> - -<%@ include file="generic.jsp" %> diff --git a/default-landing/LandingPage-isc2005.jsp b/default-landing/LandingPage-isc2005.jsp deleted file mode 100644 index b1c56dc..0000000 --- a/default-landing/LandingPage-isc2005.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<%! - int year = 2005; -%> - -<%@ include file="generic.jsp" %> diff --git a/default-landing/LandingPage-isc2006.jsp b/default-landing/LandingPage-isc2006.jsp deleted file mode 100644 index 0c0d93c..0000000 --- a/default-landing/LandingPage-isc2006.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<%! - int year = 2006; -%> - -<%@ include file="generic.jsp" %> diff --git a/default-landing/LandingPage-isc2008.jsp b/default-landing/LandingPage-isc2008.jsp deleted file mode 100644 index 831b391..0000000 --- a/default-landing/LandingPage-isc2008.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<%! - int year = 2008; -%> - -<%@ include file="generic.jsp" %> diff --git a/default-landing/LandingPage-isc2009.jsp b/default-landing/LandingPage-isc2009.jsp deleted file mode 100644 index 2d8b76f..0000000 --- a/default-landing/LandingPage-isc2009.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<%! - int year = 2009; -%> - -<%@ include file="generic.jsp" %> diff --git a/default-landing/LandingPage-isc2010.jsp b/default-landing/LandingPage-isc2010.jsp deleted file mode 100644 index 79eb204..0000000 --- a/default-landing/LandingPage-isc2010.jsp +++ /dev/null @@ -1,5 +0,0 @@ -<%! - int year = 2010; -%> - -<%@ include file="generic.jsp" %> diff --git a/default-landing/LandingPage-ogc-def.jsp b/default-landing/LandingPage-ogc-def.jsp deleted file mode 100644 index 2349f3f..0000000 --- a/default-landing/LandingPage-ogc-def.jsp +++ /dev/null @@ -1,277 +0,0 @@ -<%@ page import="java.util.*" %> -<%! - String serviceTitle = "Open Geospatial Consortium definitions"; - String serviceName = "api/ogc-def"; - String title = "SISSVoc - OGC def"; - String description = "definitions maintained by Open Geospatial Consortium"; - String exampleLabel = "East"; - String exampleURI = "http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_DiscreteCoverageObservation"; - - String conceptSchemes = serviceName+"/conceptscheme"; - String conceptCollections = serviceName+"/collection"; - String concepts = serviceName+"/concept"; - String conceptResource = serviceName+"/resource"; - - String sparqlEndPoint = "http://services-test.auscope.org/openrdf-sesame/repositories/ogc-def"; - - String languageChoice = " "; - - //links - String related = "
    http://xmlns.com/foaf/0.1/
    http://www.w3.org/2004/02/skos/core
    http://www.w3.org/2002/07/owl "; - -%> - - - - - - <%=title%> - - - - - - - -
    -

    <%= serviceTitle %>

    - This service provides a SISSVoc interface to an RDF representation of <%=description%> -
    -
    - Queries -   -   -   -
    -
    - Concept whose labelmatches includes the text: -
    -
    - Description of: -
    -
    -
    - Result Options - Concepts: - narrowerTransitive - narrower - exact - broader - broaderTransitive -
    -
    -
    - Report result in - - Report result in - - Page size - -
    -
    - - - - - -
    Full Metadata No Yes
    -
    -
    -
    -
    - SPARQL end-point used by this service - <%= sparqlEndPoint %> -
    -
    - Related ontologies: - <%= related %> - - - - diff --git a/default-landing/LandingPage.jsp b/default-landing/LandingPage.jsp deleted file mode 100644 index 3c0ecac..0000000 --- a/default-landing/LandingPage.jsp +++ /dev/null @@ -1,314 +0,0 @@ -<%@ page import="java.util.*" %> -<%! - String serviceTitle = "Geologic Timescale"; - String serviceName = "sissvoc/isc2009"; - String title = "SISSVoc"; - String description = "The 2009 edition of the International Stratigraphic Chart"; - String exampleLabel = "Cambrian"; - String exampleURI = "http://resource.geosciml.org/classifier/ics/ischart/Furongian"; - - String conceptSchemes = serviceName+"/conceptscheme"; - String conceptCollections = serviceName+"/collection"; - String concepts = serviceName+"/concept"; - String conceptResource = serviceName+"/resource"; - - String sparqlEndPoint = "http://def.seegrid.csiro.au/sparql/isc2009"; - - String languageChoice = "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - ""; - - //links - String related = "" + - "
    2010 version" + - "
    2008 version" + - "
    2006 version" + - "
    2005 version" + - "
    2004 version" + - "
    http://def.seegrid.csiro.au/ontology/geotime/geologictimescale" + - "
    http://def.seegrid.csiro.au/ontology/geotime/gtrs" + - "
    http://def.seegrid.csiro.au/ontology/isotc211/sampling" + - "
    http://def.seegrid.csiro.au/ontology/isotc211/temporal" + - "
    http://def.seegrid.csiro.au/ontology/isotc211/spatial" + - "
    http://def.seegrid.csiro.au/ontology/isotc211/feature" + - "
    http://def.seegrid.csiro.au/ontology/isotc211/base" + - "
    http://www.opengis.net/def/geosparql/" + - "
    http://xmlns.com/foaf/0.1/" + - "
    http://www.w3.org/2004/02/skos/core" + - "
    http://www.w3.org/2002/07/owl" + - ""; - -%> - - - - - - <%=title%> - - - - - - - - -

    <%= serviceTitle %>

    - This service provides a SISSVoc interface to an OWL representation of <%=description%> -
    -
    - Queries -   -   -   -
    -
    - Concept whose labelmatches includes the text: -
    -
    - Description of: -
    -
    -
    - Result Options - Concepts: - narrowerTransitive - narrower - exact - broader - broaderTransitive -
    -
    -
    - Report result in - - Report result in - - Page size - -
    -
    - - - - - -
    Full Metadata No Yes
    -
    -
    -
    -
    -

    SPARQL end-point

    - <%= sparqlEndPoint %> -

    Related ontologies:

    - <%= related %> - - - - diff --git a/default-landing/generic.jsp b/default-landing/generic.jsp deleted file mode 100644 index d5fcdae..0000000 --- a/default-landing/generic.jsp +++ /dev/null @@ -1,321 +0,0 @@ -<%@ page import="java.util.*" %> -<%! - String repoName = "Geologic Timescale"; - String serviceName = "isc" + year; - String title = "SISSVoc"; - - String conceptSchemes = serviceName+"/conceptscheme"; - String conceptCollections = serviceName+"/collection"; - String concepts = serviceName+"/concept"; - String conceptResource = serviceName+"/resource"; - - String sparqlEndPoint = "http://services-test.auscope.org/openrdf-sesame/repositories/isc2009"; - - //links - String sissvoc3wiki = "https://www.seegrid.csiro.au/wiki/Siss/SISSvoc3Spec"; - String isochart = "http://stratigraphy.org"; - String isc2010 = "http://def.seegrid.csiro.au/ontology/geotime/isc-2009.ttl"; - String isc2009 = "http://def.seegrid.csiro.au/ontology/geotime/isc-2009.ttl"; - String isc2008 = "http://def.seegrid.csiro.au/ontology/geotime/isc-2008.ttl"; - String isc2006 = "http://def.seegrid.csiro.au/ontology/geotime/isc-2006.ttl"; - String isc2005 = "http://def.seegrid.csiro.au/ontology/geotime/isc-2005.ttl"; - String isc2004 = "http://def.seegrid.csiro.au/ontology/geotime/isc-2004.ttl"; - String isc = ""; -%> -<% - if(year == 2010) isc = isc2010; - else if(year == 2009) isc = isc2009; - else if(year == 2008) isc = isc2008; - else if(year == 2006) isc = isc2006; - else if(year == 2005) isc = isc2005; - else if(year == 2004) isc = isc2004; - %> - - - - - - <%=title%> - - - - - - -

    <%= repoName %>

    - This service provides a SISSVoc interface to an OWL representation of the <%=year%> edition of the International Stratigraphic Chart -
    -
    - Queries -   -   -   -
    -
    - Concept whose labelmatches includes the text: -
    -
    - Description of: -
    -
    -
    - Result Options - Concepts: - narrowerTransitive - narrower - exact - broader - broaderTransitive -
    -
    -
    - Report result in - - Report result in - - Page size - -
    -
    - - - - - -
    Full Metadata No Yes
    -
    -
    -
    -
    - SPARQL end-point: <%= sparqlEndPoint %> -
    -
    - Other versions of this vocabulary: <%if(year!=2010) {%> 2010<%}%> <%if(year!=2009) {%> 2009<%}%> <%if(year!=2008) {%>2008<%}%> <%if(year!=2006) {%>2006<%}%> <%if(year!=2005) {%>2005<%}%> <%if(year!=2004) {%>2004<%}%> -
    -
    - Ontologies used by this vocabulary are:
    - http://def.seegrid.csiro.au/ontology/geotime/geologictimescale
    - http://def.seegrid.csiro.au/ontology/geotime/gtrs
    - http://def.seegrid.csiro.au/ontology/isotc211/sampling
    - http://def.seegrid.csiro.au/ontology/isotc211/temporal
    - http://def.seegrid.csiro.au/ontology/isotc211/spatial
    - http://def.seegrid.csiro.au/ontology/isotc211/feature
    - http://def.seegrid.csiro.au/ontology/isotc211/base
    - http://www.opengis.net/def/geosparql/
    - http://xmlns.com/foaf/0.1/
    - http://www.w3.org/2004/02/skos/core
    - http://www.w3.org/2002/07/owl
    - - - - - - diff --git a/default-landing/index.html b/default-landing/index.html index 3219e98..6238e54 100644 --- a/default-landing/index.html +++ b/default-landing/index.html @@ -13,19 +13,17 @@

    Welcome to SISSVoc

    Powered by Elda

    -

    This service is deployed at CSIRO to support activities publishing RDF resources through Linked Data interfaces.

    +

    SISSVoc is a standardised interface (API) for querying, accessing and navigating SKOS-based vocabularies - concepts, collections and their relationships.

    -

    Built-in demonstrations - (all extensions of the generic template provided within SISSVoc Source) -

    +

    +SISSVoc provides web pages for human-readable views, and machine-readable resources for client applications (in RDF, JSON, and XML). SISSVoc is implemented using a Linked Data API façade over a SPARQL endpoint. This approach streamlines the configuration of content negotiation, styling, query construction and dispatching.

    -

    More information available on SISSVoc Wiki

    +

    More information available on sissvoc.info

    From 677410eb8da2f41359425af86badcab2f98947e2 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 10:24:05 +1000 Subject: [PATCH 07/19] adding packaging script --- build/package-with-elda-core.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100755 build/package-with-elda-core.sh diff --git a/build/package-with-elda-core.sh b/build/package-with-elda-core.sh new file mode 100755 index 0000000..a4b5953 --- /dev/null +++ b/build/package-with-elda-core.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -x #echo on +git clone https://github.com/epimorphics/elda.git +cd elda +git checkout tags/elda-1.2.35 +mvn package +cd .. +mkdir sissvoc-pkg +cd sissvoc-pkg +cp -rf ../elda/elda-common/target/elda-common/* . +cp -rf ../elda/elda-assets/target/elda-assets/xslt . +cp -rf ../../resources/ ../../default-landing/ . +sed -i "s/\/etc\/elda\/conf.d\/{APP}\/\*.ttl<\/param-value>/resources\/{APP}\/config\/\*.ttl<\/param-value>/g" WEB-INF/web.xml +jar -cvf sissvoc.war * +mv sissvoc.war .. From bd6cfef540f6650bd1f91852681cba695cbb1a15 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 12:02:44 +1000 Subject: [PATCH 08/19] adding scripts to generate config --- build/SISSvoc3-ELDAConfig-template.ttl | 595 +++++++++++++++++++++++++ build/config.properties | 12 + build/gen_sissvoc3_config.py | 29 ++ 3 files changed, 636 insertions(+) create mode 100644 build/SISSvoc3-ELDAConfig-template.ttl create mode 100644 build/config.properties create mode 100644 build/gen_sissvoc3_config.py diff --git a/build/SISSvoc3-ELDAConfig-template.ttl b/build/SISSvoc3-ELDAConfig-template.ttl new file mode 100644 index 0000000..64565e0 --- /dev/null +++ b/build/SISSvoc3-ELDAConfig-template.ttl @@ -0,0 +1,595 @@ +############################################################## +# +# This is the template LDA configuration for a SISSvoc service +# Reference - +# +# Copyright (c) CSIRO 2012,2014 +# Re-use permitted according to Creative Commons Attribution 3.0 Australia (CC BY 3.0) +# see +# +# Contact: Simon J D Cox +# CSIRO Earth Science and Resource Engineering +# PO Box 1130 +# Bentley +# WA 6102 +# Australia +# simon.cox@csiro.au +# +# The configuration must be customized for each vocabulary +# Sections that must be customized are bracketted by rows of hashes similar to the line below which ends this comment block +############################################################## + +## Common prefixes - don't change these. +@prefix api: . +@prefix dc: . +@prefix dcterms: . +@prefix elda: . +@prefix foaf: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix skos: . +@prefix svoc: . +@prefix xsd: . + +## TODO: Add your own namespaces +## %%NAMESPACES%% + + +############################################################## +## TODO: deployer to make changes here +## change "test" to give this API a name to distinguish it from any other API hosted by the same LDA service + +svoc:%SVC_ID% a api:API + +## it would be great if this could be made to help somehow, but ELDA does not currently appear to implement it +# ; api:base "http://def.seegrid.csiro.au/sissvoc%SVC_PREFIX%" + +## end of TODO: +############################################################## + +# generic SISSvoc stuff + ; api:maxPageSize "50" + ; api:defaultPageSize "10" + ; api:defaultFormatter [ + a api:XsltFormatter + ; api:name "html" + ; api:mimeType "text/html" +# the following property enables the stylesheet to work better, including linking the item properties to their definitions +# remove the ones you don't want + ; elda:metadataOptions "bindings,versions,execution,formats" +# bindings - causes the inclusion of shortname to URI term bindings. +# versions - causes the inclusion of links for configured alternate views (as in api:viewer) in the result page metadata. +# execution - causes the inclusion of details about the LDA implementation and the executed sparql queries that produced the result. +# formats - causes the inclusion of links to build-in and configured format versions of the rendered page (.html, .ttl, .json etc. variants). + +############################################################## +## +## TODO: deployer to make changes here +## change "ashtml.xsl" to the path for the result stylesheet for this API + + ; api:stylesheet "resources/default/transform/ashtml-sissvoc.xsl" + ] + +## end of TODO: +############################################################## + + ; api:endpoint + svoc:LandingPage, + svoc:URIEndpoint , + svoc:conceptSchemeEndpoint , + svoc:conceptCollectionEndpoint , + svoc:conceptListEndpoint , + svoc:conceptLabelEndpoint , + svoc:conceptLabelContainsEndpoint , + svoc:broaderThanURIEndpoint , + svoc:narrowerThanURIEndpoint , + svoc:broaderTransitiveThanURIEndpoint , + svoc:narrowerTransitiveThanURIEndpoint , + svoc:broaderLabelEndpoint , + svoc:narrowerLabelEndpoint , + svoc:broaderTransitiveLabelEndpoint , + svoc:narrowerTransitiveLabelEndpoint + ; api:defaultViewer api:describeViewer + ; elda:enableETags true + +############################################################## +## +## TODO: deployer to make changes here +## replace %DEPLOYPATH% to be the actual deployed path on the webserver - style sheets are not currently functional for relative paths +## e.g. /sissvoc + + ; api:variable [api:name "webapp"; api:value "%DEPLOYPATH%"] + ; api:variable + [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/resources/default/"] + , [api:name "myResourceDirBase"; api:value "{webapp}/resources/default/"] + , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] + , [api:name "serviceTitle"; api:value "%SERVICE_TITLE%"] + , [api:name "serviceAuthor"; api:value "%SERVICE_AUTHOR%"] + , [api:name "serviceAuthorEmail"; api:value "%SERVICE_AUTHOR_EMAIL%"] + , [api:name "serviceHomePage"; api:value "%SERVICE_HOMEPAGE%"] + , [api:name "configID"; api:value "$Header$"] + + +## set title of service + + ; rdfs:label "%SERVICE_LABEL%"@en + +# document the provenance of this vocabulary with links to the source + + ; foaf:primaryTopic + ; rdfs:seeAlso + +# set the SPARQL endpoint + + ; api:sparqlEndpoint <%SPARQL_ENDPOINT%> + . + +## end of TODO: +############################################################## + +############################################################## +## +## TODO: deployer to make changes here +## SPARQL 1.1 endpoints ONLY! +## remove this if the endpoint does not support SPARQL 1.1 + +<%SPARQL_ENDPOINT%> elda:supportsNestedSelect true . + +## end of TODO: +############################################################## + +#VIEWERS + +svoc:viewerNone a api:Viewer + ; api:name "none" + . + +svoc:basicConceptSchemeViewer a api:Viewer + ; api:name "conceptScheme" + ; api:property rdfs:label, skos:hasTopConcept + . + +svoc:basicCollectionViewer a api:Viewer + ; api:name "collection" + ; api:property rdfs:label, skos:member + . + +svoc:basicConceptViewer a api:Viewer + ; api:name "concept" + ; api:property skos:prefLabel + . + + +#ENDPOINTS + +## 000.000. This is the metadata identifier for the vocabulary content. +svoc:LandingPage a api:ItemEndpoint + ; rdfs:comment "Landing Page for this resource" + ; api:uriTemplate "%SVC_PREFIX%" + ; api:exampleRequestPath "%SVC_PREFIX%" + ; api:itemTemplate "http://resource.geosciml.org/classifierscheme/cgi/201202/faultmovementtype" + ; api:defaultViewer api:labelledDescribeViewer + ; api:viewer api:basicViewer,api:labelledDescribeViewer + . + + +## 0. This is the basic "tell me what you know about the resource identified by this URI" request. +svoc:URIEndpoint a api:ItemEndpoint + ; rdfs:comment "Describe this resource" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## set value of uri= to a URI from the vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/resource?uri={URI}" + ; api:exampleRequestPath "%SVC_PREFIX%/resource?uri=http://resource.geosciml.org/classifier/ics/ischart/Furongian" + +## end of TODO: +############################################################## + ; api:itemTemplate "{URI}" + ; api:defaultViewer api:labelledDescribeViewer + ; api:viewer api:basicViewer,api:describeViewer,api:labelledDescribeViewer +# ; api:viewer svoc:labelledDescribeConceptViewer + . + +## 1. List of concept schemes - basic-view +svoc:conceptSchemeEndpoint a api:ListEndpoint + ; rdfs:comment "List all concept-schemes" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name + + ; api:uriTemplate "%SVC_PREFIX%/conceptscheme" + ; api:exampleRequestPath "%SVC_PREFIX%/conceptscheme" + +## end of TODO: +############################################################## + ; api:selector [ api:where " ?item a skos:ConceptScheme . " ] + ; api:defaultViewer svoc:basicConceptSchemeViewer + ; api:viewer api:basicViewer,svoc:basicConceptSchemeViewer + . + +## 2. List of concept collections - basic-view +svoc:conceptCollectionEndpoint a api:ListEndpoint + ; rdfs:comment "List all concept collections" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name + + ; api:uriTemplate "%SVC_PREFIX%/collection" + ; api:exampleRequestPath "%SVC_PREFIX%/collection" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + "{ ?item a skos:OrderedCollection } UNION { ?item a skos:Collection }" + ] + ; api:defaultViewer svoc:basicCollectionViewer + ; api:viewer api:basicViewer,svoc:basicCollectionViewer + . + +## 3. List of concepts - basic-view +svoc:conceptListEndpoint a api:ListEndpoint + ; rdfs:comment "List all concepts" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name + + ; api:uriTemplate "%SVC_PREFIX%/concept" + ; api:exampleRequestPath "%SVC_PREFIX%/concept" + +## end of TODO: +############################################################## + ; api:selector [ + api:where " ?item a skos:Concept . " + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 4. List of concepts where a label matches the text +svoc:conceptLabelEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts where a skos label property has exact match to text" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of anyLabel= to a label for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept?anylabel={text}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept?anylabel=Cambrian" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + """ { ?item skos:prefLabel ?l } + UNION + { ?item skos:altLabel ?l } + UNION + { ?item rdfs:label ?l } + FILTER ( str(?l)=?text ) """ + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 5. List of concepts where a label contains the text, any language, case-insensitive +svoc:conceptLabelContainsEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts where a skos label property contains this text, case-insensitive" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of labelcontains= to a word in a label for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept?labelcontains={text}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept?labelcontains=cambrian" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + """ { ?item skos:prefLabel ?l } + UNION + { ?item skos:altLabel ?l } + UNION + { ?item rdfs:label ?l } + FILTER regex( str(?l) , ?text , 'i' ) """ + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 6. List of concepts broader than the one identified by this URI +svoc:broaderThanURIEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts broader than the one identified by this URI" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of uri= to a uri for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/broader?uri={baseConcept}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/broader?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" + +## end of TODO: +############################################################## + ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] + ; api:selector [ + api:where " ?baseConcept skos:broader ?item . " + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 7. List of concepts narrower than the one identified by this URI +svoc:narrowerThanURIEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts narrower than the one identified by this URI" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of uri= to a uri for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/narrower?uri={baseConcept}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/narrower?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" + +## end of TODO: +############################################################## + ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] + ; api:selector [ + api:where " ?baseConcept skos:narrower ?item . " + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 8. List of concepts broaderTransitive than the one identified by this URI +svoc:broaderTransitiveThanURIEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts broaderTransitive than the one identified by this URI" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of uri= to a uri for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/broaderTransitive?uri={baseConcept}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/broaderTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" + +## end of TODO: +############################################################## + ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] + ; api:selector [ + api:where " ?baseConcept skos:broaderTransitive ?item . " + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 9. List of concepts narrowerTransitive than the one identified by this URI +svoc:narrowerTransitiveThanURIEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts narrowerTransitive than the one identified by this URI" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of uri= to a uri for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/narrowerTransitive?uri={baseConcept}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/narrowerTransitive?uri=http://resource.geosciml.org/classifier/ics/ischart/Cambrian" + +## end of TODO: +############################################################## + ; api:variable [ api:name "baseConcept"; api:type rdfs:Resource ] + ; api:selector [ + api:where " ?baseConcept skos:narrowerTransitive ?item . " + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 10. List of concepts broader than the one where a label matches the text +svoc:broaderLabelEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts broader than any concepts with this exact label" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of anyLabel= to a label for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/broader?anylabel={text}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/broader?anylabel=Cambrian" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + """ ?i0 skos:broader ?item . + { ?i0 rdfs:label ?l } + UNION + { ?i0 skos:prefLabel ?l } + UNION + { ?i0 skos:altLabel ?l } + FILTER ( str(?l)=?text ) """ + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 11. List of concepts narrower than the one where a label matches the text +svoc:narrowerLabelEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts narrower than any concepts with this exact label" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of anyLabel= to a label for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/narrower?anylabel={text}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/narrower?anylabel=Cambrian" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + """ ?i0 skos:narrower ?item . + { ?i0 rdfs:label ?l } + UNION + { ?i0 skos:prefLabel ?l } + UNION + { ?i0 skos:altLabel ?l } + FILTER ( str(?l)=?text ) """ + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 12. List of concepts broaderTransitive than the one where a label matches the text +svoc:broaderTransitiveLabelEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts broaderTransitive than any concepts with this exact label" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of anyLabel= to a label for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/broaderTransitive?anylabel={text}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/broaderTransitive?anylabel=Cambrian" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + """ ?i0 skos:broaderTransitive ?item . + { ?i0 rdfs:label ?l } + UNION + { ?i0 skos:prefLabel ?l } + UNION + { ?i0 skos:altLabel ?l } + FILTER ( str(?l)=?text ) """ + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +## 13. List of concepts narrowerTransitive than the one where a label matches the text +svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint + ; rdfs:comment "List concepts narrowerTransitive than any concepts with this exact label" +############################################################## +## +## TODO: deployer to make changes here +## change "test" to vocab name +## change value of anyLabel= to a label for a concept in this vocabulary + + ; api:uriTemplate "%SVC_PREFIX%/concept/narrowerTransitive?anylabel={text}" + ; api:exampleRequestPath "%SVC_PREFIX%/concept/narrowerTransitive?anylabel=Cambrian" + +## end of TODO: +############################################################## + ; api:selector [ + api:where + """ ?i0 skos:narrowerTransitive ?item . + { ?i0 rdfs:label ?l } + UNION + { ?i0 skos:prefLabel ?l } + UNION + { ?i0 skos:altLabel ?l } + FILTER ( str(?l)=?text ) """ + ] + ; api:defaultViewer svoc:basicConceptViewer + ; api:viewer api:basicViewer,svoc:basicConceptViewer + . + +############################################################## +## +## TODO: deployer to make changes here +## if the vocabulary contains 'skos:notation' values and these are available for queries, +## change "gts:EraCode" to the type used for notation values in this vocabulary + +### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? + +skos:notation rdfs:range gts:EraCode . +gts:EraCode a rdfs:DataType . + +## end of TODO: +############################################################## + + +# +# VOCABULARY +# +# The vocabulary declarations say which properties can be used in queries +# and by what short name those properties are known. If property P with short +# name Q has range type T, then a query parameters Q=V is translated to +# a WHERE clause fragment ?item P V' where V' is a literal which is V +# with type T. This is especially important for numbers and booleans. +# + +## RDF +rdf:type + api:label "type" ; + rdfs:range rdfs:Class . + +## RDFS +rdfs:label + api:label "label" ; + api:structured "true"^^xsd:boolean; + a rdf:Property . + +rdfs:comment + api:label "comment" ; + api:structured "true"^^xsd:boolean; + a rdf:Property . + +## SKOS +skos:Concept + api:label "Concept" ; + a rdfs:Class . + +skos:ConceptScheme + api:label "ConceptScheme" ; + a rdfs:Class . + +skos:topConceptOf + api:label "topConceptOf" ; + rdfs:range skos:ConceptScheme . + +skos:hasTopConcept + api:label "hasTopConcept" ; + api:multiValued true ; + rdfs:range skos:Concept . + +skos:inScheme + api:label "inScheme" ; + rdfs:domain skos:Concept ; + rdfs:range skos:ConceptScheme . + +skos:member + api:label "member" ; + api:multiValued true ; + rdfs:domain skos:Collection ; + rdfs:range skos:Concept . + +skos:prefLabel + api:label "prefLabel" ; + api:structured "true"^^xsd:boolean; + a rdf:Property . + +skos:altLabel + api:label "altLabel" ; + api:multiValued true ; + api:structured "true"^^xsd:boolean; + a rdf:Property . + +skos:notation + a owl:DatatypeProperty; + api:label "notation" . + + diff --git a/build/config.properties b/build/config.properties new file mode 100644 index 0000000..aad65cf --- /dev/null +++ b/build/config.properties @@ -0,0 +1,12 @@ +[settings] +DEPLOYPATH=/sissvoc +SERVICE_TITLE=SISSVoc Test +SERVICE_AUTHOR=Bot +SERVICE_AUTHOR_EMAIL=email@none.org +SERVICE_HOMEPAGE=http://sissvoc.info +SERVICE_LABEL=SISSVoc Test service +SPARQL_ENDPOINT=http://www.sissvoc.info/services/pizza-skos/sparql +SVC_ID=test +SVC_PREFIX=/test +NAMESPACES= + diff --git a/build/gen_sissvoc3_config.py b/build/gen_sissvoc3_config.py new file mode 100644 index 0000000..fe6addf --- /dev/null +++ b/build/gen_sissvoc3_config.py @@ -0,0 +1,29 @@ +import ConfigParser,os,sys +Config = ConfigParser.ConfigParser() + + +if(len(sys.argv) <= 1): + print "\n\tusage: python gen_sissvoc3_config.py \n" + +print "Initialising..." + +Config.read('config.properties') +filename='SISSvoc3-ELDAConfig-template.ttl' +infile = open(filename) + +outfilename = sys.argv[1] +outfile = open(outfilename, 'w') + +print "Emitting to file: ", outfilename + +for line in infile: + for key in Config.options('settings'): + textToSearch = '%' + key.upper() + '%' + textToReplace = Config.get('settings',key) + line = line.replace(textToSearch, textToReplace) + + outfile.write(line) + +infile.close() +outfile.close() +print "Done!" From 297e770d05dddc63f6cdef8e309f87e880f64805 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 12:42:52 +1000 Subject: [PATCH 09/19] adding more args in the python script --- build/README | 22 ++++++++++++++++++++++ build/gen_sissvoc3_config.py | 20 ++++++++++++++++---- 2 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 build/README diff --git a/build/README b/build/README new file mode 100644 index 0000000..db384c1 --- /dev/null +++ b/build/README @@ -0,0 +1,22 @@ +This directory contains some build utilities. + +I. To generate a SISSVoc ELDA config +==================================== + +0. Pre-requisites +- python 2+ with ConfigParser + +1. Edit the config.properties file +- add specific details about your SISSVoc endpoint configuration e.g. name, sparql endpoint, etc. + +2. Run the generate config script +- this will generate a file based on the values entered into config.properties +- usage: python gen_sissvoc3_config.py +- e.g: $ python gen_sissvoc3_config.py generated.ttl + +- else if you want to point to a different config prop file use this: + $ python gen_sissvoc3_config.py --config=pizza-config.properties pizza.ttl + +3. Put this config file in the /resources dir of the sissvoc package + +4. Point the SISSVoc/ELDA deployment to this config script diff --git a/build/gen_sissvoc3_config.py b/build/gen_sissvoc3_config.py index fe6addf..c6b98a1 100644 --- a/build/gen_sissvoc3_config.py +++ b/build/gen_sissvoc3_config.py @@ -1,17 +1,29 @@ import ConfigParser,os,sys Config = ConfigParser.ConfigParser() +import argparse + +parser = argparse.ArgumentParser(description='Process some integers.') +parser.add_argument('--config', help='config file (default is config.properties)', type=str, default='config.properties') +parser.add_argument('outputfile', help='output file', type=str) + +args = parser.parse_args() + -if(len(sys.argv) <= 1): - print "\n\tusage: python gen_sissvoc3_config.py \n" print "Initialising..." -Config.read('config.properties') +if args.config: + configfile = args.config +else: + configfile = 'config.properties' + + +Config.read(configfile) filename='SISSvoc3-ELDAConfig-template.ttl' infile = open(filename) -outfilename = sys.argv[1] +outfilename = args.outputfile outfile = open(outfilename, 'w') print "Emitting to file: ", outfilename From 0f9cb58b90d61608bbcddf849a3100c84c1e6f7e Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 13:41:38 +1000 Subject: [PATCH 10/19] fixing base lda xslt to lda-assets --- build/SISSvoc3-ELDAConfig-template.ttl | 6 ------ resources/default/transform/ashtml-sissvoc.xsl | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/build/SISSvoc3-ELDAConfig-template.ttl b/build/SISSvoc3-ELDAConfig-template.ttl index 64565e0..95cc393 100644 --- a/build/SISSvoc3-ELDAConfig-template.ttl +++ b/build/SISSvoc3-ELDAConfig-template.ttl @@ -511,12 +511,6 @@ svoc:narrowerTransitiveLabelEndpoint a api:ListEndpoint ## ## TODO: deployer to make changes here ## if the vocabulary contains 'skos:notation' values and these are available for queries, -## change "gts:EraCode" to the type used for notation values in this vocabulary - -### PROBLEM WITH gts:EraCode - fix later - maybe ask about how to set notation datatypes on SKOS list? - -skos:notation rdfs:range gts:EraCode . -gts:EraCode a rdfs:DataType . ## end of TODO: ############################################################## diff --git a/resources/default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl index 84ee685..4cd5137 100644 --- a/resources/default/transform/ashtml-sissvoc.xsl +++ b/resources/default/transform/ashtml-sissvoc.xsl @@ -1,7 +1,7 @@ - + Date: Tue, 30 Sep 2014 14:15:31 +1000 Subject: [PATCH 11/19] Trying out a different xslt for sissvoc --- .../default/transform/ashtml-sissvoc.xsl | 4548 ++++++++++------- 1 file changed, 2615 insertions(+), 1933 deletions(-) diff --git a/resources/default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl index 4cd5137..f1d259b 100644 --- a/resources/default/transform/ashtml-sissvoc.xsl +++ b/resources/default/transform/ashtml-sissvoc.xsl @@ -1,461 +1,71 @@ - - - - - - -/ - - - - - - -Test Title -Test Author -test.author@csiro.au -http://test.homepage/here - -Please Enable SVN $Header$ on your config file. - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - -
    - - - Linked Data - Object Viewer - - - - - - - - - - - - - - - - - - - - - - - - [if lt IE 9]> - <link rel="stylesheet" href="css/ie.css" type="text/css"></link> - <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script> - <![endif] - - - - - - - - - - - - - - - - -
    -

    -
    -
    - - -
    - -

    DoubleClick HERE to stay onsite
    - Contact
    - Powered by - - an implementation of the - Linked Data API
    - Icons by Axialis Team -

    - - + + + + / + + + + + Test Title + Test Author + test.author@csiro.au + http://test.homepage/here + + + + + + + + -
    -
    - - -
    - - -
    -
    - - -
    - - query col - - 1 - 2 - - -

    - - Viewer - Selection - -

    - - - - - - - - - - - - - - - - - -

    - This is the SPARQL query that was generated to - - - pull together the data that is provided about - - each item. - the selected item. - - - identify the items to be shown in the page. - - - You can modify it here and re-run the query but you may find more options at the - endpoint's page - . -

    - - -

    - -

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - v - - - - -
    -
      - - -
    • - - first - - - last - - -
    • -
      -
    -
    -
    - - -

    - -

    -
    - - - -
    -
    - - -

    Search Results

    - -
    - - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - - - - -
    -

    On This Page

    - - Links to the items within this page, and to the previous and/or next pages of results. - -
      - -
    • - -
    • -
      - -
    • - - - -
    • -
      - -
    • - -
    • -
      -
    -
    -
    -
    - - + + + + + + + + + + + + + + + + + + +
    + + + +
    + + +
    + + Search Results + + +

    Find Concepts

    - Use this form to find concepts by 1) having the exact same text as input 2) having words containing the text input. + Use this form to find concepts by 1) having the exact same text as input 2) having words containing the text input. - + -
    +
    Exact label
    @@ -472,1612 +82,2684 @@
    - - - - - - - - - - - - -
  • - - - - - - - - -
  • -
    - - - - - - - - - - - - - - - / - - - - - - - - - - - - - - item - - - - - - - - - - - - - - - -
    -

    Filter

    - - These are the filters currently being used to limit the search results. Click on the remove filter icon to remove the filter. - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + [if lt IE 9]> + <link rel="stylesheet" href=" + + css/ie.css" type="text/css"></link> + <![endif] + + + + + + + + + - - - - - - - - - - - - + + [if lt IE 9]> + <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> + <![endif] + + + + + + + + + + + + - + + + + + - - + + - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    View

    - - - Choose what information you want to view about each item. - There are some pre-defined views, but starred properties are always present no matter what the view. - You can star properties by clicking on the - star this property - icon. The currently starred icons have a - unstar this property - icon; clicking on it will unstar the property. + + + + + + - -

    - - - - - - - - - reset - -

    -
    -
      - -
    • - - - -
    • -
      -
    -
      - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - - - - - + + + + - - + + + + + + + + - + + + - - - - - - -
  • - - - - - - - - - , - - - - - - unstar this property - - + + + + + + - - - + true + false - - - - + + + -
  • - - - - - - -
    - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - , - - - - - - star this property - - - -
  • -
    -
    - - -
    -

    Items per page

    - - Choose how many items to view on each page. The more items you view, the longer the page will take to load. - -
      -
    • - - - -
    • -
    • - - - -
    • -
    • - - - -
    • -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Sort by

    - - - This list shows the properties that you can sort by. Click on - sort in ascending order - to sort in ascending order and - sort in descending order - to sort in descending order. The properties that you're currently sorting by are shown at the top of the list. Click on - remove this sort - to remove a sort and - sort in descending order - or - sort in ascending order - to reverse the current sort order. - Click on the - remove all sorting - icon to remove all the sorting. - Note that sorting can significantly slow down the loading of the page. - - - -

    - - - - - - - - - reset + + + + + + true + false + + + +

    +
    +

    + + +

    +
    + + + + + +
    + + +
    +
    + +
    + query col21 +

    + + Viewer + Selection + +

    + + + + + + + + + + + + + + + + + + + + + +

    + This is the SPARQL query that was generated to + + + pull together the data that is provided about - - - - - - - - - - - sort in ascending order - - - - - - - - - - - - - sort in descending order - - - - - - - - - - - - - sort in descending order - - - + each item. + the selected item. - + + identify the items to be shown in the page. + + You can modify it here and re-run the query but you may find more options at the + endpoint's page + . +

    + + +

    + +

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + - - - - - - - - - - - - - - - - -
    -
    - - - - - - - + + + + + + + + + + + + - - + + - + + + - - - - - - -
  • - - - - - - - - - , + , + + + v + + + +
    + +
    + + +

    + +

    +
    + + +
    +
    + + +
    + +

    Show Search Form

    +
    +

    Search Results

    +
    + + + + +
    + + + +
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Map

    + + + This map shows the items that are listed on this page. + There might be other items that match your query that aren't shown on this map. + + If you want to search in a different area, move to that area and click the + search + icon. + + + + + + +
    +
    +
    +
    + +
    +
    + + + +
    +
    + + + + + + + + +
    +

    Graphs

    + + These graphs summarise the values of the numeric properties of these items. + + + +
    +
    +
    +
    + + + + + + . + + + + + + + + + + + + + + + + + + + + + - - + ! + , + + + + + + + + + + + + + + + + + + + 10 + 20 + + + + + + + 0 - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + , + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - sort in ascending order - sort in descending order + + + + + + + + + + + - + + + + , + + + + + + + + + + + +
    +

    On This Page

    + + Links to the items within this page, and to the previous and/or next pages of results. + +
    +
    + + + + + + + +
    +

    Browse

    + + Links to further information. + + +
    +
    +
    + + + + + +
  • - - sort in ascending order + + + + - sort in descending order + + + - - +
  • +
    + + + + - - + + + + + + + + + / + + + + + + - - - + + + + + + item + - - - - - - - - - - - - - - - - - - - . + + + + + + + + + + + +
    +

    Filter

    + + These are the filters currently being used to limit the search results. Click on the remove filter icon to remove the filter. + + + +
    +
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - , - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + area of map + + + + remove filter + + + + + + + + + + area on map + + + + + + + + + + + + + + + + remove filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    View

    + + + Choose what information you want to view about each item. + There are some pre-defined views, but starred properties are always present no matter what the view. + You can star properties by clicking on the + star this property + icon. The currently starred icons have a + unstar this property + icon; clicking on it will unstar the property. + +

    + + + reset + +

    +
    +
      + +
    • + + + +
    • +
      +
    +
      + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + + + + + + + -
  • - - sort in ascending order - - - - - - - - - - , - - - - - - - - sort in descending order + + + + + +
  • + + , + unstar this property - - - + + + + + + + + + + +
  • - -
    - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
      - - - - -
    • + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    • + + , + star this property + + + +
    • +
      +
      + +
      +

      Items per page

      + + Choose how many items to view on each page. The more items you view, the longer the page will take to load. + +
        +
      • + + + +
      • +
      • + + + +
      • +
      • + + + +
      - -
      - - - + + + + - « - + + + + + + + + + + + - +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Sort by

      + + + This list shows the properties that you can sort by. Click on + sort in ascending order + to sort in ascending order and + sort in descending order + to sort in descending order. The properties that you're currently sorting by are shown at the top of the list. Click on + remove this sort + to remove a sort and + sort in descending order + or + sort in ascending order + to reverse the current sort order. + Click on the + remove all sorting + icon to remove all the sorting. + Note that sorting can significantly slow down the loading of the page. + + + +

      + + + reset + +

      +
      +
        + + + + + proximity to centre of map + custom sort + + +
      • + + remove this sort + + + + + + + sort in ascending order + + + + + + + sort in descending order + + + + + + + sort in descending order + + + + +
      • +
        + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + + + + + + + + + + + + + + + +
    • + + , + remove this sort + + + , + sort in ascending ordersort in descending order + + + sort in ascending order + + + sort in descending order + + + + + + + + + + + + + + +
    • + + + + + + + +
      + + + + + + + + + + + + . + + + + + + - - » + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + , + + + + + +
    • + + sort in ascending order + + + ,- + sort in descending order + + + + + +
    • +
      +
      + + + + . + + + + + + + + + - - + + + + + - default + + + - - - - - - - - - - - - - - - - -
      -

      -

      -
      -
      - - - -
      -
      - - - - - - - -
      -

      No results

      + + + + + + +
      +
        + + + + +
      • + +
      • +
        +
      - - -
      - - -
      - - - -
      -
      - - - - - - - - - -
    • + + + + + + « + . + + + + . + » + + + + + + + + + + + + + + + + + + + default + + - - - - - - + + + + - + + + -
    • -
      - - - -
      -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - + + +
      +

      Show Search Form

      +

      + +

      +

      + + + +

      +
      + +
      + + + +
      +
      + - - - + + - - + + + + + + last + + + + + + + + + + + + + + + + + + + + + + + + + + + + + last + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      + +
      +

      No results

      +
      +
      + + + +
      + + + +
      +
      + + + + + + +
    • + + + + + + + + + + +
    • +
      + + +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + + + + + + + + + + + +
      +
      + +
      + + + + + + + + + / + + + + + + + + +
      + + + +
      + + + + + + + + + + + - - - - + + 4 - + 2 - - - - - -
      -
      - - - - - - - - - - - - / - + + + + + + + + + + + 32 + + + + - + + + 2 + + + + + + + + - - - - - - - - - - last + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - last - - - - - - - - + + + + + + . - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - help -

      -
      -
      - - - - - - - - - - - - - - - - - - - - - + + + + + + + +
      + help +

      + +

      +
      +
      + + + + + + - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + false + + + + + + + + - - - - - true - - - false - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + - - - / - - / - - - - - + + - + + + + + + + - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - , - - - - - - unstar this property - - - - - + + + + + + + + + + + + + + + + , + + + - - + + - - - , - - - - - - star this property - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + , + - - - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - remove maximum value filter - - - - - - - - - - - - - - - - less than {$value} - - - less than {$value} - - - - - - - - + + + unstar this property + + + + + , + star this property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + remove filter + + + + + - + - - + - - more like this - - - - - - - - - - - - - - remove minimum value filter - - - - - - - - - - - - - - - - more than {$value} - - - more than {$value} - - - - - - - - - - + + + - + - - + - - more like this - - - - + + + + + + remove maximum value filter + + + + + + + + less than {$value} + + + less than {$value} + + + + + + + + more like this + + + + + + remove minimum value filter + + + + + + + + more than {$value} + + + more than {$value} + + + + + + + + + + more like this + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + original + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + - - - - - - - - - outlink - - - - - - - - - - - - - - - - - original - - - + - - - - - - - - - - - - - - . + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + . + + + + + + + + + + + + + last + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      +
      + + + + last - + - - - - - - - - - - - - - - - - -
      + + + + - - - - - - - - - last - - - - - - - - - - - -
      -
      - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + exactly: + + + + + + +
      +
      + or + between: + + + + + + +
      + and + + + + + + +
      + + + + + + + +
      +
      + + + + date + 10 + YYYY-MM-DD + [0-9]{4}-[0-9]{2}-[0-9]{2} + + + time + 8 + hh:mm:ss + [0-9]{2}:[0-9]{2}:[0-9]{2} + + + datetime + 19 + YYYY-MM-DDThh:mm:ss + [0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2} + + + number + 7 + + + + + + From 334e923fd1fbacfbcf4fef1df3e9df0ddc460938 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 14:24:10 +1000 Subject: [PATCH 12/19] Adding resourcepath and resourceendpoint in default template --- build/SISSvoc3-ELDAConfig-template.ttl | 2 ++ resources/default/config/SISSvoc3-ELDAConfig-template.ttl | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build/SISSvoc3-ELDAConfig-template.ttl b/build/SISSvoc3-ELDAConfig-template.ttl index 95cc393..97cd0b8 100644 --- a/build/SISSvoc3-ELDAConfig-template.ttl +++ b/build/SISSvoc3-ELDAConfig-template.ttl @@ -104,6 +104,8 @@ svoc:%SVC_ID% a api:API [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/resources/default/"] , [api:name "myResourceDirBase"; api:value "{webapp}/resources/default/"] , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] + , [api:name "resourcePath"; api:value "{webapp}%SVC_PREFIX%/resource"] + , [api:name "resourceEndPoint"; api:value "{webapp}%SVC_PREFIX%/resource"] , [api:name "serviceTitle"; api:value "%SERVICE_TITLE%"] , [api:name "serviceAuthor"; api:value "%SERVICE_AUTHOR%"] , [api:name "serviceAuthorEmail"; api:value "%SERVICE_AUTHOR_EMAIL%"] diff --git a/resources/default/config/SISSvoc3-ELDAConfig-template.ttl b/resources/default/config/SISSvoc3-ELDAConfig-template.ttl index b237d57..725279d 100644 --- a/resources/default/config/SISSvoc3-ELDAConfig-template.ttl +++ b/resources/default/config/SISSvoc3-ELDAConfig-template.ttl @@ -123,6 +123,8 @@ svoc:test a api:API [api:name "SISSDefaultResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] , [api:name "myResourceDirBase"; api:value "{webapp}/lda-assets/resources/siss-default/"] , [api:name "_resourceRoot"; api:value "{webapp}/lda-assets/"] + , [api:name "resourcePath"; api:value "{webapp}%SVC_PREFIX%/resource"] + , [api:name "resourceEndPoint"; api:value "{webapp}%SVC_PREFIX%/resource"] , [api:name "serviceTitle"; api:value "SISSvoc Test Service"] , [api:name "serviceAuthor"; api:value "Simon Cox"] , [api:name "serviceAuthorEmail"; api:value "Simon.Cox@csiro.au"] From 956ceb4df251596a61fa03cff178cec9dce3b3b8 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 14:34:51 +1000 Subject: [PATCH 13/19] Reverting to SISSVoc v3.4 xslt but changing one line. --- .../default/transform/ashtml-sissvoc.xsl | 4594 +++++++---------- 1 file changed, 1957 insertions(+), 2637 deletions(-) diff --git a/resources/default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl index f1d259b..4ed46a8 100644 --- a/resources/default/transform/ashtml-sissvoc.xsl +++ b/resources/default/transform/ashtml-sissvoc.xsl @@ -1,71 +1,463 @@ - - - - / - - - - - Test Title - Test Author - test.author@csiro.au - http://test.homepage/here - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - - - -
      - - -
      - - Search Results - + + + + + + +/ + + + + + + +Test Title +Test Author +test.author@csiro.au +http://test.homepage/here + +Please Enable SVN $Header$ on your config file. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + +
      + + + Linked Data - Object Viewer + + + + + + + + + + + + + + + + + + + + + + + + + + [if lt IE 9]> + <link rel="stylesheet" href="css/ie.css" type="text/css"></link> + <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script> + <![endif] + + + + + + + + + + + + + + + + +
      +

      +
      +
      + + + + + + +
      + + +
      +
      + + +
      + + query col + + 1 + 2 + + +

      + + Viewer + Selection + +

      + + + + + + + + + + + + + + + + + +

      + This is the SPARQL query that was generated to + + + pull together the data that is provided about + + each item. + the selected item. + + + identify the items to be shown in the page. + + + You can modify it here and re-run the query but you may find more options at the + endpoint's page + . +

      +
      + +

      + +

      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + v + + + + +
      +
        + + +
      • + + first + + + last + + +
      • +
        +
      +
      +
      + + +

      + +

      +
      + + + +
      +
      + + +

      Search Results

      + +
      + + + +
      +
      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + +
      +

      On This Page

      + + Links to the items within this page, and to the previous and/or next pages of results. + +
        + +
      • + +
      • +
        + +
      • + + + +
      • +
        + +
      • + +
      • +
        +
      +
      +
      +
      + +

      Find Concepts

      - Use this form to find concepts by 1) having the exact same text as input 2) having words containing the text input. + Use this form to find concepts by 1) having the exact same text as input 2) having words containing the text input. - + -
      +
      Exact label
      @@ -82,2684 +474,1612 @@ $prefLabel, $altLabel, $title and $name variables.
      + + + + + - - - - - - - - - - - - - - - - - - - - - [if lt IE 9]> - <link rel="stylesheet" href=" - - css/ie.css" type="text/css"></link> - <![endif] - - - - - - - - - + + + + + + +
    • + + + + + + + + +
    • +
      + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + item + + + + + + + + + + + + + + + +
      +

      Filter

      + + These are the filters currently being used to limit the search results. Click on the remove filter icon to remove the filter. + + + +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + - - [if lt IE 9]> - <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> - <![endif] - - - - - - - - - - - - + + + + + + + + + + + + - - - - - + - - + + - - - - + + remove filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      View

      + + + Choose what information you want to view about each item. + There are some pre-defined views, but starred properties are always present no matter what the view. + You can star properties by clicking on the + star this property + icon. The currently starred icons have a + unstar this property + icon; clicking on it will unstar the property. - - - - - - + +

      + + + + + + + + + reset + +

      +
      +
        + +
      • + + + +
      • +
        +
      +
        + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + + + + + - - - - - - - - + + - - - + - - - - - - +
      + + + + + +
    • + + + + + + + + + , + + + + + + unstar this property + + - true - false + + + - - - + + + + - - - - - - true - false - - - - -
      -

      - - - -

      -
      -
      - - - - -
      - - -
      -
      - -
      - query col21 -

      - - Viewer - Selection - -

      - - - - - - - - - - - - - - - - - - - - - -

      - This is the SPARQL query that was generated to - - - pull together the data that is provided about - - each item. - the selected item. - - - identify the items to be shown in the page. - - You can modify it here and re-run the query but you may find more options at the - endpoint's page - . -

      - - -

      - -

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - v - - - -
      -
        - - -
      • - - first - - - last - - -
      • -
        -
      -
      -
      - -

      - -

      -
      - - -
      -
      - - -
      - -

      Show Search Form

      -
      -

      Search Results

      -
      - - - - -
      - - - -
      -
      -
      - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      Map

      - - - This map shows the items that are listed on this page. - There might be other items that match your query that aren't shown on this map. - - If you want to search in a different area, move to that area and click the - search - icon. - - - - - - -
      -
      -
      -
      - -
      -
      - - - -
      -
      - - - - - - - - -
      -

      Graphs

      - - These graphs summarise the values of the numeric properties of these items. - - - -
      -
      -
      -
      - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - ! - - , - - - - - - - - - - - - - - - - - - - 10 - 20 - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [ - - - , - - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - , - - - - - - - - - - - -
      -

      On This Page

      - - Links to the items within this page, and to the previous and/or next pages of results. - -
        - -
      • - -
      • -
        - -
      • - - - -
      • -
        - -
      • - -
      • -
        -
      -
      -
      -
      - - - - - -
      -

      Browse

      - - Links to further information. - - -
      -
      -
      - - - - - -
    • - - - - - - - - - - - - -
    • -
      - - - - - - - - - - - - - - / - - - - - - - - - - - - - - item - - - - - - - - - - - - - - -
      -

      Filter

      - - These are the filters currently being used to limit the search results. Click on the remove filter icon to remove the filter. - - - -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - area of map - - - - remove filter - - - - - - - - - - area on map - - - - - - - - - - - - - - - - remove filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      View

      - - - Choose what information you want to view about each item. - There are some pre-defined views, but starred properties are always present no matter what the view. - You can star properties by clicking on the - star this property - icon. The currently starred icons have a - unstar this property - icon; clicking on it will unstar the property. - - - -

      - - - reset - -

      -
      -
        - -
      • - - - -
      • -
        -
      -
        - - - - - - - - - - - - - - - - - - - - - - - -
      -
      -
      - - - - - - - - - - - - - - - - - - - -
    • - - , - unstar this property - - - - - - - - - - - - - -
    • - - - - - + + + + + + + +
      + + + + + + + + + + + + . - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - -
    • - - , - star this property - - - -
    • -
      -
      - -
      -

      Items per page

      - - Choose how many items to view on each page. The more items you view, the longer the page will take to load. - -
        -
      • - - - -
      • -
      • - - - -
      • -
      • - - - -
      • -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      Sort by

      - - - This list shows the properties that you can sort by. Click on - sort in ascending order - to sort in ascending order and - sort in descending order - to sort in descending order. The properties that you're currently sorting by are shown at the top of the list. Click on - remove this sort - to remove a sort and - sort in descending order - or - sort in ascending order - to reverse the current sort order. - Click on the - remove all sorting - icon to remove all the sorting. - Note that sorting can significantly slow down the loading of the page. - - - -

      - - - reset - -

      -
      -
        - - - - - proximity to centre of map - custom sort - - -
      • - - remove this sort - - - - - - - sort in ascending order - - - - - - - sort in descending order - - - - - - - sort in descending order - - - - -
      • -
        - - - - - - -
        - - - - - - - - - - - - - - - - - - - -
      -
      -
      - - - - - - - - - - - - - - - - - - - - -
    • - - , - remove this sort - - - , - sort in ascending ordersort in descending order - - - sort in ascending order - - - sort in descending order - - - - - - - - - - - + + + + + + + + + + + + + + + + +
    • + + + + + + + + + , + + + - - + + star this property + + +
    • - - - - - - - -
      - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +
      +

      Items per page

      + + Choose how many items to view on each page. The more items you view, the longer the page will take to load. + +
        +
      • + + - - - - - - - - - - - - - - - - - - , - - - - - +
      • - - sort in ascending order - - - ,- - sort in descending order - - - - - + + +
      • - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
          - - - - -
        • - -
        • -
          -
        -
        -
        -
        - - - - « - . - - - - . - » - - - - - - - - - - - - - - - - - - - default - - - - - - - - - - - - - - - - -
        -

        Show Search Form

        -

        - -

        -

        - - - -

        -
        - -
        - - - -
        -
        - - - - - - -
        -

        No results

        -
        -
        -
        -
        - -
        - - - -
        -
        - +
      • + + + +
      • +
      +
      - - - - -
    • - - - - - + + + + + + + + + + + + + + + + - - - - - - -
    • -
      - - -
      -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Sort by

      + + + This list shows the properties that you can sort by. Click on + sort in ascending order + to sort in ascending order and + sort in descending order + to sort in descending order. The properties that you're currently sorting by are shown at the top of the list. Click on + remove this sort + to remove a sort and + sort in descending order + or + sort in ascending order + to reverse the current sort order. + Click on the + remove all sorting + icon to remove all the sorting. + Note that sorting can significantly slow down the loading of the page. + + + +

      + + + + + + + + + reset + +

      +
      +
        - - - - - -
      + + sort in ascending order + + + + + + + + + + + + + sort in descending order + + + + + + + + + + + + + sort in descending order + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + -
      - - - - - - + + custom sort +
    • + + remove this sort + + + + + + + + + + - - - - - - - -
    • -
      - - - - - - - - - - - / - - - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - last - - - - - - - - - - - - - - - - - - - - - - - 4 - - - 2 - - - - - - - - - - - - - 32 - - - - - - - - - 2 - - - - - - - - - - - - - - - - - - . - - - - - - - - -
      - help -

      - -

      -
      -
      - - - - - - - - +
    +
    +
    + + + + + + + - - - - - - - - - - - - - - - - - - - - . - - + + - - - - + - - - - - - - - - - - + + + + + + +
  • + + + + + + + + + , + + + + + + remove this sort + + + + + + + + + + , + + + + + + + + + + + + + - - - - - - + sort in ascending order + sort in descending order - - - - - - - - - - true - - - false - - - - - - - - - - - / - - / - - - - - + + sort in ascending order - + sort in descending order - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + - - - - - - + + + - - - - - +
  • + + + + + + + +
    + + + + + + + + + . - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + - - - - - - - - - - - - - - - - - - +
  • + + sort in ascending order + + + + + + + + + + , + + - + + + + + sort in descending order + + + + + +
  • +
    +
    + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
      + + + + +
    • - - - - - - - - - - - - - - - - -
      -
      +
    +
    +
    +
    + + + + + « + - - - - - - - + - - - - - - - - - - - + + » - - - + +
    + + + + + + + + + + + + + - - + + - + default + + + + + + + + + + + + + + + + + +
    +

    +

    +
    +
    + + + +
    +
    + + + + + + + +
    +

    No results

    +
    +
    +
    +
    + + +
    + + + +
    +
    + + + + + + + + + +
  • + + - - - + - - - - - - - - - - - - - - - - - - , - - - - - - - - - , - - - - - - unstar this property - - - , - star this property - + - - - - - - - - - - - - - - - - - - - - - - - - +
  • +
    + + + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + - - - - - - remove filter - + + + - - - - - - - - - - - - - - - - - - - - - - remove maximum value filter - - - - - - - - less than {$value} - - - less than {$value} - - - - - - - - more like this - - - - - - remove minimum value filter - - - - - + + - - - - more like this - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + - - more than {$value} + + + + - more than {$value} + - - - + + +
    +
    - - - - - - - - + + + + - - - - + + + + + + / + - - - - - - original - + + + + + - - - - - - - - - - - - - - - - - - + + + + + last + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + - - + + + 2 + + + + - + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + +
    + help +

    +
    +
    + + + + + + + + + + + + + + + + - - - - - - - - - - - - - . + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + false + + + + + + + + + - - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + , + + + + + + unstar this property + + + + + + + + + + + + , + + + + + + star this property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + -
    - - + + remove filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + remove maximum value filter + + + + + + + + + + + + + + + + less than {$value} + + + less than {$value} + + + + + + + + - + - + + -
    - exactly: - - - - - - -
    -
    - or - between: - - - - - - -
    - and - - - - - - - - - - - + + more like this +
    + + + + + + + + + + + + + remove minimum value filter + + + + + + + + + + + + + + + + more than {$value} + + + more than {$value} + + + + + + + + + + + + + + + + + + more like this + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + outlink + + + + + + + + + + + + + + + + + original + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + last - - - - - - - - date - 10 - YYYY-MM-DD - [0-9]{4}-[0-9]{2}-[0-9]{2} - - - time - 8 - hh:mm:ss - [0-9]{2}:[0-9]{2}:[0-9]{2} - - - datetime - 19 - YYYY-MM-DDThh:mm:ss - [0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2} - - - number - 7 - - - - - - + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + last + + + + + + + + + + + + +
    + + + + + + From a2ee2c75ff508c6d93fe36b7aa1485915ad7e87e Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 15:21:50 +1000 Subject: [PATCH 14/19] Adding xsl templates for adjusting the uri --- .../default/transform/ashtml-sissvoc.xsl | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/resources/default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl index 4ed46a8..86e4794 100644 --- a/resources/default/transform/ashtml-sissvoc.xsl +++ b/resources/default/transform/ashtml-sissvoc.xsl @@ -1955,6 +1955,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1970,7 +2007,8 @@ - + + From 73b93f5bb411acaa282580a57cd1149c3b858a32 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 15:38:59 +1000 Subject: [PATCH 15/19] Fixing bug in the xslt that affects html view of the bottom panel --- resources/default/transform/ashtml-sissvoc.xsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl index 86e4794..77b93d9 100644 --- a/resources/default/transform/ashtml-sissvoc.xsl +++ b/resources/default/transform/ashtml-sissvoc.xsl @@ -192,8 +192,8 @@ query col - 1 - 2 + 2 + 1

    From bb85fbd69ada9157d134a8f17ea8a06f620eb099 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Tue, 30 Sep 2014 15:53:35 +1000 Subject: [PATCH 16/19] Fixing bug - added resourcePath added in the xsl --- resources/default/transform/ashtml-sissvoc.xsl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/default/transform/ashtml-sissvoc.xsl b/resources/default/transform/ashtml-sissvoc.xsl index 77b93d9..49d158e 100644 --- a/resources/default/transform/ashtml-sissvoc.xsl +++ b/resources/default/transform/ashtml-sissvoc.xsl @@ -30,6 +30,8 @@ + + From 2b65c76300ede7431d87173e92b938ca7ab662c8 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Wed, 1 Oct 2014 14:42:16 +1000 Subject: [PATCH 17/19] adding details to README --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 002fbc4..46b0be1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ sissvoc ======= vanilla branch + +updated: 1 October 2014 contact: Jonathan Yu (jonathan.yu [ at ] csiro.au) A minimal config package for setting up sissvoc. + +What's new? +----------- +* cleanup of the (xslt) code in resources/default/transform to make local references work +* added build script (gen_sissvoc3_config.py) - allows users to generate a sissvoc elda + configuration based on properties file and sissvoc-v3-template. See README in the build dir. From ea47669232fb279a0cbea14acb0514b9ed701701 Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Wed, 1 Oct 2014 14:59:53 +1000 Subject: [PATCH 18/19] adding details to README --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 46b0be1..40fae70 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,9 @@ What's new? * cleanup of the (xslt) code in resources/default/transform to make local references work * added build script (gen_sissvoc3_config.py) - allows users to generate a sissvoc elda configuration based on properties file and sissvoc-v3-template. See README in the build dir. + + +FAQ +--- +Q. How do I get a package of sissvoc? +A. Refer to https://github.com/CSIRO-enviro-informatics/sissvoc-package \ No newline at end of file From b7ef75af65b06b77948b27f50d40216acb00c19e Mon Sep 17 00:00:00 2001 From: Jonathan Yu Date: Wed, 25 Feb 2015 09:58:55 +1100 Subject: [PATCH 19/19] Updating readme --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 49ae6c7..6f2ae28 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,20 @@ -sissvoc -======= -master branch +Spatial Information Services Stack Vocabulary Service (SISSVoc) +=============================================================== + +Updated: 25 Feb 2015 + +Contact: Jonathan Yu (jonathan.yu [ at ] csiro.au) + +About +----- +A minimal config package for setting up sissvoc. + +What's new? +* cleanup of the (xslt) code in resources/default/transform to make local references work +* added build script (gen_sissvoc3_config.py) - allows users to generate a sissvoc elda configuration based on properties file and sissvoc-v3-template. See README in the build dir. + +FAQ +--- +Q. How do I get a package of sissvoc? +A. Refer to https://github.com/CSIRO-enviro-informatics/sissvoc-package