【发布时间】:2014-11-19 07:32:18
【问题描述】:
我正在制作一个可能需要大约 2-3 个 OWL 文件才能使用的应用程序,以便为同一应用程序提供不同的任务。我使用 Jena 作为我的语义网络框架。我的问题是:我们如何组织/设置这些 owl 文件? 我应该读取同一数据集中的所有猫头鹰文件,还是应该为不同的猫头鹰维护不同的数据集。 注意:我不考虑进口猫头鹰,因为它是由 jena 自己处理的。
如果我使用相同的数据集,我如何区分 OntModel.lisRootHierarchyClasses() 等函数获得的结果;和其他此类功能。 当我将本体读入 OntModel 时,是否可以命名本体。
因此想了解在同一应用程序中处理多个 OWL 文件的最佳做法
例如: 我将我的本体读入一个由 TDB 数据集支持的 ontModel:
public static void loadModel(){
dataset.begin(ReadWrite.WRITE);
try{
ontModel = ModelToOntModel(model);
FileManager.get().readModel( ontModel, "SourceOwl1.owk");
FileManager.get().readModel( ontModel, "SourceOwl2.owl");
registerListener();
dataset.commit();
} catch (Exception e){
System.out.println("Error in Loading model from source!!");
e.printStackTrace();
} finally {
dataset.end();
}
}
一旦ontmodel 准备就绪,用户输入会在任何 owl 文件中指定一个特定的类(例如:SourceOWL2_ClassA),我还需要处理它的对象属性和数据类型属性,并在相同的上下文中为用户提供一些信息.
但为了做到这一点,来自 SourceOWL1 的属性也会被列出,因此会导致错误。此外,SourceOWL1 和 SourceOWL2 的结构有很大不同,SourceOWL1 包含大约 3 个导入,而 SourceOWL2 则没有。
【问题讨论】:
-
我认为对此的任何答案都取决于您实际尝试执行的操作。数据集的概念比 OntModel 更加以 TDB 为中心。我认为您需要提供更多背景信息。
-
我已经编辑了这个问题,并做了更多的事情。希望有帮助。
-
好的,根据代码和有关它的讨论(谢谢!),您想将两个 OWL 文件读入不同的模型听起来很清楚。 TDB 支持命名图,那么为什么不将每个 OWL 文件加载到自己的命名图中呢?
-
您的意思是可以使用相同的数据集/TDB 来存储多个 OntModel,但可以单独访问它们。但是为此我需要处理两个不同的实例 OntModels..??或者一个单一的ontmodel会工作..??你能帮我提供一个相同的示例代码吗?
-
我试过这个:
Ontology ot = ModelGenerator.getModel().getOntology("http://www.semanticweb.org/URI/Of/SourceOWL1");使用本体 URI,我能够提取特定于我的要求的本体,但之后我无法从ot获取 OntModel 变量。因此想知道命名图的概念。在Jena TDB Doc 中,它说注意如何加载/使用命名图。