Модель OWL-класса лиц со свойством, содержащим определенную строку, где содержимое строки частично зависит от других лиц / другого класса

Вот (грубая) часть моделирования OWL, касающаяся шаблона для официального финансового законопроекта о бюджете министерств в моей стране. Он показывает класс заголовка бюджетного законопроекта как часть титульного листа такого документа (среди колофона, оглавления, подзаголовка и т. д.). Класс функционирует как образец для письменных бюджетных законопроектов правительства, в данном случае титульной части. Этот заголовок частично статичен (всегда содержит строку «Принятие бюджетного законопроекта министерства», что не представляет проблемы с использованием нотации owl: hasValue) и частично динамичен, в идеале получен от лиц из другого класса (название министерств ). Я не знаю, как это правильно смоделировать в OWL (если возможно). Я много гуглил и придумывал разные источники информации, намекающие на решение, но никогда не хватало для меня, чтобы действительно понять его и перевести в правильное рабочее решение.

:InitialBudgetBill-Title dct:identifier ftext:rbv1.10 .
:InitialBudgetBill-Title rdfs:label "Template Budget Bill".
:InitialBudgetBill-Title rdf:type owl:Class ;
owl:equivalentClass 
    [rdf:type owl:Class ;
     owl:intersectionOf ( doco:Title 
               [rdf:type owl:Restriction ;
                owl:onProperty c4o:hasContent;
                owl:hasValue "Adoption of the Budget Bill of the Ministry of ????....?????"]
               [rdf:type owl:Restriction ;
                owl:onProperty dct:isPartOf;
                owl:someValuesFrom :FrontMatter-InitialBudgetBill]
               )
   ]. 

Вот код для структуры бюджета (министерства также называются разделами бюджета) и свойства с именами министерств, откуда я хотел бы извлечь имя и включить его в класс вышеупомянутого заголовка бюджетного законопроекта.

:BudgetChapter rdf:type owl:Class ;

            rdfs:label "Budget Chapter"@en ;

            rdfs:comment "A chapter within the national budget."@en ;

            rdfs:subClassOf :BudgetStructureElements .


:hasBudgetChapterName rdf:type owl:DatatypeProperty ;

               rdfs:label "has Budget Chapter Name"@en ;

               vann:usageNote "A budget chapter has a name." ;

               rdfs:comment "Indicates what name a budget chapter has."@en ;

               rdfs:domain :BudgetChapter ;

               rdfs:range xsd:string.
               

Физические лица:


:FinanceMinistry rdf:type :BudgetChapter.
:FinanceMinistry :hasBudgetChapterName "Ministry of Finance".
:BudgetBillTemplate2021_Title rdf:type :InitialBudgetBill-Title.
:BudgetBillTemplate2021_Title rdf:type doco:Title.
:BudgetBillTemplate2021_Title c4o:hasContent "Adoption of the Budget Bill of the Ministry of Finance".
:BudgetBillTemplate2021_Title dct:isPartOf :BudgetBillTemplate2021_FrontMatter.
:BudgetBillTemplate2021_FrontMatter rdf:type :FrontMatter-InitialBudgetBill.
:BudgetBillTemplate2021_FrontMatter rdf:type doco:FrontMatter.

 

Я бы хотел этого по нескольким причинам:

  1. моделирование структуры бюджетного законопроекта, чтобы мы могли дать контекст написанным текстам
  2. причина с этой моделью, чтобы видеть данные и модель согласованы
  3. причина с этой моделью для создания автоматически заполняемых шаблонов бюджетных счетов

Мы также изучаем возможность включения в него SHACL (как для проверки, так и для генерации), но пока это не входит в мой вопрос.

Я прочитал следующие источники по теме:

Моделирование ограничений свойств типа данных OWL со списком значений

Строковые манипуляции в RDF / OWL

Как получить элементы выражения перечислимого типа данных OWL?

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

    [rdf:type restriction;
     owl:onProperty c4o:hasContent;
         owl:someValuesFrom   
          [ rdf:type             rdfs:Datatype ;
            owl:onDatatype       xsd:integer ;
            owl:withRestrictions  ([xsd:pattern "Adoption of the Budget Bill of the " && <some pattern using budget chapter names>"])
          ]
       

Я также рассмотрел использование свойства owl: oneOf, но и там я не могу динамически включать значения свойств отдельных лиц другого класса. Я мог бы сохранить в классе все названия различных разделов бюджета, но это не дает мне нужной динамики, и я не знаю, как комбинировать значения owl: oneOf со статической строкой «Принятие бюджетного счета». Затем у меня остается возможность смоделировать весь заголовок как значения свойства owl: oneOf, по одному для каждого отдела:

:InitialBudgetBill-Title dct:identifier ftext:rbv1.10 .
:InitialBudgetBill-Title rdfs:label "Template Budget Bill".
:InitialBudgetBill-Title rdf:type owl:Class ;
owl:equivalentClass 
    [rdf:type owl:Class ;
     owl:intersectionOf ( doco:Title 
                [rdf:type owl:Restriction ;
                owl:onProperty c4o:hasContent ;
                owl:someValuesFrom [ rdf:type owl:Class ;
                                     owl:oneOf ( "Adoption of the Budget Bill of the Ministry of Finance"
                                                 "Adoption of the Budget Bill of the Ministry of Economic Affairs" 
                                                 "Adoption of the Budget Bill of the Ministry of Education")]
               [rdf:type owl:Restriction ;
                owl:onProperty dct:isPartOf;
                owl:someValuesFrom :FrontMatter-InitialBudgetBill]
               )
   ]. 

Я не уверен, что это надежное и правильное кодирование OWL.

Кроме того, поскольку названия министерств со временем меняются, было бы удобнее иметь проверенную модель данных / данные с актуальными названиями, с которыми я мог бы перекрестно проверять заголовки бюджетных документов. Следовательно, необходимость в большей динамике вместо жесткого кодирования названий министерств.

Я новичок в OWL, поэтому, к сожалению, ожидаю, что у меня будут некоторые ошибочные мысли в этой области. Я даже не работал с рассуждениями по этой модели, сначала я хочу понять, как правильно ее моделировать. Мне интересно, могут ли здесь быть полезны шаблоны разумных онтологий (OTTR, https://ottr.xyz/), но мне трудно понять и применить.

Может ли кто-нибудь мне помочь?

Может быть, swrlb:stringConcat().

Stanislav Kralin 09.04.2021 12:24

Интересно, @StanislavKralin, спасибо. Посмотрел w3.org/Submission/SWRL, но мне трудно понять, как объединить SWRL с OWL. Кажется, что это фреймворк внутри фреймворка, и это всегда сбивает меня с пути ;-) Был бы очень признателен, если бы кто-нибудь мог показать мне, как использовать swrlb: stringConcat () в модели OWL.

DatedLink 09.04.2021 23:47

Дополнительный вопрос: как SWRL соотносится с SHACL? Вы бы сказали, что SHACL может делать то же, что и SWRL, и даже больше? Задавая это в связи с моим первоначальным вопросом, я хотел бы знать, какое решение будет наиболее надежным в будущем. Мы уже рассматриваем возможность применения SHACL, особенно для проверки согласованности, валидации и генерации данных. OWL по-прежнему будет использоваться, но для моделирования области знаний и повторного использования ее в запросах SPARQL (привнося больше контекста).

DatedLink 09.04.2021 23:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
39
0

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