我正在用Java编程,尝试使用Jena库和lastfm.rdfize.com网站创建一个简单的RDF商店。
我遇到了以下问题: lastfm.rdfize.com生成一个rdf,例如在Turtle中请求如下: “http://lastfm.rdfize.com/?username=&eventID=&artistName=” + ARTISTNAME + “&安培; venueID =安培;输出=龟”
我发出请求并获取生成的网页的内容。 如果我打印它们 - 它们对我来说似乎是一个不错的RDF。
但是,我无法将它们添加到模型中。
我尝试创建一个文件,将String(这是HTML内容)写入此文件(这似乎也没问题)并将其读取到模型中:
InputStream lastf = FileManager.get().open("lastfm.txt");
Model temp=null;
temp=ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF);
temp.read(lastf,null,"Turtle");
但是,此时我收到以下错误消息:
(ErrorHandlerLib.java:49) - [line:22,col:2]未知字符:
答案 0 :(得分:1)
你的代码对我来说很有用,就像一个简单的RDF / Turtle ......
@base <http://example.org/ns/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<s1> <p1> <o1>;
<p2> "some typed literal"^^xsd:string;
<p2> "some non-typed literal";
<p4> 10 .
<o1> <label> "some label" .
因此,您的数据文件lastfm.txt
中似乎有一些格式或字符集错误。
我建议使用RDF验证程序验证您的文件,尝试使用http://www.rdfabout.com/demo/validator/
使用此验证器,您可以测试RDF / XML和RDF / Turtle,确保为正在使用的RDF序列化类型选择正确的格式。
验证数据的另一个选项可能是来自http://librdf.org的 raptor 工具 但是这个有点复杂,你需要在本地安装它。
如果验证程序出现charset错误,那么您可以更改用于读取数据的字符集。这样的事情应该有用..
package t1;
import java.io.*;
import com.hp.hpl.jena.util.*;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
import java.nio.charset.*;
class test {
public static void main (String[] args) {
InputStreamReader lastf = new
InputStreamReader(FileManager.get().open("lastfm.txt"),
Charset.forName("ISO-8859-1"));
Model temp=null;
temp=ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF);
temp.read(lastf,null,"Turtle");
System.out.println(temp.size());
temp.write(System.out);
}
}
所有这些都应该为你提供一个发现错误的指导方针(我希望),但如果你没有发现它,那么发布数据以便我们可以查看它。
答案 1 :(得分:0)
听起来像是charset麻烦。文件是uTF-8还是别的什么?