簡體   English   中英

Jena API-如何處理OWL文件?

[英]Jena API - How can I handle OWL files?

我有以下代碼來列出本體的個體:

public static void main(String[] args) {
    OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
    String fileName = "C:/Users/Ikno/Desktop/workspace/Jena/ontrdf.rdf";

    try {
        InputStream inputStream = new FileInputStream(fileName);
        model.read(inputStream, "RDF/XML");
        //model.read(inputStream, "OWL/XML");
        inputStream.close();
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    ExtendedIterator<Individual> itI = model.listIndividuals();

    while (itI.hasNext()) {
        Individual i = itI.next();
        System.out.println(i.getLocalName());
    }
}

該代碼是確定的,並返回所有單獨的本地名稱。 問題是,我在Protégé創建了OWL本體,將其轉換為RDF,這是由耶拿(Jena)操作的一個浪費的步驟。 如果我取消注釋model.read(inputStream, "OWL/XML"); ,它給了我以下錯誤:

class org.apache.jena.riot.RiotException
[line: 266, col: 31] {E201} Multiple children of property element

耶拿(Jena)無法支持OWL格式的這種操作嗎?

作為一種選擇,您可以使用ONT-API ,它是OWL-API和Apache Jena之間的一種橋梁。 因此,它一起支持所有jena和owl-api格式(OWL / XML僅是OWL-API&protege的原始格式),但是(請注意)沒有自己的實現。

根據此處的 Jena文檔如果您查看read方法,很明顯Jena不支持OWL / XML。 lang(第二個要讀取的Arg方法)的預定義值為“ RDF / XML”,“ N-TRIPLE”,“ TURTLE”(或“ TTL”)和“ N3”。 null表示默認語言“ RDF / XML”。 “ RDF / XML-ABBREV”是“ RDF / XML”的同義詞。 因此,在您的情況下,我將本體保存為RDF / XML,然后使用Jena進行讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM