Модель нагрузки Jena Virtuoso - PullRequest
       30

Модель нагрузки Jena Virtuoso

0 голосов
/ 12 февраля 2019

Я читал различные учебные пособия, объясняющие, как загрузить модель в конечную точку Virtuoso SPARQL с помощью Java Apache Jena (например, https://jena.apache.org/documentation/rdfconnection/),, но я не могу это сделать.

Я попробовал эту функцию:

public void uploader(){ 
String myVirtuosoEndpoint = "http://10.1.22.17:8890/"; //my Virtuoso endpoint IP

Model model = ModelFactory.createDefaultModel() ; //the Model I want to upload
model.createResource("https://example.org").addProperty(RDF.type, "http://myType");
try (RDFConnection conn = RDFConnectionFactory.connect(myVirtuosoEndpoint)) {
                conn.begin(ReadWrite.WRITE);
                conn.load("http://myGraph", model);
                conn.commit();
                conn.end();
        }
}

Я также попробовал эту другую функцию, используя библиотеку Jena Txn (https://jena.apache.org/documentation/txn/txn.html).

try (RDFConnection conn = RDFConnectionFactory.connect(myVirtuosoEndpoint)) {
        Txn.executeWrite(conn, ()-> {
             conn.load(targetGraph, model);
        }) ;
}

Я использую сервер OpenLink Virtuoso версии 07.20.3217. Что касается зависимостей JenaЯ использую следующее:

    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>apache-jena-libs</artifactId>
        <type>pom</type>
        <version>3.1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.jena/jena-rdfconnection -->
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>jena-rdfconnection</artifactId>
        <version>3.10.0</version>
    </dependency>

Кажется, что код работает, так как я не получаю никакой ошибки, но график, в который я хочу загрузить модель, не меняется. Я проверяю это, просто выполняяSPARQL-запрос к графу после выполнения кода.

Кто-нибудь с такой же проблемой?

Спасибо

1 Ответ

0 голосов
/ 05 марта 2019

Я пытаюсь использовать другой новый подход для обновления содержимого графика RDF в Virtuoso.

Код:

//Connect to Virtuoso
VirtModel virtualModel = VirtModel.openDatabaseModel(GRAPH_NAME, endpoint, USERNAME, PASSWORD);
long modelInitialSize = virtualModel.size();

//Add model
virtualModel.add(model);
long modelNewSize = virtualModel.size();

virtualModel.close();

Где конечная точка похожа на jdbc:virtuoso://10.1.22.xxx:1111

Я использую эти зависимости в pom.xml:

    <!-- https://mvnrepository.com/artifact/org.apache.jena/jena-tdb -->
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>jena-tdb</artifactId>
        <version>3.9.0</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.jena/apache-jena-libs -->
    <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>apache-jena-libs</artifactId>
        <version>3.9.0</version>
        <type>pom</type>
    </dependency>

Кроме того, я использую virt_jena3.jar и virtjdbc4.jar зависимости от Virtuoso webapge

Теперь я получаю следующую ошибку при попытке определить размер VirtModel с помощью команды long modelNewSize = virtualModel.size();:

org.apache.jena.shared.JenaException: virtuoso.jdbc4.VirtuosoException: Problem during serialization : Software caused connection abort: socket write error.

Кроме того, после появления этой ошибки кажется, что сервер Virtuoso выходит из строя, и мне нужно перезапустить виртуальную машину, чтобы исправить ее.

Сложность в том, что с доступными зависимостями здесь , тот же код работает отлично ...

...