Можно ли написать форму, которая проверяет область и диапазон данного свойства? - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь проверить мои экземпляры онтологии, используя формы SHACL. Однако я не могу найти, как сказать, что данный экземпляр свойства действителен, только если он имеет экземпляр Class1 в качестве субъекта и экземпляр Class2 в качестве объекта.

Другими словами, я хочу указать домен (то есть, Class1) и диапазон (то есть, Class2) этого свойства.

В следующем примере мы уточняем, что диапазон (клиент и лицо), но домен не указан.

ex:InvoiceShape
a sh:NodeShape ;
sh:property [
    sh:path ex:customer ;
    sh:class ex:Customer ;
    sh:class ex:Person ;
] .

Я знаю, что можно указать целевой класс (TC) для фигуры, но это ограничивает диапазон свойства ex: customer, когда доменом является TC, и не во всех случаях.

Можно ли написать фигуру, которая фиксирует область и диапазон заданного свойства?

Спасибо!

1 Ответ

0 голосов
/ 01 мая 2019

Чтобы указать, что приведенное выше ограничение свойства применяется ко всем экземплярам ex: Invoice, вы должны добавить ex: InvoiceShape rdf: type rdfs: Class или ex: InvoiceShape sh: targetClass ex: Invoice. Это, однако, не указывает, что все субъекты тройки ex: customer должны быть экземплярами ex: Invoice.

Чтобы убедиться, что свойство ex: customer может только использоваться в случаях ex: Invoice, вы можете использовать:

ex:InverseInvoiceShape
    a sh:NodeShape ;
    sh:targetSubjectsOf ex:customer ;
    sh:class ex:Invoice .

Вышеуказанная форма относится ко всем предметам бывшего клиента: тройка. О нарушении будет сообщено, если этот субъект не является экземпляром ex: Invoice.

В вашем первоначальном примере указано, что значения ex: customer должны быть экземплярами ex: Customer и ex: Person. Если вы хотели выразить «либо клиент, либо лицо», используйте

ex:InvoiceShape
    a sh:NodeShape ;
    sh:targetClass ex:Invoice ;
    sh:property [
        sh:path ex:customer ;
        sh:or (
            [ sh:class ex:Customer ]
            [ sh:class ex:Person ]
        )
    ] .
...