2013-10-11 7 views
1

Я пытаюсь проанализировать дамп черепахи с Freebase Data Dumps с использованием libraptor2 [версии 2-2.0.10], а в моей программе заканчивается память. Итак, я попытался с помощью программы «рэппер» и результаты такие же (не хватает памяти):redland рэппер/libraptor2 исчерпывает память на большом RDF-файле

# raptor2-2.0.10/bin/rapper -i turtle -I - -o turtle -O - freebase-rdf-2013-06-02-00-00.ttl > /dev/null 

rapper: Parsing URI file:///...ttl with parser turtle and base URI - 
rapper: Serializing with serializer turtle 
Killed 

Я наблюдаю потребление памяти, и она увеличивается до 4 Гб, а затем умирает. Как ограничить потребление памяти для libraptor/rapper?

+0

Это хороший вопрос (и с полезным ответом). Обратите внимание, однако, что «Есть ли какие-либо другие библиотеки разбора rdf с открытым исходным кодом, которые не страдают этой проблемой?» запрашивает библиотеки, и «Вопросы, предлагающие нам рекомендовать или находить инструмент, библиотеку или любимый внешний ресурс вне темы для переполнения стека». Было бы неплохо включить ссылку на данные, чтобы другие могли попытаться воспроизвести это поведение. Все, что сказал, это вопрос _good_, и ** спасибо ** за то, что вы указали точное сообщение об ошибке точно так, как оно появляется! –

ответ

1

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

Итак, измените выходной формат от ориентированного на график черепахи до некоторого трехэлементного синтаксиса, такого как ntriples.


Обновлено после комментариев.

Поскольку проблема с памятью по-прежнему существует в режиме подсчета, который отбрасывает тройки после разбора, это определенно также проблема с памятью парсера.

Не уверен, что вы в конечном итоге хотите делать с данными, но вот что-то, что может помочь. Обратите внимание, что свободный основание формата данных строк-ориентированный «ntriples с черепахой пространствами имен», так что это относительно просто обработать до более управляемых части usign обработки инструментов простого текстового файла:

  1. Сохранить @prefix объявления из заголовка файла для всех кусков ,

  2. Данные разреза на тройной границе линии.

+0

laalto, спасибо. Я еще не знаком со всеми деталями RDF. Мой план состоит в том, чтобы вставить весь кортеж «subject, predicate, object» в мою собственную БД. Как вы сказали, я попытался преобразовать ttl в ntriples, но в программе все еще не хватает памяти, # raptor2-2.0.10/install/bin/rapper -i turtle -I - -o ntriples -O - freebase-rdf-2013 -06-02-00-00.ttl –

+0

у него заканчивается память, даже если я попрошу «рэпера» просто подсчитать количество триплексов (используя опцию --count) в файле черепахи. –

 Смежные вопросы

  • Нет связанных вопросов^_^