Compte tenu des données comme celle-ci (en 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>
ou même, dans la tortue plus lisible:
@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 .
avis que l'affirmation Jim hasPizza CheesePizza
est un triple le graphique. Les axiomes de domaine et de plage pour la propriété d'objet hasPizza
sont deux triplets: hasPizza rdfs:domain Human
et hasPizza rdfs:range Pizza
. Les requêtes SPARQL correspondent aux modèles de requête par rapport aux triplets du graphique. Ainsi, à partir d'une requête comme:
prefix : <http://example.org/pizzas#>
select ?x ?y where {
?x :hasPizza ?y
}
vous obtiendrez des résultats tels que
$ arq --data pizzas.ttl --query query.sparql
-----------------------
| x | y |
=======================
| :Jim | :CheesePizza |
-----------------------
parce qu'il ya un triple dans le graphique dont le prédicat est :hasPizza
, et qui a triple un :Jim
comme sujet, et :CheesePizza
en tant qu'objet. Il semble que vous demandiez réellement le domaine et la plage de la propriété :hasPizza
, qui sont également faciles à récupérer. Utilisez une requête comme ceci:
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 .
}
et vous obtiendrez des résultats comme celui-ci:
$ arq --data pizzas.ttl --query query.sparql
-------------------
| domain | range |
===================
| :Human | :Pizza |
-------------------
Pouvez-vous poster la version RDF de votre ontologie? Les classes ne sont pas directement liées par des propriétés dans OWL, cela se fait généralement via un axiome de restriction existentiel. Donc, ouvrez la version RDF de votre ontologie et regardez la construction; vous pouvez ensuite essayer de le faire correspondre avec votre requête SPARQL. – loopasam
Il semble beaucoup plus probable que vous ayez une propriété d'objet 'hasPizza', les _rdfs: domain_ et _rdfs: range_ étant respectivement' Human' et 'Pizzas'. Ceci est relativement facile à rechercher aussi, mais c'est une tâche distincte. –