Je tente de lancer le serveur Fuseki avec Pellet reasoner et Jena. J'ai trouvé another thread qui avait un problème similaire, cependant (1) mon message d'erreur est différent, et (2) il semble que la solution finale n'a pas été fournie dans le thread référencé.Erreur lors de l'utilisation de Pelleter reasoner avec le serveur Fuseki
Le problème est que Fuseki dit
no reasoner called file:///home/gosper/Desktop/tools/jena-fuseki1-1.3.1/org.mindswap.pellet.jena.PelletReasonerFactory
On ne sait pas pourquoi il pointe vers cette racine, où je ne suis évidemment pas un fichier appelé org.mindswap.pellet.jena.PelletReasonerFactory
.
Ceci est mon fichier config.ttl
et je commence serveur Fuseki comme suit:
./fuseki-server --update --config=config.ttl
config.ttl
# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
## Basic Fuseki configuation file.
##
## See also config-tdb.ttl for TDB specific examples.
## See also config-examples.ttl for commented examples.
@prefix : <#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
[] rdf:type fuseki:Server ;
fuseki:services (
<#tdb>
) .
# Custom code.
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
########################################################################
# TDB
<#tdb> rdf:type fuseki:Service ;
fuseki:name "tdb" ; # http://localhost:3030/tdb
fuseki:serviceQuery "query" ; # SPARQL query service
fuseki:serviceQuery "sparql" ; # SPARQL query service
fuseki:serviceUpdate "update" ; # SPARQL query service
fuseki:serviceUpload "upload" ; # Non-SPARQL upload service
fuseki:serviceReadGraphStore "get"; # SPARQL Graph store protocol (read only)
fuseki:dataset <#dataset2> ; #select which set to
. #use
tdb:GraphTDB rdfs:subClassOf ja:Model .
<#dataset2> rdf:type ja:RDFDataset ;
ja:defaultGraph <#model2>;
.
<#model2> a ja:InfModel;
ja:baseModel <#tdbGraph>;
ja:reasoner
[ ja:reasonerURL
<org.mindswap.pellet.jena.PelletReasonerFactory>];
.
<#tdbGraph> rdf:type tdb:GraphTDB;
tdb:location "DB";
.
J'ai téléchargé toutes les bibliothèques nécessaires Jena de here et les avons ajoutés à Fuseki répertoire racine comme décrit here. Enfin mon script fuseki-serveur modifié se présente comme suit:
#!/bin/sh
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
export FUSEKI_HOME="${FUSEKI_HOME:-$PWD}"
if [ ! -e "$FUSEKI_HOME" ]
then
echo "$FUSEKI_HOME does not exist" 1>&2
exit 1
fi
JAR1="$FUSEKI_HOME/fuseki-server.jar"
JAR2="$FUSEKI_HOME/jena-fuseki-*-server.jar"
JAR=""
for J in "$JAR1" "$JAR2"
do
# Expand
J="$(echo $J)"
if [ -e "$J" ]
then
JAR="$J"
break
fi
done
if [ "$JAR" = "" ]
then
echo "Can't find jarfile to run"
exit 1
fi
# Deal with Cygwin path issues
cygwin=false
case "`uname`" in
CYGWIN*) cygwin=true;;
esac
if [ "$cygwin" = "true" ]
then
JAR=`cygpath -w "$JAR"`
FUSEKI_HOME=`cygpath -w "$FUSEKI_HOME"`
fi
JVM_ARGS=${JVM_ARGS:--Xmx1200M}
# By default this line should be uncommented
# exec java $JVM_ARGS -jar "$JAR" "[email protected]"
# By default these lines should be commented out
java $JVM_ARGS -cp "$JAR:$APPJAR" org.apache.jena.fuseki.FusekiCmd "[email protected]"
APPJAR=aterm-java-1.6.jar:pellet-cli.jar:pellet-core.jar:pellet-datatypes.jar:pellet-dig.jar:pellet-el.jar:pellet-explanation.jar:pellet-jena.jar:pellet-modularity.jar:pellet-owlapiv3.jar:pellet-pellint.jar:pellet-query.jar:pellet-rules.jar:pellet-test.jar:commons-collections-3.2.jar
Maintenant, lorsque je tente de démarrer le serveur Fuseki, l'erreur suivante apparaît:
[email protected]:/home/gosper/Desktop/tools/jena-fuseki1-1.3.1# ./fuseki-server --update --config=config-tdb-pelletreasoner.ttl
18:30:53 WARN ja:loadClass: Migration to Jena3: Converting com.hp.hpl.jena.tdb.TDB to org.apache.jena.tdb.TDB
org.apache.jena.assembler.exceptions.UnknownReasonerException: no reasoner called file:///home/gosper/Desktop/tools/jena-fuseki1-1.3.1/org.mindswap.pellet.jena.PelletReasonerFactory for d968cc61bfbe1366298b7276173e9fd2 [ja:reasoner of :model2]
doing:
root: d968cc61bfbe1366298b7276173e9fd2 with type: http://jena.hpl.hp.com/2005/11/Assembler#ReasonerFactory assembler class: class org.apache.jena.assembler.assemblers.ReasonerFactoryAssembler
root: file:///home/gosper/Desktop/tools/jena-fuseki1-1.3.1/config-tdb-pelletreasoner.ttl#model2 with type: http://jena.hpl.hp.com/2005/11/Assembler#InfModel assembler class: class org.apache.jena.assembler.assemblers.InfModelAssembler
root: file:///home/gosper/Desktop/tools/jena-fuseki1-1.3.1/config-tdb-pelletreasoner.ttl#dataset2 with type: http://jena.hpl.hp.com/2005/11/Assembler#RDFDataset assembler class: class org.apache.jena.sparql.core.assembler.DatasetAssembler
at org.apache.jena.assembler.assemblers.ReasonerFactoryAssembler.getReasonerFactoryByURL(ReasonerFactoryAssembler.java:192)
at org.apache.jena.assembler.assemblers.ReasonerFactoryAssembler.getReasonerFactory(ReasonerFactoryAssembler.java:133)
at org.apache.jena.assembler.assemblers.ReasonerFactoryAssembler.open(ReasonerFactoryAssembler.java:50)
at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:130)
at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:117)
at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:81)
at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39)
at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35)
at org.apache.jena.assembler.assemblers.InfModelAssembler.getReasonerFactory(InfModelAssembler.java:53)
at org.apache.jena.assembler.assemblers.InfModelAssembler.getReasoner(InfModelAssembler.java:46)
at org.apache.jena.assembler.assemblers.InfModelAssembler.openEmptyModel(InfModelAssembler.java:34)
at org.apache.jena.assembler.assemblers.ModelAssembler.openModel(ModelAssembler.java:36)
at org.apache.jena.assembler.assemblers.ModelAssembler.open(ModelAssembler.java:43)
at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:130)
at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:117)
at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:81)
at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39)
at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35)
at org.apache.jena.assembler.assemblers.AssemblerGroup.openModel(AssemblerGroup.java:35)
at org.apache.jena.sparql.core.assembler.DatasetAssembler.createDataset(DatasetAssembler.java:59)
at org.apache.jena.sparql.core.assembler.DatasetAssembler.open(DatasetAssembler.java:43)
at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:130)
at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:117)
at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:81)
at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39)
at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35)
at org.apache.jena.fuseki.server.FusekiConfig.processService(FusekiConfig.java:242)
at org.apache.jena.fuseki.server.FusekiConfig.configure(FusekiConfig.java:131)
at org.apache.jena.fuseki.FusekiCmd.exec(FusekiCmd.java:448)
at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
at org.apache.jena.fuseki.FusekiCmd.main(FusekiCmd.java:161)
J'ai essayé ainsi. Maintenant, il dit: 'org.apache.jena.assembler.exceptions.AssemblerException: attrapé: nom de la classe URI doit commencer par 'java:': fichier: ///home/gosper/Desktop/tools/jena-fuseki1-1.3.1/org.mindswap.pellet.jena.PelletReasonerFactory' – Klue
Recherchez "java:" dans l'assembleur. Il semble que les choses ont évolué depuis la description ci-dessus. – AndyS