如何使用ARQ Jena查询多个表



概述

我正在使用ARQ来查询本地RDF文件。查询应用于 5 文件,该文件是:

  • a_m.nt,description.nt,labels.nt,links.nt,literars.nt

信息被建模为一组三元组:

  • 主题谓词对象

算法

首先,我想从 a_m.nt 文件中选择特定主题。第二,我想从 description.nt labels.nt.nt 中选择所选主题的标签和描述。另一种方式,搜索 description.nt labels.nt 的描述和标签与与 a_m.nt a_m.nt提取的主题相同的主题和标签/strong>。最后,我想从 links.nt literals.nt

提取其余属性

查询

PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?x ?y ?p ?o
where { 
?topic rdf:type music. 
?topic rdf:description ?x.
?topic rdf:label ?y. 
?topic ?p ?o. 
}

命令行

sparql --data a_m.nt --data description.nt --data label.nt --data links.nt --data literals.nt --query query_sparql

问题

通过使用此查询,首先我选择一个具有music类型的主题,然后选择其描述,标签和其他属性。这是正确的吗?

在当前查询中,看起来您不需要Whey子句中的所有这些绑定,因为无论如何您都用最后的语句?topic ?p ?o检索所有内容。您需要正确命名music变量,并可能将DISTINCT添加到Select子句中。因此,也许会重写这样的查询:

PREFIX : <http://example.org/>
select DISTINCT ?topic ?p ?o
where { 
  ?topic a :music. 
  ?topic ?p ?o. 
}

可能的结果可能是:

<foo> <type> <music>
<foo> <description> "this is foo"
<foo> <label> "foo"
<bar> <type> <music>
<bar> <label> "bar"

这与您更一般的查询不同。基本上,您可以将所有类型music的所有内容以及与之关联的所有属性和值一起。在您的查询中,您只会收回具有一些描述和标签的结果(并且是类型music),以及与之关联的所有属性和值:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX : <http://example.org/>
select ?x ?y ?p ?o
where { 
  ?topic rdf:type :music. 
  ?topic rdf:description ?x.
  ?topic rdf:label ?y. 
  ?topic ?p ?o. 
}

将其视为?x ?y ?p ?o是列标题的表。可能的结果可能是:

"this is foo" "foo" <type> <music>
"this is foo" "foo" <description> "this is foo"
"this is foo" "foo" <label> "foo"

等。

您的查询将取决于您的数据的组织方式。我的问题是,您想在结果中避免的description.ntlabels.nt中还有其他属性吗?如果是这样,那么您可能需要将该数据加载到命名图中,并仅在查询中从该图中提取描述和标签。任意示例:

SELECT ?a ?b
FROM <A>
FROM NAMED <B>
WHERE
{
  ?x a <foo> .
  GRAPH <B> { ?x ?a ?b }
}

相关内容

  • 没有找到相关文章

最新更新