要使用jena API显示RDF';java中的s

要使用jena API显示RDF';java中的s,rdf,jena,Rdf,Jena,我在StoryModel中创建了一些方法。如果代码中有任何错误,我非常感谢您的更正 public class StoryModel { String dbName = "DB3"; String sns = "http://somebook/SemBook#"; String ns; Dataset ds; OntModel om; // create model and connect to database public Stor

我在StoryModel中创建了一些方法。如果代码中有任何错误,我非常感谢您的更正

public class StoryModel {

    String dbName = "DB3";
    String sns =  "http://somebook/SemBook#";
    String ns;
    Dataset ds;
    OntModel om;

    // create model and connect to database
    public StoryModel(String storyName){

        ns = sns + storyName;
        ds = TDBFactory.createDataset(dbName);
        om = ModelFactory.createOntologyModel();

    }

    // create classes in model
    public void initModel() {

        om.createClass(ns + "Person");
        om.createClass(ns + "Event");
        om.createClass(ns + "Place");
        om.createClass(ns + "Time");
        om.createClass(ns + "Object");
        saveModel();
    }   

    //Read & write in database
    //Display it
    public void saveModel() {

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

    }

    // Create resource to class in model
    public Resource createResource(String resourceName, String clsName) {

        OntResource resource = om.createOntResource(ns + resourceName);
        String ruri = ns + resource;
        OntClass clsuri = om.getOntClass(ns + clsName);

        Individual i = om.createIndividual(ruri, clsuri);

        return i;

    }

    /*
     * Return an RDF resource object given the URI of the resource as a string. The
     * URI can be represented in full, or as a "prefix:localName".
     * @param resourceName The full URI of the resource
     * @return An RDF resource object
     */

    public Resource stringToResource( String resourceName ) {

        String resourceURI = om.expandPrefix( resourceName );

        return om.getResource( resourceURI );

    }

    // Delete the resource
    public void deleteResource(String resourceName) {

        try {
            OntResource resource = om.getOntResource(ns + resourceName);

            if (resource != null) 
            {
               resource.remove();
            }
            else {
                System.out.println("Resource not present");
            }   
        }
        catch (Exception e) { }         
    }
}
在SemBookMain中,我创建了一个模型,并使用在StoryModel中创建的方法将类初始化为resource并显示它

public class SemBookMain {

    public static void main(String[] args) {

        // create and initialize a model
        StoryModel sm = new StoryModel("alice");
        //sm.saveModel();
        sm.initModel();

        // add resources
        String clsName = "Person";
        String[] ar = {"Alice", "Peter", "Ben", "Robin"};

        for (String r : ar) {

            Resource res = sm.createResource(r, clsName);

        }
        sm.saveModel();

    }

}
我真的很抱歉我在下面添加了输出作为评论,所以请查看我的评论

我不理解错误1和2以及为什么不显示资源。我缺少了一些东西,但无法找到它。

ds.begin(ReadWrite.WRITE)但无
ds.commit

initModel
调用
saveModel
,然后再次调用
saveModel

遵循以下代码模式:


很抱歉缺少Outputer错误1:log4j:WARN找不到logger(org.apache.jena.info)的附加程序。log4j:WARN请正确初始化log4j系统。输出:错误2:线程“main”com.hp.hpl.jena.sparql.JenaTransactionException:当前在事务中(位置:C:\Users\workspace\SemBook\DB3)在com.hp.hpl.jena.sparql.core.DatasetGraphTrackActive.begin(DatasetGraphTrackActive.java:45)在com.hp.hpl.jena.sparql.core.DatasetGraphTrackActive.com.hp.hpl.jena.sparql.core.DatasetImpl.begin(DatasetImpl.java:124)在SemBookMain.StoryModel.saveModel(StoryModel.java:41)上(SemBookMain.java:27)我已经添加了输出作为注释。所以请查看它们。谢谢……我明白了重点。但是如何解决错误1:log4j:WARN无法为logger(org.apache.jena.info)找到任何附加器。log4j:WARN请正确初始化log4j系统。