当前位置: 首页 > 知识库问答 >
问题:

用推断的超类替换个体的当前超类

芮建茗
2023-03-14

问候Ignazio Palmisano教授,

我有一个关于OWL-APIV5的问题

我添加了一个新的单独的“x”作为Thing的子类,并添加了单独的属性。

初始化reasoner和precomputeInferences()

目标:

子问题:

2)我是否必须保存新的推断本体,然后按照断言处理它,以便检索那个类?我不喜欢这样做,因为我的兴趣只是用推断的超类替换当前的单个超类。

我试图找到如何做到这一点,我遇到了:EntitySearcher.getTypes(OWLIndividual,OWLOntology),但是这只检索原始断言的超类,而不是推断的超类。

诚挚的问候。

共有1个答案

许茂才
2023-03-14

为了用推断的类(或多个类--可能不止一个)替换断言的类,您需要执行以下操作:

  • 检索推断的类型
  • 删除断言的类型
  • 添加推断类型

因此,称为rowlReasoner实例,iowlindividualt的原始类型和t的推断类型:

OWLOntology o = ...
OWLReasoner r = ...
// This returns the node of direct types - i.e., the set of equivalent classes that are the most specific named types including i among their instances
// This will always be a Node even for a single class. If the reasoner can infer that there are equivalent classes, they all will appear in the Node
Node<OWLClass> types = r.getTypes(i, true);

// remove existing type assertions
o.removeAxioms(o.getClassAssertionAxioms(i));

// add the new ones
OWLDataFactory df = ...
Stream<OWLAxiom> axiomsToAdd = types.entities().map(T->df.getOWLClassAssertionAxiom(T, i));
o.addAxioms(OWLAPIStreamUtils.asList(axiomsToAdd));

现在o包含新的断言来代替旧的断言。根据需要保存或进一步阐述本体论。

 类似资料:
  • 问题内容: 我有一些这样的代码。 超级班 子类 所以问题是我可以将超类的对象转换为子类吗?这个问题对我来说是正确的吗? 但它给Class Cast异常。 问题答案: 您可以将子类转换为超级类,反之亦然。如果“车辆”是“超级类”,而“汽车”是子类,则所有“汽车”(子代)都是“汽车”(“超级”),但并非所有“车辆”都是“汽车”。

  • 我在wordpress中为buddypress创建了一个自定义菜单。 链接始终包含当前用户。在本例中,用户"admin /成员/管理员/个人资料/ 我必须做什么才能使链接始终指向当前用户?

  • 我现在正在读《实践中的Rest》一书。我无法理解以下术语超媒体,超媒体格式,超媒体控件,域应用协议。作者建议需要特定领域的超媒体格式。我很难理解这些。我在谷歌上搜索了这些术语,但没有找到正确的答案。谁能解释一下这些术语,以及为什么我们需要特定于领域的超媒体格式而不是应用程序/XML?

  • 一个jFrame:HomeView、一个jPanel:TopicListView、另一个jPanel:ReplyListView。 在HomeView中,我有一个菜单项,可以单击它来显示TopicListView。在TopicListView中,我希望有一个可以单击以显示ReplyListView的按钮。单击按钮时,它将调用openReplyListView()方法。该方法将创建一个新的JPane

  • 假设我有一个抽象类Person。有另一个类学生扩展了Person。但是学生类有一个成员变量,比如String类型的学院,它在Person类中不存在。 我们知道我们可以从超类引用子类,例如, 人p=新学生(); 对象p会有成员学院吗?

  • 它是在Android上的,在加载到WebView之前需要修复html。 这可以在JAVA内部完成还是必须在WebView的JavaScript内部完成?