2013-05-15 5 views
0

Я пытаюсь реплицировать пример кода в https://developers.google.com/freebase/v1/rdf-overview#rdf-documentation, чтобы получить RDF для определенной темы и сохранить результат в rdflib. После настройки URL-адрес составляет https://www.googleapis.com/freebase/v1/rdf/m/02h40lc?key=XXXXX. Однако при выполнении кода, я получаю следующее сообщение об ошибке:Извлечение RDF для темы из Freebase

"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.

В качестве обходного пути вы можете развернуть ключ ns: &: префикс URI вручную, прежде чем подавать их в парсер RDF (да, этот вид побеждает весь смысл использования стандартного анализатора). Результаты должны выглядеть так:

@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, загружая (или часть) RDF-дамп из Freebase в rdflib для некоторой предварительной обработки. Похоже, что нет простого способа сделать это, если мне придется вручную вводить входные файлы в парсер. Мне любопытно узнать, как вы и другие подошли к этой проблеме. – user1748083

+0

Я не очень много работаю с дампами, но когда я это делаю, я стараюсь использовать zgrep, cut и другие инструменты командной строки Unix, в отличие от инструментов RDF. Преобразование, которое я описываю, будет работать на пару минут с sed, awk или Python, поэтому на самом деле это не должно быть обременительным (хотя я согласен, что это не обязательно). –