В Apache Jena / arq есть инструмент qparse, который анализирует запрос SPARQL и генерирует вывод алгебры SPARQL (в формате SSE).
Но API Apache Jena был написан на Java. Поэтому я использую Redlan librdf (C ++) для анализа запросов. Доза librdf сделать это? генерировать проанализированные SPARQL данные в формате SSE?
(Я знаю, что есть специальный формат с инструментом librdf rasqal:
roqet: Querying from file q4.rq
Query:
query verb: SELECT
query projected variable names (2): y, givenName
query bound variables (2): y, givenName
query Group graph pattern[0] {
sub-graph patterns (2) {
Basic graph pattern[1] #0 {
triples {
triple #0 { triple(variable(y), uri<http://www.w3.org/2001/vcard-rdf/3.0#Family>, variable(givenName)) }
}
}
Filter graph pattern[2] #1 {
filter { expr(op regex(expr(variable(givenName)), expr(string("s")), expr(string("i"))))}
}
}
}
roqet: Query has a variable bindings result
result: [y=blank genid1, givenName=string("Smith")]
result: [y=blank genid2, givenName=string("Smith")]
result: [y=blank genid3, givenName=string("Jones")]
result: [y=blank genid4, givenName=string("Jones")]
roqet: Query returned 4 results
)
Задача ещё не решена.