2014-02-06 63 views
2

我正在嘗試使用RDF dump of DBLP,可從DBLP in RDF獲取。我試圖使用Jenardfcat將該文件轉換到成Turtle format分條錯誤在哪裏?

rdfcat -x dblp-2006-02-06.rdf -out t > dblp.ttl 

不幸的是,這將中止與以下錯誤消息:

Exception in thread "main" org.apache.jena.riot.RiotException: [line: 378, col: 
147] {E202} Expecting XML start or end element(s). String data " 
???????????????????????????????????????????????????????????????????????????????? 
??????????????????????????????????????????????????????????????????" not allowed. 
Maybe a striping error. 
     at org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.error 
(ErrorHandlerFactory.java:128) 
     at org.apache.jena.riot.lang.LangRDFXML$ErrorHandlerBridge.error(LangRDF 
XML.java:246) 
… 

至於我可以從另一個問題學習, What is a striping error?條帶化錯誤發生在RDF/XML解析中,當分層XML結構不符合RDF/XML的偶數/奇數規則時。現在,尋找到該文件,該文件的相應部分如下:

<rdf:Description rdf:about="http://www.informatik.uni-trier.de/~ley/db/journals/ac/ac40.html#YousifTD95"><dc:identifier>journals/ac/YousifTD95</dc:identifier><dc:date>2002-01-03</dc:date><rdf:type rdf:resource="http://sw.deri.org/~aharth/2004/07/dblp/dblp.owl#Article"/> 
<dc:creator><foaf:Person rdf:nodeID="MazinSYousif"><foaf:name>Mazin S. Yousif</foaf:name></foaf:Person></dc:creator> 
<dc:creator><foaf:Person rdf:nodeID="MatthewThazhuthaveetil"><foaf:name>Matthew Thazhuthaveetil</foaf:name></foaf:Person></dc:creator> 
<dc:creator><foaf:Person rdf:nodeID="ChitaRDas"><foaf:name>Chita R. Das</foaf:name></foaf:Person></dc:creator> 
<dc:title rdf:parseType="Literal">Cache Coherence in Multiprocessors: A Survey.</dc:title> 
<pages>127-179</pages> 
<year>1995</year> 
<volume>40</volume> 
<journal>Advances in Computers</journal> 
</rdf:Description> 

線378似乎是一個與馬修Thazhuthaveetil,根據納米。然而,不知何故,我沒有看到那條線可能在結構上存在問題(特別是將該線與其他線相比較時)。那裏是否存在真正的結構性問題(如果是,它是什麼),還是錯誤信息有誤導性?

+1

該行只有135個字符,而不是147個。它可能只是這裏的代碼片段中的格式不同,但您可以看看是否有任何機會在該行上存在一些不可打印的字符(非正常空白) 。 –

+0

@jkbkot:嗯,真的......再看一遍,Nano甚至明確地告訴我,這條線確實只有135個字符。十六進制編輯器在行的末尾不顯示不可見的字符,而不是單行換行,就像在其他行的末尾一樣。 –

+1

您可能還需要向後看。這是否嵌套_其他一些XML內容?如果你處於錯誤的「深度」,那麼應該是資源的元素可能會被視爲屬性,反之亦然。這將是一個問題... –

回答

0

剛剛用apache jena 2.11.1試了一下,這很好。你有沒有試過`防暴 - 驗證'?

的錯誤是好奇:

Exception in thread "main" org.apache.jena.riot.RiotException: [line: 378, col: 
147] {E202} Expecting XML start or end element(s). String data " 
???????????????????????????????????????????????????????????????????????????????? 
??????????????????????????????????????????????????????????????????" not allowed. 
Maybe a striping error. 

它沒有顯示可打印字符,這是神祕的。

錯誤只是表示rdf包含屬性標記外的非空白字符。這表明它可能有看不見的垃圾,也許跟在</dc:creator>之後?

我沒有看到類似的東西,所以它真的感覺像是某個地方的IO錯誤。

+0

'riot --validate'不會顯示任何此類錯誤,並且如問題中所述再次嘗試'rdfcat'時,它會在由於OutOfMemoryException最終失敗之前運行更長的時間。所以,的確,一定是某種IO錯誤。 –

+0

如果您使用'riot'命令(無驗證選項),它將輸出n-triples而不進食內存。如果你真的需要烏龜,嘗試加載到tdb然後輸出烏龜(儘管n-triples是烏龜的一個子集)。 – user205512

+0

嗯,我試圖保持文件的大小很小,雖然等效的Turtle文件大小約爲580 MB,但相應的N-Triples文件大小超過1.5 GB。 –