2013-08-28 3 views
2

Я пытаюсь создать сервер Fuseki SPARQL на своей машине. Документация на веб-сайте Jena описывает, как создать такой сервер из командной строки, здесь: http://jena.apache.org/documentation/serving_data/. Я ищу способ создания и инициализации такого сервера, используя Jena Java API. Я просмотрел API Jena, но не успел проработать, как продолжить. Кто-нибудь делал это раньше?Как создать сервер Fuseki SPARQL с использованием API Java Apache Jena?

ответ

2

Да, это возможно, но это не то, как Fuseki был разработан для работы, поэтому делайте это на свой страх и риск.

Вам нужно будет тянуть в фусеки как зависимость, через мавена это будет следующее:

<dependency> 
    <groupId>org.apache.jena</groupId> 
    <artifactId>jena-fuseki</artifactId> 
    <version>0.2.7</version> 
</dependency> 

Затем вы можете использовать SPARQLServer класс для создания сервера и вызовите start() на самом деле запустить сервер и stop() если сделаете. (Это находится в org.apache.jena.fuseki.server пакете)

Это важно отметить, что если вы сделаете это сервер встроен в JVM, с которой вы начинаете его, когда что JVM выключается сервер выключается. Это может быть ваше намерение, но это не так.

Кстати, вы не знаете, почему именно вы хотите это сделать? Там могут быть альтернативные пути для достижения своей цели, не внедряя фусеки, если вы объясните ваши цели дальнейшего

+0

Причины (возможно, неправильные) для этого: необходимо разработать систему p2p, где каждый узел имеет rdf-репозиторий и должен быть Java-приложением. Я хочу использовать некоторые функции сервера Fuseki для этого и надеялся, что есть простой способ получить это от некоторого Java-кода. Я не против потери функциональности сервера, если JVM отключается, пока поддержка TDB на сервере по-прежнему сохраняется в rdf-информации. Есть предположения? – lemonWorld

+0

Справедливо, что резервная копия сервера TDB должна сохраняться правильно, поскольку Fuseki использует ее транзакционно, что обеспечивает некоторую степень защиты от неправильного завершения JVM. – RobV

2

Если вы используете

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

<dependency> 
    <groupId>org.apache.jena</groupId> 
    <artifactId>jena-fuseki</artifactId> 
    <version>1.0.2-SNAPSHOT</version> 
</dependency> 

Вы можете запустить встроенный сервер.

Dataset dataset = TDBFactory.createDataset(MagicStrings.TDBLocation); 
dataset.begin(ReadWrite.WRITE); 
Model tdb = dataset.getDefaultModel(); 
EmbeddedFusekiServer server = EmbeddedFusekiServer. 
create(3030,getDataset().asDatasetGraph(), "comp"); 
Смежные вопросы