about summary refs log tree commit diff
path: root/scripts/index-genenetwork
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/index-genenetwork')
-rwxr-xr-xscripts/index-genenetwork30
1 files changed, 30 insertions, 0 deletions
diff --git a/scripts/index-genenetwork b/scripts/index-genenetwork
index 8769689..52a48df 100755
--- a/scripts/index-genenetwork
+++ b/scripts/index-genenetwork
@@ -198,6 +198,36 @@ _:node rdf:type gnc:GNWikiEntry ;
     return cache
 
 
+def hash_generif_graph():
+    sparql = SPARQLWrapper(
+        "http://localhost:8982/sparql"
+    )
+    sparql.setReturnFormat(JSON)
+    query = """
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX gnt: <http://genenetwork.org/term/>
+PREFIX gnc: <http://genenetwork.org/category/>
+
+SELECT SHA256(GROUP_CONCAT(?entries ; separator=\"\\n\")) AS ?hash WHERE {
+   {{
+     SELECT ?type CONCAT(?symbolName, ",", ?speciesName, \"\\n\",GROUP_CONCAT(?comment ; separator=\"\\n\")) AS ?entries WHERE {
+    ?symbol rdfs:comment _:node ;
+            rdfs:label ?symbolName .
+_:node rdf:type gnc:GNWikiEntry ;
+       rdf:type ?type ;
+       gnt:belongsToSpecies ?species ;
+       rdfs:comment ?comment .
+?species gnt:shortName ?speciesName .
+} GROUP BY ?speciesName ?symbolName ?type
+   }}
+   } GROUP BY ?type
+"""
+    sparql.setQuery(query)
+    results = sparql.queryAndConvert()["results"]["bindings"]
+    return results[0]["hash"]["value"]
+
+
 # pylint: disable=invalid-name
 def write_document(db: xapian.WritableDatabase, identifier: str,
                    doctype: str, doc: xapian.Document) -> None: