Fuseki Embedded Server
构建Fuseki Server
添加maven依赖
我用的版本是3.14.0, 而最新的4.1.0则需要更高的JDK版本(我的JDK仍是1.8).
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>jena-fuseki-main</artifactId>
<version>3.x.y</version> <!-- Set the version -->
</dependency>
Java代码构建Fuseki服务
数据库是TDB
Dataset ds = TDBFactory.createDatasetGraph(directory);
FusekiServer server = FusekiServer.create()
.port(3332)
.add("/XXX", ds, true)
.build() ;
Fuseki 使用
由于是在Java代码内嵌的Fuseki server, 没有UI, 那么我们该如何使用?
Postman
注意:
- 这里的"XXX"是与上节代码中的参数一致
- 使用"POST"方式
- Body中需要使用"x-www-form-urlencoded"
Springboot + OpenFeign
OpenFeign encoder
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.8.0</version>
</dependency>
OpenFeign Headers
@Headers("Content-Type: application/x-www-form-urlencoded")
OpenFeign 参数
必须是@Param(“query”)
Object query(@Param("query") String query);
Code
- client 定义
import feign.Headers;
import feign.Param;
import feign.RequestLine;
public interface FusekiClient {
@RequestLine("POST /BF/query")
@Headers("Content-Type: application/x-www-form-urlencoded")
Object query(@Param("query") String query);
}
- 构建
@Bean
public FusekiClient FusekiServerClient(@Value("${service.fuseki.url}") String fusekiService) {
return Feign.builder()
.decoder(new JacksonDecoder())
.encoder(new FormEncoder())
.target(FusekiClient.class, fusekiService);
}