2013-08-28 158 views

回答

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"); 
相关问题