2012-04-20 12 views
8

Utilizando el Wine ontology, quiero crear consulta SPARQL para que pueda recuperar todos los vinos y sus propiedades como la tabla de abajo - considero que no sé los nombres de las propiedades a priori.SPARQL consulta para recuperar todos los objetos y propiedades

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

Puede alguien dar una pista?

- EDITAR

No es posible tener el resultado de la consulta en el formato que he mencionado, pero que puede tener de esta manera:

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

Con este selecto (gracias cygri) :

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

Esto tomará los vinos en lugar del tipo de vinos (Merlot -> GaryFarrellMerlot). El único problema es que lleva vino, pero también bodega, regiones, sabores, etc. y solo quería vinos y sus propiedades. Además, hay no tal atributo vin: Merlot rdfs: subClassOf vin: Wine. ¿Alguna pista?

Respuesta

11

No puede. Necesita saber de antemano qué columnas quiere en el resultado de su consulta.

listado todas las propiedades de vinos no es muy difícil, por supuesto:

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

Luego hay que escribir un código que crea la consulta final SPARQL de la lista de resultados.

+0

Gracias cygri! ¿Tienes alguna pista sobre mi edición anterior? – ksiomelo

+3

Bueno, la ontología del vino no es un modelo RDF simple sino una ontología OWL compleja. Entonces, para hacer cosas más complejas, como inferir que Merlot es una subclase de Wine, necesita un razonador OWL (o probablemente una tienda triple que admita OWL). – cygri

Cuestiones relacionadas