Остановите EasyRDF от вложенных ресурсов

У меня есть RDF-график, который я создаю с помощью EasyRDF:

<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/terms/"xmlns:foaf="http://xmlns.com/foaf/0.1/"
<rdf:Description rdf:about="http://the-query-url">
<dc:creator>me</dc:creator>
<foaf:primaryTopic rdf:resource="genid1">
</rdf:Description>

<rdf:Description rdf:nodeID="genid1">
<!-- stuff -->
</rdf:Description>
</rdf:RDF>

Выше не правильно — ссылка на пустой узел в foaf:primaryTopic должно быть _:genid1,

Когда я изменяю эту строку на

$meta_block->add('foaf:primaryTopic', $graph->resource('_:' . $symbol_block->getBNodeId()));

EasyRdf вкладывает ресурсы следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/terms/"xmlns:foaf="http://xmlns.com/foaf/0.1/"
<rdf:Description rdf:about="http://the-query-url">
<dc:creator>me</dc:creator>
<foaf:primaryTopic>
<rdf:Description>
<!-- stuff -->
</rdf:Description>
</foaf:primaryTopic>
</rdf:Description>
</rdf:RDF>

Как мне остановить EasyRdf от вложения узлов?
Я хочу, чтобы вывод был таким же, как в первом примере, только с _:genid1 в качестве ресурса для foaf:primaryTopic,

0

Решение

Возможно, вы неправильно понимаете модель данных RDF. Пустые узлы на самом деле пустые. Хотя может иметь что-то вроде пустого идентификатора узла в определенной сериализации или с заданным API, на самом деле это не часть модели данных. В первом фрагменте, который вы показали, узел с идентификатором узла genid является объект foaf: primaryTopic тройной. То же самое и во втором фрагменте; есть тройка foaf: primaryTopic, и объект является пустым узлом. Вы получаете так же Содержание RDF. Это может быть легче увидеть, если сериализовать в более удобочитаемом формате, например, Turtle или N-Triples. Чтобы узнать больше об этой проблеме, вы можете найти некоторые обсуждения в Как получить доступ к документам OWL, используя XPath в Java? полезно.

Все, что сказал, вы, вероятно, Можно настроить, как easyRDF пишет RDF / XML. Это не библиотека, которую я использовал, но вы можете посмотреть, можете ли вы отключить синтаксические сокращения. Например, с Jena (библиотека Java) вы можете указать, что вы хотите «RDF / XML» или «RDF / XML-ABBREV». RDF / XML-ABBREV больше похож на ваш второй фрагмент, тогда как похоже, что вы хотите что-то более похожее на RDF / XML. Но опять же, я советую попробовать сериализовать в такой формат, как N-Triples или Turtle, чтобы убедиться, что содержимое RDF на самом деле одинаково. RDF не имеет пустых идентификаторов узлов; это просто концепция сериализации, которая должна иметь возможность ссылаться на них.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]