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();
}
}