Обновление SPARQL не работает с Jena JDBC и Jena RDFConnection для данных RDF - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующие данные на графике (названные «data.n3» или «data.ttl», я пробовал с обоими расширениями): -

# Default graph
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ns: <http://example.org/ns#> .

<http://example/book1> ns:price 42 .

Я попробовал следующие 2 фрагмента кода: -

Код 1

import org.apache.jena.query.Dataset;
import org.apache.jena.query.DatasetFactory;
import org.apache.jena.rdfconnection.RDFConnection;
import org.apache.jena.rdfconnection.RDFConnectionFactory;
import org.apache.jena.system.Txn;

public class DataWriting {
    public static void main(String[] args) {
        Dataset ds = DatasetFactory.create();
        try (RDFConnection conn = RDFConnectionFactory.connect(ds);) {
            conn.load("data.ttl") ;
            conn.update("PREFIX dc: <http://purl.org/dc/elements/1.1/>\r\n" + 
            "INSERT DATA\r\n" + 
            "{ \r\n" + 
            "  <http://example/book1> dc:title \"A new book\" ;\r\n" + 
            "                         dc:creator \"A.N.Other\" .\r\n" + 
            "}") ;
            conn.put("data.n3");
            conn.commit();
            }) ;
        }
    }
}

Код 2

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.jena.jdbc.mem.MemDriver;

public class DataWriting {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            MemDriver.register();
            conn = DriverManager.getConnection("jdbc:jena:mem:dataset=data.ttl");
            stmt = conn.createStatement();
            stmt.executeUpdate("PREFIX dc: <http://purl.org/dc/elements/1.1/>\r\n" + 
                    "INSERT DATA\r\n" + 
                    "{ \r\n" + 
                    "  <http://example/book1> dc:title \"A new book\" ;\r\n" + 
                    "                         dc:creator \"A.N.Other\" .\r\n" + 
                    "}");
        } catch (SQLException e) {
            System.err.println("SQL Error - " + e.getMessage());
        } finally {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Ожидается, что данные в файле «data.n3» или «data.ttl» станут следующими: -

# Default graph
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix ns: <http://example.org/ns#> .

<http://example/book1> ns:price 42 .
<http://example/book1> dc:title "A new book" .
<http://example/book1> dc:creator "A.N.Other" .

Однако на самом деле этого не происходит после выполнения любой из двух вышеуказанных программ Java. Я что-то упускаю или что-то делаю неправильно?

...