安装 Apache Jena Fuseki。
创建 fuseki 组。
sudo groupadd fuseki
创建 fuseki 用户。
sudo useradd -s /bin/false -g fuseki -d /home/garden-user/etc/fuseki fuseki
下载 Apache Jena Fuseki。
cd ~/tmp
wget http://archive.apache.org/dist/jena/binaries/apache-jena-fuseki-3.17.0.tar.gz
解压下载文件。
sudo tar xzvf apache-jena-fuseki-3.17.0.tar.gz -C /home/garden-user/etc/fuseki --strip-components=1
设置权限。
sudo chgrp -R fuseki /home/garden-user/etc/fuseki
sudo chown -R fuseki /home/garden-user/etc/fuseki
sudo chmod -R 764 /home/garden-user/etc/fuseki
创建保存数据库配置文件的目录。
sudo -u fuseki mkdir -p /home/garden-user/etc/fuseki/run/configuration
创建数据库配置文件 garden.ttl。
sudo -u fuseki vi /home/garden-user/etc/fuseki/run/configuration/garden.ttl
garden.ttl 文件内容如下:
@prefix : <http://base/#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix tdb2: <http://jena.apache.org/2016/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
tdb2:DatasetTDB rdfs:subClassOf ja:RDFDataset .
ja:DatasetTxnMem rdfs:subClassOf ja:RDFDataset .
<http://jena.hpl.hp.com/2008/tdb#DatasetTDB>
rdfs:subClassOf ja:RDFDataset .
ja:ViewGraph rdfs:subClassOf ja:Model .
<http://jena.hpl.hp.com/2008/tdb#GraphTDB>
rdfs:subClassOf ja:Model .
tdb2:GraphTDB2 rdfs:subClassOf ja:Model .
ja:MemoryDataset rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetZero rdfs:subClassOf ja:RDFDataset .
<http://jena.apache.org/text#TextDataset>
rdfs:subClassOf ja:RDFDataset .
:service_tdb_all a fuseki:Service ;
rdfs:label "TDB2 garden" ;
fuseki:dataset :tdb_dataset_readwrite ;
fuseki:name "garden" ;
fuseki:serviceQuery "query" , "" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore
"data" ;
fuseki:serviceUpdate "" , "update" ;
fuseki:serviceUpload "upload" .
:tdb_dataset_readwrite
a tdb2:DatasetTDB2 ;
tdb2:location "/home/garden-user/etc/fuseki/run/databases/garden" .
tdb2:GraphTDB rdfs:subClassOf ja:Model .
ja:RDFDatasetOne rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetSink rdfs:subClassOf ja:RDFDataset .
tdb2:DatasetTDB2 rdfs:subClassOf ja:RDFDataset .
创建数据库配置文件「garden_rdf.ttl」。
sudo -u fuseki vi /home/garden-user/etc/fuseki/run/configuration/garden_rdf.ttl
garden_rdf.ttl 文件内容如下:
@prefix : <http://base/#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix tdb2: <http://jena.apache.org/2016/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
tdb2:DatasetTDB rdfs:subClassOf ja:RDFDataset .
ja:DatasetTxnMem rdfs:subClassOf ja:RDFDataset .
<http://jena.hpl.hp.com/2008/tdb#DatasetTDB>
rdfs:subClassOf ja:RDFDataset .
ja:ViewGraph rdfs:subClassOf ja:Model .
<http://jena.hpl.hp.com/2008/tdb#GraphTDB>
rdfs:subClassOf ja:Model .
tdb2:GraphTDB2 rdfs:subClassOf ja:Model .
ja:MemoryDataset rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetZero rdfs:subClassOf ja:RDFDataset .
<http://jena.apache.org/text#TextDataset>
rdfs:subClassOf ja:RDFDataset .
:service_tdb_all a fuseki:Service ;
rdfs:label "TDB2 garden_rdf" ;
fuseki:dataset :tdb_dataset_readwrite ;
fuseki:name "garden_rdf" ;
fuseki:serviceQuery "query" , "" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore
"data" ;
fuseki:serviceUpdate "" , "update" ;
fuseki:serviceUpload "upload" .
:tdb_dataset_readwrite
a tdb2:DatasetTDB2 ;
tdb2:location "/home/garden-user/etc/fuseki/run/databases/garden_rdf" .
tdb2:GraphTDB rdfs:subClassOf ja:Model .
ja:RDFDatasetOne rdfs:subClassOf ja:RDFDataset .
ja:RDFDatasetSink rdfs:subClassOf ja:RDFDataset .
tdb2:DatasetTDB2 rdfs:subClassOf ja:RDFDataset .
配置 Fuseki 服务。
sudo vi /etc/systemd/system/fuseki.service
fuseki.service 的内容如下:
[Unit]
Description=Fuseki
[Service]
# Edit environment variables to match your installation
Environment=FUSEKI_HOME=/home/garden-user/etc/fuseki
Environment=FUSEKI_BASE=/home/garden-user/etc/fuseki/run
# Edit the line below to adjust the amount of memory allocated to Fuseki
Environment=JVM_ARGS=-Xmx4G
# Edit to match your installation
ExecStart=/home/garden-user/etc/fuseki/fuseki-server
# Run as user "fuseki"
User=fuseki
Restart=on-abort
# Java processes exit with status 143 when terminated by SIGTERM, this
# should be considered a successful shutdown
SuccessExitStatus=143
### By default, the service logs to journalctl only.
### If additional logging to a file is required, uncomment the following three lines
# StandardOutput=syslog
# StandardError=syslog
# SyslogIdentifier=fuseki
### This logs to syslog. If, e.g., rsyslogd is used, you can provide a file
### /etc/rsyslog.d/fuseki.conf, consisting of the following two lines (uncommented)
### if $programname == 'fuseki' then /var/log/fuseki/stderrout.log
### if $programname == 'fuseki' then stop
[Install]
WantedBy=multi-user.target
重新加载配置文件。
sudo systemctl daemon-reload
将服务设为自动启动。
sudo systemctl enable fuseki
启动 Fuseki 服务。
sudo systemctl start fuseki
用浏览器访问 Apache Jena Fuseki。
http://localhost:3030/