From 746f7af1c4ffbbf10de271058e930517765c9bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?= <aurelien.lamercerie@tetras-libre.fr> Date: Fri, 15 Sep 2023 12:54:14 +0200 Subject: [PATCH] New Transduction Query Builder Method to select distinct row --- tenet/transduction/query_builder.py | 40 ++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/tenet/transduction/query_builder.py b/tenet/transduction/query_builder.py index 44a18620..a3e6affc 100644 --- a/tenet/transduction/query_builder.py +++ b/tenet/transduction/query_builder.py @@ -105,7 +105,45 @@ def generate_select_query(graph, select_data_list, clause_list): query_code += f'\n SELECT {select_data_part}' query_code += f'\n WHERE {{ {clause_part} \n }}' - return query_code + return query_code + + +def generate_select_distinct_query(graph, select_data_list, clause_list): + """ Generate a SELECT Sparql query with a select part (from select_data_list) + and a clause part (from clause_list). + + Parameters + ---------- + graph : RDFLIB Graph + target graph of the query. + select_data_list : List + list of sparql variables for the select part. + clause_list : List + list of clauses (as rdf triples or string) for the clause part. + + Returns + ------- + query_code : SPARQL query (string) + SELECT Sparql query. + + """ + + prefix = get_prefix_def() + + first = True + select_data_part = '' + for data in select_data_list: + if not first: select_data_part += ' ' + select_data_part += f'{data}' + first = False + + clause_part = __define_clause_part(graph, clause_list) + + query_code = f'{prefix}' + query_code += f'\n SELECT DISTINCT {select_data_part}' + query_code += f'\n WHERE {{ {clause_part} \n }}' + + return query_code -- GitLab