将空白节点从stardog映射到pubby



所以我有这个.rdf,我已经加载到Stardog上,然后我在Jetty上使用Pubby来浏览三重商店。

在我的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",它有到空白节点的链接,该节点有一个提及开始和提及结束偏移值。

Pubby的config.ttl文件片段如下所示。

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/>;
...
...

因此,关键是datasetBase,它将URI映射到URL。

当我尝试映射它时,会有一个"匿名节点"链接,但单击后,什么都不会显示。我的猜测是,这是因为空白节点有一些标识符,比如_:bnode1234,Pubby没有映射它。

我想知道是否有人知道如何映射这些空白节点。

(注意:如果我将这个rdf作为一个静态rdf文件直接加载到Pubby上,它可以很好地工作。但当我将stardog用作三重存储时,这个映射就不太工作了)

它可能在Pubby中有效,因为他们保持了BNode id的可用性;通常,SPARQL规范并不保证或要求BNode标识符是持久的。也就是说,您可以多次发出相同的查询,这会返回相同的结果集(包括bnode),并且每次的标识符可能不同。类似地,查询中的bnode标识符被视为变量,这并不意味着您在查询特定的bnode。

因此,Pubby可能很有帮助,并使其发挥作用,这就是为什么直接使用它而不是第三方数据库的原因。

Stardog确实支持Jena/ARQ技巧,即将bnode标识符放在尖括号中,即<_:bnode1234>,它的意思是标识符为"bnode1234"的bnode。如果你能让Pubby在查询bnode时使用这种语法,它可能会起作用。

但总的来说,我认为这是你必须与Pubby开发人员讨论的问题。

最新更新