-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgraphify_n_visualize.py
102 lines (92 loc) · 4.05 KB
/
graphify_n_visualize.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
from pandas import DataFrame
from rdflib.plugins.sparql.processor import SPARQLResult
from rdflib import Graph
### the function below is taken from "https://github.com/RDFLib/rdflib/issues/1179"######
def sparql_results_to_df(results: SPARQLResult) -> DataFrame:
"""
Export results from an rdflib SPARQL query into a `pandas.DataFrame`,
using Python types. See https://github.com/RDFLib/rdflib/issues/1179.
"""
return DataFrame(
data=([None if x is None else x.toPython() for x in row] for row in results),
columns=[str(x) for x in results.vars],
)
##########################################################################################
# Create graph
g = Graph()
g.parse("data/duckdb_materialized_triples111.rdf")
# Sample queries
q = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT * WHERE {
?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
} LIMIT 100"""
q1 = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT ?targetWD WHERE {
?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
?wikidata_id :interactsWith ?targetWD .
VALUES ?wikidata_id { <http://www.wikidata.org/entity/Q713794> }
}"""
q2 = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT * WHERE {
?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
?wikidata_id :interactsWith ?targetWD .
VALUES ?wikidata_id { <http://www.wikidata.org/entity/Q713794> }
?wikidata_id :raw_material ?raw_material .
?wikidata_id :organ ?organ .
?wikidata_id :subsystem ?subsystem .
}"""
q3 = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT * WHERE {
?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
VALUES ?wikidata_id { <http://www.wikidata.org/entity/Q713794> }
?wikidata_id :raw_material ?raw_material .
?wikidata_id :organ ?organ .
?wikidata_id :subsystem ?subsystem .
}"""
q4 = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT * WHERE {\n ?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
?wikidata_id :interactsWith ?targetWD .
VALUES ?wikidata_id { <http://www.wikidata.org/entity/Q713794> }
?wikidata_id :hasIntxnId ?intxnID .
}"""
q5 = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT DISTINCT * WHERE {
?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
VALUES ?wikidata_id { <http://www.wikidata.org/entity/Q713794> }
?wikidata_id :wd_chem ?wd_chem .
}"""
q6 = """PREFIX : <http://example.org/trydb_kg/>
PREFIX wd: <http://www.wikidata.org/entity/>
SELECT * WHERE {\n ?t :SpeciesName ?SpeciesName .
?t :AccSpeciesName ?AccSpeciesName .
?t :hasWdID ?wikidata_id .
?wikidata_id :interactsWith ?targetWD .
VALUES ?wikidata_id { <http://www.wikidata.org/entity/Q713794> }
?wikidata_id :hasIntxnId ?intxnID .
?wikidata_id :wd_chem ?wd_chem .
?wikidata_id :organism_name ?organism_name .
?wikidata_id :structure_inchikey ?structure_inchikey .
}"""
# Run query, save in dataframe
s = g.query(q6)
s1 = sparql_results_to_df(s)
print(s1)
s1.to_csv("data/res_sparql_q6.csv", sep=',', index=False, encoding='utf-8')