2015-12-30 91 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. 
} 

非常感謝您的回答