属性 路径的 SPARQL 查询不起作用
SPARQL Query with property path not working
我想进行如下查询:Select 所有三元组 (s,p,o)
如果存在从 s
到 [= 的长度至少为 2 条边的路径16=] 与 属性 p
。所以路径的所有边缘都必须用 p
标记。
我尝试了以下方法:
select ?s <http://dbpedia.org/ontology/isPartOf> ?o
WHERE {
?s <http://dbpedia.org/ontology/isPartOf>{2,} ?o.
?s <http://dbpedia.org/ontology/isPartOf> ?o
}
我用耶拿 API:
ParameterizedSparqlString parameterizedSparql = new ParameterizedSparqlString(model);
parameterizedSparql.setCommandText(sparql);
Query query = QueryFactory.create(parameterizedSparql.asQuery().toString(), Syntax.syntaxARQ);
QueryExecutionFactory.create(query, model).execSelect();
我使用了 Syntax.syntaxARQ
,因此它应该理解 属性 路径。
它给我以下错误:
Exception in thread "main" org.apache.jena.query.QueryParseException: Encountered " "{" "{ "" at line 3, column 42.
Was expecting one of:
<IRIref> ...
<PNAME_NS> ...
<PNAME_LN> ...
<BLANK_NODE_LABEL> ...
<VAR1> ...
<VAR2> ...
你能告诉我如何正确地进行查询吗?
此外,正如@AKSW 指出的那样,{2,}
语法 from the SPARQL 1.1 Working Draft didn't make it into the final SPARQL 1.1 spec,因此您不能依赖每个 SPARQL 处理器都支持它。
你可以use the {2,}
syntax with Virtuoso, which is the engine powering the public DBpedia endpoint, but to do so through Jena, you have to either use "extended syntax" (Syntax.syntaxARQ
) or bypass the ARQ parser.
您的直接问题似乎归结为耶拿中的错误,其中 ParameterizedSparqlString.asQuery()
does not currently support "extended syntax" (Syntax.syntaxARQ
) queries; parameterizedSparql.toString()
应该足够了,正如@AndyS 所评论的那样。
我想进行如下查询:Select 所有三元组 (s,p,o)
如果存在从 s
到 [= 的长度至少为 2 条边的路径16=] 与 属性 p
。所以路径的所有边缘都必须用 p
标记。
我尝试了以下方法:
select ?s <http://dbpedia.org/ontology/isPartOf> ?o
WHERE {
?s <http://dbpedia.org/ontology/isPartOf>{2,} ?o.
?s <http://dbpedia.org/ontology/isPartOf> ?o
}
我用耶拿 API:
ParameterizedSparqlString parameterizedSparql = new ParameterizedSparqlString(model);
parameterizedSparql.setCommandText(sparql);
Query query = QueryFactory.create(parameterizedSparql.asQuery().toString(), Syntax.syntaxARQ);
QueryExecutionFactory.create(query, model).execSelect();
我使用了 Syntax.syntaxARQ
,因此它应该理解 属性 路径。
它给我以下错误:
Exception in thread "main" org.apache.jena.query.QueryParseException: Encountered " "{" "{ "" at line 3, column 42.
Was expecting one of:
<IRIref> ...
<PNAME_NS> ...
<PNAME_LN> ...
<BLANK_NODE_LABEL> ...
<VAR1> ...
<VAR2> ...
你能告诉我如何正确地进行查询吗?
此外,正如@AKSW 指出的那样,{2,}
语法 from the SPARQL 1.1 Working Draft didn't make it into the final SPARQL 1.1 spec,因此您不能依赖每个 SPARQL 处理器都支持它。
你可以use the {2,}
syntax with Virtuoso, which is the engine powering the public DBpedia endpoint, but to do so through Jena, you have to either use "extended syntax" (Syntax.syntaxARQ
) or bypass the ARQ parser.
您的直接问题似乎归结为耶拿中的错误,其中 ParameterizedSparqlString.asQuery()
does not currently support "extended syntax" (Syntax.syntaxARQ
) queries; parameterizedSparql.toString()
应该足够了,正如@AndyS 所评论的那样。