SPARQL查询以检索所有对象和属性

ksi*_*elo 8 sesame ontology sparql

使用葡萄酒本体,我想创建SPARQL查询,以便我可以检索所有的葡萄酒它们的属性如下面的表格-认为,我不知道属性的名称先验.

vin                  | rdf:type     | vin:hasMaker      |  vin:hasSugar   | ...
==========================================================================  ...
GaryFarrellMerlot    |  vin:Merlot  | vin:Elyse         |  vin:Dry        | ...
--------------------------------------------------------------------------
ElyseZinfandel       |  vin:Elyse   | vin:GaryFarrell   |  vin:Dry        | ...
...
Run Code Online (Sandbox Code Playgroud)

有人能给我一个暗示吗?

- 编辑

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

vin                |   property     |  value
=================================================
GaryFarrellMerlot  |   rdf:type     |  vin:Merlot
-------------------------------------------------
GaryFarrellMerlot  |   rdf:hasMaker |  vin:Elyse
-------------------------------------------------
...
Run Code Online (Sandbox Code Playgroud)

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

SELECT DISTINCT ?wine ?property ?value
WHERE { 
       ?o1 a ?class .
       ?wine a ?o1 .
       ?wine ?property ?value .
}
Run Code Online (Sandbox Code Playgroud)

这将采用葡萄酒而不是葡萄酒(Merlot - > GaryFarrellMerlot).唯一的问题是它需要葡萄酒,还有酒庄,地区,风味等,我只想要葡萄酒及其特性.此外,没有这样的属性vin:Merlot rdfs:subClassOf vin:Wine.任何提示?

cyg*_*gri 11

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

列出葡萄酒的所有属性当然不是很难:

SELECT DISTINCT ?property
WHERE { 
    ?wine a vin:Wine .
    ?wine ?property ?value .
}
Run Code Online (Sandbox Code Playgroud)

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

  • 嗯,葡萄酒本体不是一个简单的RDF模型,而是一个复杂的OWL本体.所以,做更复杂的事情,比如推断梅洛葡萄酒的子类,你需要一个OWL推理(或可能支持OWL三店). (4认同)