Java - переписывание SPARQL-запроса с помощью парсинга - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь использовать Jena или какую-то другую библиотеку Java для решения некоторых задач кодирования (в данном случае переписывание с помощью обхода после заказа). Я не прошу методологию для перевода SPARQL в SQL-запрос. У меня уже есть это.

В настоящее время я пытаюсь перевести данный запрос SPARQL в другой запрос SQL.

До сих пор я использовал анализатор Jena , который, учитывая запрос SPARQL, возвращает представление дерева ARQ, которое можно просмотреть в пост-порядке. Это именно то, что я хочу сделать.

Единственная проблема в том, что Ходок просто ходит по дереву. То, что я хотел бы сделать, это что-то вроде этого (предположим, я иду через МИНУС):

String visit(OpMinus minus){

    String l_res = minus.getLeft().visit();
    String r_res = minus.getRight().visit();

    /*

    ... do some stuff with the result ...

    */

    String res = l_res + "MINUS (" + r_res + ")";
    return res;
}

Посетитель Йены, однако, возвращается пустым, делая это невозможным. Есть ли другой способ сделать это вместо копирования кода Уокера и Посетителя, чтобы заставить его работать так, как я хочу? Спасибо.

Я не ищу прямой переводчик SPARQL-SQL, потому что мне нужно работать с элементами дерева.

1 Ответ

0 голосов
/ 24 марта 2019

Я в конечном итоге решил эту проблему, реализовав свой собственный Walker (поскольку все, что я ищу, реализовано в Jena), который обходит дерево в пост-порядке и возвращает Strings

...