Проанализируйте 88 ГБ rdf с помощью PHP


Как я могу проанализировать RDF-файл объемом 88 ГБ с помощью PHP?

Этот RDF заполнен сущностями и фактами о каждой сущности.

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

Поэтому, когда я перемещаюсь по rdf, для каждой сущности я создаю элемент <card></card> и даю ему дочерний элемент с именем <facts>. Я просматриваю все факты о сущности и беру те, которые мне нужны, и запишите их внутри и как <fact></fact> дочерние элементы элемента внутри <facts></facts>.

Как я могу проанализировать rdf, извлечь данные и записать их в XML?

Author: Community, 2013-09-20

2 answers

Сначала используйте анализатор RDF. Поиск в Google анализатора PHP RDF дал много результатов; Я лично не использую PHP, но я уверен, что один из них выполнит работу по анализу RDF. Но убедитесь, что это потоковый анализатор, вы не собираетесь хранить 88 гб RDF в памяти на своей рабочей станции.

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

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

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

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

 1
Author: Michael, 2013-09-23 17:32:32

Я думаю, что вашим лучшим вариантом было бы:

  1. используйте какой-нибудь внешний инструмент (возможно, что-то вроде рэппера?) для преобразования исходного файла из Черепаха в n-тройки формат
  2. повторяйте файл по одной строке за раз с помощью fopen+fgets, поскольку n-тройки определяют строгое 1-утверждение на ограничение в 1 строку, которое идеально в этом случае
 1
Author: JimiDini, 2013-09-25 11:09:33