2013-07-04 27 views
2

我使用的是rdflib 3.2.3版,一切工作正常。升級到4.0.1後,我開始得到的錯誤:Python rdflib沒有正確解析知識共享許可證信息

RDFa parsing Error! 'ascii' codec can't decode byte 0xc3 in position 5454: ordinal not in range(128)

我嘗試了各種方法,使這項工作,但至今都沒有成功。以下是我的嘗試。

在每一種情況下我:

from rdflib import Graph 

第一次嘗試:

>>> lg =Graph() 
>>> len(lg.parse('http://creativecommons.org/licenses/by/3.0/')) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/graph.py", line 1002, in parse 
parser.parse(source, self, **args) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/plugins/parsers/structureddata.py", line 268, in parse 
vocab_cache=vocab_cache) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/plugins/parsers/structureddata.py", line 148, in _process 
_check_error(processor_graph) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/plugins/parsers/structureddata.py", line 57, in _check_error 
raise Exception("RDFa parsing Error! %s" % msg) 
Exception: RDFa parsing Error! 'ascii' codec can't decode byte 0xc3 in position 4801: ordinal not in range(128) 

第二次嘗試:

>>> lg =Graph() 
>>> len(lg.parse('http://creativecommons.org/licenses/by/3.0/rdf')) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/graph.py", line 1002, in parse 
parser.parse(source, self, **args) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/plugins/parsers/rdfxml.py", line 570, in parse 
self._parser.parse(source) 
File "/usr/lib/python2.7/xml/sax/expatreader.py", line 107, in parse 
xmlreader.IncrementalParser.parse(self, source) 
File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse 
self.feed(buffer) 
File "/usr/lib/python2.7/xml/sax/expatreader.py", line 207, in feed 
self._parser.Parse(data, isFinal) 
File "/usr/lib/python2.7/xml/sax/expatreader.py", line 349, in end_element_ns 
self._cont_handler.endElementNS(pair, None) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/plugins/parsers/rdfxml.py", line 160, in endElementNS 
self.current.end(name, qname) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/plugins/parsers/rdfxml.py", line 461, in property_element_end 
current.data, literalLang, current.datatype) 
File "/home/alex/Projects/RDF/rdfEnv/local/lib/python2.7/site-packages/rdflib/term.py", line 541, in __new__ 
raise Exception("'%s' is not a valid language tag!"%lang) 
Exception: 'i18n' is not a valid language tag! 

第三次嘗試:讓沒有錯誤,也沒有給出任何結果

>>> lg =Graph() 
>>> len(lg.parse('http://creativecommons.org/licenses/by/3.0/rdf', format='rdfa')) 
0 

所以有人請告訴我我是東錯了! :)

回答

3

格雷厄姆在rdflib郵件列表回答說,有一個html5lib問題 - 我們將正確的針它蟒蛇2爲下一個版本,但現在只是做:

pip install html5lib==0.95 

第二個問題是根據rfc5646,來自創意共享的數據存在問題,「i18n」確實不是有效的語言標籤。我添加了支票,但回想起來,它似乎嚴格地提出了一個例外。我想我會將其更改爲警告。

+0

謝謝!這看起來似乎會對我有用 – Alex