From d14f4e13d6f16e4a4b0ceb4f1cd3e23a8788481d Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Fri, 4 Nov 2022 06:50:47 +0000 Subject: [PATCH 1/2] Regression: add back service query to grab labels from tern_vocabs_core repo --- src/linkeddata_api/domain/label.py | 67 ++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/src/linkeddata_api/domain/label.py b/src/linkeddata_api/domain/label.py index c94e565..b2e528a 100644 --- a/src/linkeddata_api/domain/label.py +++ b/src/linkeddata_api/domain/label.py @@ -12,6 +12,8 @@ def get( """ Returns a label or None if no label found. """ + # TODO: Currently, we try and fetch from TERN's controlled vocabularies. + # We may want to also fetch with a SERVICE query from other repositories in the future. template = Template( """ PREFIX skos: @@ -22,15 +24,30 @@ def get( SELECT DISTINCT ?label WHERE { - VALUES (?labelProperty) { - (skos:prefLabel) - (rdfs:label) - (dcterms:title) - (schema:name) - (sdo:name) - (dcterms:identifier) + { + VALUES (?labelProperty) { + (skos:prefLabel) + (rdfs:label) + (dcterms:title) + (schema:name) + (sdo:name) + (dcterms:identifier) + } + <{{ uri }}> ?labelProperty ?label . + } + UNION { + SERVICE { + VALUES (?labelProperty) { + (skos:prefLabel) + (rdfs:label) + (dcterms:title) + (schema:name) + (sdo:name) + (dcterms:identifier) + } + ?labelProperty ?label . + } } - <{{ uri }}> ?labelProperty ?label . } LIMIT 1 """ @@ -66,16 +83,32 @@ def _get_from_list_query(uris: list[str]) -> str: { SELECT DISTINCT ?uri ?label WHERE { - BIND(<{{ uri }}> as ?uri) - VALUES (?labelProperty) { - (skos:prefLabel) - (rdfs:label) - (dcterms:title) - (schema:name) - (sdo:name) - (dcterms:identifier) + { + BIND(<{{ uri }}> as ?uri) + VALUES (?labelProperty) { + (skos:prefLabel) + (rdfs:label) + (dcterms:title) + (schema:name) + (sdo:name) + (dcterms:identifier) + } + ?uri ?labelProperty ?label . + } + UNION { + SERVICE { + BIND(<{{ uri }}> as ?uri) + VALUES (?labelProperty) { + (skos:prefLabel) + (rdfs:label) + (dcterms:title) + (schema:name) + (sdo:name) + (dcterms:identifier) + } + ?uri ?labelProperty ?label . + } } - ?uri ?labelProperty ?label . } LIMIT 1 } From 7f3b591f822d6989943dead4609c22b771d6c8ba Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Sun, 6 Nov 2022 23:31:50 +0000 Subject: [PATCH 2/2] Use bind and remove hard-coded URI --- src/linkeddata_api/domain/label.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/linkeddata_api/domain/label.py b/src/linkeddata_api/domain/label.py index b2e528a..2c7b215 100644 --- a/src/linkeddata_api/domain/label.py +++ b/src/linkeddata_api/domain/label.py @@ -25,6 +25,7 @@ def get( SELECT DISTINCT ?label WHERE { { + BIND(<{{ uri }}> as ?uri) VALUES (?labelProperty) { (skos:prefLabel) (rdfs:label) @@ -33,10 +34,11 @@ def get( (sdo:name) (dcterms:identifier) } - <{{ uri }}> ?labelProperty ?label . + ?uri ?labelProperty ?label . } UNION { SERVICE { + BIND(<{{ uri }}> as ?uri) VALUES (?labelProperty) { (skos:prefLabel) (rdfs:label) @@ -45,7 +47,7 @@ def get( (sdo:name) (dcterms:identifier) } - ?labelProperty ?label . + ?uri ?labelProperty ?label . } } }