namespaces - 如何使用 Jena 将远程词汇表/命名空间包含到 OntModel?
问题描述
我是语义网和耶拿的新手。
我想从 Jena 中的 OntModel 生成一个本体,我需要使用预定义的词汇表和本体来表征我的类和属性。
在 Jena 中,有 RDF、FOAF 等默认本体......所以我们可以指定类并将属性添加到资源,如:
ontClass.setSameAs(FOAF.Person);
ontClass.addProperty(FOAF.name, "name");
或者
ontProperty.setRange(XSD.xstring);
但是如何将我的ontClass引用到 Jena 中不存在的另一个词汇/本体(GeoSparql、Geofla、我自己定义的词汇等)?知道我可以获得这些词汇表的 URI 吗?
这个问题已经在这个主题中提出:如何在耶拿添加词汇?这建议使用 Jena Schemagen,但我不知道该怎么做。
非常感谢您的帮助!
解决方案
我想其中一种选择是导入(或阅读)这些词汇/本体,以便您可以使用 Jena Ontology API 使用它们。
例如(如果我们假设您的 ontModel 名为m
),您可以将OWL-Time本体读入您的模型,如下所示:
m.read("http://www.w3.org/2006/time")
然后您可以使用 Jena 的编程 API 定义的元素:
OntClass instant = dataModel.getOntClass("http://www.w3.org/2006/time#Instant");
如果您不想阅读模型中的整个本体,您也可以使用其 URI “创建”必要的资源/属性:
Property inXSDDateTime = m.createDatatypeProperty(
"http://www.w3.org/2006/time#inXSDDateTime");
Resource resource = m.createResource("someURIForThisRessource");
Statement s = m.createStatement(
resource, inXSDDateTime, m.createTypedLiteral(someValue));
m.add(s);
它应该按预期写入结果(但是,通过这样做,您没有加载您所引用的本体的公理,因此您将无法推理它 - 但根据您的评论,我在想也许那正是你想要的)
推荐阅读
- git - Git Credential Manager 不断为 Azure Devops 生成 PAT
- infer.net - GaussianProductOp.ProductAverageConditional - has quality band Experimental which is less than the recommended quality band (Preview)
- sql - 复杂的 SQL 查询请求
- jenkins - 在 Jenkins 管道中运行时出现 sfdx 错误
- angular - 角度 6 中的搜索过滤器
- c - 关于函数声明中省略return语句的问题
- excel - 根据我们可能所在的前一个月过滤12个月前的数据,而无需手动输入开始和结束日期?
- c# - 为什么我的服务器无法响应来自网络浏览器的客户端请求?
- r - 如何在ggplot2的文本中下标字母或数字
- java - 如何使用 selenium 检查警报的可见性