使用apache jena发送帖子请求

时间:2015-12-10 07:53:11

标签: java sparql jena

我正在使用以下代码向sparql端点发送请求。这些请求是GET请求。当我发送查询时,我收到以下错误:414 Request-URI Too Large。我发现我可以通过发送帖子请求来解决问题。需要知道我如何发送邮件请求。

Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
QueryExecution qexec = QueryExecutionFactory.sparqlService(this.endPoint, query);
ResultSet resultSet = qexec.execSelect();

我使用以下查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>  
PREFIX yago: <http://dbpedia.org/class/yago/> 
SELECT ?entityName ?categoryName
WHERE { VALUES ?uri {<http://dbpedia.org/resource/Category:Roger_Federer> } 
      {?uri  (dcterms:subject|rdf:type) ?category .  
      OPTIONAL {?category rdfs:label ?categoryName . 
                ?uri rdfs:label ?entityName. } 
      } 
      FILTER(lang(?entityName) = 'en' && lang(?categoryName) = 'en') 
      FILTER (?category = dbpedia-owl:TennisPlayer || 
              ?category = yago:TennisOrganisations || 
              ?category =<http://dbpedia.org/resource/Category:The_Championships,_Wimbledon>
             )
     } 

这里在uri的值中,系统会动态填充这些值,它们的数量很大,这会增加查询的长度。

2 个答案:

答案 0 :(得分:0)

设置HttpQuery.urlLimit,但默认值为2K字节,通常很好。 (当前版本)。

答案 1 :(得分:0)

我找到了以下解决问题的方法。我使用QueryEngineHttp发送http post查询,但它确实有效。

Query query = QueryFactory.create(queryString, Syntax.syntaxARQ);
QueryEngineHTTP qeh = new QueryEngineHTTP(this.endPoint, query);
ResultSet resultSet = qeh.execSelect();