Редленд контекст в виртуозе
Я использую привязки Redland Python для добавления троек в Virtuoso RDF.Storage(storage_name='virtuoso')
и я пытаюсь понять, как реализуется контекст. Я получаю некоторые удивительные результаты.
Если я добавлю тройки с:
model.add_statements(context=something)
Я могу вернуть их всех:
model.as_stream(context=something)
как и ожидалось. Однако, если я создам новую модель с тем же хранилищем и попробую это:
for stmt in model:
print stmt
Я не получаю результата, как будто модель пуста. Кроме того, когда я пытаюсь следующее:
model.remove_statements_with_context(context=something)
for stmt in model.as_stream(context=something):
print stmt
Я все еще возвращаю все тройки; они не были удалены, как я ожидал.
Наконец, когда я пытаюсь выполнить простые SPARQL-запросы, которые должны соответствовать некоторым из троек, хранящихся в контексте, я не получаю никакого результата.
Может ли кто-нибудь помочь мне понять, что происходит за кулисами с контекстами Redland и Virtuoso?
1 ответ
Вы можете использовать функцию Virtuoso trace_on (), чтобы разрешить передачу запросов и т. Д. В Virtuoso для регистрации в virtuoso.log
файл для просмотра.
Это должно помочь вам увидеть, что передается слоем Redland, и любые ошибки и т. Д., Которые могут возникнуть.
Насколько я знаю, мы не проводили никакого тестирования с привязками Redland Python, но у нас есть C
программа тестирования в дереве с открытым исходным кодом Virtuoso, которая использовалась для тестирования нашего провайдера Redland Storage.
Надеюсь, это поможет...