求兼容多Java版本的JSON转.xml后缀RDF文档简单实现示例
Java实现JSON转RDF XML(兼容Java8/11/17)
核心思路
用RDF4J的JSONLD解析器将JSON-LD(带语义上下文的JSON)转换为RDF模型,再通过RDF4J的XML写入器输出为.xml后缀的RDF/XML文档。选择RDF4J是因为它跨Java版本兼容、依赖轻量化,且API简洁易上手。
依赖配置(Maven)
仅需引入3个核心依赖,无冗余包,总大小约几MB:
<dependencies> <!-- RDF4J核心模型API --> <dependency> <groupId>org.eclipse.rdf4j</groupId> <artifactId>rdf4j-model</artifactId> <version>4.3.4</version> <!-- 该版本全面兼容Java8/11/17 --> </dependency> <!-- JSONLD格式解析器 --> <dependency> <groupId>org.eclipse.rdf4j</groupId> <artifactId>rdf4j-rio-jsonld</artifactId> <version>4.3.4</version> </dependency> <!-- RDF/XML格式写入器 --> <dependency> <groupId>org.eclipse.rdf4j</groupId> <artifactId>rdf4j-rio-rdfxml</artifactId> <version>4.3.4</version> </dependency> </dependencies>
代码实现
示例1:从JSON字符串转RDF XML文件
import org.eclipse.rdf4j.model.Model; import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.Rio; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class JsonLdToRdfXml { public static void main(String[] args) { // 示例合法JSON-LD数据(必须包含@context定义语义映射) String jsonLdContent = """ { "@context": "https://schema.org/", "@type": "Book", "name": "Java Programming Guide", "author": { "@type": "Person", "name": "Jane Smith" }, "publisher": "Tech Books Inc." } """; try { // 1. 解析JSON-LD为RDF模型 InputStream input = new ByteArrayInputStream(jsonLdContent.getBytes()); Model rdfModel = Rio.parse(input, "", RDFFormat.JSONLD); // 2. 将RDF模型写入为.xml后缀的RDF/XML文件 OutputStream output = new FileOutputStream("book.rdf.xml"); Rio.write(rdfModel, output, RDFFormat.RDFXML); System.out.println("转换完成,输出文件:book.rdf.xml"); } catch (Exception e) { e.printStackTrace(); } } }
示例2:从JSON文件转RDF XML文件
如果JSON数据来自本地文件,只需替换输入流部分:
// 替换示例1中的输入流创建代码 InputStream input = new FileInputStream("input.json");
关键注意事项
- JSON格式要求:必须是JSON-LD(带
@context字段),普通JSON无法直接转换为RDF——因为RDF需要明确的语义映射规则。如果是普通JSON,需先手动添加@context或编写代码完成普通JSON到JSON-LD的映射。 - 版本兼容验证:RDF4J 4.x系列在Java8、11、17环境下无需额外配置,直接编译运行即可。
- 异常优化:实际场景中建议细化异常处理(比如捕获文件不存在、JSON格式非法等特定异常)。
内容的提问来源于stack exchange,提问作者yongliang chen
相关产品推荐
相关产品推荐

