2015-12-30 82 views
0

我对使用SPARQL从三重(fuseki)中删除元素有疑问。我已存储下列元素中的曲线图: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 
    ] ; 

的节点,请帮帮我,谢谢您的时间。

+0

为什么是“/ 34”在一个点和“/ 66769 “在另一个? – AndyS

+0

这是一个打字错误,对不起,我纠正了它,谢谢 – user2431419

回答

1

有很多种方法可以做到这一点,但我认为在一个请求中的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. } 
+0

谢谢AbdyS,但它不起作用,请你检查我下面的评论。 – user2431419

+0

它适合我。 检查数据中的相对URI''是否真的是'' 然后进行简单更新,直到发现某事发生了什么在您的设置中错误。 – AndyS

0

我设法使它工作,这是最终的解决方案

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

非常感谢您的回答