【问题标题】:How to read from Java a RDF freebase concept?如何从 Java 中读取 RDF freebase 概念?
【发布时间】:2016-04-19 17:14:46
【问题描述】:

我想从 Java 中读取这样的 freebase 转储:

http://rdf.freebase.com/ns/m.0cycc

我尝试使用以下代码从 Jena 读取它:

    OntModel om = ModelFactory.createOntologyModel();
    om.read(freebaseURL, "N3");

但我遇到了一个例外:

org.apache.jena.riot.RiotException: [line: 34, col: 37] 非法转义序列值:x (0x78)

有没有办法..

a) 自动转义这些字符? (我找到了这个帖子,不过好像是手动解决的,需要自动解决:How to read Freebase RDF data? It seems to be a bit broken

b) 使用其他 API 读取文件内容?最后,我想获得一些具体的价值。我认为我可以为这种文件结构开发一个解析算法,但是如果已经完成了一些事情..

谢谢

【问题讨论】:

  • 如果“自动”是指程序化:可能可以通过覆盖/扩展解析器来调整解析器以接受/纠正损坏的数据。当然可以使用 Sesame 的 Rio 解析器,我希望 Jena 也可以。不过,这将需要您进行一些 Java 编程。
  • 是的,我的意思是编程,对不起这个词。我正在尝试修复替换转义字符,但有点困难。我会检查 Sesame 的 Rio 解析器。
  • 我尝试从 Sesame 的 Rio 解析器和 OWL API 加载它,但没有成功。它没有显示任何错误,但似乎没有加载内容。

标签: java rdf jena freebase


【解决方案1】:

我创建了一个代码来“修复”我当前的问题。可能这不是一个通用的修复程序(事实上,我的修复程序已经适应了我的需要,在这种情况下,修复程序会导致一些内容丢失......但目前对我来说还可以)。

我附上代码链接:

https://github.com/alejandrorg/VariousCodes/blob/master/FreebaseFixer.java

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多