【问题标题】:SPARQL query to retrieve all objects and propertiesSPARQL 查询以检索所有对象和属性
【发布时间】:2023-03-25 17:54:01
【问题描述】:

使用 Wine ontology,我想创建 SPARQL 查询,以便我可以检索 所有葡萄酒它们的属性,如下表所示 - 考虑到我不知道属性的名称​​先验

vin                  | rdf:type     | vin:hasMaker      |  vin:hasSugar   | ...
==========================================================================  ...
GaryFarrellMerlot    |  vin:Merlot  | vin:Elyse         |  vin:Dry        | ...
--------------------------------------------------------------------------
ElyseZinfandel       |  vin:Elyse   | vin:GaryFarrell   |  vin:Dry        | ...
...

谁能给我一个提示?

-- 编辑

查询结果不可能是我提到的格式,但是我可以这样:

vin                |   property     |  value
=================================================
GaryFarrellMerlot  |   rdf:type     |  vin:Merlot
-------------------------------------------------
GaryFarrellMerlot  |   rdf:hasMaker |  vin:Elyse
-------------------------------------------------
...

有了这个选择(感谢cygri):

SELECT DISTINCT ?wine ?property ?value
WHERE { 
       ?o1 a ?class .
       ?wine a ?o1 .
       ?wine ?property ?value .
}

这将采用葡萄酒而不是葡萄酒类型(Merlot -> GaryFarrellMerlot)。唯一的问题是它需要葡萄酒,还需要酒厂、地区、风味等,我只想要葡萄酒及其特性。另外,没有这样的属性vin:Merlot rdfs:subClassOf vin:Wine。有什么提示吗?

【问题讨论】:

    标签: sparql ontology sesame


    【解决方案1】:

    你不能。您需要事先知道查询结果中需要哪些列。

    当然,列出葡萄酒的所有属性并不难:

    SELECT DISTINCT ?property
    WHERE { 
        ?wine a vin:Wine .
        ?wine ?property ?value .
    }
    

    然后您需要编写一些代码,从结果列表中创建最终的 SPARQL 查询。

    【讨论】:

    • 好吧,wine 本体不是一个简单的 RDF 模型,而是一个复杂的 OWL 本体。所以要做更复杂的事情,比如推断 Merlot 是 Wine 的一个子类,你需要一个 OWL 推理器(或者可能是一个支持 OWL 的三重存储)。
    猜你喜欢
    • 2016-10-26
    • 2013-08-13
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多