如何跨子图检查同构

How to check isomorphism across subgraphs

我想在更大的数据集中检查跨子图的同构性。有没有办法在 rdflib 中执行此操作而不会将图形分解为多个变量,例如 rdflib 文档中的示例:

g1 = Graph().parse(format='n3', data='''
     @prefix : <http://example.org/ns#> .
     []:rel <http://example.org/a> ;
      :rel <http://example.org/b> ;
      :rel [ :label "A bnode." ] .
 ''')
 g2 = Graph().parse(format='n3', data='''
     @prefix ns: <http://example.org/ns#> .
     []:rel <http://example.org/a> ;
      :rel <http://example.org/b> ;
      :rel [ :label "A bnode." ] .
 ''')
isomorphic(g1, g2)

我的图表

[]:rel <http://example.org/a> ;
      :rel <http://example.org/b> ;
      :rel [ :label "A bnode." ] .

[]:rel <http://example.org/a> ;
      :rel <http://example.org/c> ;
      :rel [ :label "A bnode." ] .

[]:rel <http://example.org/a> ;
      :rel <http://example.org/b> ;
      :rel [ :label "A bnode." ] .

感谢您的帮助!

抱歉,我不认为真的有办法做到这一点。 Dataset 中的图表本身并不是真正可用的 - 你必须通过图表找到它们 - 所以你不能做这样的事情:


# no function get_graph
ds.get_graph(identifier="http://eg.org/a")\
    .isomorphic(ds.get_graph(identifier="http://eg.org/b"))

# or 

# no function get_graph
isomorphic(
    ds.get_graph(identifier="http://eg.org/a"),
    ds.get_graph(identifier="http://eg.org/b"),
)