2016-11-02 40 views
-1

以下代碼用於將rdf數據發送到sparql端點。Java jena fuseki set OntModelSpec粒子推理器

它一直很好,直到我試圖添加一個推理到OntoModel。

現在編譯器說: 「無法從com.hp.hpl.jena.ontology.OntModelspec轉換爲org.apache.jena.ontology.OntModelSpec」。

所以我的問題是,我必須編輯讓它工作? (我知道這個問題很明顯在「PelletReasonerFactory.THE_SPEC」中,它不是來自com.hp.hpl ...,所以有沒有類似這個東西,它也來自org.apache.jena ...? )

package services; 

import org.apache.jena.query.DatasetAccessor; 
import org.apache.jena.query.DatasetAccessorFactory; 
import org.apache.jena.query.QueryExecution; 
import org.apache.jena.query.QueryExecutionFactory; 
import org.apache.jena.query.QuerySolution; 
import org.apache.jena.query.ResultSet; 
import org.apache.jena.query.ResultSetFormatter; 
import org.apache.jena.rdf.model.Model; 
import org.apache.jena.rdf.model.ModelFactory; 
import org.apache.jena.rdf.model.RDFNode; 
import org.apache.jena.ontology.OntModel; 
import org.mindswap.pellet.jena.PelletReasonerFactory; 
import org.apache.jena.ontology.OntModelSpec; 

class FusekiExample { 

    public void addRDF(File rdf, String serviceURI){ 
      throws IOException { 

     // the next commented line is the old working version... 
     //Model m = ModelFactory.createDefaultModel(); 

     //these lines are the modified version which doesn't work. 
     OntModelSpec oms = PelletReasonerFactory.THE_SPEC; 
     OntModel m = ModelFactory.createOntologyModel(oms); 
... 
} 

回答

2

它看起來像你的PelletReasoner是非常古老的,仍然使用舊的jena庫,而不是最新的。

你需要找到一個更新版本的推理者來使用當前的jena,或者你需要使用一個較老的jena版本。

+1

我很愚蠢的找到編輯按鈕,所以在這裏我的擴展答案。你需要使用pellet 3.0爲你的程序工作。另見http://stackoverflow.com/questions/36144230/how-to-correctly-import-pellet-2-3-0-in-jena-3-0-1-eclipse – ChristophE