SPARQL查询dbpedia以查找滑雪升降机
我目前正试图教自己如何制定SPARQL查询,以从DBpedia(via)中提取与旅游相关的信息 到目前为止,我已经设法为一个国家获得了所有的博物馆SPARQL查询dbpedia以查找滑雪升降机,sparql,dbpedia,Sparql,Dbpedia,我目前正试图教自己如何制定SPARQL查询,以从DBpedia(via)中提取与旅游相关的信息 到目前为止,我已经设法为一个国家获得了所有的博物馆 select ?thing ?type ?category ?long ?lat ?country where { VALUES ?country { <http://dbpedia.org/resource/Canada> } optional { ?city dbo:
select ?thing ?type ?category ?long ?lat ?country
where
{
VALUES ?country { <http://dbpedia.org/resource/Canada> }
optional
{
?city dbo:country ?country
}
?thing dbo:location ?city.
optional
{
?thing a ?type .
VALUES ?type { dbo:Museum }
BIND( 'Museum' as ?category )
}
optional
{
?thing a ?type.
VALUES ?type { dbo:skiLift }
BIND( 'Skilift' as ?category )
}
optional
{
?thing geo:long ?long.
?thing geo:lat ?lat
}
{
?thing a dbo:Place
}
filter (BOUND (?type))
}
选择物品类型类别长纬度国家
哪里
{
价值观?国家{}
可选择的
{
?城市dbo:国家?国家
}
dbo:地点?城市。
可选择的
{
a型的东西。
值?类型{dbo:Museum}
绑定(‘博物馆’作为?类别)
}
可选择的
{
a型的东西。
值?类型{dbo:skiLift}
绑定(‘Skilift’作为?类别)
}
可选择的
{
长?长。
地理位置:纬度?纬度
}
{
?dbo的东西:地方
}
过滤器(绑定(?型))
}
然而,我不明白我需要做些什么才能获得类似于dbo:skiLift
,dbo:touristicSite
之类的信息(见此处:)
我做错了什么?这是因为
dbo:skiLift
和dbo:touristicSite
都是属性。这些资源显示在Place页面中,不是作为Place的子类,而是以类Place作为其域或范围的属性。如果要查找位置的子类,可以执行探索性查询(它还使用属性路径检索子类
属性的可传递闭包):
select?东西
哪里
{
?事物rdfs:子类F+。
}
除此之外,我无法理解为什么在同一个查询中对不同类型使用两个可选子句。例如,以下查询检索位于加拿大城市的博物馆,可能带有lat和lon,而不使用其他可选条款:
select ?thing ?city ?long ?lat
where
{
?city dbo:country <http://dbpedia.org/resource/Canada> .
?thing dbo:location ?city .
?thing a dbo:Museum .
optional
{
?thing geo:long ?long .
?thing geo:lat ?lat
}
}
select?thing?city?long?lat
哪里
{
?城市dbo:国家。
dbo:地点?城市。
dbo:博物馆。
可选择的
{
长?长。
地理位置:纬度?纬度
}
}
这是因为dbo:skiLift
和dbo:touristicSite
都是属性。这些资源显示在Place页面中,不是作为Place的子类,而是以类Place作为其域或范围的属性。如果要查找位置的子类,可以执行探索性查询(它还使用属性路径检索子类
属性的可传递闭包):
select?东西
哪里
{
?事物rdfs:子类F+。
}
除此之外,我无法理解为什么在同一个查询中对不同类型使用两个可选子句。例如,以下查询检索位于加拿大城市的博物馆,可能带有lat和lon,而不使用其他可选条款:
select ?thing ?city ?long ?lat
where
{
?city dbo:country <http://dbpedia.org/resource/Canada> .
?thing dbo:location ?city .
?thing a dbo:Museum .
optional
{
?thing geo:long ?long .
?thing geo:lat ?lat
}
}
select?thing?city?long?lat
哪里
{
?城市dbo:国家。
dbo:地点?城市。
dbo:博物馆。
可选择的
{
长?长。
地理位置:纬度?纬度
}
}
您没有选择变量typeName
,因此,它应该是BIND('Skilift'as?category)
此外,公共DBpedia端点的默认限制为10000行。你不会马上看到整个结果。使用OFFSET
对itI进行分页我已经将查询从“typeName”更改为“category”,但仍然没有获得滑雪板。您没有选择变量typeName
,因此,它应该是BIND('Skilift'as?category)
此外,公共DBpedia端点的默认限制为10000行。你不会马上看到整个结果。使用OFFSET
对itI进行分页我已将查询从“typeName”更改为“category”,但仍然没有获得滑雪板。谢谢,这很有趣,很高兴知道,但我仍然不明白如何获得dbo:skiLift等属性的信息?确切的信息是什么?您可以看到一些具有特定属性的三元组,例如使用以下查询:select?subject?object where{subject dbo:skiLift?object.}LIMIT 10
对于特定属性,数据集中似乎没有使用它,因此结果为空。谢谢,这很有趣,很高兴知道,但是我仍然不明白如何获得属性的信息,比如dbo:skiLift?确切的信息是什么?例如,您可以使用诸如select?subject?object,其中{subject dbo:skiLift?object.}LIMIT 10
之类的查询来查看具有特定属性的一些三元组。对于特定属性,它似乎未在数据集中使用,因此结果为空。