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;

// 创建一个模型并存储在数据库中 public StoryModel(String Name){

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

    }

// 将资源分配给类
public void initModel() {

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

    }

//读写模型 public void saveModel() {

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

    }

// 创建资源
public Resource createResource(String resourceName, String clsName) {

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

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

        return i;

    }

// 为资源分配类型
public static boolean setType(Resource resource, String typeName) { //如何为资源分配类型 } }

4

2 回答 2

1

如果您有OntResource(即Individual),那么您可能会考虑使用setPropertyValue(Property, RDFNode)方法来设置类型。请注意,这仅与@AndyS 的答案不同,因为它在添加新三元组之前删除RDF.type了图中已经存在的任何其他属性。

从模型开始:

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

以下代码(假设aIndividual):

a.setPropertyValue(RDF.type, TheTypeAsResource);

将导致模型:

a: rdf:type :theType .

当然,只有在您不打算向资源添加其他类型,而是打算为该资源设置特定类型时,这才会满足您的目的。

于 2013-07-08T17:43:13.733 回答
1

您需要在数据中添加一条语句:

model.add(resource, RDF.type, TheTypeAsAResource) ;
于 2013-02-19T14:37:26.743 回答