|
@@ -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])
|