Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取RDF不起作用_Java_Rdf_Apache Jena_Foaf - Fatal编程技术网

Java 读取RDF不起作用

Java 读取RDF不起作用,java,rdf,apache-jena,foaf,Java,Rdf,Apache Jena,Foaf,我正在尝试传送foaf文件: import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; public class Testbed { public static void main(String[] args) { Model model = ModelFactory.createDefaultModel(); try {

我正在尝试传送foaf文件:

import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;

public class Testbed {
    public static void main(String[] args) {
        Model model = ModelFactory.createDefaultModel();

        try {
                model.read("http://www.csail.mit.edu/~lkagal/foaf", "RDF/XML"); 
        }
        catch(Exception ex) {
            System.out.println(ex.toString());
        }
    }
}
我得到以下例外情况:

org.apache.jena.riot.RiotException:[行:1,列:50]空白 publicId和systemId之间需要

我不明白这个例外是什么意思。我怎样才能修好它。我是否使用了错误的格式(看起来不像“海龟”或任何其他格式)

我的环境(Windows 10 x64,apache-jena-3.1.1):

java版本“1.8.0_112”java(TM)SE运行时环境(构建 1.8.0_112-b15)Java热点(TM)64位服务器虚拟机(构建25.112-b15,混合模式


URL
http://www.csail.mit.edu/~lkagal/foaf
实际上正在重定向到
http://people.csail.mit.edu/lkagal/foaf
。出现重定向是错误的原因

这个问题已经在
Jena
(bug)的开发分支中报告并修复

分析 用于连接处理。特别是,
Jena 3.1.0
使用
HttpClient 4.2.6
,它在
Jena 3.1.1
中更新为
HttpClient 4.5.2

如前所述,使用
Jena 3.1.0
时不存在此问题,原因是它创建了一个默认支持各种功能的连接,包括自动跟踪重定向(它使用
新的SystemDefaultHttpClient()

相反,随着
HttpClient
的更新,在
Jena 3.1.1
中,对代码进行了修改,以创建无法遵循重定向的最小连接类型(它使用
HttpClients.createMinimal()

发生的情况是,它没有到达您的
foaf
文件,而是检索重定向消息,即:

name="[xml]",ch=DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://people.csail.mit.edu/lkagal/foaf">here</a>.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at www.csail.mit.edu Port 80</address>
</body></html>
解决
  • 使用直接URL,
    http://people.csail.mit.edu/lkagal/foaf
  • 使用以前版本的
    Jena
  • 使用Jena的开发分支
  • Jena
    提供您自己的“可重定向”连接,以代替默认连接;您可以在使用
    模型之前调用方法
    HttpOp.setDefaultHttpClient
    。阅读
    ,例如:

    HttpOp.setDefaultHttpClient(HttpClientBuilder.create().build());
    

    • URL
      http://www.csail.mit.edu/~lkagal/foaf
      实际上正在重定向到
      http://people.csail.mit.edu/lkagal/foaf
      。出现重定向是错误的原因

      这个问题已经在
      Jena
      (bug)的开发分支中报告并修复

      分析 用于连接处理。特别是,
      Jena 3.1.0
      使用
      HttpClient 4.2.6
      ,它在
      Jena 3.1.1
      中更新为
      HttpClient 4.5.2

      如前所述,使用
      Jena 3.1.0
      时不存在此问题,原因是它创建了一个默认支持各种功能的连接,包括自动跟踪重定向(它使用
      新的SystemDefaultHttpClient()

      相反,随着
      HttpClient
      的更新,在
      Jena 3.1.1
      中,对代码进行了修改,以创建无法遵循重定向的最小连接类型(它使用
      HttpClients.createMinimal()

      发生的情况是,它没有到达您的
      foaf
      文件,而是检索重定向消息,即:

      name="[xml]",ch=DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html><head>
      <title>301 Moved Permanently</title>
      </head><body>
      <h1>Moved Permanently</h1>
      <p>The document has moved <a href="http://people.csail.mit.edu/lkagal/foaf">here</a>.</p>
      <hr>
      <address>Apache/2.2.16 (Debian) Server at www.csail.mit.edu Port 80</address>
      </body></html>
      
      解决
      • 使用直接URL,
        http://people.csail.mit.edu/lkagal/foaf
      • 使用以前版本的
        Jena
      • 使用Jena的开发分支
      • Jena
        提供您自己的“可重定向”连接,以代替默认连接;您可以在使用
        模型之前调用方法
        HttpOp.setDefaultHttpClient
        。阅读
        ,例如:

        HttpOp.setDefaultHttpClient(HttpClientBuilder.create().build());
        

      您的代码在我的机器上运行正常。由于给定URL上的文件没有1:50字符,因此您确定错误。在两台不同的计算机上测试了该代码,但出现了相同的错误。这可能是引用文件中的一个错误吗?我可以用jena 3.1.1重现您的问题,但它在jena 3.1.0上运行良好。因此,immediate的解决方案可能是降级Apache Jena(如果可能的话)。您的代码在我的计算机上运行正常。由于给定URL处的文件没有1:50字符,您确定错误吗。在两台不同的计算机上测试了该文件,但出现相同错误。这可能是引用文件的错误之一吗?我可以用jena 3.1.1重现您的问题,但它与jena 3.1.0一起运行良好。因此,立即解决方法可能是降级ApacheJena(如果可能的话)。