2012-02-28 92 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