From 071353342343339f04fce061a295967e1f8a7a54 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} (82%) 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 82% rename from draft/examples/manifest/invalid/godot-missing-identifierSpace.json rename to draft/examples/manifest/invalid/godot-missing-view.json index ec2b2df..74b5c7c 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 14c5c6e..06a9946 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 d1a3d54..1d75cb7 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 019456d..23d1648 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 1cf5a86..a7c7f4d 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 1170e6d..2f964ad 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 efc739f..82154f5 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 8c3f362..2b76eda 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 611774d..23f02e8 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 966ffaa..948d7ad 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 e7c8298..913354e 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 3ef3f9d..536c05b 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

@@ -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" ] }