Sparql удалить все дочерние элементы узла

У меня вопрос по поводу удаления элементов из триплстора (фусеки) с помощью SPARQL. Я сохранил следующие элементы в графе:

<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 
  ] ;
] .

я хотел бы удалить узел ‹ ChargingRequest/66769> и все его свойства.

я пытался

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

но не удаляет узлы ниже

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 
  ] ;

Пожалуйста, помогите мне, и спасибо за ваше время.


person user2431419    schedule 30.12.2015    source источник
comment
Почему в одной точке /34, а в другой /66769?   -  person AndyS    schedule 30.12.2015
comment
это опечатка, извините, я исправил, спасибо   -  person user2431419    schedule 30.12.2015


Ответы (2)


Есть разные способы сделать это, но я думаю, что 3 операции в одном запросе — самый понятный: обратите внимание, что это один запрос — см. «;» разделение операций.

  # 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. }
person AndyS    schedule 30.12.2015
comment
Спасибо, AbdyS, но это не работает, не могли бы вы проверить мой комментарий ниже. - person user2431419; 30.12.2015
comment
Это для меня. Убедитесь, что относительный URI <ChargingRequest/66769> в данных действительно равен <http://localhost:3030/keak/ChargingRequest/66769> Затем выполняйте простые обновления, пока что-то не произойдет, чтобы выяснить, что не так в вашей настройке. - person AndyS; 30.12.2015

Мне удалось заставить это работать, это окончательное решение

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.
}

Большое спасибо за ответ

person user2431419    schedule 31.12.2015