2017-10-15 9 views
0

J'ai créé une ontologie et je souhaite y mettre à jour certaines propriétés de données. J'ai lu la mise à jour de SPARQL dans enter link description here et j'ai trouvé qu'avec la mise à jour de SPARQL (insertion/mise à jour) je peux mettre à jour le triple RDF basé sur le raisonnement de granule. mais je doute qu'il soit utile pour la propriété de données. Par exemple, j'ai une classe de personne avec datapropery has-age "30" et has-age-category = "enfant" Je crée cette requête SPARQL et je n'ai pas de résultat.Propriété UPdate Data Valeur basée sur SPARQL DELETE et INSERT

"SUPPRIMER personne nn: a-catégorie d'âge 'enfant \ n" ? "INSERT personne nn: a-catégorie d'âge 'adulte' \ n" "où {\ n" » personne rdf: type nn: personne. \ n " "? personne nn: âge-âge? \ n " "? personne nn: catégorie-âge-catégorie?. \ n " " FILTRE ((has-category -age = 'enfant') & & (? a-age = '30')) \ n " "} "; Merci beaucoup

mon ontologie est:

<?xml version="1.0"?> 

<!-- 
/////////////////////////////////////////////////////////////////////////////////////// 
// 
// Object Properties 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 




<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-class --> 

<owl:ObjectProperty rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-class"> 
    <rdfs:domain rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 
    <rdfs:range rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Classroom"/> 
</owl:ObjectProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-time --> 

<owl:ObjectProperty rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-time"> 
    <rdfs:domain rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Courses"/> 
    <rdfs:range rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Time"/> 
</owl:ObjectProperty> 



<!-- 
/////////////////////////////////////////////////////////////////////////////////////// 
// 
// Data properties 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 




<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-age --> 

<owl:DatatypeProperty rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-age"> 
    <rdfs:domain rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/> 
</owl:DatatypeProperty> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-category-age --> 

<owl:DatatypeProperty rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#has-category-age"> 
    <rdfs:domain rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> 
</owl:DatatypeProperty> 



<!-- 
/////////////////////////////////////////////////////////////////////////////////////// 
// 
// Classes 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 




<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Classroom --> 

<owl:Class rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Classroom"/> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Courses --> 

<owl:Class rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Courses"/> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person --> 

<owl:Class rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Time --> 

<owl:Class rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Time"/> 



<!-- 
/////////////////////////////////////////////////////////////////////////////////////// 
// 
// Individuals 
// 
/////////////////////////////////////////////////////////////////////////////////////// 
--> 




<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Jihed --> 

<owl:NamedIndividual rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Jihed"> 
    <rdf:type rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 
    <has-age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">30</has-age> 
    <has-category-age rdf:datatype="http://www.w3.org/2001/XMLSchema#string">child</has-category-age> 
</owl:NamedIndividual> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Joseph --> 

<owl:NamedIndividual rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Joseph"> 
    <rdf:type rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 
    <has-age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</has-age> 
    <has-category-age rdf:datatype="http://www.w3.org/2001/XMLSchema#string">child</has-category-age> 
</owl:NamedIndividual> 



<!-- http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Ralph --> 

<owl:NamedIndividual rdf:about="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Ralph"> 
    <rdf:type rdf:resource="http://www.semanticweb.org/hp/ontologies/2017/9/untitled-ontology-563#Person"/> 
    <has-age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">25</has-age> 
    <has-category-age rdf:datatype="http://www.w3.org/2001/XMLSchema#string">adult</has-category-age> 
</owl:NamedIndividual> 

Répondre

2
  1. Mise en forme de votre question aide toujours d'autres à lire la question.
  2. Quel moteur triple magasin/SPARQL utilisez-vous?
  3. Sans voir les données, comment pouvons-nous vérifier si la partie WHERE est correcte et correspond à certaines données?
  4. Débogage des requêtes SPARQL Update est évidemment possible en vérifiant d'abord si la partie WHERE correspond à un résultat - cela peut en effet être fait en utilisant une requête SELECT.

À partir de votre requête SPARQL Je vois des erreurs évidentes dans la partie WHERE:

WHERE { 
?person rdf:type nn:person . 
?person nn:has-age ?ag . 
?person nn:has-category-age ?categry . 
FILTER ((has-category-age='child') && (?has-age='30')) 
} 
  1. modèle Triple ?person nn:has-category-age ?categry . et le filtre est (has-category-age='child'). Pourquoi? Vous devez filtrer en fonction de la valeur de la variable, sans utiliser à nouveau le prédicat.
  2. Triple motif ?person nn:has-age ?ag . et le filtre est (?has-age='30'). Le même problème qu'avant ... en outre, si le type de données de l'âge est xsd:integer, vous ne pouvez pas utiliser '30', car entre guillemets, il s'agirait d'une chaîne. Soit utiliser 30 ou "30"^^xsd:integer
  3. S'il vous plaît s'il vous plaît vérifier vos noms de variables la prochaine fois, il est horrible d'y voir des fautes de frappe. ?ag ->?age et ?categry ->?category

fixe WHERE partie (Je suppose que l'âge est une valeur entière):

WHERE { 
    ?person rdf:type nn:person . 
    ?person nn:has-age ?age . 
    ?person nn:has-category-age ?category . 
    FILTER ((?category='child') && (?age=30)) 
}