2016-04-20 4 views
0

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) 

Répondre

1
ja:reasoner 
     [ ja:reasonerClass 
     "org.mindswap.pellet.jena.PelletReasonerFactory";] 

qui est différent de votre assembleur. (Cet exemple est dans le premier lien que vous donnez)

+0

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

+0

Recherchez "java:" dans l'assembleur. Il semble que les choses ont évolué depuis la description ci-dessus. – AndyS