无法使用jena从virtuoso中删除普通文字

时间:2017-08-14 11:27:26

标签: java jena virtuoso

我在使用Jena API从Virtuoso删除无类型文字时遇到一些问题。

以下图为例:

s   p                                          o
a   http://www.w3.org/2000/01/rdf-schema#label "label1"
b   http://www.w3.org/2000/01/rdf-schema#label "label2"^^<http://www.w3.org/2001/XMLSchema#string>

通过Virtuoso SPARQL查询编辑器添加了资源a

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
WITH <testgraph>
INSERT DATA { <a> rdfs:label "label1" }

使用Jena API添加了资源b

DatasetAccessor dsa = DatasetAccessorFactory.create(new VirtDataset("localhost:1111", "dba", "dba"));
Model m = dsa.getModel("testgraph");
m.createResource("b").addProperty(RDFS.label, "label2");

我尝试使用removeProperties() -

删除三元组
Model m = dsa.getModel(GRAPH);
Resource a = m.createResource("a");
Resource b = m.createResource("b");
a.removeProperties();
b.removeProperties();

- 并通过UpdateAction -

执行SPARQL查询
UpdateAction.parseExecute("DELETE { ?s ?p ?o } WHERE { ?s ?p ?o . FILTER (?s = <a> || ?s = <b>) }", m);

- 但在这两种情况下,只会删除资源b。 Reason是资源a的无类型字面值 - 当我明确将xsd:string类型添加到label1时,资源a也会被删除。

Jena或Virtuoso是否有任何关于如何处理这些无类型文字的设置?

我正在使用Jena 3.4.0,Virtuoso 7.2.4.2,virt_jena-3virtjdbc-4

0 个答案:

没有答案