gpt4 book ai didi

java - 如何在 Jena TDB 数据集中保留命名空间前缀?

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:48 25 4
gpt4 key购买 nike

我正在使用 Jena TDB (1.1.1) 来存储一组命名图。一切正常,但每当我从数据集中检索命名图时,所有 namespace 前缀信息都会丢失。有没有办法保留原始 RDF 图中的 namespace 前缀。

以下代码片段显示了该问题。

@Test
public void testPreserveNsPrefixes(){

String modelText = "@prefix ro: <http://purl.org/wf4ever/ro#> ." +
"@prefix ore: <http://www.openarchives.org/ore/terms/> ." +
"@prefix ldp: <http://www.w3.org/ns/ldp#> ." +
"<http://example.org/ro> a ore:Aggregation , ro:ResearchObject , ldp:DirectContainer .\n" ;

// Build the RDF graph
InputStream stream = new ByteArrayInputStream(modelText.getBytes(StandardCharsets.UTF_8));
Model model = ModelFactory.createDefaultModel();
model.read(stream, null, "TURTLE");
System.out.println("NS prefix count: " + model.getNsPrefixMap().size());

//Create a dataset
Dataset dataset = TDBFactory.createDataset("test");

// Add the RDF graph to the dataset
dataset.begin(ReadWrite.WRITE) ;
try {
dataset.addNamedModel("http://example.org/ro", model);
dataset.commit() ;
} finally {
dataset.end() ;
}

//Read the RDF graph again
dataset.begin(ReadWrite.READ);
try{
Model model2 = dataset.getNamedModel("http://example.org/ro");
model2.write(System.out, "TURTLE");
System.out.println("NS prefix count: " + model2.getNsPrefixMap().size());
} finally {
dataset.end();
}
}

其输出是:

    NS prefix count: 3
<http://example.org/ro>
a <http://www.w3.org/ns/ldp#DirectContainer> ,
<http://purl.org/wf4ever/ro#ResearchObject> ,
<http://www.openarchives.org/ore/terms/Aggregation> .
NS prefix count: 0

我认为与this question有关虽然我不认为它是完全重复的。

最佳答案

这样,如果评论被删除,答案也不会丢失,AndyS mentioned 这是 discussed on the Jena user's mailing list ,并在问题 JENA-860, Adding a graph does not add prefixes 中解决。

关于java - 如何在 Jena TDB 数据集中保留命名空间前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com