# epc_rdf-star - см. https://github.com/bpmbpm/doc/blob/main/METAMODEL/PROCESS/EPC/epc_rdf.md # I epc_rdf-star_v1.md ```mermaid graph TB Event1(("Событие1")) Event2(("Событие2")) Operation1["Операция1"] Document1[/"Документ1"/] Document2[/"Документ2"/] Event1 --> Operation1 Operation1 --> Event2 Document1 --> Operation1 Operation1 --> Document2 classDef event fill:#ffcccc,stroke:#d60000,stroke-width:2px classDef function fill:#e1f5e1,stroke:#4caf50,stroke-width:2px classDef document fill:#cccccc,stroke:#555,stroke-width:2px class Event1,Event2 event class Operation1 function class Document1,Document2 document ``` ## Компактное описание на RDF-star ```turtle @prefix epc: . @prefix rdf: . @prefix rdfs: . # Базовые типы epc:Event rdf:type rdfs:Class . epc:Function rdf:type rdfs:Class . epc:Document rdf:type rdfs:Class . # Экземпляры epc:Event1 rdf:type epc:Event ; rdfs:label "Событие1" . epc:Event2 rdf:type epc:Event ; rdfs:label "Событие2" . epc:Operation1 rdf:type epc:Function ; rdfs:label "Операция1" . epc:Document1 rdf:type epc:Document ; rdfs:label "Документ1" . epc:Document2 rdf:type epc:Document ; rdfs:label "Документ2" . # Триплы с аннотациями <> epc:priority "high" . <> epc:probability 1.0 . <> epc:mandatory true . <> epc:quality "high" . ``` ## Текстовая диаграмма структуры ``` Структура процесса: Workflow: [Событие1] → [Операция1] → [Событие2] Docflow: [Документ1] → [Операция1] → [Документ2] Аннотации RDF*: - triggeredBy: priority = high - resultsIn: probability = 1.0 - hasInput: mandatory = true - hasOutput: quality = high ``` ## Альтернативная простая визуализация ``` ┌───────────┐ ┌───────────┐ ┌───────────┐ │ Событие1 │───▶│ Операция1 │───▶│ Событие2 │ └───────────┘ └───────────┘ └───────────┘ │ ▲ │ │ ┌───────┘ └───────┐ ▼ ▼ ┌───────────┐ ┌───────────┐ │ Документ1 │ │ Документ2 │ └───────────┘ └───────────┘ Аннотации: • Событие1 → Операция1: priority = high • Операция1 → Событие2: probability = 1.0 • Документ1 → Операция1: mandatory = true • Операция1 → Документ2: quality = high ``` RDF-star в этой компактной форме позволяет выразить те же семантические отношения, что и обычный RDF, но с дополнительными метаданными непосредственно на уровнях связей, делая модель более выразительной при меньшем объеме кода. # II epc_rdf-star_v1.md + временная метка ## Описание на RDF-star (RDF*) ```turtle @prefix epc: . @prefix rdf: . @prefix rdfs: . @prefix xsd: . @prefix prov: . # Базовые классы epc:Event rdf:type rdfs:Class ; rdfs:label "Event" . epc:Function rdf:type rdfs:Class ; rdfs:label "Function" . epc:Document rdf:type rdfs:Class ; rdfs:label "Document" . epc:Process rdf:type rdfs:Class ; rdfs:label "Process" . # Свойства с аннотациями в RDF* <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:comment "Указывает входной документ для функции" . <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:comment "Указывает выходной документ функции" . <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:comment "Указывает событие, инициирующее функцию" . <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:comment "Указывает событие, являющееся результатом функции" . # Экземпляры с метаданными <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:label "Событие1" ; epc:confidence 0.95 . <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:label "Событие2" ; epc:confidence 0.95 . <> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ; rdfs:label "Операция1" ; epc:duration "PT30M"^^xsd:duration . <> prov:generatedAtTime "2024-01-15T09:30:00Z"^^xsd:dateTime ; rdfs:label "Документ1" ; epc:format "application/pdf" . <> prov:generatedAtTime "2024-01-15T10:30:00Z"^^xsd:dateTime ; rdfs:label "Документ2" ; epc:format "application/pdf" . # Триплы с аннотациями (RDF* вложенные утверждения) <<<> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime>> epc:priority "high" ; epc:reliability 0.98 . <<<> prov:generatedAtTime "2024-01-15T10:30:00Z"^^xsd:dateTime>> epc:probability 1.0 ; epc:reliability 0.99 . <<<> prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime>> epc:mandatory true ; epc:validationStatus "validated" . <<<> prov:generatedAtTime "2024-01-15T10:30:00Z"^^xsd:dateTime>> epc:quality "high" ; epc:approvalStatus "approved" . # Процессы <> rdfs:label "Workflow" ; epc:processType "business" . <> rdfs:label "Docflow" ; epc:processType "document" . # Принадлежность к процессам <> epc:order 1 . <> epc:order 2 . <> epc:order 3 . <> epc:order 1 . <> epc:order 2 . <> epc:order 3 . ``` ## Визуализация RDF-star графа ```mermaid graph TB %% Основные узлы Event1[("Событие1
confidence: 0.95")] Event2[("Событие2
confidence: 0.95")] Operation1[["Операция1
duration: PT30M"]] Document1[/"Документ1
format: application/pdf"/] Document2[/"Документ2
format: application/pdf"/] %% Связи с аннотациями Event1 -.->|triggeredBy
priority: high
reliability: 0.98| Operation1 Operation1 -.->|resultsIn
probability: 1.0
reliability: 0.99| Event2 Document1 -.->|hasInput
mandatory: true
validationStatus: validated| Operation1 Operation1 -.->|hasOutput
quality: high
approvalStatus: approved| Document2 %% Процессы subgraph Workflow [Workflow - business process] direction LR Event1 --> Operation1 --> Event2 end subgraph Docflow [Docflow - document process] direction LR Document1 --> Operation1 --> Document2 end %% Стили classDef event fill:#ffcccc,stroke:#d60000,stroke-width:2px classDef function fill:#e1f5e1,stroke:#4caf50,stroke-width:2px classDef document fill:#cccccc,stroke:#555,stroke-width:2px class Event1,Event2 event class Operation1 function class Document1,Document2 document ``` ## Альтернативная визуализация с временной шкалой ```mermaid gantt title Временная диаграмма процесса с метаданными RDF* dateFormat YYYY-MM-DDTHH:mm:ssZ axisFormat %H:%M section Документы Документ1 создан :doc1, 2024-01-15T09:30:00Z, 30m Документ2 создан :doc2, after doc1, 30m section События Событие1 начало :crit, event1, 2024-01-15T10:00:00Z, 0m Событие2 завершение :event2, after op1, 0m section Функции Операция1 выполнение :op1, after event1, 30m ``` ## Табличное представление метаданных RDF* | Объект | Тип | Свойства | Значения | |--------|-----|----------|----------| | Событие1 | Event | confidence | 0.95 | | Операция1 | Function | duration | PT30M | | Документ1 | Document | format | application/pdf | | triggeredBy связь | Property | priority, reliability | high, 0.98 | | hasInput связь | Property | mandatory, validationStatus | true, validated | ## Ключевые особенности RDF-star представления: 1. **Вложенные утверждения** - возможность аннотировать сами триплы 2. **Временные метки** - отслеживание времени создания утверждений 3. **Метаданные качества** - confidence, reliability, probability 4. **Бизнес-атрибуты** - priority, quality, approvalStatus 5. **Процессные атрибуты** - order, duration, format RDF-star позволяет создавать более богатые и выразительные метаданные, сохраняя при этом совместимость с обычным RDF. # III Добавь Документ 3 и Событие 3. Они оба исходят из функции. ```mermaid graph TB Event1(("Событие1")) Event2(("Событие2")) Event3(("Событие3")) Operation1["Операция1"] Document1[/"Документ1"/] Document2[/"Документ2"/] Document3[/"Документ3"/] Event1 --> Operation1 Operation1 --> Event2 Operation1 --> Event3 Document1 --> Operation1 Operation1 --> Document2 Operation1 --> Document3 classDef event fill:#ffcccc,stroke:#d60000,stroke-width:2px classDef function fill:#e1f5e1,stroke:#4caf50,stroke-width:2px classDef document fill:#cccccc,stroke:#555,stroke-width:2px class Event1,Event2,Event3 event class Operation1 function class Document1,Document2,Document3 document ``` ## Компактное описание на RDF-star с новыми элементами ```turtle @prefix epc: . @prefix rdf: . @prefix rdfs: . # Базовые типы epc:Event rdf:type rdfs:Class . epc:Function rdf:type rdfs:Class . epc:Document rdf:type rdfs:Class . # Экземпляры epc:Event1 rdf:type epc:Event ; rdfs:label "Событие1" . epc:Event2 rdf:type epc:Event ; rdfs:label "Событие2" . epc:Event3 rdf:type epc:Event ; rdfs:label "Событие3" . epc:Operation1 rdf:type epc:Function ; rdfs:label "Операция1" . epc:Document1 rdf:type epc:Document ; rdfs:label "Документ1" . epc:Document2 rdf:type epc:Document ; rdfs:label "Документ2" . epc:Document3 rdf:type epc:Document ; rdfs:label "Документ3" . # Триплы с аннотациями <> epc:priority "high" . <> epc:probability 1.0 . <> epc:probability 0.8 . <> epc:mandatory true . <> epc:quality "high" . <> epc:quality "medium" . ``` ## Текстовая диаграмма структуры ``` Структура процесса: Workflow: [Событие1] → [Операция1] → [Событие2] ↘→ [Событие3] Docflow: [Документ1] → [Операция1] → [Документ2] ↘→ [Документ3] Аннотации RDF*: - triggeredBy: priority = high - resultsIn (Event2): probability = 1.0 - resultsIn (Event3): probability = 0.8 - hasInput: mandatory = true - hasOutput (Document2): quality = high - hasOutput (Document3): quality = medium ``` На диаграмме показано, что из функции Операция1 исходят два документа (Документ2 и Документ3) и два события (Событие2 и Событие3). Все документы расположены слева от функции, как требовалось в исходном условии. # IV Event3 & Doc3 Добавь логику и статусы документов. Документ 1 - это заявление составленное. Документ 2 - заявление согласованное (подписано). Документ 3 - заявление не согласованное (отказ). Событие 2 - согласование заявления. Событие 3 - отказ по заявлению. Покажи взаимосвязь Документ 2 и Событие 2, а также Документ 3 и Событие 3. ```mermaid graph TB %% Узлы без сложных подписей в самих узлах Event1(("Событие1")) Event2(("Событие2")) Event3(("Событие3")) Operation1[Операция1] Document1[/Документ1/] Document2[/Документ2/] Document3[/Документ3/] %% Процессные связи с подписями Event1 -->|инициирует| Operation1 Operation1 -->|утвердить| Event2 Operation1 -->|отклонить| Event3 %% Документные связи Document1 -->|входной| Operation1 Operation1 -.->|создает| Document2 Operation1 -.->|создает| Document3 %% Связи валидации Event2 -->|подтверждает| Document2 Event3 -->|отклоняет| Document3 %% Статусы как отдельные узлы Status1[status: НОВЫЙ] Status2[status: УТВЕРЖДЁН] Status3[status: ОТКЛОНЁН] Document1 --> Status1 Document2 --> Status2 Document3 --> Status3 classDef event fill:#ffcccc,stroke:#d60000,stroke-width:2px classDef function fill:#e1f5e1,stroke:#4caf50,stroke-width:2px classDef document fill:#cccccc,stroke:#555,stroke-width:2px classDef status fill:#f0f0f0,stroke:#999,stroke-dasharray: 3 3 class Event1,Event2,Event3 event class Operation1 function class Document1,Document2,Document3 document class Status1,Status2,Status3 status ``` ## Текстовое описание с пояснениями ``` БИЗНЕС-ПРОЦЕСС РАССМОТРЕНИЯ ЗАЯВЛЕНИЯ: ЭЛЕМЕНТЫ: - Событие1: Заявление подано - Операция1: Рассмотрение заявления - Событие2: Согласование - Событие3: Отказ - Документ1: Заявление составленное (статус: НОВЫЙ) - Документ2: Заявление согласованное (статус: УТВЕРЖДЁН) - Документ3: Заявление не согласованное (статус: ОТКЛОНЁН) СВЯЗИ: 1. Событие1 → Операция1 (инициирует процесс) 2. Документ1 → Операция1 (входной документ) 3. Операция1 → Событие2 (утвердить) 4. Операция1 → Событие3 (отклонить) 5. Операция1 -.-→ Документ2 (создает) 6. Операция1 -.-→ Документ3 (создает) 7. Событие2 ==> Документ2 (подтверждает) 8. Событие3 ==> Документ3 (отклоняет) ЛОГИКА: - Процесс начинается с События1 и Документа1 - Операция1 анализирует заявление - Возможны два исхода: * Утверждение: Событие2 подтверждает Документ2 * Отказ: Событие3 отклоняет Документ3 ``` ## RDF-star описание ```turtle @prefix epc: . @prefix rdf: . @prefix rdfs: . epc:Event1 rdf:type epc:Event ; rdfs:label "Заявление подано" . epc:Event2 rdf:type epc:Event ; rdfs:label "Согласование" . epc:Event3 rdf:type epc:Event ; rdfs:label "Отказ" . epc:Operation1 rdf:type epc:Function ; rdfs:label "Рассмотрение заявления" . epc:Document1 rdf:type epc:Document ; rdfs:label "Заявление составленное" . epc:Document2 rdf:type epc:Document ; rdfs:label "Заявление согласованное" . epc:Document3 rdf:type epc:Document ; rdfs:label "Заявление не согласованное" . epc:Event1 epc:triggers epc:Operation1 . epc:Document1 epc:inputs epc:Operation1 . epc:Operation1 epc:produces epc:Event2 . epc:Operation1 epc:produces epc:Event3 . epc:Operation1 epc:creates epc:Document2 . epc:Operation1 epc:creates epc:Document3 . <> epc:action "подтверждает" . <> epc:action "отклоняет" . ```