簡體   English   中英

從DBPedia解析數據時,OpenRdf異常

[英]OpenRdf Exception when parsing data from DBPedia

我將OpenRdf與Sparql一起使用以從DBPedia收集數據,但是在針對DBPedia Sparql端點運行的以下查詢中遇到一些錯誤:

CONSTRUCT{ 
    ?battle ?relation ?data . 
} 
WHERE{
  ?battle   rdf:type    yago:Battle100953559 ;  
            ?relation   ?data   .  
  FILTER(?relation != owl:sameAs)
}
LIMIT 1 
OFFSET 18177

我修改了LIMIT和OFFSET以指出引發問題的特定結果。

響應是這樣的:

@prefix foaf:   <http://xmlns.com/foaf/0.1/> .
@prefix ns1:    <http://en.wikipedia.org/wiki/> .
<http://dbpedia.org/resource/Mongol%E2%80%93Jin_Dynasty_War>    foaf:isPrimaryTopicOf   ns1:Mongol–Jin_Dynasty_War .

問題是ns1:Mongol–Jin_Dynasty_War實體包含減號,因此在使用OpenRdf的Java應用程序中運行此查詢時,出現以下異常:

org.openrdf.query.QueryEvaluationException:org.openrdf.rio.RDFParseException:預期為“。”,找到為“ –” [第3行]

有什么辦法可以解決這個問題?

謝謝 !

為了幫助可能遇到相同問題的其他用戶,我將在此處發布使用OpenRDF v2.7.x為圖形查詢設置首選輸出格式的方法。

您需要創建SPARQLRepository的子類來訪問HTTPClient(由於某些原因,該字段為protected

public class NtripleSPARQLRepository extends SPARQLRepository {
    public NtripleSPARQLRepository(String endpointUrl) {
        super(endpointUrl);
        this.getHTTPClient().setPreferredRDFFormat(RDFFormat.NTRIPLES);
    }
}

您只需要創建此類的新實例:

NtripleSPARQLRepository repository = new NtripleSPARQLRepository(service);
RepositoryConnection connection = new SPARQLConnection(repository);
Query query = connection.prepareQuery(QueryLanguage.SPARQL, "YOUR_QUERY");

如果要查詢Virtuoso服務器,則在Virtuoso的實現中可能會遇到草率的情況。 我在獲取XML結果(輸出中的垂直選項卡,但僅XML 1.0)以及最新的JSON結果(\\ U轉義表示“基本多語言平面”中的字符)時看到了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM