Редленд контекст в виртуозе

Я использую привязки 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.

Надеюсь, это поможет...

Другие вопросы по тегам