diff --git a/tenet/transduction/query_builder.py b/tenet/transduction/query_builder.py
index 44a186207af5c8543378ef4bb6b43dff6be10f4f..a3e6affccbf555ccbfb967137f4418af7483fecf 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