从lastfm.rdfize.com添加RDF模型

时间:2010-11-10 19:12:33

标签: java rdf jena last.fm

我正在用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]未知字符:

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还是别的什么?