将空白节点从stardog映射到pubby

时间:2012-12-06 05:49:36

标签: sparql rdf triplestore stardog blank-nodes

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

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

关键是datatBase将URI映射到URL。

当我尝试映射它时,有一个“匿名节点”链接,但在单击时,不会显示任何内容。我的猜测是,这是因为空白节点有一些像_:bnode1234这样的标识符,它没有被Pubby映射。

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

(注意:如果我将此rdf作为静态rdf文件直接加载到Pubby上,它可以正常工作。但是当我使用stardog作为三重存储时,这种映射不太有用)

1 个答案:

答案 0 :(得分:2)

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

因此,Pubby可能很有帮助,并且使得这项工作成为原因,这就是为什么直接使用它而不是第三方数据库。

Stardog确实支持Jena / ARQ技巧,将bnode标识符放在尖括号中,即<_:bnode1234>,其意思是带有标识符“bnode1234”的bnode。如果您可以让Pubby在查询bnodes时使用该语法,那么它可能会有效。

但总的来说,我认为这是你必须接受Pubby开发人员的事情。