-
Notifications
You must be signed in to change notification settings - Fork 5
/
sparql_functions.py
119 lines (77 loc) · 2.92 KB
/
sparql_functions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
### sparql_functions : some functions useful when using SPARQLwrapper
## v. 0.2 – 12 May 2021 – master file in
# 'sciences_historiques_numeriques/histoire_numerique/sparql' folder
import time
from SPARQLWrapper import SPARQLWrapper, SPARQLWrapper2, JSON, TURTLE, XML, RDFXML
## Fonction qui exécute la requête et renvoit le résultat
def get_json_sparql_result(endpoint,query):
try:
sparql = SPARQLWrapper(endpoint)
sparql.setQuery(query)
sparql.setReturnFormat(JSON)
sparql.setMethod('POST')
rc = sparql.queryAndConvert()
print(type(rc))
except Exception as e:
print(e)
else:
return rc
## Fonction générique permettant de transformer en liste les résultats d'une requête
# NB : la fonction récupère directement le nom des variables du résultat
# NB2: cette fonction et le suivantes présupposent une structure homogène du résultat JSON
def sparql_result_to_list (result):
i = 0
variables = result['head']['vars']
result_l = []
for l in result['results']['bindings']:
l_line = []
for v in variables:
try:
l_line.append(l[v]['value'])
except Exception as e:
l_line.append('')
pass
result_l.append(l_line)
return result_l
## Fonction générique permettant de transformer en liste les résultats d'une requête
# avec déclaration manuelle des variables
# insérer les variables sous cette forme : ' ?p ?name ?birthDate '
# les espaces ne sont pas pris en compte
def sparql_result_to_list_vars (result, variables):
i = 0
rs = []
for v in variables.split():
rs.append(v.replace('?', '').strip())
result_l = []
for l in result['results']['bindings']:
l_line = []
for v in rs:
try:
l_line.append(l[v]['value'])
except Exception as e:
l_line.append('')
pass
result_l.append(l_line)
return result_l
## list to dash separated text
def list_to_dash_separated_values (list):
dashedValuesList = []
try:
for l in list:
dashedValues = ''
n = 1
for e in l:
if n < len(l):
dashedValues += (e + ' – ')
else:
dashedValues += (e)
n += 1
dashedValuesList.append(dashedValues)
except Exception as e:
print(e)
else:
return '\n'.join(dashedValuesList)
### Fonction qui récupère et met en forme le temps au moment de l'exécution
def timestamp_formatted_for_file_name():
is_now = time.strftime('%Y%m%d_%H%M%S')
return is_now