【发布时间】:2018-07-30 16:31:40
【问题描述】:
我有一个关于猫头鹰的研究项目。我需要从 excel 文件中提取数据并将它们写入 xml 文件。我需要使用 owl 本体生成带有传感器和测量值的 xml 文件。我不知道如何使用jena apache来做到这一点。 excel中有一条数据:Data。有人可以帮助我了解如何做到这一点吗?
@edit:可以用csv代替excel。
【问题讨论】:
标签: xml excel jena owl ontology
我有一个关于猫头鹰的研究项目。我需要从 excel 文件中提取数据并将它们写入 xml 文件。我需要使用 owl 本体生成带有传感器和测量值的 xml 文件。我不知道如何使用jena apache来做到这一点。 excel中有一条数据:Data。有人可以帮助我了解如何做到这一点吗?
@edit:可以用csv代替excel。
【问题讨论】:
标签: xml excel jena owl ontology
首先,您应该了解您正在处理的内容:什么是表格(CSV 或 Exel)文件,什么是 RDF,什么是本体以及它是如何通过 OWL 在 RDF 中编码的,这意味着什么将您的表格数据映射到 RDF 并根据一些 OWL 本体,这些本体可能已经可用或由您构建(使用像 Protegé 这样的工具)。然后,您必须了解 Jena 作为库的作用,以通过 Java 以编程方式操作 RDF/OWL 数据。
然后,大概,您必须编写一个 Java 程序,从 CSV 加载数据(从 Excel 转换为 CSV,然后使用 OpenCSV 库,您可以 load straight from .xlsx files,但可能更难为新手程序员做),然后使用数据创建 RDF 三元组,并最终使用 RDF 的 XML 序列化保存 RDF 数据集。
顺便说一句,除非你的作业要求你使用 Jena,否则 CSV->RDF 转换可以使用TARQL 之类的工具完成。一旦您对查询 RDF 的 SPARQL 语言有所了解,这种方法在任务中使用起来会简单得多。
【讨论】:
Apache Jena 支持 RDF/XML 和 CSV 格式(但最后一种仅供阅读)。要转换 CSV->XML 需要在主库 org.apache.jena:jena-arq 之外包含到 maven pom.xml org.apache.jena:jena-csv 工件(还包括 jena 本体 api、sparql 等)。
工作示例:
Model m = ModelFactory.createDefaultModel();
// read csv:
try (InputStream is = Test_CSV.class.getResourceAsStream("/test.csv")) {
RDFDataMgr.read(m, is, "http://example.org", Lang.CSV);
}
// print to console:
m.write(System.out, "ttl");
// save as XML:
Path p = Files.createTempFile("temp-", ".xml");
System.out.println("Save to " + p);
try (OutputStream out = Files.newOutputStream(p)) {
RDFDataMgr.write(out, m, Lang.RDFXML);
}
// print file to console:
Files.lines(p).forEach(System.out::println);
您还可以将刚刚加载的图形包装为org.apache.jena.ontology.OntModel,这允许根据OWL1规范处理本体数据:
OntModel o = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM, m);
【讨论】:
getResourceAsStream 在做什么。以及 Java 中的类加载器在做什么。