def _check_instance(hierarchy, graph_id, pattern, instance, pattern_typing):
check_homomorphism(
pattern,
hierarchy.node[graph_id].graph,
instance,
total=True
)
# check that instance typing and lhs typing coincide
for node in pattern.nodes():
if pattern_typing:
for typing_graph, typing in pattern_typing.items():
try:
instance_typing = hierarchy.compose_path_typing(
nx.shortest_path(hierarchy, graph_id, typing_graph))
if node in pattern_typing.keys() and\
instance[node] in instance_typing.keys():
if typing[node] != instance_typing[instance[node]]:
raise RewritingError(
"Typing of the instance of LHS does not " +
" coincide with typing of LHS!")
except NetworkXNoPath:
raise RewritingError(
"Graph '%s' is not typed by '%s' specified "
"as a typing graph of the lhs of the rule." %
(graph_id, typing_graph))
评论列表
文章目录