2012-04-20 2 views
8

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

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

Может кто-нибудь дать мне подсказку?

- EDIT

Это не представляется возможным получить результат запроса в формате я уже говорил, но я могу это так:

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). Единственная проблема - это вино, а также Винный завод, регионы, ароматизаторы и т. Д., И я хотел только вина и его свойства. Кроме того, есть no такой атрибут vin: Merlot rdfs: subClassOf vin: Wine. Любые намеки?

ответ

11

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

Список всех свойств вина не очень трудно, конечно:

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

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

+0

Спасибо cygri! есть ли у вас какие-либо намеки на мое редактирование выше? – ksiomelo

+3

Ну, онтология вин - не простая модель RDF, а комплексная онтология OWL. Поэтому, чтобы делать более сложные вещи, например, вызывая, что Merlot является подклассом Wine, вам нужен OWL-рассудитель (или, вероятно, тройной магазин, поддерживающий OWL). – cygri

Смежные вопросы