我在使用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
-
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-3
和virtjdbc-4
。