2010-11-10 36 views
1

我正在使用Java進行編程,嘗試使用Jena庫和lastfm.rdfize.com網站製作一個簡單的RDF商店。從lastfm.rdfize.com添加RDF模型

我進入下面的問題: 的lastfm.rdfize.com產生RDF,例如在龜象上的請求: 「http://lastfm.rdfize.com/?username= & EVENTID = & artistName =「+ artistName +」& venueID = & output = turtle「

我提出請求並獲取生成的網頁的內容。 如果我印刷他們 - 他們看起來像一個體面的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) - [線:22,西:2]未知字符:

回答

1

您的代碼不會對我的工作有一個簡單的RDF /烏龜一樣......

@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猛禽工具,但是這個人是有點更復雜,你需要在本地安裝它。

如果驗證器發出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); 
    } 
} 

這一切應該給你的指引找到這個錯誤(我希望),但如果你沒有發現那麼它發佈的數據,使我們可以看看它。

+0

謝謝你的幫助,問題確實在字符集。一旦我明確聲明用UTF-8保存文件,一切都很好。 – Hippopotamus 2010-11-12 08:50:42

0

聽起來像字符集的麻煩。 uTF-8中的文件還是其他內容?

+0

是的,這是字符集,不得不明確地使它在UTF-8 – Hippopotamus 2010-11-12 08:51:06