2010-10-20 24 views
2

Je crée cette requête:comment nous pouvons créer une requête basée sur SPARQL pour voir la valeur de certaines propriétés de type de données?

PREFIX VB: <http://VBnet#> 
SELECT ?x ?y 
WHERE 
{ 
    ?x VB:HasName ?y 
}  

HasName est une propriété de type de données. Lorsque j'exécute cette requête dans Protege, le système me montre juste le sujet sans aucune valeur pour la propriété de type de données. mwans? y est vide. Aussi quand je cours dans le système de Jena montre moi seulement: (Chaîne)

Comment est-ce que je peux voir la valeur de la propriété de type de données la valeur de ?y?

+2

Pouvez-vous éditer votre question et montrer les données que vous interrogez (de préférence au format Turtle/NTriples) car il est difficile de dire pourquoi votre requête ne fonctionne pas sans regarder les données. La requête elle-même semble être valide, mais il peut y avoir un problème avec vos données – RobV

Répondre

1

Cela dépend des données contenues dans votre document RDF. Si les valeurs sont des littéraux typés, vous pouvez analyser le jeu de résultats SPARQL et demander le type de données des valeurs limitées à la variable? Y. Si les valeurs sont restituées de manière non conforme à RDF (par exemple html), le type de données peut ne pas apparaître. Sinon, vous verrez quelque chose comme ceci:

<sparql xmlns="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd"> 
<head> 
<variable name="y"/> 
</head> 
<results distinct="false" ordered="true"> 
<result> 
    <binding name="y"><literal xml:lang="en">John</literal></binding> //literals with language 
</result> 
<result> 
    <binding name="y"><literal datatype="http://www.w3.org/2001/XMLSchema#integer">30</literal></binding> //typed literals 
</result> 
... 

Pour extraire le type de données, vous devez interroger l'API Jena.

0

En supposant aucun tag langue:

SELECT ?x ?y (DATATYPE(?y) AS ?dt) 

Notez que si y est un littéral ordinaire puis retour DATATYPE xsd:string mais y n'a pas ^^ type de données (jusqu'à ce que RDF 1.1)?.