From aa7e8b6869be07a4d089fadd42114a6ca395daee Mon Sep 17 00:00:00 2001 From: flange <38500-flange@users.noreply.git.rwth-aachen.de> Date: Wed, 23 Oct 2024 22:25:15 +0200 Subject: [PATCH] use OPTIONAL around given name of person authors --- project/dalia/query/items/metadata/authors.py | 6 ++++-- tests/project/dalia/query/items/metadata/test_authors.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/project/dalia/query/items/metadata/authors.py b/project/dalia/query/items/metadata/authors.py index 5133609..cbcc87c 100644 --- a/project/dalia/query/items/metadata/authors.py +++ b/project/dalia/query/items/metadata/authors.py @@ -5,7 +5,7 @@ from rdflib import RDF, URIRef, Variable from project.dalia.api_models.api_models import OrganizationAuthor, PersonAuthor from project.dalia.query.utils import query_dalia_dataset -from project.dalia.query_builder.query_builder import GROUP, QueryBuilder, UNION, VALUES +from project.dalia.query_builder.query_builder import GROUP, OPTIONAL, QueryBuilder, UNION, VALUES from project.dalia.rdf.namespace import Jena_ARQ_list, SCHEMA, educor _VARIABLES = { @@ -42,7 +42,9 @@ def prepare_query_for_authors_metadata_for_resources(resource_uri_refs: List[URI UNION( (var_member, RDF.type, SCHEMA.Person), (var_member, SCHEMA.familyName, _VARIABLES["family"]), - (var_member, SCHEMA.givenName, _VARIABLES["given"]) + OPTIONAL( + (var_member, SCHEMA.givenName, _VARIABLES["given"]) + ) ) ).build() diff --git a/tests/project/dalia/query/items/metadata/test_authors.py b/tests/project/dalia/query/items/metadata/test_authors.py index 9c46573..9e7ca39 100644 --- a/tests/project/dalia/query/items/metadata/test_authors.py +++ b/tests/project/dalia/query/items/metadata/test_authors.py @@ -29,12 +29,15 @@ def test_prepare_query_for_authors_metadata_for_resources(): UNION { ?member <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://schema.org/Person> . ?member <https://schema.org/familyName> ?family . + OPTIONAL { ?member <https://schema.org/givenName> ?given . + } . } } """) +# TODO: add test case with an author without given name def test_get_authors_metadata_for_resources(triplestore): lr_authors = get_authors_metadata_for_resources([ URIRef("https://id.dalia.education/learning-resource/1ec1db44-5330-47c5-aae3-6852b11f43a4"), -- GitLab