如何遍历skos:更广泛的财产列出各个城市的旅游景点

时间:2014-09-20 07:38:10

标签: sparql dbpedia

我的学习中的任何帮助都将受到高度赞赏。

问题陈述:

需要打印各个城市的旅游景点列表

我有http://dbpedia.org/page/Category:Tourism_by_city类别,我必须要探索。问题是这个类别是skos:更广泛的其他类别,如http://dbpedia.org/page/Category:Tourism_in_Bratislava,其本身是skos:broader http://dbpedia.org/page/Category:Visitor_attractions_in_Bratislava,其中包含dcterms:subject属性,其中包含SELECT DISTINCT ?places WHERE { ?entity skos:broader* <http://dbpedia.org/resource/Category:Tourism_by_city> . ?places dcterms:subject ?entity } 属性旅游景点。 我必须从Tourism_by_city类别开始探索所有城市。

我做了什么

skos:broader

问题:

Visitor_attractions正在进一步探索图表,我希望将其限制为skos:broader级别。此外Visitor_attractions正在探索所有类别,但我希望仅针对skos:broader of类别进行探索。

第1级:Tourism_by_city - &gt;探索所有category:Vistors_attractions_by_xxxcity

第2级:Tourism_by_xxxcity - &gt;仅探索{{1}}

等级3:不要进一步探索。

这可以实现吗?

如果问题不清楚,请告诉我。感谢

1 个答案:

答案 0 :(得分:0)

最后解决了这个问题,我不知道这是否是唯一可行的选择:

SELECT DISTINCT (str(?city) as ?City) (str(?label) as ?Attractions)
WHERE { 
?entity skos:broader <http://dbpedia.org/resource/Category:Tourism_by_city> .
?places skos:broader ?entity .
?places rdfs:label ?city .
FILTER langMatches(lang(?city),"en") .
?attractions dcterms:subject ?places .
?attractions rdfs:label ?label .
FILTER langMatches(lang(?label),"en").
FILTER (if (isliteral(?city ),  contains(str(?city ), "Visitor"), false))
} 
ORDER BY ASC(?city)