瀏覽代碼

Prepare queries

Yentl Van Tendeloo 9 年之前
父節點
當前提交
518a3f3753
共有 1 個文件被更改,包括 27 次插入27 次删除
  1. 27 27
      state/modelverse_state/rdf.py

+ 27 - 27
state/modelverse_state/rdf.py

@@ -70,6 +70,30 @@ class ModelverseState(object):
                                            MV:hasTarget ?var2 .
                             }
                             """,
+            "read_dict_node_edge": """
+                            SELECT ?main_edge
+                            WHERE {
+                                ?main_edge MV:hasSource ?var1 .
+                                ?attr_edge MV:hasSource ?main_edge ;
+                                           MV:hasTarget ?var2 .
+                            }
+                            """,
+            "delete_node": """
+                            SELECT ?edge
+                            WHERE {
+                                { ?edge MV:hasTarget ?var1 . }
+                                UNION
+                                { ?edge MV:hasSource ?var1 . }
+                            }
+                            """,
+            "delete_edge": """
+                            SELECT ?edge
+                            WHERE {
+                                { ?edge MV:hasTarget ?var1 . }
+                                UNION
+                                { ?edge MV:hasSource ?var1 . }
+                            }
+                            """,
             }
 
         for k, v in self.prepared_queries.iteritems():
@@ -261,15 +285,7 @@ class ModelverseState(object):
     def read_dict_node_edge(self, node, value_node):
         if not isinstance(node, rdflib.URIRef):
             return (None, status.FAIL_RDICTNE_UNKNOWN)
-        result = self.graph.query(
-            """
-            SELECT ?main_edge
-            WHERE {
-                ?main_edge MV:hasSource <%s> .
-                ?attr_edge MV:hasSource ?main_edge ;
-                           MV:hasTarget <%s> .
-            }
-            """ % (node, value))
+        result = self.graph.query(self.prepared_queries["read_dict_node_edge"], initBindings={"var1": node, "var2": value_node})
         if len(result) == 0:
             return (None, status.FAIL_RDICTNE_NOT_FOUND)
         return (list(result)[0][0], status.SUCCESS)
@@ -302,15 +318,7 @@ class ModelverseState(object):
         self.graph.remove((node, None, None))
 
         # Get all edges connecting this
-        result = self.graph.query(
-            """
-            SELECT ?edge
-            WHERE {
-                { ?edge MV:hasTarget <%s> . }
-                UNION
-                { ?edge MV:hasSource <%s> . }
-            }
-            """ % (node, node))
+        result = self.graph.query(self.prepared_queries["delete_node"], initBindings={"var1": node})
         # ... and remove them
         print("Got related nodes: " + str(len(result)))
         for e in result:
@@ -325,15 +333,7 @@ class ModelverseState(object):
         self.graph.remove((edge, None, None))
 
         # Get all edges connecting this
-        result = self.graph.query(
-            """
-            SELECT ?edge
-            WHERE {
-                { ?edge MV:hasTarget <%s> . }
-                UNION
-                { ?edge MV:hasSource <%s> . }
-            }
-            """ % (edge, edge))
+        result = self.graph.query(self.prepared_queries["delete_edge"], initBindings={"var1": edge})
         # ... and remove them
         for e in result:
             self.delete_edge(e[0])