异常耶拿 SPARQL
exception jena SPARQL
我想在 java 中使用 SPARQL 查询查询我的 data.rdf RDF 文件
为此我使用了 Jena API,这是我的源代码:
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[=12=]0(Unknown Source)
at java.net.URLClassLoader.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)
那么问题出在哪里?
您已尝试 运行 在较旧的 JVM 中针对 Java 7 编译的库(在本例中为 Jena)。您有三个选择:
- 使用受支持的 JVM(JavaOracle 不再支持 6 及之前的版本)
- 使用您使用的 Java 重新编译您要使用的库(可能不可能,因为它可能使用 Java 7 中的 API)。
- 尝试一些 Java backporting tool(但如果使用来自更高版本 JDK 的 API,它可能仍会在 运行 时失败)。 (虽然在你的情况下似乎没有工具可以从 7 恢复到 6 或 5。)
强烈推荐第一个选项(最快最安全,可能是最受支持的选项)。
我想在 java 中使用 SPARQL 查询查询我的 data.rdf RDF 文件
为此我使用了 Jena API,这是我的源代码:
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[=12=]0(Unknown Source)
at java.net.URLClassLoader.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)
那么问题出在哪里?
您已尝试 运行 在较旧的 JVM 中针对 Java 7 编译的库(在本例中为 Jena)。您有三个选择:
- 使用受支持的 JVM(JavaOracle 不再支持 6 及之前的版本)
- 使用您使用的 Java 重新编译您要使用的库(可能不可能,因为它可能使用 Java 7 中的 API)。
- 尝试一些 Java backporting tool(但如果使用来自更高版本 JDK 的 API,它可能仍会在 运行 时失败)。 (虽然在你的情况下似乎没有工具可以从 7 恢复到 6 或 5。)
强烈推荐第一个选项(最快最安全,可能是最受支持的选项)。