2013-02-19 49 views
0
Can you please help me in building the code in setting a Resource to a Class 

import com.hp.hpl.jena.ontology.Individual; 
import com.hp.hpl.jena.ontology.OntModel; 
import com.hp.hpl.jena.query.Dataset; 
import com.hp.hpl.jena.query.ReadWrite; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.rdf.model.Resource; 
import com.hp.hpl.jena.tdb.TDBFactory; 

public class ModelMain { 

    String dbName = "DataBase"; 
    String ns1 = "http://text.book/Someone#"; 
    String ns; 
    Dataset ds; 
    OntModel m; 

//創建了一個模型,並存儲在數據庫 公共StoryModel(字符串名稱){如何在耶拿的RDF創建方法公共靜態布爾的setType(資源資源,字符串的typeName)

 ns = ns1 + Name; 
     ds = TDBFactory.createDataset(dbName); 
     m = ModelFactory.createOntologyModel(); 

    } 

//分配資源類
公共無效initModel(){

 m.createClass(ns + "Thing"); 
     m.createClass(ns + "Object"); 
     saveModel(); 

    } 

//讀取和寫入模型 公共無效saveModel(){

 ds.begin(ReadWrite.WRITE); 
     m.write(System.out, "RDF/XML-ABBREV"); 

    } 

//創建資源
公共資源createResource(字符串資源名稱,字符串clsName){

 String resourceuri = ns + resourceName; 
     String classuri = ns + className; 

     Resource classr = m.getResource(classuri); 
     Individual i = m.createIndividual(resourceuri, classr); 

     return i; 

    } 

//分配型資源
公共靜態布爾的setType (Resource resource,String typeName) { //如何將資源分配給資源 } }

回答

1

你需要一個語句添加到數據:

model.add(resource, RDF.type, TheTypeAsAResource) ; 
+0

我在jena上很窮我不理解這個「model.add(resource,RDF.type,TheTypeAsAResource);」的作品....你能解釋一下.. :( – user2057437 2013-02-20 13:56:07

1

如果你有一個OntResource(這Individual是),那麼你可以考慮潛在的使用方法setPropertyValue(Property, RDFNode)的設置類型。請注意,這與@AndyS's answer的區別僅在於它在添加新三元組之前刪除了圖中已有的其他RDF.type屬性。

與模型開始:

:a rdf:type :Cat . 
:a rdf:type :DomesticAnimal . 

下面的代碼(假設aIndividual):

a.setPropertyValue(RDF.type, TheTypeAsResource); 

將導致模型:

a: rdf:type :theType . 

此,自然,如果你不打算增加一個額外的類型,它只會用於你的目的資源,而是打算爲該資源設置特定的類型。