2013-05-15 40 views
0

我試圖複製https://developers.google.com/freebase/v1/rdf-overview#rdf-documentation中的示例代碼以獲取特定主題的RDF並將結果存儲在rdflib中。設置後,網址爲 https://www.googleapis.com/freebase/v1/rdf/m/02h40lc?key=XXXXX。 然而,在運行的代碼,我得到以下錯誤:從Freebase獲取主題的RDF

"BadSyntax: at line 7 of <>: 
    Bad syntax (EOF found in middle of path syntax) at^in: 
    "@prefix key: <http://rdf.freebase.com/key/>. 
     @prefix ns: <http://rdf.freebase.com/ns/>. 
     @prefix owl: <http://www.w3.org/2002/07/owl#>. 
     @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. 
     @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. 

     ns:m.02h40lc 
      ns:base.database.database_topic.database_s_for_this_topic ns:m.0861s; 
      ns:base.rosetta.languoid.document ns:m.05tq40j; 
      ns:base.rosetta.languoid.document ns:m.05tqsrm; 

等,與上線是:

 rdfs:label "Inglise keel"@et^..." 

文件的實際最後一行是:

rdfs:label "Inglise keel"@et. 

我是否錯過了讓示例工作的一些步驟? 謝謝!

回答

0

看起來解析器不喜歡前綴URI中的嵌入式句點/點(。)。

作爲一種解決方法,您可以在將它們提供給RDF解析器之前手動擴展ns:&鍵:前綴URIs(是的,這種方式會破壞使用標準解析器的整個觀點)。結果應該看起來像這樣(我認爲會解析):

@prefix key: <http://rdf.freebase.com/key/>. 
    @prefix ns: <http://rdf.freebase.com/ns/>. 

    <http://rdf.freebase.com/ns/m.02h40lc> 
     <http://rdf.freebase.com/ns/base.database.database_topic.database_s_for_this_topic <http://rdf.freebase.com/ns/m.0861s>; 
     <http://rdf.freebase.com/ns/base.rosetta.languoid.document <http://rdf.freebase.com/ns/m.05tq40j>; 
+0

謝謝湯姆。我希望使用Python庫將Freebase的RDF轉儲(或其中的一部分)轉儲到rdflib中進行一些初步處理。如果我不得不將輸入文件手工輸入到解析器,看起來好像沒有直接的方法。我很想知道你和其他人是如何處理這個問題的。 – user1748083

+0

我沒有使用過多的轉儲,但是當我這樣做時,我傾向於使用zgrep,cut和其他Unix命令行工具,而不是RDF工具。我所描述的轉換與sed,awk或Python有幾分鐘的聯繫,所以不應該是那麼繁重(儘管我同意不應該這樣)。 –