ドメイン固有のデータを RDF/XML として解析およびシリアル化する C ライブラリを作成しています。ファイルを解析して再度書き出した後、コンテンツが変更されていないことを確認できるようにしたいと考えています。
すべてを再度解析し、NTriples として書き出し、2 つの Ntriples ファイルを 1 行ずつ比較することもできますが、もっと良い方法があるはずです。
ありがとう!
ドメイン固有のデータを RDF/XML として解析およびシリアル化する C ライブラリを作成しています。ファイルを解析して再度書き出した後、コンテンツが変更されていないことを確認できるようにしたいと考えています。
すべてを再度解析し、NTriples として書き出し、2 つの Ntriples ファイルを 1 行ずつ比較することもできますが、もっと良い方法があるはずです。
ありがとう!
ハッシュ関数 (MD5 や SHA1 など) を使用できますが、RDF/XML やその他の RDF シリアル化形式は、すべて同じ RDF グラフに対応するさまざまな方法でシリアル化できます。
さらに、 Turtle または N-Triples 形式を使用する場合、空白のノードラベルは毎回異なります。このため、ハッシュ関数は最適なオプションではない可能性があります。
グラフ同型は「興味深い」問題です。;-)
これは C で書かれたものではありませんが、 GraphMatcher.javaで Apache Jena が行うことを解読してみることができます。
別の方法として、空のノードがない場合は、N-Triples でデータをシリアル化し、それらのファイルを並べ替えて比較するか、独自の並べ替えられたデータ構造を使用して、代わりにシリアル化ステップを回避できます。
両方のファイルの強力なハッシュ (MD5 または SHA1 など) を計算できます。ファイルがバイトごとに等しい場合、ハッシュは一致します。