键入文字的字符串表示形式

时间:2012-02-28 14:20:04

标签: jena

我正在使用Jena 2.6.4。

以下代码

String v = "Parnell Square East";
Literal l = ModelFactory.createDefaultModel().createTypedLiteral(
    v, XSDDatatype.XSDstring);
System.out.println(l.toString());

产生以下输出:

  

Parnell Square East ^^ http://www.w3.org/2001/XMLSchema#string

我看起来不对:我原以为:

  

“Parnell Square East”^^ http://www.w3.org/2001/XMLSchema#string

快速查看LiteralImpl.java的源代码,我看到了:

@Override public String toString() {
    return asNode().toString( PrefixMapping.Standard, false );
}

为什么第二个参数(引用)设置为false

如果我这样做

String v = "Parnell Square East";
Literal l = ModelFactory.createDefaultModel().createTypedLiteral(v,
        XSDDatatype.XSDstring);
System.out.println(l.asNode().toString(PrefixMapping.Standard, true));

我得到了所需的输出

  

“Parnell Square East”^^ http://www.w3.org/2001/XMLSchema#string

我只是想知道为什么这不是默认行为?

谢谢, 马可

1 个答案:

答案 0 :(得分:1)

任何Jena节点上的toString都不能保证隐式或显式产生适合任何特定序列化(例如Turtle)的输出。您也可以问为什么toString不生成XML节点,或者为什么数据类型没有缩写为q-name。 Jena采用的观点是toString产生足够的信息以便在调试中发挥作用。除此之外的任何要求都是应用程序职责。

所以说,如果你有一个好的用例,可以随意向Jena Jira提交补丁。但请记住,现有的用户代码可能已经依赖于当前的行为,因此切换会产生一些成本,因此您需要做出有力的改变!