Как определить тип объекта в тройках Redland R RDF
Я пытаюсь использовать реализацию RDF Redland R для создания простого хранилища RDF, но у меня возникают проблемы с написанием не буквальных троек. В коде после настройки world
а также model
, в то время как буквальная тройка
addStatement(model,
new("Statement",world,
"a:John","b:likes","a:Jane"))
дает ожидаемое
<a:John> <b:likes> "a:Jane"
код
addStatement(model,
new("Statement",world,
"a:Sian","b:likes","a:John",objectType="blank"))
дает _:a:John
вместо <a:John>
<a:Sian> <b:likes> _:a:John
который не совпадает в сгибе в SPARQL
select ?a ?b where {?a <b:likes> ?x. ?x <b:likes> ?b.}
Что я здесь не так делаю? Обратите внимание, что это приложение само по себе не смотрит на какие-либо делегированные базы данных, поскольку я просто использую тройки для использования логической силы запроса SPARQL. Первоначально сделал это в другом пакете, но пытаюсь переехать в Редленд по техническим причинам.
1 ответ
Огромное спасибо комментарию Станислава выше, ответ - просто установить для objectType значение "uri". Это не очень хорошо документировано в R, но, глядя на определение Statement
Объект, строка 68 на Github, дает соответствующие параметры и значения по умолчанию.