2012-02-28 68 views
0

我正在使用Jena 2.6.4。类型文字的字符串表示

以下代码

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

产生以下输出:

帕内尔广场东^^ HTTP://www.w3.org/2001/XMLSchema#string

这看起来不对我:我会期待:

“帕内尔广场东” ^^ 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)); 

我得到所需的输出

“帕内尔广场东” ^^ HTTP://www.w3.org/2001/XMLSchema#string

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

谢谢, 马科

回答

1

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

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

+0

我明白这一点,它是有道理的。谢谢! – MarcoS 2012-02-29 09:34:57