From a970c58263c5f7a4f0e9f07132da31de018ff457 Mon Sep 17 00:00:00 2001
From: Osma Suominen
Date: Thu, 5 Oct 2023 14:53:00 +0300
Subject: [PATCH] Remove identifierSpace and schemaSpace; make view templates
mandatory (#139)
---
.../manifest/invalid/bad-authentication.json | 5 ++-
.../manifest/invalid/feature-view.json | 5 ++-
...fierSpace.json => godot-missing-view.json} | 3 --
.../manifest/invalid/missing-version.json | 5 ++-
.../manifest/invalid/old-version.json | 5 ++-
.../manifest/invalid/opencorporates.json | 2 -
.../invalid/ror-invalid-view-pattern.json | 2 -
.../slub-invalid-property-setting.json | 2 -
.../manifest/valid/authentication.json | 2 -
.../manifest/valid/codefork-viaf.json | 2 -
.../examples/manifest/valid/example-min.json | 5 ++-
.../examples/manifest/valid/feature-view.json | 5 ++-
.../manifest/valid/findthatcharity.json | 2 -
draft/examples/manifest/valid/fundref.json | 5 ++-
.../manifest/valid/geocollider-sinatra.json | 2 -
draft/examples/manifest/valid/getty.json | 2 -
draft/examples/manifest/valid/kerameikos.json | 2 -
draft/examples/manifest/valid/kew.json | 2 -
draft/examples/manifest/valid/lobid-gnd.json | 2 -
draft/examples/manifest/valid/nomisma.json | 2 -
draft/examples/manifest/valid/occrp.json | 2 -
.../manifest/valid/ordnance-survey.json | 2 -
.../examples/manifest/valid/vivo-cornell.json | 4 +-
draft/examples/manifest/valid/wikidata.json | 4 +-
draft/index.html | 40 ++++---------------
draft/schemas/manifest.json | 11 +----
26 files changed, 31 insertions(+), 94 deletions(-)
rename draft/examples/manifest/invalid/{godot-missing-identifierSpace.json => godot-missing-view.json} (81%)
diff --git a/draft/examples/manifest/invalid/bad-authentication.json b/draft/examples/manifest/invalid/bad-authentication.json
index b1bc1d0..bc56792 100644
--- a/draft/examples/manifest/invalid/bad-authentication.json
+++ b/draft/examples/manifest/invalid/bad-authentication.json
@@ -1,7 +1,8 @@
{
"name": "OpenCorporates Reconciliation Service",
- "identifierSpace": "http://rdf.freebase.com/ns/type.object.id",
- "schemaSpace": "http://rdf.freebase.com/ns/type.object.id",
+ "view": {
+ "url": "{+id}"
+ },
"authentication": {
"foo": "bar"
}
diff --git a/draft/examples/manifest/invalid/feature-view.json b/draft/examples/manifest/invalid/feature-view.json
index 398d1a9..7166c6e 100644
--- a/draft/examples/manifest/invalid/feature-view.json
+++ b/draft/examples/manifest/invalid/feature-view.json
@@ -1,7 +1,8 @@
{
"name": "VIAF",
- "identifierSpace": "http://vocab.getty.edu/doc/#GVP_URLs_and_Prefixes",
- "schemaSpace": "http://vocab.getty.edu/doc/#The_Getty_Vocabularies_and_LOD",
+ "view": {
+ "url": "https://viaf.org/viaf/{id}"
+ },
"feature_view": {
"url": "https://vocab.getty.edu/recon/features/"
}
diff --git a/draft/examples/manifest/invalid/godot-missing-identifierSpace.json b/draft/examples/manifest/invalid/godot-missing-view.json
similarity index 81%
rename from draft/examples/manifest/invalid/godot-missing-identifierSpace.json
rename to draft/examples/manifest/invalid/godot-missing-view.json
index e3c6620..395ec6b 100644
--- a/draft/examples/manifest/invalid/godot-missing-identifierSpace.json
+++ b/draft/examples/manifest/invalid/godot-missing-view.json
@@ -8,8 +8,5 @@
"name": "GODOT (Graph of Dated Objects and Texts) Reconciliation Service - Roman Consulates",
"preview": {
"url": "https://godot.date/reconcile/preview={{id}}"
- },
- "view": {
- "url": "https://godot.date/id/{{id}}"
}
}
diff --git a/draft/examples/manifest/invalid/missing-version.json b/draft/examples/manifest/invalid/missing-version.json
index 7003db6..950dec7 100644
--- a/draft/examples/manifest/invalid/missing-version.json
+++ b/draft/examples/manifest/invalid/missing-version.json
@@ -1,5 +1,6 @@
{
"name": "VIAF",
- "identifierSpace": "http://vocab.getty.edu/doc/#GVP_URLs_and_Prefixes",
- "schemaSpace": "http://vocab.getty.edu/doc/#The_Getty_Vocabularies_and_LOD"
+ "view": {
+ "url": "https://viaf.org/viaf/{id}"
+ }
}
diff --git a/draft/examples/manifest/invalid/old-version.json b/draft/examples/manifest/invalid/old-version.json
index 6ecd7bc..3d04858 100644
--- a/draft/examples/manifest/invalid/old-version.json
+++ b/draft/examples/manifest/invalid/old-version.json
@@ -1,6 +1,7 @@
{
"versions": ["0.1"],
"name": "VIAF",
- "identifierSpace": "http://vocab.getty.edu/doc/#GVP_URLs_and_Prefixes",
- "schemaSpace": "http://vocab.getty.edu/doc/#The_Getty_Vocabularies_and_LOD"
+ "view": {
+ "url": "https://viaf.org/viaf/{id}"
+ }
}
diff --git a/draft/examples/manifest/invalid/opencorporates.json b/draft/examples/manifest/invalid/opencorporates.json
index 7f4d1db..15d1500 100644
--- a/draft/examples/manifest/invalid/opencorporates.json
+++ b/draft/examples/manifest/invalid/opencorporates.json
@@ -1,7 +1,5 @@
{
"name": "OpenCorporates Reconciliation Service",
- "identifierSpace": "http://rdf.freebase.com/ns/type.object.id",
- "schemaSpace": "http://rdf.freebase.com/ns/type.object.id",
"view": {
"url": "https://opencorporates.com{{id}}"
},
diff --git a/draft/examples/manifest/invalid/ror-invalid-view-pattern.json b/draft/examples/manifest/invalid/ror-invalid-view-pattern.json
index f7c2649..03b6117 100644
--- a/draft/examples/manifest/invalid/ror-invalid-view-pattern.json
+++ b/draft/examples/manifest/invalid/ror-invalid-view-pattern.json
@@ -1,7 +1,5 @@
{
"name": "ROR Reconciliation Service",
- "identifierSpace": "http://ror.org/organization",
- "schemaSpace": "http://ror.org/ns/type.object.id",
"defaultTypes": [
{
"id": "/ror/organization",
diff --git a/draft/examples/manifest/invalid/slub-invalid-property-setting.json b/draft/examples/manifest/invalid/slub-invalid-property-setting.json
index c5899b9..a7cd9c7 100644
--- a/draft/examples/manifest/invalid/slub-invalid-property-setting.json
+++ b/draft/examples/manifest/invalid/slub-invalid-property-setting.json
@@ -59,14 +59,12 @@
"service_url": "http://data.slub-dresden.de"
}
},
- "identifierSpace": "http://data.slub-dresden.de",
"name": "SLUB LOD reconciliation for OpenRefine",
"preview": {
"height": 100,
"url": "http://data.slub-dresden.de/{{id}}.preview",
"width": 320
},
- "schemaSpace": "http://schema.org",
"view": {
"url": "http://data.slub-dresden.de/{{id}}"
}
diff --git a/draft/examples/manifest/valid/authentication.json b/draft/examples/manifest/valid/authentication.json
index 2dc2c52..4bd9ab5 100644
--- a/draft/examples/manifest/valid/authentication.json
+++ b/draft/examples/manifest/valid/authentication.json
@@ -3,9 +3,7 @@
"view": {
"url": "http://vivo.med.cornell.edu/individual?uri={{id}}"
},
- "identifierSpace": "http://vivo.med.cornell.edu/individual/",
"name": "VIVO Reconciliation Service",
- "schemaSpace": "http://vivo.med.cornell.edu/individual/",
"authentication": {
"type": "apiKey",
"description": "Vivo API key",
diff --git a/draft/examples/manifest/valid/codefork-viaf.json b/draft/examples/manifest/valid/codefork-viaf.json
index b3e13a5..60cc6d8 100644
--- a/draft/examples/manifest/valid/codefork-viaf.json
+++ b/draft/examples/manifest/valid/codefork-viaf.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "VIAF",
- "identifierSpace": "http://rdf.freebase.com/ns/user/hangy/viaf",
- "schemaSpace": "http://rdf.freebase.com/ns/type.object.id",
"view": {
"url": "http://viaf.org/viaf/{id}"
},
diff --git a/draft/examples/manifest/valid/example-min.json b/draft/examples/manifest/valid/example-min.json
index 662b053..0c123c1 100644
--- a/draft/examples/manifest/valid/example-min.json
+++ b/draft/examples/manifest/valid/example-min.json
@@ -1,6 +1,7 @@
{
"versions": ["0.2"],
"name": "VIAF",
- "identifierSpace": "http://vocab.getty.edu/doc/#GVP_URLs_and_Prefixes",
- "schemaSpace": "http://vocab.getty.edu/doc/#The_Getty_Vocabularies_and_LOD"
+ "view": {
+ "url": "https://viaf.org/viaf/{id}"
+ }
}
diff --git a/draft/examples/manifest/valid/feature-view.json b/draft/examples/manifest/valid/feature-view.json
index 484c838..fa43b45 100644
--- a/draft/examples/manifest/valid/feature-view.json
+++ b/draft/examples/manifest/valid/feature-view.json
@@ -1,8 +1,9 @@
{
"versions": ["0.2"],
"name": "VIAF",
- "identifierSpace": "http://vocab.getty.edu/doc/#GVP_URLs_and_Prefixes",
- "schemaSpace": "http://vocab.getty.edu/doc/#The_Getty_Vocabularies_and_LOD",
+ "view": {
+ "url": "https://viaf.org/viaf/{id}"
+ },
"feature_view": {
"url": "https://vocab.getty.edu/recon/features/{id}"
}
diff --git a/draft/examples/manifest/valid/findthatcharity.json b/draft/examples/manifest/valid/findthatcharity.json
index f3682e0..cdfdaaa 100644
--- a/draft/examples/manifest/valid/findthatcharity.json
+++ b/draft/examples/manifest/valid/findthatcharity.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "findthatcharity",
- "identifierSpace": "http://rdf.freebase.com/ns/type.object.id",
- "schemaSpace": "http://rdf.freebase.com/ns/type.object.id",
"view": {
"url": "https://findthatcharity.uk/charity/{id}"
},
diff --git a/draft/examples/manifest/valid/fundref.json b/draft/examples/manifest/valid/fundref.json
index 2f23a31..b301d38 100644
--- a/draft/examples/manifest/valid/fundref.json
+++ b/draft/examples/manifest/valid/fundref.json
@@ -1,8 +1,9 @@
{
"versions": ["0.2"],
"name": "Open Funder Registry Reconciliation Service",
- "identifierSpace": "http://openfunder.crossref.org/openfunder",
- "schemaSpace": "http://openfunder.crossref.org/ns/type.object.id",
+ "view": {
+ "url": "{+id}"
+ },
"defaultTypes": [
{
"id": "/fundref/funder_name",
diff --git a/draft/examples/manifest/valid/geocollider-sinatra.json b/draft/examples/manifest/valid/geocollider-sinatra.json
index ae6df0b..67ba9ca 100644
--- a/draft/examples/manifest/valid/geocollider-sinatra.json
+++ b/draft/examples/manifest/valid/geocollider-sinatra.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "Pleiades Reconciliation for OpenRefine",
- "schemaSpace": "https://pleiades.stoa.org/places/",
- "identifierSpace": "https://pleiades.stoa.org/places/vocab#",
"view": {
"url": "{+id}"
},
diff --git a/draft/examples/manifest/valid/getty.json b/draft/examples/manifest/valid/getty.json
index 54ebb47..ad33716 100644
--- a/draft/examples/manifest/valid/getty.json
+++ b/draft/examples/manifest/valid/getty.json
@@ -18,14 +18,12 @@
"name": "Search all Vocabs"
}
],
- "identifierSpace": "http://vocab.getty.edu/doc/#GVP_URLs_and_Prefixes",
"name": "Getty Vocabularies Reconciliation Service",
"batchSize": 50,
"preview": {
"height": 200,
"width": 350
},
- "schemaSpace": "http://vocab.getty.edu/doc/#The_Getty_Vocabularies_and_LOD",
"suggest": {
"entity": false,
"property": true,
diff --git a/draft/examples/manifest/valid/kerameikos.json b/draft/examples/manifest/valid/kerameikos.json
index 76f1591..70dfcb7 100644
--- a/draft/examples/manifest/valid/kerameikos.json
+++ b/draft/examples/manifest/valid/kerameikos.json
@@ -4,8 +4,6 @@
"view": {
"url": "http://kerameikos.org/id/{id}"
},
- "identifierSpace": "http://kerameikos.org/id/",
- "schemaSpace": "http://kerameikos.org/ontology",
"defaultTypes": [
{
"id": "skos:Concept",
diff --git a/draft/examples/manifest/valid/kew.json b/draft/examples/manifest/valid/kew.json
index 761cbce..5e8a7b1 100644
--- a/draft/examples/manifest/valid/kew.json
+++ b/draft/examples/manifest/valid/kew.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "IPNI Name Reconciliation Service",
- "identifierSpace": "http://ipni.org/urn:lsid:ipni.org:names:",
- "schemaSpace": "http://rdf.freebase.com/ns/type.object.id",
"view": {
"url": "http://ipni.org/urn:lsid:ipni.org:names:{{id}}"
},
diff --git a/draft/examples/manifest/valid/lobid-gnd.json b/draft/examples/manifest/valid/lobid-gnd.json
index c496d8f..87ae377 100644
--- a/draft/examples/manifest/valid/lobid-gnd.json
+++ b/draft/examples/manifest/valid/lobid-gnd.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "GND reconciliation for OpenRefine",
- "identifierSpace": "https://lobid.org/gnd/",
- "schemaSpace": "https://d-nb.info/standards/elementset/gnd#AuthorityResource",
"defaultTypes": [
{
"id": "AuthorityResource",
diff --git a/draft/examples/manifest/valid/nomisma.json b/draft/examples/manifest/valid/nomisma.json
index 3a2f84c..35e82b6 100644
--- a/draft/examples/manifest/valid/nomisma.json
+++ b/draft/examples/manifest/valid/nomisma.json
@@ -4,8 +4,6 @@
"view": {
"url": "http://nomisma.org/id/{{id}}"
},
- "identifierSpace": "http://nomisma.org/id/",
- "schemaSpace": "http://nomisma.org/ontology",
"defaultTypes": [
{
"id": "nmo:CoinWear",
diff --git a/draft/examples/manifest/valid/occrp.json b/draft/examples/manifest/valid/occrp.json
index eb1a8a5..af7544d 100644
--- a/draft/examples/manifest/valid/occrp.json
+++ b/draft/examples/manifest/valid/occrp.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "OCCRP Aleph",
- "identifierSpace": "http://rdf.freebase.com/ns/type.object.id",
- "schemaSpace": "http://rdf.freebase.com/ns/type.object.id",
"view": {
"url": "https://aleph.occrp.org/entities/{{id}}"
},
diff --git a/draft/examples/manifest/valid/ordnance-survey.json b/draft/examples/manifest/valid/ordnance-survey.json
index d681aa3..90ee40c 100644
--- a/draft/examples/manifest/valid/ordnance-survey.json
+++ b/draft/examples/manifest/valid/ordnance-survey.json
@@ -1,8 +1,6 @@
{
"versions": ["0.2"],
"name": "Code-Point Open Reconciliation API",
- "identifierSpace": "http://data.ordnancesurvey.co.uk/id/data/code-point-open",
- "schemaSpace": "http://data.ordnancesurvey.co.uk/id/data/code-point-open",
"view": {
"url": "{{id}}"
}
diff --git a/draft/examples/manifest/valid/vivo-cornell.json b/draft/examples/manifest/valid/vivo-cornell.json
index ed50224..517f126 100644
--- a/draft/examples/manifest/valid/vivo-cornell.json
+++ b/draft/examples/manifest/valid/vivo-cornell.json
@@ -3,7 +3,6 @@
"view": {
"url": "http://vivo.med.cornell.edu/individual?uri={{id}}"
},
- "identifierSpace": "http://vivo.med.cornell.edu/individual/",
"name": "VIVO Reconciliation Service",
"defaultTypes": [
{
@@ -34,6 +33,5 @@
"name": "obo:IAO_0000030",
"id": "http://purl.obolibrary.org/obo/IAO_0000030"
}
- ],
- "schemaSpace": "http://vivo.med.cornell.edu/individual/"
+ ]
}
diff --git a/draft/examples/manifest/valid/wikidata.json b/draft/examples/manifest/valid/wikidata.json
index 9755dff..cdaa422 100644
--- a/draft/examples/manifest/valid/wikidata.json
+++ b/draft/examples/manifest/valid/wikidata.json
@@ -5,7 +5,6 @@
"width": 400,
"height": 100
},
- "schemaSpace": "http://www.wikidata.org/prop/direct/",
"documentation": "https://tools.wmflabs.org/openrefine-wikidata/",
"logo": "https://tools.wmflabs.org/openrefine-wikidata/logo.png",
"serviceVersion": "1.2.3",
@@ -83,6 +82,5 @@
"type": true,
"entity": true,
"property": true
- },
- "identifierSpace": "http://www.wikidata.org/entity/"
+ }
}
diff --git a/draft/index.html b/draft/index.html
index fbdba57..b5644d2 100644
--- a/draft/index.html
+++ b/draft/index.html
@@ -222,7 +222,8 @@ This Draft
- Remove support for flyouts;
- The endpoints of various sub-services are no longer configurable, but determined by the root reconciliation endpoint;
- - The reconciliation queries only support passing a single
type
and the type_strict
parameter was removed.
+ - The reconciliation queries only support passing a single
type
and the type_strict
parameter was removed;
+ - Remove the notion of identifierSpace and schemaSpace and make view templates mandatory.
@@ -255,7 +256,7 @@ Entities
Moreover, for each property it contains a set of associated property values, possibly empty.
- Reconciliation services can define in their service manifest a URI template for entities,
+ Reconciliation services MUST define in their service manifest a URI template for entities,
as defined by [[RFC6570]]. This URI template builds a view URI for each entity, and has id
as only variable.
For each entity, expanding the template with id
being set to the entity's identifier
MUST result in a valid URI.
@@ -314,29 +315,6 @@
Property Values
-
- Identifier and Schema Spaces
-
- A reconciliation service MUST define two URIs, exposed in its service manifest:
-
- - identifier space
- - The URI namespace (i.e. prefix) for the identifiers of an entity returned by the reconciliation service, for example
http://www.wikidata.org/entity/
or https://d-nb.info/gnd/
. This URI MAY resolve to a page describing these entities and their identifiers;
- - schema space
- - A URI which identifies the type of an entity returned by the reconciliation service, for example
http://www.w3.org/2004/02/skos/core#Concept
or https://schema.org/Thing
. This URI MAY resolve to a page describing this type.
-
-
-
- If two different reconciliation services expose the same entities and properties, then
- they SHOULD use the same identifier and schema space URIs, signalling that
- (for instance) the Data Extension service of the first one can be used on reconciliation candidates by the second one.
-
-
- The notions of identifier and schema space
- have been inherited from the API's original purpose, when it was specific
- to Freebase. Their original meaning was to be understood within Freebase's
- own data model.
-
-
Service Definition
@@ -362,10 +340,6 @@ Service Manifest
name
A human-readable name for the service, generally the name of the database it exposes. In the case where multiple reconciliation services exist for the same database, it is in the interest of a service to bear a meaningful name which
will help disambiguating it from others;
- identifierSpace
- The identifier space used by the service, as a URI;
- schemaSpace
- The schema space used by the service, as a URI;
defaultTypes
An array of types which are considered sensible default choices as types supplied in reconciliation queries. For services which do not rely on types, this MAY contain a single type with a generic name making it clear that all entities in the
database are instances of this type.
@@ -376,7 +350,7 @@ Service Manifest
serviceVersion
An optional string which describes the version of the software exposing this service. This is not to be confused with versions
which is about the versions of the reconciliation API supported by the service;
view
- An optional object which contains a single field url
. Its value is a URI template for entities;
+ An object which contains a single field url
. Its value is a URI template for entities;
feature_view
An optional object which contains a single field url
. Its value is a URI template for matching features;
preview
@@ -906,9 +880,9 @@ Data Extension Responses
The rows object contains, for each entity identifier in the
data extension query, for each property identifier in the
metadata, the property values of that property in that entity.
- If the property values are entities, their identifiers are expected to be in the service's identifier space.
- If that is not the case, the service MUST specify in the meta
section the endpoint of another reconciliation service whose identifier space
- contains the returned entities. This endpoint is specified on a column-per-column basis.
+ If the property values are entities, their identifiers are expected to be valid entities for the service at hand.
+ If that is not the case, the service MUST specify in the meta
section the endpoint of another reconciliation service for which the entity identifiers are valid, i.e., inserting them into the entity view template of that other service yields valid URIs.
+ This endpoint is specified on a column-per-column basis.
Response example for the data extension query from the previous example:
diff --git a/draft/schemas/manifest.json b/draft/schemas/manifest.json
index c720ad8..934410a 100644
--- a/draft/schemas/manifest.json
+++ b/draft/schemas/manifest.json
@@ -18,14 +18,6 @@
"type": "string",
"description": "A human-readable name for the service or data source"
},
- "identifierSpace": {
- "type": "string",
- "description": "A URI describing the entity identifiers used in this service"
- },
- "schemaSpace": {
- "type": "string",
- "description": "A URI describing the schema used in this service"
- },
"documentation": {
"type": "string",
"description": "A URI which hosts documentation about this service"
@@ -267,7 +259,6 @@
"required": [
"versions",
"name",
- "identifierSpace",
- "schemaSpace"
+ "view"
]
}