2015-01-03 3 views
0

Я хочу задать свой файл RDF data.rdf помощью запроса SPARQL в Javaисключение Jena SPARQL

Для этого я использовал API Jena, вот мой исходный код:

import org.apache.log4j.chainsaw.Main; 
import com.hp.hpl.jena.query.Query; 
import com.hp.hpl.jena.query.QueryExecution; 
import com.hp.hpl.jena.query.QueryExecutionFactory; 
import com.hp.hpl.jena.query.QueryFactory; 
import com.hp.hpl.jena.query.QuerySolution; 
import com.hp.hpl.jena.query.ResultSet; 
import com.hp.hpl.jena.rdf.model.Literal; 
import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.util.FileManager; 
public class HelloRDFWorld { 
    public static void main(String[] args) { 
     FileManager.get().addLocatorClassLoader(Main.class.getClassLoader()); 
     Model model=FileManager.get().loadModel("D:/workspace_java/JenaTutorial/src/data.rdf"); 

     String querystring= 
       "Prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>"+ 
       "PREFIX FOAF: <http://xmlns.com/foaf/0.1/>"+ 
       "select * where"+ 
       "{"+ 
       "?person foaf:name ?"+ 
       "}"; 
     Query query = QueryFactory.create(querystring); 
     QueryExecution qexec= QueryExecutionFactory.create(query); 
     try 
     { 
      ResultSet result= qexec.execSelect(); 
      while(result.hasNext()){ 
       QuerySolution sol= result.nextSolution(); 
       Literal name= sol.getLiteral("x"); 
       System.out.println(name); 
      } 
     } 
     finally{ 
      qexec.close(); 
     } 

    } 
} 

и это мой файл RDF:

<rdf:RDF> 
    <foaf:person> 
    <foaf:name>gorge</foaf:name> 
    </foaf:person> 
    <foaf:person> 
    <foaf:name>Johon</foaf:name> 
    </foaf:person> 
</rdf:RDF> 

После выполнения; он показывает мне это исключение

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/hp/hpl/jena/util/FileManager : Unsupported major.minor version 51.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(Unknown Source) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$000(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at tutorial.HelloRDFWorld.main(HelloRDFWorld.java:19) 

так где проблема?

ответ

0

Вы пытались запустить библиотеку (в данном случае Jena), скомпилированную против Java 7 в более старой JVM. У вас есть три варианта:

  1. не использовать поддерживаемую JVM (Java 6 и до более не поддерживаются Oracle)
  2. Рекомпилированные библиотека вы хотите использовать с помощью Java используется (может быть не представляется возможным, так как он могут использовать API от Java 7).
  3. Попробуйте использовать Java backporting tool (но он все равно может не работать во время выполнения, если есть API-интерфейсы, используемые из более высоких JDK). (Хотя в вашем случае, похоже, нет инструмента для ретро от 7 до 6 или 5.)

Первый вариант настоятельно рекомендуется (самый быстрый и безопасный, возможно, самый поддерживаемый вариант).

Смежные вопросы