Существует ли синтаксис для определения циклической ссылки между анонимными узлами в Turtle RDF?
Я ищу синтаксис черепахи для вызова анонимного узла, который вызывает другой анонимный узел.
Например, я хочу воспроизвести этот код:
:Instance0 a Class0;
:property0 :Instance1.
:Instance1 a Class1;
:property1 :Instance2.
:Instance2 a Class2;
:property2 :Instance1.
С чем-то вроде:
:Instance0 a Class0;
:property0 [
a Class1;
:property1 [
a Class2;
:property2 [
## The syntax to call the parent, the instance of :Class1
];
];
].
Есть ли какой-нибудь синтаксис для этой цели?
1 ответ
Модель данных RDF основана на графике, а не на иерархической структуре, поэтому нет понятия родительских / дочерних отношений между ресурсами и, следовательно, нет встроенного синтаксиса для ссылки на "родительские" узлы при вложении анонимных описаний ресурсов с помощью []
конструкция (которая на самом деле является просто синтаксическим сахаром для группировки воедино нескольких тройок, имеющих один и тот же анонимный предмет).
При этом синтаксис Turtle способен сериализовать каждый соответствующий граф RDF. Чтобы получить структуру графика, которую вы описываете, вы должны использовать _:
синтаксис, а не более компактный []
синтаксис для определения анонимных узлов.
Ситуации, когда вы должны использовать _:
синтаксис для ручного назначения пустых меток узлов вместо использования []
Синтаксис удобства включает в себя:
- Циклы в графе, включающие более одного анонимного узла.
- Несколько триплетов, имеющих один и тот же анонимный узел, что и объект.
_:
Синтаксис позволяет вам вручную назначить идентификатор узла, что позволит вам ссылаться на пустой узел с позиции субъекта или объекта любой произвольной тройки. Назначаемый вами идентификатор узла не имеет значения вне контекста документа Turtle, в котором он появляется, и поэтому не должен быть глобально уникальным. Узлы, идентифицированные таким образом, все еще являются анонимными, потому что на них нельзя ссылаться глобально. Однако каждое вхождение одной и той же пустой метки узла в одном и том же документе относится к одному и тому же ресурсу, поэтому автор документа отвечает за выделение пустых меток узлов и отслеживание их использования в одном и том же документе.
Ваш документ будет выглядеть примерно так:
:Instance0 a Class0;
:property0 _:instance1.
_:instance1 a Class1;
:property1 [
a Class2;
:property2 _:instance1;
].
См. 2.6 Пустые узлыRDF в RDF 1.1 Turtle, Terse RDF Triple Language для более подробной информации.