2010-06-08 9 views
2

J'ai créé un exemple d'ontologie dans protege.Selon mon ontologie, il existe une classe appelée person et qui a une sous-classe appelée Student.Il y a des individus étudiants (john, paul, marry , ...). J'ai défini une propriété de données appelée "email" et affecté leurs adresses email.Comment obtenir des valeurs de propriétés de type de données à l'aide de SPARQL

Après la requête qui résulte tous les individus dans l'ontologie. Mais je veux obtenir chaque individu et leur adresse email.

String queryStr = 
    "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+ 
    "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+ 
    "select ?ind "+ 
    "where { "+ 
    "?ind rdf:type <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#Student> ;"+ 

"}\n "; 

La requête ci-dessus a été testée sur IENA dans l'EDI d'Eclipse.

une idée ..?

Merci d'avance!

Répondre

8

Pour obtenir les adresses électroniques dont vous avez besoin 1) ajouter une variable pour eux à la ligne SELECT, et 2) lier cette variable dans le modèle WHERE. Et vous voudrez probablement ajouter un préfixe pour votre propre ontologie, puisque vous devrez maintenant vous y référer deux fois. Quelque chose comme:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#> 

SELECT ?ind ?email 
WHERE { 
    ?ind rdf:type my:Student . 
    ?ind my:Email ?email 
} 
+0

:: Je suis le résultat en fonction de votre réponse! Passez une bonne journée! Merci beaucoup! – smartcode

0

Une façon plus compacte serait la suivante:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#> 

SELECT ?ind ?email 
WHERE { 
     ?ind rdf:type my:Student ; 
      my:Email ?email . 
    }