Существует ли синтаксис для определения циклической ссылки между анонимными узлами в 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 для более подробной информации.

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