Apache Jena偷吃步

RDF API

RDF API普遍被用來創建、編輯、刪除本體論中的類別、屬性與實體

建立一個新的Model

OntModel model = ModelFactory.createOntologyModel();

空Model

建立類別

OntClass class = model.createClass("your URI");

通常一個URI是由namespace(以下簡稱NS,通常是你的網站網址),還有它的名稱所構成

因此如果我們想建立一個動物的類別,我們得將程式碼改寫成

OntClass Animal = model.createClass("http://www.example.com/Animal");

如果你有先對網址進行宣告,那就可以簡寫成

OntClass Animal = model.createClass(NS + "Animal");

建立屬性

屬性有分成ObjectProperty和DatatypeProperty

在建立屬性之後皆必須指定Domain和Range

差異在於ObjectProperty的Range是指定實體

以讓類別「Animal」用有屬性「eat」為例:

ObjectProperty eat = model.createObjectProperty(NS + "eat");
eat.addDomain(Animal);
eat.addRange(Plant);

DatatypeProperty則是指定字串、整數、浮點數等等

以XSD開頭,後面接類型

以讓類別「Animal」用有屬性「name」為例:

DatatypeProperty name = model.createDatatypeProperty(NS + "name");
name.addDomain(Animal);
name.addRange(XSD.xstring);

建立實體

在「Animal」類別中新增一個「cow」實體

Individual cow = Animal.createIndividual(NS + "cow")

在「Plant」類別中新增一個「grass」實體,如果沒有還沒有此類別請自己建立一個

Individual grass = Animal.createIndividual(NS + "grass")

當然也別忘了為剛剛賦予給Animal的屬性填入對應的數值

cow.addProperty(eat, grass)  
cow.addProperty(name, "Bob")

// 一隻名為Bob的牛會吃草

輸出本體論

完成本體論之後,可以將本體論以RDF或OWL的格式輸出

FileOutputStream out = null;
try {


    out = new FileOutputStream("path you want to store your ontology file");

    model.write(out, "RDF/XML-ABBREV"); //"RDF/XML-ABBREV"為儲存的格式

    } catch (IOException ignore) {

        ignore.printStackTrace();

    }
}