SPARQL заявка за извличане на всички обекти и свойства

Използвайки онтологията на Wine, искам да създам SPARQL заявка, за да мога извлечете всички вина и техните свойства като таблицата по-долу - имайте предвид, че не знам имената на свойствата a priori.

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 онтология. Така че, за да правите по-сложни неща, като извод, че Merlot е подклас на Wine, имате нужда от OWL аргумент (или вероятно троен магазин, който поддържа OWL). - person cygri; 22.04.2012