2012-04-20 2 views
8

Utilisation du Wine ontology, je veux créer SPARQL je peux récupérer tous les vins et leurs propriétés comme le tableau ci-dessous - considère que je ne connais pas les noms des propriétés a priori.SPARQL pour récupérer tous les objets et les propriétés

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

Quelqu'un peut-il me donner un indice?

- EDIT

Il est impossible d'avoir le résultat de la requête dans le format je l'ai mentionné, mais je peux l'avoir ainsi:

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

Avec cette sélection (merci cygri) :

SELECT DISTINCT ?wine ?property ?value 
WHERE { 
     ?o1 a ?class . 
     ?wine a ?o1 . 
     ?wine ?property ?value . 
} 

Cela prendra des vins à la place du type de vins (Merlot -> GaryFarrellMerlot). Le seul problème est qu'il faut du vin mais aussi des vignobles, des régions, des saveurs, etc. et je ne voulais que des vins et leurs propriétés. En outre, il y a non tel attribut vin: Merlot rdfs: subClassOf vin: Vin. Un conseil?

Répondre

11

Vous ne pouvez pas. Vous devez savoir à l'avance quelles colonnes vous voulez dans le résultat de votre requête.

Liste toutes les propriétés des vins est pas très difficile bien sûr:

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

Ensuite, vous devez écrire un code qui crée la requête SPARQL finale de la liste des résultats.

+0

Merci cygri! Avez-vous un indice à ma modification ci-dessus? – ksiomelo

+3

Eh bien, l'ontologie du vin n'est pas un simple modèle RDF mais une ontologie OWL complexe. Donc, pour faire des choses plus complexes, comme inférer que Merlot est une sous-classe de Wine, vous avez besoin d'un raisonneur OWL (ou probablement un magasin triple qui supporte OWL). – cygri

Questions connexes