1

我正在用 Java 编程,尝试使用 Jena 库和 lastfm.rdfize.com 网站制作一个简单的 RDF 存储。

我遇到了以下问题:lastfm.rdfize.com 产生一个 rdf,例如在 Turtle 中,请求如下:“http://lastfm.rdfize.com/?username=&eventID=&artistName="+artistName+" &venueID=&输出=乌龟"

我提出请求并获取结果网页的内容。如果我打印它们 - 它们对我来说似乎是一个不错的 RDF。

但是,我无法将它们添加到模型中。

我尝试创建一个文件,将字符串(这是 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] 未知字符:

4

2 回答 2

1

你的代码对我有用,像...

@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工具, 但这个工具更复杂一些,您需要在本地安装它。

如果验证器出现字符集错误,那么您可以更改用于读取数据的字符集。像这样的东西应该工作..

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);
    }
}

所有这些都应该为您提供发现错误的指南(我希望如此),但如果您没有发现错误,请发布数据以便我们查看。

于 2010-11-12T03:03:45.443 回答
0

听起来像字符集的麻烦。该文件是 uTF-8 还是其他文件?

于 2010-11-12T02:23:02.570 回答