doc/METAMODEL/PROCESS/EPC/epc_rdf-star_v1.md
2025-10-16 17:52:36 +03:00

19 KiB
Raw Blame History

epc_rdf-star

I epc_rdf-star_v1.md

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

@prefix epc: <http://example.org/epc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

# Базовые типы
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:Operation1 epc:triggeredBy epc:Event1>> epc:priority "high" .
<<epc:Operation1 epc:resultsIn epc:Event2>> epc:probability 1.0 .
<<epc:Operation1 epc:hasInput epc:Document1>> epc:mandatory true .
<<epc:Operation1 epc:hasOutput epc:Document2>> 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*)

@prefix epc: <http://example.org/epc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix prov: <http://www.w3.org/ns/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*
<<epc:hasInput rdf:type rdf:Property>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:comment "Указывает входной документ для функции" .

<<epc:hasOutput rdf:type rdf:Property>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:comment "Указывает выходной документ функции" .

<<epc:triggeredBy rdf:type rdf:Property>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:comment "Указывает событие, инициирующее функцию" .

<<epc:resultsIn rdf:type rdf:Property>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:comment "Указывает событие, являющееся результатом функции" .

# Экземпляры с метаданными
<<epc:Event1 rdf:type epc:Event>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:label "Событие1" ;
    epc:confidence 0.95 .

<<epc:Event2 rdf:type epc:Event>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:label "Событие2" ;
    epc:confidence 0.95 .

<<epc:Operation1 rdf:type epc:Function>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime ;
    rdfs:label "Операция1" ;
    epc:duration "PT30M"^^xsd:duration .

<<epc:Document1 rdf:type epc:Document>>
    prov:generatedAtTime "2024-01-15T09:30:00Z"^^xsd:dateTime ;
    rdfs:label окумент1" ;
    epc:format "application/pdf" .

<<epc:Document2 rdf:type epc:Document>>
    prov:generatedAtTime "2024-01-15T10:30:00Z"^^xsd:dateTime ;
    rdfs:label окумент2" ;
    epc:format "application/pdf" .

# Триплы с аннотациями (RDF* вложенные утверждения)
<<<<epc:Operation1 epc:triggeredBy epc:Event1>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime>>
    epc:priority "high" ;
    epc:reliability 0.98 .

<<<<epc:Operation1 epc:resultsIn epc:Event2>>
    prov:generatedAtTime "2024-01-15T10:30:00Z"^^xsd:dateTime>>
    epc:probability 1.0 ;
    epc:reliability 0.99 .

<<<<epc:Operation1 epc:hasInput epc:Document1>>
    prov:generatedAtTime "2024-01-15T10:00:00Z"^^xsd:dateTime>>
    epc:mandatory true ;
    epc:validationStatus "validated" .

<<<<epc:Operation1 epc:hasOutput epc:Document2>>
    prov:generatedAtTime "2024-01-15T10:30:00Z"^^xsd:dateTime>>
    epc:quality "high" ;
    epc:approvalStatus "approved" .

# Процессы
<<epc:Workflow rdf:type epc:Process>>
    rdfs:label "Workflow" ;
    epc:processType "business" .

<<epc:Docflow rdf:type epc:Process>>
    rdfs:label "Docflow" ;
    epc:processType "document" .

# Принадлежность к процессам
<<epc:Workflow epc:contains epc:Event1>>
    epc:order 1 .

<<epc:Workflow epc:contains epc:Operation1>>
    epc:order 2 .

<<epc:Workflow epc:contains epc:Event2>>
    epc:order 3 .

<<epc:Docflow epc:contains epc:Document1>>
    epc:order 1 .

<<epc:Docflow epc:contains epc:Operation1>>
    epc:order 2 .

<<epc:Docflow epc:contains epc:Document2>>
    epc:order 3 .

Визуализация RDF-star графа

graph TB
    %% Основные узлы
    Event1[("Событие1<br/>confidence: 0.95")]
    Event2[("Событие2<br/>confidence: 0.95")]
    Operation1[["Операция1<br/>duration: PT30M"]]
    Document1[/"Документ1<br/>format: application/pdf"/]
    Document2[/"Документ2<br/>format: application/pdf"/]
    
    %% Связи с аннотациями
    Event1 -.->|triggeredBy<br/>priority: high<br/>reliability: 0.98| Operation1
    Operation1 -.->|resultsIn<br/>probability: 1.0<br/>reliability: 0.99| Event2
    Document1 -.->|hasInput<br/>mandatory: true<br/>validationStatus: validated| Operation1
    Operation1 -.->|hasOutput<br/>quality: high<br/>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

Альтернативная визуализация с временной шкалой

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. Они оба исходят из функции.

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 с новыми элементами

@prefix epc: <http://example.org/epc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

# Базовые типы
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:Operation1 epc:triggeredBy epc:Event1>> epc:priority "high" .
<<epc:Operation1 epc:resultsIn epc:Event2>> epc:probability 1.0 .
<<epc:Operation1 epc:resultsIn epc:Event3>> epc:probability 0.8 .
<<epc:Operation1 epc:hasInput epc:Document1>> epc:mandatory true .
<<epc:Operation1 epc:hasOutput epc:Document2>> epc:quality "high" .
<<epc:Operation1 epc:hasOutput epc:Document3>> 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.

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 описание

@prefix epc: <http://example.org/epc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

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:Event2 epc:validates epc:Document2>> epc:action "подтверждает" .
<<epc:Event3 epc:invalidates epc:Document3>> epc:action "отклоняет" .