我正在编写一个C库,它将特定于域的数据解析并序列化为RDF / XML。解析文件并再次将其写回后,我希望能够检查内容是否未更改。
我可以再次解析所有内容,将其写成NTriples,并逐行比较两个Ntriples文件但是必须有更好的方法吗?
谢谢!
答案 0 :(得分:7)
您可以使用散列函数(例如MD5或SHA1),但RDF / XML以及其他RDF序列化格式可以序列化以不同的方式全部对应相同的RDF图即可。
此外,如果您使用Turtle或N-Triples格式,空白节点标签每次都会有所不同。出于这个原因,哈希函数可能不是最佳选择。
Graph isomorphism是一个“有趣”的问题。 ;-)
它不是用C语言编写的,但你可以尝试解读Apache Jena在GraphMatcher.java中所做的事情。
另外,如您所说,如果您没有空白节点,您可以在N-Triples中序列化数据,对这些文件进行排序和比较,或者使用您自己的排序数据结构,而不是使用序列化步骤。
答案 1 :(得分:-2)
您可以计算两个文件的强哈希值(例如,MD5或SHA1)。如果文件的字节数相等,则哈希将匹配。