Rdf 数据集,我们终于可以看到问题所在:geonames资源的IRIs以实际形式的/结尾,但数据中没有/。您需要相应地更改数据
注意:Rdf 数据集,我们终于可以看到问题所在:geonames资源的IRIs以实际形式的/结尾,但数据中没有/。您需要相应地更改数据,rdf,sparql,geonames,Rdf,Sparql,Geonames,注意:http://www.ophileon.com/ox/poi.rdf已被更正。 看起来您可能最终需要运行第一个查询来确定要从geonames获取的数据,检索该信息,然后对该数据运行第二个查询。或者,您可以下载Geonames提供的大数据转储并在本地使用(可能是最简单的解决方案)。数据在哪里?您对哪个端点运行此查询?如果你需要从不同的端点得到三元组,你可能想考虑使用服务< /Cord>关键字。我正在使用Spulg.Org的通用端点运行它。我还对各种图表进行了试验,只是重复了FROM子句。只要
http://www.ophileon.com/ox/poi.rdf
已被更正。
看起来您可能最终需要运行第一个查询来确定要从geonames获取的数据,检索该信息,然后对该数据运行第二个查询。或者,您可以下载Geonames提供的大数据转储并在本地使用(可能是最简单的解决方案)。数据在哪里?您对哪个端点运行此查询?如果你需要从不同的端点得到三元组,你可能想考虑使用<代码>服务< /Cord>关键字。我正在使用Spulg.Org的通用端点运行它。我还对各种图表进行了试验,只是重复了FROM子句。只要它们在phileon.com域中,并且只是rdf文件,就没有问题。数据部分位于我的服务器上的rdf中,部分位于geonames域中的某个位置。您是否确实在来自的
中的IRI中有空格?这将是一个问题。此外,请在出现问题时显示错误消息。当我将您的查询用于未注释的行时(但使用IRI中的空格),我会得到一个解析错误。当我删除空格时,我得到一个描述性错误“无法确定三元组内容类型:(URI=:stream=null:hint=null)”,这意味着Jena试图检索数据,但无法确定如何解析它。您是否更改了此查询正在检索的服务器上的数据?在我开始研究这个问题时得到的结果中,我得到了geonames
的结果,比如
URI上没有最终的/
,但现在当我运行查询时,有了最终的/
。我可以看出这是个问题,但我无法解释为什么它似乎发生了变化,只是服务器上的数据发生了变化。是的,我做了,我在编辑中也做了说明;)我在poi.rdfw中添加了斜杠数据在哪里?您对哪个端点运行此查询?如果你需要从不同的端点得到三元组,你可能想考虑使用<代码>服务< /Cord>关键字。我正在使用Spulg.Org的通用端点运行它。我还对各种图表进行了试验,只是重复了FROM子句。只要它们在phileon.com域中,并且只是rdf文件,就没有问题。数据部分位于我的服务器上的rdf中,部分位于geonames域中的某个位置。您是否确实在来自
的中的IRI中有空格?这将是一个问题。此外,请在出现问题时显示错误消息。当我将您的查询用于未注释的行时(但使用IRI中的空格),我会得到一个解析错误。当我删除空格时,我得到一个描述性错误“无法确定三元组内容类型:(URI=:stream=null:hint=null)”,这意味着Jena试图检索数据,但无法确定如何解析它。您是否更改了此查询正在检索的服务器上的数据?在我开始研究这个问题时得到的结果中,我得到了geonames
的结果,比如
URI上没有最终的/
,但现在当我运行查询时,有了最终的/
。我可以看出这是个问题,但我无法解释为什么它似乎发生了变化,只是服务器上的数据发生了变化。是的,我做了,我在编辑中也做了说明;)我在poi.rdfJoshua中添加了斜杠,谢谢你详细的回答。我已经能够更进一步了,在地理名称的后面加了一个“/”。@是的,我今天早上意识到这是问题之一。在将来(我早就应该想到这一点),您能否以一种不会在幕后改变的方式提供您的数据?我上面提到的一些结果现在无效,因为非现场数据(即不在堆栈溢出上的数据)已被修改。@如果在嵌套查询中只有SPARQL 1.1支持from
子句,您甚至可以动态生成from
子句所需的URI,并在一个查询中完成这一切。但现在看来,您可能需要下载数据并在本地使用它,或者运行一个查询来找出您需要的其他URI,然后使用第二个查询来合并那些带有from
子句的URI。这也是我的结论。对此不满意,但似乎没有更好的解决方案。约书亚,谢谢你详细的回答。我已经能够更进一步了,在地理名称的后面加了一个“/”。@是的,我今天早上意识到这是问题之一。在将来(我早就应该想到这一点),您能否以一种不会在幕后改变的方式提供您的数据?我上面提到的一些结果现在无效,因为非现场数据(即不在堆栈溢出上的数据)已被修改。@如果在嵌套查询中只有SPARQL 1.1支持from
子句,您甚至可以动态生成from
子句所需的URI,并在一个查询中完成这一切。但现在看来,您可能需要下载数据并在本地使用它,或者运行一个查询来找出您需要的其他URI,然后使用第二个查询来合并那些带有from
子句的URI。这也是我的结论。对此不满意,但似乎没有更好的解决方案。
prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
select ?poi ?poiname ?geonames ?latitude
from <http://www.ophileon.com/ox/poi.rdf>
# from <http://sws.geonames.org/ >
where
{
?poi rdfs:label ?poiname.
?poi owl:sameAs ?geonames.
# ?geonames wgs84_pos:lat ?latitude.
FILTER(langMatches(lang(?poiname), "EN")).
}
{
"head": {
"vars": [ "poi" , "poiname" , "geonames" , "latitude" ]
} ,
"results": {
"bindings": [
{
"poi": { "type": "uri" , "value": "http://ophileon.com/ox/poi/2" } ,
"poiname": { "type": "literal" , "xml:lang": "en" , "value": "Wageningen" } ,
"geonames": { "type": "uri" , "value": "http://sws.geonames.org/2745088" }
} ,
{
"poi": { "type": "uri" , "value": "http://ophileon.com/ox/poi/3" } ,
"poiname": { "type": "literal" , "xml:lang": "en" , "value": "Netherlands" } ,
"geonames": { "type": "uri" , "value": "http://sws.geonames.org/2750405" }
} ,
{
"poi": { "type": "uri" , "value": "http://ophileon.com/ox/poi/1" } ,
"poiname": { "type": "literal" , "xml:lang": "en" , "value": "Amsterdam" } ,
"geonames": { "type": "uri" , "value": "http://sws.geonames.org/2759794" }
}
]
}
}
prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
select *
from <http://www.ophileon.com/ox/poi.rdf>
from <http://sws.geonames.org/2745088/about.rdf>
from <http://sws.geonames.org/2750405/about.rdf>
from <http://sws.geonames.org/2759794/about.rdf>
where
{
?poi rdfs:label ?poiname.
?poi owl:sameAs ?geonames.
?geonames wgs84_pos:lat ?latitude.
FILTER(langMatches(lang(?poiname), "EN")).
}
-------------------------------------------------------------------------------------------------------
| poi | poiname | geonames | latitude |
=======================================================================================================
| <http://ophileon.com/ox/poi/2> | "Wageningen"@en | <http://sws.geonames.org/2745088/> | "51.97" |
| <http://ophileon.com/ox/poi/3> | "Netherlands"@en | <http://sws.geonames.org/2750405/> | "52.5" |
| <http://ophileon.com/ox/poi/1> | "Amsterdam"@en | <http://sws.geonames.org/2759794/> | "52.37403" |
-------------------------------------------------------------------------------------------------------
prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
select ?poi ?poiname ?geonameuri ?latitude
from <http://www.ophileon.com/ox/poi.rdf>
where
{
?poi rdfs:label ?poiname.
?poi owl:sameAs ?geonameuri.
SERVICE <http://factforge.net/sparql>{
?geonameuri wgs84_pos:lat ?latitude.
}
FILTER(langMatches(lang(?poiname), "EN")).
}
from <http://sws.geonames.org/ >
Error 400: Failed to load URL (parse error) http://sws.geonames.org/ : Failed to determine the triples content type: (URI=http://sws.geonames.org/ : stream=null : hint=null)
Fuseki - version 1.0.0 (Build date: 2013-09-12T10:49:49+0100)
poi poiname geonames latitude
<http://ophileon.com/ox/poi/2> "Wageningen"@en <http://sws.geonames.org/2745088>
<http://ophileon.com/ox/poi/3> "Netherlands"@en <http://sws.geonames.org/2750405>
<http://ophileon.com/ox/poi/1> "Amsterdam"@en <http://sws.geonames.org/2759794>
prefix oxprop: <http://ophileon.com/ox/property#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs84_pos: <http://www.w3.org/2003/01/geo/wgs84_pos#>
select ?poi ?poiname ?geonames ?latitude
from <http://www.ophileon.com/ox/poi.rdf>
from <http://sws.geonames.org/2745088/about.rdf>
from <http://sws.geonames.org/2750405/about.rdf>
from <http://sws.geonames.org/2759794/about.rdf>
where
{
?poi rdfs:label ?poiname.
?poi owl:sameAs ?geonames.
?geonames wgs84_pos:lat ?latitude.
FILTER(langMatches(lang(?poiname), "EN")).
}
select *
from <http://sws.geonames.org/2759794/about.rdf>
where { ?s ?p ?o }
select *
from <http://www.ophileon.com/ox/poi.rdf>
from <http://sws.geonames.org/2745088/about.rdf>
where { ?s ?p ?o }