Я хочу сделать запрос, который выполняет следующие действия: Выберите все тройки (s,p,o)
, если существует путь длиной не менее 2 ребер от s
до o
со свойством 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 Jena:
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> ...
Можете ли вы показать мне, как я могу правильно сделать запрос?