Отобразить пустые узлы от stardog до pubby

Итак, у меня есть этот.rdf, который я загрузил в Stardog, и затем я использую Pubby, работающий через Jetty, чтобы просмотреть тройной магазин.

В моем rdf-файле у меня есть несколько пустых узлов, которым stardog присваивает пустой идентификатор узла. Так что это фрагмент файла rdf.

<kbp:ORG rdf:about="http://somehostname/resource/res1">
<kbp:canonical_mention>
<rdf:Description>
    <kbp:mentionStart rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1234</kbp:mentionStart>
    <kbp:mentionEnd rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">1239</kbp:mentionEnd>
    </rdf:Description>
</kbp:canonical_mention>

Таким образом, в основном у меня есть некоторый ресурс "res1", который имеет ссылки на пустой узел, который имеет упомянутое начальное и упомянутое значение смещения конца.

Фрагмент файла config.ttl для Pubby показан ниже.

conf:dataset [
    # SPARQL endpoint URL of the dataset
conf:sparqlEndpoint <http://localhost:5822/xxx/query>;
    #conf:sparqlEndpoint <http://localhost:5822/foaf/query>;
    # Default graph name to query (not necessary for most endpoints)
    conf:sparqlDefaultGraph <http://dbpedia.org>;
    # Common URI prefix of all resource URIs in the SPARQL dataset
conf:datasetBase <http://somehostname/>;
...
...

Таким образом, ключевым моментом является база данных, которая отображает URI в URL.

Когда я пытаюсь отобразить это, появляется ссылка "Анонимный узел", но при нажатии ничего не отображается. Я думаю, это потому, что пустой узел имеет некоторый идентификатор, такой как _:bnode1234, который не отображается в Pubby.

Я хотел знать, знает ли кто-нибудь, как отобразить эти пустые узлы.

(Примечание: если я загружаю этот rdf-файл как статический rdf-файл непосредственно в Pubby, он работает нормально. Но когда я использую stardog в качестве тройного хранилища, это отображение не совсем работает)

1 ответ

Решение

Вероятно, это работает в Pubby, потому что они поддерживают идентификатор BNode; как правило, спецификация SPARQL не гарантирует и не требует, чтобы идентификаторы BNode были постоянными. То есть вы можете выполнить один и тот же запрос несколько раз, что возвращает один и тот же набор результатов (включая bnodes), и идентификаторы могут отличаться каждый раз. Аналогично, идентификатор bnode в запросе обрабатывается как переменная, это не означает, что вы запрашиваете этот конкретный bnode.

Таким образом, Pubby, вероятно, помогает и делает эту работу, поэтому использование его напрямую работает в отличие от сторонней базы данных.

Stardog поддерживает трюк Jena/ARQ, заключающийся в установке идентификатора bnode в угловых скобках, то есть <_:bnode1234> что означает bnode с идентификатором "bnode1234". Если вы можете заставить Pubby использовать этот синтаксис в запросах для bnodes, он, вероятно, будет работать.

Но в целом, я думаю, это то, что вам придется обсудить с разработчиками Pubby.

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