OWL Api,将 class 从 parent A 移动到 B
OWL Api, move class from parent A to B
我有一个关于 owl api.
用法的快速问题
假设我有一个名为 Species 的 class,它有一个 Subclass 哺乳动物,它有一个 Subclass 灵长类动物,它有一个 subclass 人类。
物种 -> 哺乳动物 -> 灵长类动物 -> 人类
出于某种原因,我想在我们的软件中重新class确认这一点,并说灵长类动物不再被视为哺乳动物,它们应该是一个物种的直接子class。
这意味着我们的图表现在应该看起来像这样
物种 -> 灵长类动物 -> 人类
谁能给我指出正确的方向?
找到我们的 parent class 很容易,使用 owl-api
reasoner.getSuperClasses(chield, true).entities().collect(Collectors.toSet[OWLClass])
但是我现在如何 'detach' 我的 class 从 parent?
如果你有一个ontology关系:
- 物种 -> 哺乳动物
- 哺乳动物 -> 灵长类动物
- 灵长类动物 -> 人类
直接断言(不是推理计算的结果)。
然后在 owlapi 中,这表示为公理:
- OWLSubClass(哺乳动物,物种)
- OWLSubClass(灵长类动物,哺乳动物)
- OWLSubClass(人类,灵长类动物)
解决方案可能是删除旧的子类断言并添加新的(除非您使用的是 Allen-temporal)。
OWLDataFactory factory = manager.getOWLDataFactory();
ontology.remove(factory.getOWLSubClassOfAxiom(primate, mammal));
ontology.add(factory.getOWLSubClassOfAxiom(primate, species));
注意:如果您使用的是 owlapi 5 之前的版本,那么我们必须使用 OWLOntologyManager 来 remove/add ontology 中的公理:
manager.remove(ontology, axiom)
manager.add(ontology, axiom)
如果您的 ontology 中没有直接断言专业化关系;它会复杂得多。你必须知道为什么 'human' 是视图 'mammal' 的子类。也许'reasoner'的'explanation'系统可以帮到你
我有一个关于 owl api.
用法的快速问题假设我有一个名为 Species 的 class,它有一个 Subclass 哺乳动物,它有一个 Subclass 灵长类动物,它有一个 subclass 人类。
物种 -> 哺乳动物 -> 灵长类动物 -> 人类
出于某种原因,我想在我们的软件中重新class确认这一点,并说灵长类动物不再被视为哺乳动物,它们应该是一个物种的直接子class。
这意味着我们的图表现在应该看起来像这样
物种 -> 灵长类动物 -> 人类
谁能给我指出正确的方向?
找到我们的 parent class 很容易,使用 owl-api
reasoner.getSuperClasses(chield, true).entities().collect(Collectors.toSet[OWLClass])
但是我现在如何 'detach' 我的 class 从 parent?
如果你有一个ontology关系:
- 物种 -> 哺乳动物
- 哺乳动物 -> 灵长类动物
- 灵长类动物 -> 人类
直接断言(不是推理计算的结果)。
然后在 owlapi 中,这表示为公理:
- OWLSubClass(哺乳动物,物种)
- OWLSubClass(灵长类动物,哺乳动物)
- OWLSubClass(人类,灵长类动物)
解决方案可能是删除旧的子类断言并添加新的(除非您使用的是 Allen-temporal)。
OWLDataFactory factory = manager.getOWLDataFactory();
ontology.remove(factory.getOWLSubClassOfAxiom(primate, mammal));
ontology.add(factory.getOWLSubClassOfAxiom(primate, species));
注意:如果您使用的是 owlapi 5 之前的版本,那么我们必须使用 OWLOntologyManager 来 remove/add ontology 中的公理:
manager.remove(ontology, axiom)
manager.add(ontology, axiom)
如果您的 ontology 中没有直接断言专业化关系;它会复杂得多。你必须知道为什么 'human' 是视图 'mammal' 的子类。也许'reasoner'的'explanation'系统可以帮到你