Удалите пустой узел из онтологии с помощью SPARQL UPDATE

Я храню некоторые данные в своей модели онтологии, созданной в протеже с помощью операции вставки SPARQL UPDATE. Ниже представлен запрос на обновление.

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

Теперь я хочу удалить этот пустой узел с помощью операции «удалить». Я пробовал много способов, но это не сработало. Какие-либо предложения?


person Usman Khan    schedule 02.06.2017    source источник


Ответы (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 и т. Д.) нельзя использовать в DELETE WHERE.

person Stanislav Kralin    schedule 02.06.2017