2017-04-04 12 views
0

owl apiの使い方について簡単に質問しています。OWL Api、親AからBにクラスを移動

私は、サブクラス霊長類を持っているサブクラス霊長類を持つ種と呼ばれるクラスを持っていると言う。

種 - >哺乳類 - >霊長類 - 何らかの理由で

人間>は、私は私たちのソフトウェアでこれを再分類したいと思いますし、代わりに、彼らはの直接のサブクラスである必要があり、霊長類が長く哺乳類とは見なされないことを言います種。

は誰が正しい方向に私をポイントしてくださいすることができます>人間 - >霊長類 -

種私たちのグラフは次のようになります意味?

見つける私たちの親クラスがOWL-API

reasoner.getSuperClasses(chield, true).entities().collect(Collectors.toSet[OWLClass]) 

しかしを使用して、十分に簡単ですどのように私はそれが親だから、今私のクラス「を切り離す」ことができますか?

答えて

2

あなたは関係オントロジー持ちの場合:

  • 種 - >哺乳
  • 哺乳類 - >霊長類
  • 霊長類 - >

人間が直接アサートされている(いない結果を推論計算の)。

そしてowlapiにこれは公理のように表される:

  1. OWLSubClass(哺乳動物種)
  2. OWLSubClass(霊長類、哺乳動物)
  3. OWLSubClass(ヒト、霊長類)

あなたがAllen-temporalで遊んでいない限り、古いサブクラスアサーションを削除して新しいアサーションを追加することができます。

OWLDataFactory factory = manager.getOWLDataFactory(); 
ontology.remove(factory.getOWLSubClassOfAxiom(primate, mammal)); 
ontology.add(factory.getOWLSubClassOfAxiom(primate, species)); 

注:owlapiの5よりも古いバージョンを使用しているならば、我々はオントロジーで公理を追加/削除するOWLOntologyManagerを使用する必要があります。

manager.remove(ontology, axiom) 
manager.add(ontology, axiom) 

専門の関係が直接的でない場合あなたのオントロジーにアサーションされています。それははるかに複雑になります。なぜ、「人間」が「哺乳動物」のサブクラスであるかを知る必要があります。たぶん、「推理者」の「説明」システムがあなたを助けることができます。

+1

「可能」だけでなく、サブクラスの公理がアサートされている場合は、階層を変更するために削除する必要があります。推論された場合は、その理由を理解し、推論の理由も取り除き/対処する必要があります。 – Ignazio

+0

ありがとうございます。これにより、潜在的なサブクラスや人間の個体もすべて保持されますか?それとも手動で追跡する必要がありますか? – berlinguyinca

関連する問題