Запрос SPARQL для получения всех объектов и свойств

Используя онтологию Wine, я хочу создать запрос 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. Есть подсказка?


person ksiomelo    schedule 20.04.2012    source источник


Ответы (1)


Вы не можете. Вам нужно заранее знать, какие столбцы вы хотите получить в результате запроса.

Перечислить все свойства вин, конечно, не очень сложно:

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

Затем вам нужно написать код, который создает окончательный запрос SPARQL из списка результатов.

person cygri    schedule 20.04.2012
comment
Ну, онтология вина — это не простая модель RDF, а сложная онтология OWL. Таким образом, чтобы делать более сложные вещи, например делать вывод о том, что Мерло является подклассом Вина, вам нужен обработчик OWL (или, возможно, тройное хранилище, поддерживающее OWL). - person cygri; 22.04.2012