16

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

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

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

4

3 回答 3

14

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

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


graph.serialize(my_url, format='application/json-ld')
于 2013-09-13T21:21:28.303 回答
5

我使用这个工具做到了:http ://rdf-translator.appspot.com/

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

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

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

于 2013-12-18T09:58:56.307 回答
3

我不知道 Jena API 是否支持 JSON-LD,但它支持 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...
于 2013-09-05T12:05:50.213 回答