Разбор запросов SPARQL

Мне нужно проверить определенное структурное свойство пары миллионов запросов SPARQL, и для этого мне нужна структура WHERE заявление. В настоящее время я пытаюсь использовать для этого fyzz, но, к сожалению, его документация не очень полезна. Анализировать запросы несложно, проблема в том, что мне не удалось восстановить структуру оператора. Например:

>>> from fyzz import parse
>>> a=parse("SELECT * WHERE {?x a ?y . {?x a ?z}}")
>>> b=parse("SELECT * WHERE {?x a ?y OPTIONAL {?x a ?z}}")
>>> a.where==b.where
True
>>> a.where
[(SparqlVar('x'), ('', 'a'), SparqlVar('y')), (SparqlVar('x'), ('', 'a'), SparqlVar('y'))]

Есть ли способ восстановить реальное дерево синтаксического анализа в fyzz вместо троек или какой-либо другой инструмент, который позволил бы мне это сделать? В RDFLib, похоже, раньше был парсер Bison SPARQL, но я не могу найти его в пакетах rdflib или rdfextras.sparql .

Спасибо

5
задан ailnlv 8 August 2011 в 16:03
поделиться