我开始学习SPARQL,而且我正努力为一个国家提取正确的价值,因为这个地方可能是一个国家,一个城镇,一个州或一些其他地方(例如工厂) )。
我使用的是dbpedia,特别是有关汽车的信息。以下是一个查询我的问题核心的查询:
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT
?car, ?country, ?assembly
WHERE {
?car a dbpedia-owl:Automobile .
FILTER regex(?car,'19[34][0-9]_Ford') . # Keep the example small
?car dbpedia-owl:assembly ?assembly .
OPTIONAL { ?assembly dbpedia-owl:country ?country } . # city
OPTIONAL { ?assembly dbpedia-owl:state/dbpedia-owl:country ?country } . # State
}
ORDER BY ?car, ?assembly
这将返回1930年代和40年代制造的福特汽车列表,以及他们所组装的地点,以及(我试图解决)他们所在的国家。
挑战在于汇编谓词可以解析为城市,州,国家,工厂或其他地方。
例如,Ford_1941同时包含http://dbpedia.org/resource/Australia和http://dbpedia.org/resource/Chester_Assembly。
我添加的两个可选条款适用于城市和州,但我想在其他情况下填充国家,即何时?汇编实际上是一个国家,将国家/地区设置为?汇编,并找到工厂的国家。
(我怀疑工厂到国家,我只需要制定图表并在一个OPTIONAL子句中指定它,除非有人可以启发我否则)
非常感谢提前
匹