gpt4 book ai didi

java - 关联数据 Jena Eclipse Dbpedia

转载 作者:行者123 更新时间:2023-12-02 05:48:23 27 4
gpt4 key购买 nike

我想用这段代码链接 dbpedia,他给我返回错误,为什么..我用这个最近的代码更改了代码:

public class linked2{

public static void main(String[] args) {
// TODO Auto-generated method stub
String service = "http://dbpedia.org/snorql";
String queryString =

"SELECT DISTINCT ?concept ?label"+
"WHERE{ "+
"?concept rdf:type skos:Concept."+
"?concept rdfs:label ?label."+
"?label bif:contains 'samsung'."+
"} ORDER BY DESC(?label) LIMIT 20";
Query query = QueryFactory.create(queryString);
// QueryEngineHTTP qexec = QueryExecutionFactory.sparqlservice(service, query);
QueryEngineHTTP qexec = QueryExecutionFactory.createServiceRequest(service, query);
ResultSet results = qexec.execSelect();
for ( ; results.hasNext() ; ) {
QuerySolution soln = results.nextSolution() ;
System.out.println(soln);
// System.out.println(soln.getLiteral("label"));
}
}

以及这张图片中出现的错误:

at com.hp.hpl.jena.sparql.lang.ParserBase.throwParseException(ParserBase.java:661)
at com.hp.hpl.jena.sparql.lang.ParserBase.resolvePName(ParserBase.java:274)
at com.hp.hpl.jena.sparql.lang.sparql_11.SPARQLParser11.PrefixedName(SPARQLParser11.java:4888)
at com.hp.hpl.jena.sparql.lang.sparql_11.SPARQLParser11.iri(SPARQLParser11.java:4872)
at com.hp.hpl.jena.sparql.lang.sparql_11.SPARQLParser11.PathPrimary(SPARQLParser11.java:2922)
at com.hp.hpl.jena.sparql.lang.sparql_11.SPARQLParser11.PathElt(SPARQLParser11.java:2852)
at com.hp.hpl.jena.sparql.lang.sparql_11.SPARQLParser11.PathEltOrInverse(SPARQLParser11.java:2877)
at com.hp.hpl.jena.sparql.lang.sparql_11.SPARQLParser11.PathSequence(SPARQLParser11.java:2830)

最佳答案

声明您的前缀

您的查询应该是

SELECT DISTINCT ?concept ?label WHERE {
?concept rdf:type skos:Concept.
?concept rdfs:label ?label.
?label bif:contains 'samsung'.
}
ORDER BY DESC(?label)
LIMIT 20

如果你把它放入 sparql.org's query validator ,你马上就会看到:

Syntax error:

Line 2, column 12: Unresolved prefixed name: rdf:type

您可能应该猜到这是基于堆栈跟踪中的 resolvePName 的前缀名称的问题。无论如何,您需要添加以下形式的前缀声明

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

对于您使用的其他前缀(rdf:bif:)也类似。

更多问题

整理完前缀后,您会在查询中发现另一个令人讨厌的错误,该错误已在 DBpedia Jena Query returning null 中进行了描述。 。您确实应该在查询代码中使用换行符,例如

"select * where {\n" +
" ...\n"

因为此刻,你已经

"SELECT DISTINCT ?concept ?label"+
"WHERE{ "+

变成

SELECT DISTINCT ?concept ?labelWHERE {

由于 SPARQL 查询中的 where 是可选的,因此您不会收到语法错误,但查询中没有名为 ?labelWHERE 的变量,所以你总是会得到误导性的结果(解决方案不包含变量 ?label,仅包含 ?labelWHERE)。

关于java - 关联数据 Jena Eclipse Dbpedia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23827574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com