Java API для разделения RDF-файлов

Я хотел бы использовать Java API для разделения файлов RDF в Java. (не по командам ОС).

Кто-нибудь знает какую-либо библиотеку Java для этого? Есть опыт?

Я уже много искал в гугле, но ничего не смог найти.

Заранее спасибо.

1 ответ

Решение

Расщепление с помощью парсинга

Если вы счастливы использовать Apache Jena, тогда вы можете использовать абстракцию StreamRDF. Вы можете реализовать пользовательские StreamRDF экземпляр в сочетании с использованием встроенного StreamRDFWriter.getWriterStream() разбить проанализированные тройки на отдельные выходные файлы.

Если вы предпочитаете использовать Sesame, вы можете использовать их абстракцию RIO для достижения чего-то очень похожего.

Расщепление без разбора

Разделение без разбора возможно только при использовании строчной сериализации RDF, такой как NTriples или NQuads, в противном случае вам придется анализировать и разбивать файлы таким образом, поскольку не существует надежного надежного способа разделения других сериализаций.

Если у вас есть NTriples или NQuads, вы можете наивно разделиться с помощью * nix split команда вроде так:

> split -l 50000 input.nq prefix-

куда -l указывает количество строк для размещения в каждом файле, input.nq ваш входной файл и prefix- это префикс для выходных имен файлов. Это создаст кучу файлов в текущем каталоге с именем prefix-aa, prefix-ab и т.д. в зависимости от того, сколько строк в вашем входном файле.

Разделение и пустые узлы

Если ваши данные содержат пустые узлы, вы должны быть осторожны при попытке разбить данные.

Обратите внимание, что все сериализации RDF определены так, что идентификаторы пустых узлов в данных имеют область документа, т.е. они относятся к файлу, в котором они появляются. Таким образом, если вы разбиваете файл, содержащий пустые узлы, на несколько файлов, вы меняете смысл своих данных. Это относится ли ваш сплит через

Например, у вас есть _:a во всем исходном файле, который будет рассматриваться как один пустой узел. Если вы разбили свой файл на N части у вас теперь есть до N разные _:a в ваших файлах, каждый из которых рассматривается как отдельный пустой узел (из-за области видимости документа), и, таким образом, значение ваших данных было изменено, потому что один узел теперь может интерпретироваться как N разные узлы.

Другие вопросы по тегам