3

所以我有这个加载到Stardog上的 .rdf,然后我使用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”,它具有指向空白节点的链接,该节点具有提及开始和提及结束偏移值。

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 作为三重存储时,这个映射就不能正常工作了)

4

1 回答 1

2

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

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

Stardog 确实支持将 bnode 标识符放在尖括号中的 Jena/ARQ 技巧,也就是说,<_:bnode1234>这意味着标识符为“bnode1234”的 bnode。如果您可以让 Pubby 在查询 bnode 时使用该语法,它可能会起作用。

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

于 2012-12-06T13:52:33.290 回答