如何检查两个RDF图表是否具有相同的内容?

Jef*_*eff 2 c rdf xml-serialization rdflib xml-parsing

我正在编写一个C库,它将特定于域的数据解析并序列化为RDF/XML.解析文件并再次将其写回后,我希望能够检查内容是否未更改.

我可以再次解析所有内容,将其写为NTriples,并逐行比较两个Ntriples文件但是必须有更好的方法吗?

谢谢!

cas*_*gna 7

您可以使用散列函数(例如MD5或SHA1),但RDF/XML以及其他RDF序列化格式可以以不同的方式序列化,所有方式都对应于相同的RDF图.

此外,如果您使用Turtle或N-Triples格式的空白节点标签每次都会有所不同.由于这个原因,哈希函数可能不是最佳选择.

图同构是一个"有趣"的问题.;-)

它不是用C语言编写的,但您可以尝试破译Apache Jena在GraphMatcher.java所做的工作.

或者,正如您所说,如果您没有空白节点,则可以在N-Triples中序列化数据,对这些文件进行排序和比较,或者使用您自己的排序数据结构,而不是使用序列化步骤.