2013-10-07 119 views
0

我的問題是與耶拿當我用龜Ontolgy它工作正常,當我使用任何其他本體像OWL或RDFS也表現出同樣的錯誤在線程「主要」 com.hp.耶拿NoReaderForLangException:貓頭鷹

異常hpl.jena.shared.NoReaderForLangException:在com.hp.hpl.jena.rdf.model.impl.RDFReaderFImpl.getReader(RDFReaderFImpl.java:110)處的owl 在com.hp.hpl.jena.rdf.model.impl .ModelCom.read(ModelCom.java:225) at com.hp.hpl.jena.ontology.impl.OntModelImpl.read(OntModelImpl.java:2169) at symenticweb.SymenticWeb.main(SymenticWeb.java:109) Java結果:1

線無109是model.read(的inputStream,NULL,inputFileFormat);

我的代碼是

package symenticweb; 

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.util.Iterator; 

import org.mindswap.pellet.jena.PelletReasonerFactory; 

import com.hp.hpl.jena.ontology.Individual; 
import com.hp.hpl.jena.ontology.OntModel; 
import com.hp.hpl.jena.ontology.OntModelSpec; 
import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.rdf.model.Statement; 
import com.hp.hpl.jena.rdf.model.StmtIterator; 
import com.hp.hpl.jena.reasoner.Reasoner; 
import com.hp.hpl.jena.reasoner.ValidityReport; 
import com.hp.hpl.jena.util.iterator.ExtendedIterator; 

public class SymenticWeb 
{ 
    /** 
    * This program takes 4 parameters an input file name 
    * an output file name an input file format a reasoning 
    * level {RDFS, OWL-DL} 
    */ 
    public static void main(String[] args) 
    { 
     //validate the program arguments 
//  if(args.length != 4) 
//  { 
//   System.err.println("Usage: java InferenceExample " 
//   + "<input file> <input format> <output file> " 
//   + "<none|rdfs|owl>"); 
//   return; 
//  } 

     String inputFileName; 
     inputFileName = "C:\\Users\\Harjinder\\Documents\\NetBeansProjects\\SymenticWeb\\src\\test\\abc.owl"; 
     String inputFileFormat = "owl"; 
     String outputFileName = "C:\\New folder\\abc.txt"; 
     String reasoningLevel = "none"; 

     //create an input stream for the input file 
     FileInputStream inputStream = null; 
     PrintWriter writer = null; 
     try 
     { 
     inputStream = new FileInputStream(inputFileName); 
     } catch (FileNotFoundException e) { 
     System.err.println("'" + inputFileName 
      + "' is an invalid input file."); 
     return; 
     } 

     //create an output print writer for the results 
     try 
     { 
     writer = new PrintWriter(outputFileName); 
     } catch (FileNotFoundException e) { 
     System.err.println("'" + outputFileName 
      + "' is an invalid output file."); 
     return; 
     } 

     //create the appropriate jena model 
     OntModel model = null; 
     if("none".equals(reasoningLevel.toLowerCase())) 
     { 
     /* 
      * "none" is jena model with OWL_DL 
      * ontologies loaded and no inference enabled 
      */ 
     model = ModelFactory.createOntologyModel(
      OntModelSpec.OWL_DL_MEM); 
     } 
     else if("rdfs".equals(reasoningLevel.toLowerCase())) 
     { 
     /* 
      * "rdfs" is jena model with OWL_DL 
      * ontologies loaded and RDFS inference enabled 
      */ 
     model = ModelFactory.createOntologyModel(
      OntModelSpec.OWL_DL_MEM_RDFS_INF); 
     } 
     else if("owl".equals(reasoningLevel.toLowerCase())) 
     { 
     /* 
      * "owl" is jena model with OWL_DL ontologies 
      * wrapped around a pellet-based inference model 
      */ 
     Reasoner reasoner = 
      PelletReasonerFactory.theInstance().create(); 
     Model infModel = ModelFactory.createInfModel(
      reasoner, ModelFactory.createDefaultModel()); 
     model = ModelFactory.createOntologyModel(
      OntModelSpec.OWL_DL_MEM, infModel); 
     } 
     else 
     { 
     //invalid inference setting 
     System.err.println("Invalid inference setting, " 
      + "choose one of <none|rdfs|owl>."); 
     return; 
     } 

     //load the facts into the model 
     model.read(inputStream, null, inputFileFormat); 

     //validate the file 
     ValidityReport validityReport = model.validate(); 
     if(validityReport != null && !validityReport.isValid()) 
     { 
     Iterator i = validityReport.getReports(); 
     while(i.hasNext()) 
     { 
      System.err.println(
       ((ValidityReport.Report)i.next()).getDescription()); 
     } 
     return; 
     } 

     //Iterate over the individuals, print statements about them 
     ExtendedIterator iIndividuals = model.listIndividuals(); 
     while(iIndividuals.hasNext()) 
     { 
     Individual i = (Individual)iIndividuals.next(); 
     printIndividual(i, writer); 
     } 
     iIndividuals.close(); 

     writer.close(); 
     model.close(); 
    } 

    /** 
    * Print information about the individual 
    * @param i The individual to output 
    * @param writer The writer to which to output 
    */ 
    public static void printIndividual(
     Individual i, PrintWriter writer) 
    { 
     //print the local name of the individual (to keep it terse) 
     writer.println("Individual: " + i.getLocalName()); 

     //print the statements about this individual 
     StmtIterator iProperties = i.listProperties(); 
     while(iProperties.hasNext()) 
     { 
     Statement s = (Statement)iProperties.next(); 
     writer.println(" " + s.getPredicate().getLocalName() 
      + " : " + s.getObject().toString()); 
     } 
     iProperties.close(); 
     writer.println(); 
    } 
} 
+0

你做任何這方面的進展如何? –

回答

1

OWL可序列化到RDF和RDF可以在許多不同的格式進行序列化。 Jena是一個基於RDF的工具,爲了使Jena能夠讀取本體,您需要有一個RDF序列化本體。

幸運的是,以.owl結尾的文件通常(但不總是)OWL本體的RDF編碼的RDF/XML序列化。你還沒有告訴我們你的本體,所以我們不能肯定還沒有,但最有可能的,如果你改變

String inputFileFormat = "owl"; 

String inputFileFormat = "RDF/XML"; 

你會沒事的。 (這是假設你.owl文件是RDF/XML)。