Использовать автоматически назначенный пустой узел с уточненными данными - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь запросить набор данных, который использует словарь RDF reification, что-то вроде этого:

myprefix:statement1 rdf:subject myprefix:object1 .
myprefix:statement1 rdf:predicate myprefix:isrelatedto .
myprefix:statement1 rdf:object myprefix:object2 .

myprefix:statement2 rdf:subject myprefix:object2 .
myprefix:statement2 rdf:predicate myprefix:isrelatedto .
myprefix:statement2 rdf:object myprefix:object3 .

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix myprefix: <mydomain#>
select *
from <mydomain>
where {
 [ rdf:subject ?first ; rdf:predicate myprefix:isrelatedto ; rdf:object _:1 ] .
 [ rdf:subject _:1 ; rdf:predicate myprefix:isrelatedto ; rdf:object ?second ] .
}

Result:
 __________________ __________________
| first            | second           |
|__________________|__________________|
| myprefix:object1 | myprefix:object2 |
|__________________|__________________|

Можно ли как-нибудь заменить помеченный пустой узел _: 1 конструкцией []?

РЕДАКТИРОВАТЬ: следует объяснить, что причина вопроса была в том, что в реальном случае у меня есть гораздо более сложный запрос, который должен получить переменное количество свойств, как это (запрос генерируется динамически). Поэтому я пытаюсь избавиться от помеченного узла, чтобы мне не приходилось генерировать уникальные метки динамически.

1 Ответ

1 голос
/ 09 апреля 2020

[ ] работает при наличии не более одной ссылки на него.

Здесь мы имеем:

... rdf:object _:1

... rdf:subject _:1

, поэтому две ссылки на пустой узел, как написано в данный момент.

Если вы можете изменить оставшуюся часть запроса, это может быть возможно. О том, яснее ли намерение, вы должны принять решение.

Потому что в части:

[ rdf:subject _:1 ; ....]

не использует внешний пустой узел [ ] для чего-либо так что может быть возможно иметь rdf:object/^rdf:subject, как предложено в комментарии.

То, является ли намерение более ясным, - это то, над чем вам придется судить.

...