2017-01-15 3 views
1

Jenaを使用してXMLファイルを読み込もうとしています。通常は動作しています。JenaのURLからRDF/XMLを読み取る

final String url = "http://www.bbc.co.uk/nature/life/Human"; 
    Model model = ModelFactory.createDefaultModel();  
    model.read(url, "RDF/XML"); 

ただし、段落にbrやリンクが含まれている場合は別のURLを試してみます。それは私にこのエラーを与える。

Exception in thread "main" org.apache.jena.riot.RiotException: [line: 25, col: 6 ] {E202} Cannot have both string data "Great white sharks are at the very top of the marine food chain. Feared as man-eaters, they are only responsible for about 5-10 attacks a year, which are rarely fatal. Great whites are ultimate predators. Powerful streamlined bodies and a mouth full of terrifyingly sharp, serrated teeth, combine with super senses that can detect a single drop of blood from over a mile away. Hiding from a great white isn't an option as they can detect and home in on small electrical discharges from hearts and gills. Unlike most other sharks, live young are born that immediately swim away. 
" and XML data <br> inside a property element. Maybe you want rdf:parseType='Literal'. 

これはイエナは、私はそれはそれを無視するために何をすべきか、このエラーにhttp://www.bbc.co.uk/nature/life/Great_white_shark

を投げるときに、第2の状況のた​​めのリンクです。

答えて

2

問題はBBCサイトのデータにあります。文字列値にHTMLマークアップを入れるには<br/>&lt;br/&gt;としてエスケープする必要があります。 RDF/XMLでは、文字列の値は簡単な文字列の生のマークアップを持つことはできません。

残念なことに、BBCサイトは完全なコンテンツネゴシエーションを処理しません。タートルまたはNトリプルにXHMTLページを要求することです。

ヘッダーAccept: application/rdf+xmlを含む通常のHTTPリクエストでファイルをダウンロードし、内容を修正し、固定バージョンから解析する必要があります。これを行うための1つの方法は、それをJava文字列に読み込んで、<br/>&lt;br/&gt;に置き換えて文字列を解析する正規表現を実行することです。

関連する問題