如何配置 RDFWriter 以在文字中显式写入数据类型?

How to configure RDFWriter to explicit write data type in literals?

我正在使用 RDFWriter 保存 TTL 文件。 如何显式保存文字及其数据类型?

例如,我想要 "5.36289"^^xsd:float 但我得到的却是 5.36289E0

我对字符串有同样的问题,但我发现 BasicWriterSettings.XSD_STRING_TO_PLAIN_LITERAL 属性 解决了。我找不到其他数据类型的任何类似配置。

我正在使用方法 Values.literal 创建文字。

这是源代码:

FileOutputStream out = new FileOutputStream(ttlOutputFile);
RDFWriter writer = Rio.createWriter(RDFFormat.TURTLE, out);

final WriterConfig config = writer.getWriterConfig();
config.set(BasicWriterSettings.XSD_STRING_TO_PLAIN_LITERAL, false);

writer.startRDF();

for (Statement st : model) {
    writer.handleStatement(st);
}
writer.endRDF();

有一个名为 ABBREVIATE_NUMBERS 的配置设置非常有用(只有当 PRETTY_PRINT 为真时才需要使用它,这是默认值)。

final WriterConfig config = writer.getWriterConfig();
config.set(BasicWriterSettings.PRETTY_PRINT, true);
config.set(BasicWriterSettings.XSD_STRING_TO_PLAIN_LITERAL, false);
config.set(TurtleWriterSettings.ABBREVIATE_NUMBERS, false);