2013-03-03 13 views
1

我有一個貓頭鷹文件,我需要編寫一個Java程序,在該程序中傳遞個人名稱(如Lion)並獲取所有對象/數據屬性來自貓頭鷹的這個人的相關值(例如:Goldenhas_color對象屬性等)。如何通過將其名稱傳遞給java程序來從owl中獲取個人信息

我寫了一個java類,它基於最簡單的 api uk.ac.ebi.brain.core.Brain,但是這個API沒有方法來列出單個信息。 那麼有沒有其他簡單的方法可以滿足我的需求?

在下面的例子中,我檢索主類Animal 的子類,我不知道如何檢索每個子類的個體,或者通過傳遞個體名稱來獲取對象/數據屬性這個人的:

import edu.stanford.smi.protegex.owl.model.OWLIndividual; 
import java.util.List; 
import java.util.Set; 
import org.semanticweb.owlapi.model.OWLAnonymousIndividual; 
import org.semanticweb.owlapi.model.OWLObjectProperty; 
import uk.ac.ebi.brain.core.Brain; 
import uk.ac.ebi.brain.error.BrainException; 

public class AnimalIndividuals { 

    public static void main(String[] args) throws BrainException { 
     Brain brain = new Brain(); 
     brain.learn("d:\\Animal.owl"); 
     List<String> subClasses = brain.getSubClasses("Animal", false); 
     for (String subClass : subClasses) { 
      System.out.println("Subclass of Animal: " + subClass); 
     } 
     brain.sleep(); 
    }  
} 
+0

[?whathaveyoutried](http://mattgemmell.com/2008/12/08/what-have-you-tried/)。向我們展示了一些示例代碼以幫助您。 – Byron 2013-03-03 09:53:49

回答

1

這是目前(2013年3月)無法獲取使用大腦,因爲它尚未被ELK,負責此操作的基本推理實現附加到對象的財產的個人。

但是,在我看來,你可以玩你的建模。您可以將Lion聲明爲類 而不是個人。你可以進一步定義概念Lion作爲has_color some Golden的子類。這意味着在OWL中所有的獅子都是金色的,但事物可以是金色的,不一定是獅子。

實現腦:

public static void main(String[] args) throws BrainException { 
    Brain brain = new Brain(); 

    //Declaration of the concepts and properties 
    brain.addClass("Animal"); 
    brain.addClass("Lion"); 
    brain.addClass("Golden"); 
    brain.addObjectProperty("has_color"); 

    //Axioms assertion 
    brain.subClassOf("Lion", "Animal"); 
    brain.subClassOf("Lion", "has_color some Golden"); 

    //Query 
    List<String> results = brain.getSubClasses("has_color some Golden", false); 
    System.out.println(results); 

    brain.sleep(); 
} 
相關問題