2015-12-30 3 views
0

J'ai une question sur la suppression d'éléments d'un triplestore (fuseki) en utilisant SPARQL. Je l'ai enregistré les éléments suivants dans un graphique:Sparql supprimer tous les enfants du noeud

<ChargingRequest/66769> a keak-ev:ChargingRequest ; 
cnr:priority 2 ; 
keak-ev:chargingNeed [ 
keak-eval:temporalContext [ 
    keak-time:start "2015-09-15T12:00:00Z"^^xsd:dateTime ; 
    keak-time:end "2015-09-15T18:00:00Z"^^xsd:dateTime 
    ] ; 
    keak-eval:minimalValue [ # the powerMin 
    qudt:unit qudt-unit:Watt ; 
    qudt:numericValue "7000"^^xsd:double 
    ] ; 
] . 

je voudrais supprimer le noeud < ChargingRequest/66769> et toutes ses propriétés.

i essayé

DELETE WHERE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?p ?o. 
    keak-ev:chargingNeed ?p ?o 
    } 

mais il ne supprime pas les nœuds ci-dessous

keak-eval:temporalContext [ 
    keak-time:start "2015-09-15T12:00:00Z"^^xsd:dateTime ; 
    keak-time:end "2015-09-15T18:00:00Z"^^xsd:dateTime 
    ] ; 
    keak-eval:minimalValue [ # the powerMin 
    qudt:unit qudt-unit:Watt ; 
    qudt:numericValue "7000"^^xsd:double 
    ] ; 

S'il vous plaît aidez-moi, et je vous remercie pour votre temps.

+0

Pourquoi est «/34 » à un moment donné et «/66769 "à un autre? – AndyS

+0

c'est une erreur de frappe, désolé, je l'ai corrigé, merci – user2431419

Répondre

1

Il existe plusieurs façons de le faire mais je pense que 3 opérations dans une seule requête sont les plus claires: notez qu'il s'agit d'une requête - voir le ";" séparer les opérations.

# Delete 3-deep 
    DELETE { 
    ?x ?p ?o 
    } WHERE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?q ?n1. 
    ?n1 ?p1 ?x . 
    ?x ?p ?o . 
    } ; 

    # Delete 2-deep 
    DELETE { 
    ?x ?p ?o 
    } WHERE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?q ?x. 
    ?x ?p ?o . 
    } ; 
    # Delete immediate 
    DELETE WHERE { <http://localhost:3030/keak/ChargingRequest/66769> ?q ?x. } 
+0

Merci AbdyS, mais ça ne fonctionne pas pourriez-vous s'il vous plaît vérifier mon commentaire ci-dessous. – user2431419

+0

Il le fait pour moi. Vérifiez que l'adresse URI relative < 'dans les données est réellement ' Effectuez ensuite des mises à jour simples jusqu'à ce que quelque chose arrive pour savoir ce qui est mal dans votre configuration. – AndyS

0

J'ai réussi à le faire fonctionner, c'est la solution finale

WITH <http://localhost:3030/keak/> 
DELETE { 
    ?x ?p ?o 
} WHERE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?q ?n1. 
    ?n1 ?p1 ?x . 
    ?x ?p ?o . 
}; 

WITH <http://localhost:3030/keak/> 
DELETE { 
    ?x ?p ?o 
} WHERE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?q ?x. 
    ?x ?p ?o . 
}; 

WITH <http://localhost:3030/keak/> 
DELETE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?q ?x 
} WHERE { 
    <http://localhost:3030/keak/ChargingRequest/66769> ?q ?x. 
} 

Merci beaucoup pour votre réponse