2012-05-14 61 views
3

我正在嘗試使用Jena框架來編輯使用Protoge 4.2構建的現有本體。即改變財產價值或增加個人或類別,然後進行推理。假設在本體論中,我們有一個規則:hasAge(?p,?age)^ swrlb:greaterThan(?age,18) - > Adult(?p)。我希望能夠改變耶拿方面的hasAge財產,看看是否有人是成年人。你能給我提供一些示例代碼嗎?任何幫助表示讚賞。在Jena框架中用SWRL規則推理粒子

回答

0

假設:

  • 你知道如何在你建立
  • 你已經把顆粒放在classpath
  • 您更換IRI的下方與那些從你的本體讀來填充你的模型域
  • 您已經斷言啓用

下面的代碼片段將年齡添加到IND個人x-test://individual並聲稱SWIRL將引入的財產得到滿足。

// create an empty ontology model using Pellet spec 
final OntModel model = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC); 

// read the file 
model.read(ont); 

// Grab a resource and and property, and then set the property on that individual 
final Resource Adult = ResourceFactory.createResource("x-domain://Adult"); 
final Property hasAge = ResourceFactory.createProperty("x-domain://hasAge"); 
final Resource res = model.createResource("x-test://individual"); 
res.addLiteral(hasAge, 19); 

// Test that the swirl rule has executed 
assert(res.hasProperty(RDF.type, Adult));