如何将大型RDF/XML文件转换为JSON-LD格式?

如何将大型RDF/XML文件转换为JSON-LD格式?,json,rdf,json-ld,Json,Rdf,Json Ld,我需要将其转换为JSON-LD格式,但我发现这根本不起作用。当你粘贴40MB的文本时,它会崩溃,当你给它文件的URL时,它会说服务不可用 理论上,Jena API,或者Sesame应该能够做到这一点,但是我缺少了一个起点和关于这些系统的知识。有人能给我一个将大型RDF/XML转换为JSON-LD的路径、示例或有用文档的链接吗 (我很乐意使用Java、C#或一种不需要太多其他语言/框架编程知识的工作解决方案)。我不知道Jena API支持JSON-LD,但它是RDF三元组的直接编码。您可以使用Je

我需要将其转换为JSON-LD格式,但我发现这根本不起作用。当你粘贴40MB的文本时,它会崩溃,当你给它文件的URL时,它会说服务不可用

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


(我很乐意使用Java、C#或一种不需要太多其他语言/框架编程知识的工作解决方案)。

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

$rdfcat--帮助
用法:java jena.rdfcat(选项|输入)*
连接零个或多个输入RDF文档的内容。
选项:-输出N3 | N-TRIPLE | RDF/XML | RDF/XML-ABBREV
-n预期N3语法中的后续输入
-x预期后续输入为RDF/XML语法
-不希望后续输入采用N-TRIPLE语法
-[否]包括rdfs:seeally和owl:imports
输入可以是文件名、URL或-for stdin
可识别的-n别名为:-n3-ttl或-n3
可识别的-x别名为:-xml-rdf或-rdfxml
可识别的-t别名为:-ntriple
输出格式别名:rdf/xml的x、xml或rdf,n3的n、n3或ttl,n-TRIPLE的t或ntriple
有关更多详细信息,请参阅Javadoc for jena.rdfcat。
除此之外,您还想知道,您可以传递输出格式
RDF/JSON
。例如,使用著名的比萨饼本体,我们得到:

$rdfcat-out-RDF/JSON../sparql-pizza2/pizza.owl | head-25
{ 
“——-b8ef06:140ee02a0b1:-7ff7”:{
"http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" : [ { 
“类型”:“uri”,
“值”:http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"
}
] ,
"http://www.w3.org/1999/02/22-rdf-syntax-ns#first" : [ { 
“类型”:“uri”,
“值”: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" : [ { 
“类型”:“uri”,
“值”:http://www.co-ode.org/ontologies/pizza/pizza.owl#DomainConcept"
}
] ,
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ { 
“类型”:“uri”,
“值”:http://www.w3.org/2002/07/owl#Class"
}
]
等等
您可以使用读取RDF/XML格式的RDF,然后使用序列化程序将其序列化回JSON-LD

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


graph.serialize(my_url, format='application/json-ld')

我是用这个工具做的:

遗憾的是,上传/下载的大小太大了,所以我从8999端口获取了代码并在本地Google应用程序引擎上运行。然后我使用owl文件“ds.owl”进入目录,并使用以下命令将其放入ds.json文件中:

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

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

这是一个好的、明确的问题,但对于StackOverflow来说,这可能是个离题的问题,因为“要求我们推荐或查找工具、库或最喜欢的非现场资源的问题与堆栈溢出无关,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。”。"不过,你可能会有更好的运气,因为它已经有很多关于JSON-LD和如何编写的问题,&c。我联系了该网站的创建者,该网站基本上是AppEngine上的Python工具。他告诉我,问题是Google App Engine的上传时间超时,最好的途径是尝试与我们联系在我的本地系统上安装它。我就是这么做的。现在上传到本地主机应用程序可以工作了,但是应该写入我的文件系统的响应太大了。我明天会看看我能做些什么,或者如果我能改变代码,让它将JSON-LD响应写入一个文件中。Joshua:我认为这不会吸引垃圾邮件我们没有什么可用的。我同意它不太可能吸引太多垃圾邮件,但它肯定是一个“推荐或查找工具、库或喜爱的非网站资源”的请求。无论如何,在answers.semanticweb.com上搜索JSON-LD会发现许多类似的问题,答案指向不同的JSON-LD库。您使用的工具的网站也提到了它的用途:“rdflib rdfjson用于RDF/JSON,rdflib jsonld用于解析和序列化JSON-LD”。作为一个问题的建议,您可以将问题作为一个问题发布到磁盘,如果您已经解决了问题,则发布答案。这可能有助于将来的用户解决同样的问题。今天没有完成任务,但我知道更多信息后会尽快改进问题。我会尝试,听起来是个不错的答案。我会报告back当我尝试时。@Akku OK,但正如我在开始时所说的,这会产生RDF/JSON,而不是JSON-LD。它们不是一回事。但是,显然,Jena中没有JSON-LD支持。最佳答案…使用Jena。1)下载;2)准备termonal env,并使用
rdfcat
更新2017年,如终端所示,“不推荐:请改用riot”…因此,使用
riot
(请参见
--help
)可以使用JSON-LD,请参见
。在这里,jsonld
扩展也可以在命令行中完成: