2017-06-02 59 views
2

藉助於SPARQL UPDATE'insert'操作,我將一些數據存儲在我的本體模型中。以下是更新查詢。通過SPARQL更新從本體刪除空白節點

PREFIX test: <http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> 
insert { 
    [] test:Kpi_Variable ?s ; 
    test:hasValue_ROB4 ?p ; 
    test:hasTime ?now . 
} 
where { 

    values (?s ?p) { 
     (test:Actual_Production_Time 33) 
    } 
    bind (now() as ?now) 
} 

它存儲在以下方式RDF圖:

[ test:Kpi_Variable test:Actual_Production_Time ; 
    test:hasTime  "2017-06-02T14:40:33.187+03:00"^^xsd:dateTime ; 
    test:hasValue_ROB4 33 
] . 

現在我想刪除這個空節點與「刪除」操作。我嘗試了很多方法,但沒有奏效。 有何建議?

回答

1

使用DELETE

PREFIX test: <http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> 

DELETE 
    { 
    ?b test:Kpi_Variable ?s ; 
     test:hasValue_ROB4 ?p ; 
     test:hasTime ?t . 
    } 
WHERE 
    { 
    ?b test:Kpi_Variable ?s ; 
     test:hasValue_ROB4 ?p ; 
     test:hasTime ?t . 
    FILTER (?t < now()) 
    FILTER (isBlank(?b)) 
    # ... 
    VALUES (?s ?p) { (test:Actual_Production_Time 33) } 
    } 

使用DELETE WHERE

PREFIX test: <http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
DELETE 
WHERE 
    { 
    ?s test:Kpi_Variable test:Actual_Production_Time ; 
     test:hasValue_ROB4 33 ; 
     test:hasTime "2017-06-00T00:00:00.000+00:00"^^xsd:dateTime . 
    } 

空節點和空白節點標籤(以及FILTER等)can notDELETE WHERE使用。