微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dotNetRDF无法解析LinkedMovie.ntVDS.RDF.Parsing.RdfParseException

如何解决dotNetRDF无法解析LinkedMovie.ntVDS.RDF.Parsing.RdfParseException

我已经在Java Apache Jena上测试了linkedmdb-18-05-2009-dump.nt,但是在dotNetRDF上抛出异常为

VDS.RDF.Parsing.RdfParseException
HResult=0x80131500
Message=Invalid URI encountered,see inner exception for details
Source=dotNetRDF
StackTrace:
  at VDS.RDF.Parsing.NTriplesParser.TryParseUri(TokenisingParserContext context,String uri)
  at VDS.RDF.Parsing.NTriplesParser.TryParseTriple(TokenisingParserContext context)
  at VDS.RDF.Parsing.NTriplesParser.Parse(TokenisingParserContext context)
  at VDS.RDF.Parsing.NTriplesParser.Load(IRdfHandler handler,TextReader input)
  at ConsoleApp2_RDFWALKTHROUGH.Program.Main(String[] args) in 

This exception was originally thrown at this call stack:
[External Code]

Inner Exception 1:
UriFormatException: Invalid URI: The hostname Could not be parsed.

我的c#代码如下:

String inputFile = "D:/linkedmdb-18-05-2009-dump.nt";

IGraph g = new Graph();
NTriplesParser parser = new NTriplesParser(NTriplesSyntax.Original);

Console.WriteLine("RDF DS-1 Loading Started:");

parser.Load(g,new StreamReader(inputFile));

Console.WriteLine("RDF DS-1 Loading Finished:");

Console.WriteLine(new DateTime(loadingTime).ToShortTimeString());
Console.ReadLine();

请指导我我错了,因为在Java上可以使用同一文件但在dotNetRDF上不能解析该文件非常令人困惑。

解决方法

问题在于转储包含无效的IRI。我从https://www.cs.toronto.edu/~oktie/linkedmdb/下载的转储中的第3104575行有以下内容:

<http://data.linkedmdb.org/film/9995> <http://xmlns.com/foaf/0.1/page> <http://?> .

该行上的最后一个IRI是导致解析器阻塞的内容,因为?在IRI中的那个位置不是有效字符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?