2013-02-19 31 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 . 

此,自然,如果你不打算增加一个额外的类型,它只会用于你的目的资源,而是打算为该资源设置特定的类型。