Отобразить пустые узлы от 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.