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