首页 文章

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

提问于
浏览
0

我正在使用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 回答

  • 1

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

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

相关问题