dati indicati come questo (in RDF/XML):
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:pizzas="http://example.org/pizzas#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://example.org/pizzas"/>
<owl:Class rdf:about="http://example.org/pizzas#Pizza"/>
<owl:Class rdf:about="http://example.org/pizzas#Human"/>
<owl:ObjectProperty rdf:about="http://example.org/pizzas#hasPizza">
<rdfs:domain rdf:resource="http://example.org/pizzas#Human"/>
<rdfs:range rdf:resource="http://example.org/pizzas#Pizza"/>
</owl:ObjectProperty>
<owl:NamedIndividual rdf:about="http://example.org/pizzas#Jim">
<rdf:type rdf:resource="http://example.org/pizzas#Human"/>
<pizzas:hasPizza>
<owl:NamedIndividual rdf:about="http://example.org/pizzas#CheesePizza">
<rdf:type rdf:resource="http://example.org/pizzas#Pizza"/>
</owl:NamedIndividual>
</pizzas:hasPizza>
</owl:NamedIndividual>
</rdf:RDF>
o lo stesso, nella tartaruga più leggibile:
@prefix : <http://example.org/pizzas#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix pizzas: <http://example.org/pizzas#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
pizzas:Jim
a pizzas:Human , owl:NamedIndividual ;
pizzas:hasPizza pizzas:CheesePizza .
pizzas:hasPizza
a owl:ObjectProperty ;
rdfs:domain pizzas:Human ;
rdfs:range pizzas:Pizza .
pizzas:Human
a owl:Class .
pizzas:Pizza
a owl:Class .
<http://example.org/pizzas>
a owl:Ontology .
pizzas:CheesePizza
a pizzas:Pizza , owl:NamedIndividual .
comunicazione che l'affermazione Jim hasPizza CheesePizza
è una tripla in il grafo. Gli assiomi del dominio e della gamma per la proprietà dell'oggetto hasPizza
sono due triple: hasPizza rdfs:domain Human
e hasPizza rdfs:range Pizza
. Le query SPARQL corrispondono ai modelli di query rispetto alle triple nel grafico. Così, da una query come:
prefix : <http://example.org/pizzas#>
select ?x ?y where {
?x :hasPizza ?y
}
si ottengono risultati come
$ arq --data pizzas.ttl --query query.sparql
-----------------------
| x | y |
=======================
| :Jim | :CheesePizza |
-----------------------
perché non v'è una tripla nel grafico il cui predicato è :hasPizza
, e che tripla ha un :Jim
come soggetto, e :CheesePizza
come oggetto. Sembra che tu stia effettivamente chiedendo il dominio e l'intervallo della proprietà :hasPizza
, che sono anche facili da recuperare. Utilizzare una query come questa:
prefix : <http://example.org/pizzas#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?domain ?range where {
:hasPizza rdfs:domain ?domain ;
rdfs:range ?range .
}
e si otterrà risultati come questo:
$ arq --data pizzas.ttl --query query.sparql
-------------------
| domain | range |
===================
| :Human | :Pizza |
-------------------
Potrebbe inviare la versione RDF del all'ontologia? Le classi non sono direttamente collegate dalle proprietà in OWL, di solito vengono effettuate tramite un assioma di limitazione esistenziale. Quindi apri la versione RDF della tua ontologia e guarda il costrutto; puoi quindi provare ad abbinarlo alla tua query SPARQL. – loopasam
Sembra molto più probabile che tu abbia una proprietà dell'oggetto 'hasPizza', il _rdfs: domain_ e _rdfs: range_ di cui sono' Human' e 'Pizzas', rispettivamente. Anche questo è relativamente facile da cercare, ma è un compito distinto. –