rdf文件中的SPARQL嵌套元组

rdf文件中的SPARQL嵌套元组,rdf,sparql,Rdf,Sparql,如何为包含此类元组的rdf文件编写SPARQL 贝罗沃特拉斯-贝罗沃 520号。 420登。 17:15 13:20 对于具有元组的列表中的每一项,我希望获得属性的信息: j.0:DistricName j.0:moneyTwoDir j.0:moneyOneDir j.0:Hastinmestop,以及 j.0:Hastinmestart 虽然Turtle和SPARQL的语法不完全相同,但许多Turtle表达式适合作为SPARQL模式。如果我们稍微修改一下您的数据(使其成为完整的RDF文

如何为包含此类元组的rdf文件编写SPARQL


贝罗沃特拉斯-贝罗沃
520号。
420登。
17:15
13:20
对于具有元组的列表中的每一项,我希望获得属性的信息:

  • j.0:DistricName
  • j.0:moneyTwoDir
  • j.0:moneyOneDir
  • j.0:Hastinmestop
    ,以及
  • j.0:Hastinmestart

虽然Turtle和SPARQL的语法不完全相同,但许多Turtle表达式适合作为SPARQL模式。如果我们稍微修改一下您的数据(使其成为完整的RDF文档),我们会得到:


贝罗沃特拉斯-贝罗沃
520号。
420登。
17:15
13:20
使用Jena的
rdfcat
工具,我们可以在Turtle中获得以下信息:

$rdfcat-out-Turtle data.rdf
@前缀rdf:。
,  ,  ,  ,  ,  ,  ,  ,  ,  ,  .
“BEROVOTRANS-BEROVO”;
"13:20" ;
"17:15" ;
“420洞。”;
“520号。”。
果不其然,对应的SPARQL查询就是这样的:

前缀rdf:
选择?详细信息?名称?moneyTwoDir?moneyOneDir?timeStop?timeStart,其中{
?细节。
?详情
名称
?时间启动;
?时隙;
?moneyOneDir;
?moneyTwoDir。
}
如果需要,可以使查询更清晰一些:

前缀rdf:
前缀ex:
选择?详细信息?名称?moneyTwoDir?moneyOneDir?timeStop?timeStart,其中{
ex:BEROVO ex:destDetails?细节。
?详细信息,例如:发行商名称?名称;
例如:Hastinestart?timeStart;
ex:Hastinmestop?timeStop;
例:moneyOneDir?moneyOneDir;
例句:moneyTwoDir?moneyTwoDir。
}
结果如您所料:

$arq--data.rdf--query.sparql
---------------------------------------------------------------------------------------------------------------------
|详细信息|名称| moneyTwoDir | moneyOneDir | timeStop | timeStart|
=====================================================================================================================
|例如:0c64a8f2-fd39-4e9d-a03b-527359af8661 |“BEROVOTRANS-BEROVO”|“520个巢穴。”|“420个巢穴。”|“17:15”|“13:20”|
---------------------------------------------------------------------------------------------------------------------

虽然Turtle和SPARQL的语法不完全相同,但许多Turtle表达式适合作为SPARQL模式。如果我们稍微修改一下您的数据(使其成为完整的RDF文档),我们会得到:


贝罗沃特拉斯-贝罗沃
520号。
420登。
17:15
13:20
使用Jena的
rdfcat
工具,我们可以在Turtle中获得以下信息:

$rdfcat-out-Turtle data.rdf
@前缀rdf:。
,  ,  ,  ,  ,  ,  ,  ,  ,  ,  .
“BEROVOTRANS-BEROVO”;
"13:20" ;
"17:15" ;
“420洞。”;
“520号。”。
果不其然,对应的SPARQL查询就是这样的:

前缀rdf:
选择?详细信息?名称?moneyTwoDir?moneyOneDir?timeStop?timeStart,其中{
?细节。
?详情
名称
?时间启动;
?时隙;
?moneyOneDir;
?moneyTwoDir。
}
如果需要,可以使查询更清晰一些:

前缀rdf:
前缀ex:
选择?详细信息?名称?moneyTwoDir?moneyOneDir?timeStop?timeStart,其中{
ex:BEROVO ex:destDetails?细节。
?详细信息,例如:发行商名称?名称;
例如:Hastinestart?timeStart;
ex:Hastinmestop?timeStop;
例:moneyOneDir?moneyOneDir;
例句:moneyTwoDir?moneyTwoDir。
}
结果如您所料:

$arq--data.rdf--query.sparql
---------------------------------------------------------------------------------------------------------------------
|详细信息|名称| moneyTwoDir | moneyOneDir | timeStop | timeStart|
=====================================================================================================================
|例如:0c64a8f2-fd39-4e9d-a03b-527359af8661 |“BEROVOTRANS-BEROVO”|“520个巢穴。”|“420个巢穴。”|“17:15”|“13:20”|
---------------------------------------------------------------------------------------------------------------------

我可以在我的rdf数据上使用您的SPARQL,而不将其转换为Turtle吗?@vikifor Yes!我转换成了Turtle,因为Turtle语法更接近SPARQL三重模式,所以很容易基于数据的Turtle语法序列化构建SPARQL查询。Turtle和RDF/XML都是RDF的序列化,SPARQL引擎应该能够读取数据的RDF/XML序列化。我可以在我的RDF数据上使用您的SPARQL,而不将其转换为Turtle吗?@vikifor Yes!我转换成了Turtle,因为Turtle语法更接近SPARQL三重模式,所以很容易基于数据的Turtle语法序列化构建SPARQL查询。Turtle和RDF/XML都是RDF的序列化,SPARQL引擎应该能够读取数据的RDF/XML序列化。