Как проверить, что два RDF-графика имеют одинаковое содержание? - PullRequest
2 голосов
/ 12 марта 2012

Я пишу библиотеку C, которая анализирует и сериализует доменные данные как RDF / XML. После того, как я проанализирую файл и снова запишу его, я бы хотел убедиться, что содержимое не изменилось.

Я мог бы снова все проанализировать, записать как NTriples и построчно сравнить два файла Ntriples, но должен быть лучший способ, верно?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 12 марта 2012

Вы можете использовать хеш-функцию (например, MD5 или SHA1), но RDF / XML, а также другие форматы сериализации RDF могут быть сериализованы различными способами все они соответствуют одному и тому же графу RDF .

Более того, пустых узлов метки, если вы используете форматы Turtle или N-Triples, будут отличаться каждый раз. По этой причине хеш-функция может быть не лучшим вариантом.

Изоморфизм графов - «интересная» проблема. ;-)

Это не написано на C, но вы можете попытаться расшифровать действия Apache Jena в GraphMatcher.java .

В качестве альтернативы, как вы сказали, если у вас нет пустых узлов, вы можете сериализовать данные в N-триплетах, отсортировать и сравнить эти файлы или иметь собственную отсортированную структуру данных и использовать ее вместо этого, избегая шага сериализации.

0 голосов
/ 12 марта 2012

Вы можете рассчитать сильный хеш (например, MD5 или SHA1) для обоих файлов. Хэши будут совпадать, если файлы равны байту за байт.

...