【问题标题】:Convert or translate a big RDF/XML file to JSON-LD format - HOW?将大型 RDF/XML 文件转换或翻译成 JSON-LD 格式 - 如何?
【发布时间】:2013-09-05 08:38:32
【问题描述】:

我需要将此40MB file of RDF/XML 转换为JSON-LD 格式,我只找到this web tool,这根本不起作用。当您粘贴 40MB 的文本时,它会崩溃,当您给它提供文件的 URL 时,它会说该服务不可用。

理论上 Jena API 或者 Sesame 应该能够做到这一点,但我缺少一个起点和有关这些系统的知识。谁能给我一条路线、一个例子或一个有用文档的链接,用于将大型 RDF/XML 转换为 JSON-LD?

(如果我不需要太多其他语言/框架的编程知识,我会对 Java、C# 或可行的解决方案感到满意)。

【问题讨论】:

  • 这是一个很好的、清晰的问题,但它可能与 StackOverflow 无关,因为“要求我们推荐或查找工具、库或最喜欢的非现场资源的问题对于堆栈溢出,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决问题所做的工作。不过,您可能会在answers.semanticweb.com 上获得更好的运气,因为它已经有许多关于 JSON-LD 以及如何编写它的问题,等等。
  • 我接触到了这个网站的创建者,它基本上是 AppEngine 上的一个 Python 工具。他告诉我,问题在于 Google App Engine 的上传时间超时,最好的方法是尝试在我的本地系统上使用它。我正是这样做的。现在可以上传到 localhost 应用程序,但是应该写入我的文件系统的响应太大了。明天我会看看我能做些什么,或者我是否可以更改代码,让它将 JSON-LD 响应写入文件。 Joshua:我不认为这会吸引垃圾邮件,那里没有任何可用的东西。
  • 我同意它不太可能吸引大量垃圾邮件,但它肯定是“推荐或查找工具、库或最喜欢的异地资源”的请求。无论如何,在 answers.semanticweb.com 上搜索 JSON-LD 会发现许多类似的问题,其答案指向不同的 JSON-LD 库。您正在使用的工具的网站还提到了它正在使用的内容:“rdflib-rdfjson for RDF/JSON, and rdflib-jsonld for parsing and serializing JSON-LD”。
  • 作为一个问题的建议,您可以发布问题,将响应写入磁盘作为问题,如果您解决了问题,请发布答案。这可能会对处于相同情况的未来用户有所帮助。
  • 今天没做题,等我知道了会尽快改进。

标签: json rdf json-ld


【解决方案1】:

您可以使用RDFLib 读取RDF/XML 格式的RDF,然后使用json-ld 序列化器将其序列化回JSON-LD

graph.parse(my_url, format='application/rdf+xml')


graph.serialize(my_url, format='application/json-ld')
【解决方案2】:

我是用这个工具做的:http://rdf-translator.appspot.com/

遗憾的是,上传/下载大小太大,所以我从 here 获取代码并在本地 Google App Engine 上从 here 在端口 8999 上运行它。然后我转到包含 owl 文件的目录'ds.owl' 并使用以下命令将其放入 ds.json 文件中:

curl --data-urlencode content@eclass_514en.owl http://localhost:8999/convert/detect/json-ld/content > ds.json

这是唯一有效的方法,我用大约 4 个更大的本体文件进行了尝试。

【讨论】:

    【解决方案3】:

    我不知道 Jena API 支持 JSON-LD,但它 supports RDF/JSON,RDF 三元组的直接编码。您可以使用 Jena API,但使用 Jena 执行此操作的更方便的方法是使用 Jena 命令行 rdfcat 工具。 --help 选项生成的帮助菜单有点过时,但看起来像这样:

    $ rdfcat --help
    Usage: java jena.rdfcat (option|input)*
    Concatenates the contents of zero or more input RDF documents.
    Options: -out N3 | N-TRIPLE | RDF/XML | RDF/XML-ABBREV
             -n  expect subsequent inputs in N3 syntax
             -x  expect subsequent inputs in RDF/XML syntax
             -t  expect subsequent inputs in N-TRIPLE syntax
             -[no]include  include rdfs:seeAlso and owl:imports
    input can be filename, URL, or - for stdin
    Recognised aliases for -n are: -n3 -ttl or -N3
    Recognised aliases for -x are: -xml -rdf or -rdfxml
    Recognised aliases for -t are: -ntriple
    Output format aliases: x, xml or rdf for RDF/XML, n, n3 or ttl for N3, t or ntriple for N-TRIPLE
    See the Javadoc for jena.rdfcat for additional details.
    

    除此之外,您还想知道您可以传递输出格式RDF/JSON。例如,使用众所周知的 Pizza 本体,我们得到:

    $ rdfcat -out RDF/JSON ../sparql-pizza2/pizza.owl  | head -25
    { 
      "_:-b8ef06:140ee02a0b1:-7ff7" : { 
        "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" : [ { 
          "type" : "uri" ,
          "value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"
        }
         ] ,
        "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" : [ { 
          "type" : "uri" ,
          "value" : "http://www.co-ode.org/ontologies/pizza/pizza.owl#TomatoTopping"
        }
         ]
      }
       ,
      "http://www.co-ode.org/ontologies/pizza/pizza.owl#Food" : { 
        "http://www.w3.org/2000/01/rdf-schema#subClassOf" : [ { 
          "type" : "uri" ,
          "value" : "http://www.co-ode.org/ontologies/pizza/pizza.owl#DomainConcept"
        }
         ] ,
        "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ { 
          "type" : "uri" ,
          "value" : "http://www.w3.org/2002/07/owl#Class"
        }
         ]
    ...and so on...
    

    【讨论】:

    • 我会试试的,听起来不错。我会在我尝试后报告。
    • @Akku 好的,但是就像我一开始说的那样,这会产生 RDF/JSON,not JSON-LD。它们是一回事。然而,显然,在耶拿的 JSON-LD 支持上有 has been work
    • 最佳答案...使用耶拿。 1) 下载; 2) 使用jena.apache.org/documentation/tools 准备终端环境
    • rdfcat UPDATING 2017 年,终端显示,“已弃用:请改用 riot”... 所以,riot (见--help)你可以使用JSON-LD,见.jsonld扩展jena.apache.org/documentation/io/#formats
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2019-11-07
    • 2012-06-17
    • 1970-01-01
    • 2016-04-12
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多