从Freebase获取主题的RDF

时间:2013-05-15 22:00:24

标签: rdf freebase rdflib

我正在尝试复制https://developers.google.com/freebase/v1/rdf-overview#rdf-documentation中的示例代码以获取特定主题的RDF并将结果存储在rdflib中。设置后,网址是 https://www.googleapis.com/freebase/v1/rdf/m/02h40lc?key=XXXXX。  但是,在运行代码时,我收到以下错误:

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

我是否错过了让示例工作的一些步骤? 谢谢!

1 个答案:

答案 0 :(得分:0)

看起来解析器不喜欢带前缀的URI中嵌入的句点/点(。)。

作为一种解决方法,您可以扩展ns:&amp; key:在将它们提供给RDF解析器之前手动加上前缀URI(是的,这种方式使得使用标准解析器失败了)。结果应如下所示(我认为将解析):

  @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>;