Как использовать SPARQL для запроса файла ttl?

Я пытаюсь изучить SPARQL, и для этого мне нужно выполнять запросы к локальному файлу ttl. Я исследовал это, и в каждом ответе говорится, что нужно использовать rdflib, а затем выполнить запрос против этого.

Вот пример файла ttl, который я использую

# filename: ex002.ttl

@prefix ab: <http://learningsparql.com/ns/addressbook#> .

ab:richard ab:homeTel "(229) 276-5135" . 
ab:richard ab:email   "[email protected]" . 

ab:cindy ab:homeTel "(245) 646-5488" . 
ab:cindy ab:email   "[email protected]" . 

ab:craig ab:homeTel "(194) 966-1505" . 
ab:craig ab:email   "[email protected]" . 
ab:craig ab:email   "[email protected]" .

Теперь код Python, который должен работать, следующий:

filename = "C:/DataStuff/SemanticOntology/LearningSPARQLExamples/ex002.ttl" 
import rdflib
g = rdflib.Graph()

result = g.parse(filename, format='ttl')
print(result)
query = """
SELECT * WHERE {
        ?s ?p ?o .
}
"""

g.query(query)
for stmt in g:
    print(stmt)

К сожалению, всякий раз, когда он доходит до g.query(query), я получаю ModuleNotFoundError: No module named 'rdfextras'

Хорошо, без проблем. Поэтому я иду в conda-forge, чтобы установить его, и он говорит, что пакет недоступен с текущих каналов.

Ладно, странно. Поэтому я провел небольшое исследование и обнаружил https://github.com/RDFLib/rdfextras, в котором говорится, что это снято с производства и больше не требуется для rdflib >=4. Итак, я проверяю свою версию rdflib, и это 4.2.2. Так что, очевидно, что-то не так, поскольку для этого не требуется rdfextras.

Так что два вопроса -

  1. Почему он это делает, если моя версия rdflib >=4?
  2. В конечном счете - это все не по делу. Меня не волнуют средства, так как я могу использовать python для запуска запросов SPARQL к локальным файлам ttl (таким образом, что не требуются права администратора на моем компьютере)

Заранее спасибо.


person Dano13    schedule 11.09.2019    source источник
comment
итак, как мне использовать python для выполнения запросов SPARQL к локальным файлам ttl? — с rdflib — это, безусловно, самая распространенная библиотека для RDF/SPARQL, написанная на Python.   -  person UninformedUser    schedule 11.09.2019
comment
И я не могу воспроизвести вашу проблему. Я сделал pip install rdflib, а затем просто использовал его. может быть, у вас есть несколько версий пакета в вашей системе? Вы используете virtualenv или что-то подобное? Как вы запускаете свой код? Из IDE или через командную строку?   -  person UninformedUser    schedule 11.09.2019
comment
Для установки библиотек я использую командную строку, а затем ввожу conda install -c conda-forge rdflib. Чтобы запустить код, я использую spyder с anaconda.   -  person Dano13    schedule 11.09.2019


Ответы (1)


Прошу прощения - я только что вернулся домой и повторно запустил запрос, и теперь он, кажется, работает. Я понятия не имею, что изменилось между этим и примерно 2 часа назад

person Dano13    schedule 11.09.2019
comment
Теперь вы должны принять свой собственный ответ или просто удалить свой вопрос, так как он, похоже, не работал... - person TallTed; 12.09.2019
comment
Голосование за ваш ответ — это не то же самое, что принятие его... - person TallTed; 13.09.2019
comment
Я согласен - я должен удалить этот пост, но я не вижу никакого способа сделать это. В лучшем случае я могу проголосовать за удаление. Так при чем тут этикет? - person Dano13; 13.09.2019
comment
Чтобы удалить вопрос, вам нужно сначала понизить (или удалить) свой ответ. Затем вы должны увидеть ссылку, позволяющую удалить вопрос, как описано здесь. - person TallTed; 13.09.2019