0

Jena SDB モデルを介してデータベースに保存する必要がある n-triple ファイルがあります。そのために次のコードを書きました。しかし、私は java.lang.NullPointerException に苦労しており、何が起こったのか、どのように修正するのか、まったく手がかりがありません。コードは次のとおりです。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import com.hp.hpl.jena.db.DBConnection;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.ProfileRegistry;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;

public class JenaRepositoryManagement {

    private MySQLAccess mysql  = null;  
    private String      dbname = null;


    private String xmlbase  = "http://www.test.org/test.owl#";

    private OntModel domainModel = null;

    public JenaRepositoryManagement (String databaseName) {

        dbname = "sdb_" + databaseName;

        mysql  = new MySQLAccess();

        mysql.createDatabase(dbname);

        impotring();
    }


    public void importing() {
        // Instantiate the MySQL driver
        try {

            Class.forName("com.mysql.jdbc.Driver");


        // Create a database connection object
        DBConnection connection = new DBConnection("jdbc:mysql://localhost/"+dbname, "root", "", "MySQL");

        // Get a ModelMaker for database-backed models
        ModelMaker maker = ModelFactory.createModelRDBMaker(connection);

        Model traceModel = maker.createModel("testModel");

        // Start a database transaction. Without one, each statement will be auto-committed
        traceModel.begin();         



        InputStream in = this.getClass().getClassLoader().getResourceAsStream("data/nts/100.nt");

        traceModel.read(in, xmlbase, "N-TRIPLE");

        traceModel.write(System.out); 

        // Commit the database transaction
        traceModel.commit();



    } catch (ClassNotFoundException | FileNotFoundException e) {
        e.printStackTrace();
    }


}

}

実行中の出力は次のとおりです

CREATE DATABASE IF NOT EXISTS sdb_100_n;
java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:129)
    at com.hp.hpl.jena.util.FileUtils.asUTF8(FileUtils.java:51)
    at com.hp.hpl.jena.rdf.model.impl.NTripleReader.read(NTripleReader.java:72)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:226)
    at soctrace.JenaRepositoryManagement.importing(JenaRepositoryManagement.java:70)
    at soctrace.views.Main$1.run(Main.java:165)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java    .security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

最後に、n-triple ファイルのサンプルを示します。

<http://www.test.org/test.owl#trace0> <http://www.test.org/test.owl#traceContainsEvent>     <http://www.test.org/test.owl#event0> .
<http://www.test.org/test.owl#event0> <http://www.test.org/test.owl#hasTime> <http://www.test.org/test.owl#interval0> .
<http://www.test.org/test.owl#event0> <http://www.test.org/test.owl#hasActiveTime> <http://www.test.org/test.owl#aduration0> .
<http://www.test.org/test.owl#interval0> <http://www.test.org/test.owl#hasStartTime> <http://www.test.org/test.owl#stime0> .
<http://www.test.org/test.owl#interval0> <http://www.test.org/test.owl#hasEndTime> <http://www.test.org/test.owl#etime0> .
<http://www.test.org/test.owl#interval0> <http://www.test.org/test.owl#hasDuration> <http://www.test.org/test.owl#duration0> .
<http://www.test.org/test.owl#stime0> <http://www.test.org/test.owl#hasValue> "525255"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#etime0> <http://www.test.org/test.owl#hasValue> "0"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#duration0> <http://www.test.org/test.owl#hasValue> "0"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#aduration0> <http://www.test.org/test.owl#hasValue> "0"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#event0> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.test.org/test.owl#ContextSwitch> .
<http://www.test.org/test.owl#event0> <http://www.test.org/test.owl#switchFrom> <http://www.test.org/test.owl#mttd0> .
<http://www.test.org/test.owl#event0> <http://www.test.org/test.owl#switchTo> <http://www.test.org/test.owl#kptrace0> .
<http://www.test.org/test.owl#trace0> <http://www.test.org/test.owl#traceContainsEvent> <http://www.test.org/test.owl#event1> .
<http://www.test.org/test.owl#event1> <http://www.test.org/test.owl#hasTime> <http://www.test.org/test.owl#interval1> .
<http://www.test.org/test.owl#event1> <http://www.test.org/test.owl#hasActiveTime> <http://www.test.org/test.owl#aduration1> .
<http://www.test.org/test.owl#interval1> <http://www.test.org/test.owl#hasStartTime> <http://www.test.org/test.owl#stime1> .
<http://www.test.org/test.owl#interval1> <http://www.test.org/test.owl#hasEndTime> <http://www.test.org/test.owl#etime1> .
<http://www.test.org/test.owl#interval1> <http://www.test.org/test.owl#hasDuration> <http://www.test.org/test.owl#duration1> .
<http://www.test.org/test.owl#stime1> <http://www.test.org/test.owl#hasValue> "525292"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#etime1> <http://www.test.org/test.owl#hasValue> "525306"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#duration1> <http://www.test.org/test.owl#hasValue> "14"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#aduration1> <http://www.test.org/test.owl#hasValue> "14"^^<http://www.w3.org/2001/XMLSchema#float> .
<http://www.test.org/test.owl#event1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.test.org/test.owl#TaskRunning> .
<http://www.test.org/test.owl#event1> <http://www.test.org/test.owl#runningTask> <http://www.test.org/test.owl#kptrace0> .

前もって感謝します。

4

1 に答える 1

2

このコードに基づいて(行番号を推測していますが、私は正しいと確信しています):

/* 69 */ InputStream in = this.getClass().getClassLoader().getResourceAsStream("data/nts/100.nt");
/* 70 */ traceModel.read(in, xmlbase, "N-TRIPLE");

そしてスタックトレースの始まり:

java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:129)
    at com.hp.hpl.jena.util.FileUtils.asUTF8(FileUtils.java:51)
    at com.hp.hpl.jena.rdf.model.impl.NTripleReader.read(NTripleReader.java:72)
    at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:226)
    …

だと思いinますnull。たぶん、そのパス名が必要です"/data/nts/100.nt"(最初の に注意してください/)。

スタックトレースには行番号が含まれており、問題のある行を示していると確信しています。これは、デバッガーで実行するのが難しくないはずです。デバッガーで実行できない場合でも、null ポインター例外が発生し、特定の行への参照がある場合は、通常、その行で使用されている値を確認し、それらが使用されているかどうかを確認することをお勧めします。かどうnullか。この場合、次のようにするだけです。

InputStream in = this.getClass().getClassLoader().getResourceAsStream("data/nts/100.nt");
Objects.requireNonNull( in, "InputStream for resource data/nts/100.nt should not be null." );
traceModel.read(in, xmlbase, "N-TRIPLE");
于 2014-01-21T02:14:49.277 に答える