SPARQL(新手) - 可选择根据它的类型设置变量

时间:2016-12-02 12:23:10

标签: sparql

我开始学习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/Australiahttp://dbpedia.org/resource/Chester_Assembly

我添加的两个可选条款适用于城市和州,但我想在其他情况下填充国家,即何时?汇编实际上是一个国家,将国家/地区设置为?汇编,并找到工厂的国家。

(我怀疑工厂到国家,我只需要制定图表并在一个OPTIONAL子句中指定它,除非有人可以启发我否则)

非常感谢提前

0 个答案:

没有答案