2012-03-12 74 views
2

我正在寫一個C庫,將RDF/XML解析並序列化爲特定於域的數據。在解析文件並將其重新寫回之後,我希望能夠檢查內容是否未更改。如何檢查兩個RDF圖具有相同的內容?

我可以再次解析所有的東西,把它寫成NTriples,並逐行比較兩個Ntriples文件,但是必須有更好的方法嗎?

謝謝!

回答

7

你可以使用一個散列函數(如MD5或SHA1),但RDF/XML,以及其他RDF序列化格式可以是串行化以不同的方式所有對應於相同RDF圖

此外,空白節點標籤如果您使用海龜或N-Triples格式,每次都會有所不同。出於這個原因,散列函數可能不是最好的選擇。

Graph isomorphism是一個'有趣'的問題。 ;-)

它不是用C語言編寫的,但是你可以嘗試破譯Apache Jena在GraphMatcher.java中的功能。如你所說,如果你沒有空白節點,你可以在N-Triples中序列化數據,對這些文件進行排序和比較,或者使用你自己的排序數據結構並使用它們,避免序列化步驟。

+1

對於手頭的問題,這看起來完全太難了。 :)但很高興知道我沒有錯過某些明顯的東西。因爲我知道在我的情況下,不會有空白節點,我會嘗試比較三重三倍。 – Jeff 2012-03-13 08:08:48

+0

如果你沒有空白節點,你可以使用一個數據結構對你的三元組進行排序,或者如你所說的N-Triples,並比較它。沒有空白節點的情況下,排序順序中的三元組散列函數也可以。 – castagna 2012-03-13 12:47:41

-2

您可以計算兩個文件的強散列(例如,MD5或SHA1)。如果文件的字節數相等,散列值將匹配。

相關問題