我的学习中的任何帮助都将受到高度赞赏。
问题陈述:
需要打印各个城市的旅游景点列表
我有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:不要进一步探索。
这可以实现吗?
如果问题不清楚,请告诉我。感谢
答案 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)