我正在使用以下代码向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的值中,系统会动态填充这些值,它们的数量很大,这会增加查询的长度。
答案 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();