Проанализируйте 88 ГБ rdf с помощью PHP
Как я могу проанализировать RDF-файл объемом 88 ГБ с помощью PHP?
Этот RDF заполнен сущностями и фактами о каждой сущности.
Я пытаюсь перебрать каждую сущность и проверить наличие определенных фактов для каждой сущности. Затем запишите эти факты в XML-документ, который я создал ранее в сценарии.
Поэтому, когда я перемещаюсь по rdf, для каждой сущности я создаю элемент <card></card>
и даю ему дочерний элемент с именем <facts>
. Я просматриваю все факты о сущности и беру те, которые мне нужны, и запишите их внутри и как <fact></fact>
дочерние элементы элемента внутри <facts></facts>
.
Как я могу проанализировать rdf, извлечь данные и записать их в XML?
2 answers
Сначала используйте анализатор RDF. Поиск в Google анализатора PHP RDF дал много результатов; Я лично не использую PHP, но я уверен, что один из них выполнит работу по анализу RDF. Но убедитесь, что это потоковый анализатор, вы не собираетесь хранить 88 гб RDF в памяти на своей рабочей станции.
Во-вторых, вы сказали, что вам нужно "перебрать каждую сущность", что может быть сложно, если либо они не отсортированы по теме в исходном файле, либо анализатор не сообщает о них в том же порядок.
Предполагая, что это не проблема, тогда вы можете просто сохранить тройки для каждого субъекта в локальной структуре данных, и когда вы получите тройку с субъектом, отличным от тех, которые вы поставили в очередь локально, делайте любую бизнес-логику, которая вам нужна, и напишите XML. Возможно, вам захочется убедиться, что вы не можете поставить в очередь так много операторов локально, что вы будете ООМ.
Наконец, я собираюсь предположить, что у вас есть веская причина взять RDF и превратить его в формат XML, который не является RDF/XML. Но я тебя возможно, на всякий случай пересмотрите свой дизайн.
Или вы можете поместить данные в базу данных RDF и написать к ней запросы SPARQL, преобразуя результаты запроса в любой XML или что-нибудь еще, что вам нужно.
Я думаю, что вашим лучшим вариантом было бы:
- используйте какой-нибудь внешний инструмент (возможно, что-то вроде рэппера?) для преобразования исходного файла из Черепаха в n-тройки формат
- повторяйте файл по одной строке за раз с помощью fopen+fgets, поскольку n-тройки определяют строгое 1-утверждение на ограничение в 1 строку, которое идеально в этом случае