2012-04-20 9 views
8

Mit den Wine ontology, ich will SPARQL-Abfrage erstellen, so kann ich alle Weine abrufen und ihre Eigenschaften wie die Tabelle unten - die Ansicht, dass ich weiß nicht, die Namen der Eigenschaften a priori.SPARQL-Abfrage alle Objekte und Eigenschaften zum Abrufen

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

Kann mir jemand einen Tipp geben?

- EDIT

Es ist nicht möglich, das Abfrageergebnis im Format habe ich erwähnt, aber ich kann es auf diese Art und Weise haben:

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

Mit dieser select (dank cygri) :

Dies wird Weine statt Art von Weinen (Merlot -> GaryFarrellMerlot) nehmen. Das einzige Problem ist, dass es Wein, aber auch Winery, Regionen, Flavors, etc. und ich wollte nur Weine und seine Eigenschaften. Außerdem gibt es keine wie Attribut vin: Merlot rdfs: subClassOf vin: Wein. Irgendein Hinweis?

Antwort

11

Sie können nicht. Sie müssen vorher wissen, welche Spalten Sie in Ihrer Abfrage haben möchten.

alle Eigenschaften der Weine Listing ist nicht sehr schwer natürlich:

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

Dann müssen Sie einen Code schreiben, der die endgültige SPARQL-Abfrage aus der Liste der Ergebnisse erstellt.

+0

Danke cygri! Hast du einen Hinweis auf meine Bearbeitung oben? – ksiomelo

+3

Nun, die Weinontologie ist kein einfaches RDF-Modell, sondern eine komplexe OWL-Ontologie. Um komplexere Dinge zu tun, wie zum Beispiel, dass Merlot eine Unterklasse von Wine ist, benötigen Sie einen OWL-Reasoner (oder wahrscheinlich einen Triple-Store, der OWL unterstützt). – cygri