SPARQL-запрос python РЕЗУЛЬТАТЫ BINDINGS: оператор IF для значения BINDINGs? - PullRequest
2 голосов
/ 19 сентября 2011

Использование Python с SPARQLWrapper, JSON, urlib2 & cgi. Возникли проблемы при передаче рабочего SPARQL-запроса с некоторыми значениями NULL в python, поэтому я заполнил пробелы литералом и попытаюсь отфильтровать результаты. У меня есть пример этого раздела результатов:

for result in results["results"]["bindings"]:
          project = result["project"]["value"].encode('utf-8')
          filename = result["filename"]["value"].encode('utf-8')
          url = result["url"]["value"].encode('utf-8')

... и я печатаю %s. Есть ли способ отфильтровать значение, т. Е. Если VALUE NE "string", то PRINT? Или есть другой обходной путь? Я в хвосте небольшого проекта, я знаю, что мне нужна лучшая оболочка, мне просто нужно отфильтровать эти результаты, прежде чем я смогу двигаться дальше. T очень много IA ...

1 Ответ

2 голосов
/ 25 октября 2012

Я являюсь одним из разработчиков библиотеки SPARQLWrapper, и на вопрос уже был дан ответ в списке рассылки .

Относительно дополнительных значений в исходном запросе, набор результатовпридет без значений для этих переменных.Проблема в том, что нам нужно проанализировать запрос, чтобы заполнить такие пропущенные записи, и мы хотим избежать такого анализа;поэтому вам нужно проверить его, чтобы избежать проблем во время выполнения с KeyError.

Обычно я использую код вроде:

for result in results["results"]["bindings"]:
    party = result["party"]["value"] if ("party" in result) else None
...