From 599ecd6bd99047adb75f4d0c3d4b92f18b9a2904 Mon Sep 17 00:00:00 2001 From: Dmitry <121898072+bpmbpm@users.noreply.github.com> Date: Thu, 14 May 2026 17:49:33 +0300 Subject: [PATCH] Add files via upload --- METAMODEL/modeler/first_step/ttl/vad1.ttl | 311 ++++++++++++++++++ .../modeler/first_step/ttl/vad1_deep.ttl | 66 ++++ .../modeler/first_step/ttl/vad2_easy.ttl | 24 ++ .../first_step/ttl/vad2_easy_example.ttl | 70 ++++ .../modeler/first_step/ttl/vad2_nogroup.ttl | 38 +++ .../first_step/ttl/vad2_nogroup_en.ttl | 66 ++++ .../ttl/Минимальная онтология без группы.docx | Bin 0 -> 18292 bytes 7 files changed, 575 insertions(+) create mode 100644 METAMODEL/modeler/first_step/ttl/vad1.ttl create mode 100644 METAMODEL/modeler/first_step/ttl/vad1_deep.ttl create mode 100644 METAMODEL/modeler/first_step/ttl/vad2_easy.ttl create mode 100644 METAMODEL/modeler/first_step/ttl/vad2_easy_example.ttl create mode 100644 METAMODEL/modeler/first_step/ttl/vad2_nogroup.ttl create mode 100644 METAMODEL/modeler/first_step/ttl/vad2_nogroup_en.ttl create mode 100644 METAMODEL/modeler/first_step/ttl/Минимальная онтология без группы.docx diff --git a/METAMODEL/modeler/first_step/ttl/vad1.ttl b/METAMODEL/modeler/first_step/ttl/vad1.ttl new file mode 100644 index 00000000..353bff0d --- /dev/null +++ b/METAMODEL/modeler/first_step/ttl/vad1.ttl @@ -0,0 +1,311 @@ +@prefix : . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dc: . + +# Ontology declaration + + rdf:type owl:Ontology ; + dc:title "ARIS VAD Metamodel Ontology" ; + dc:description "Ontology representing the core metamodel of ARIS Value-Added Chain Diagrams (VAD)." ; + dc:creator "Generated for Protege" ; + dc:date "2026-05-14"^^xsd:date ; + owl:versionIRI . + +# ------------------------------------------------------------ +# Classes (Concepts) +# ------------------------------------------------------------ + +# Top-level class for all VAD elements +:VADElement + rdf:type owl:Class ; + rdfs:label "VAD Element" ; + rdfs:comment "Abstract superclass for all elements in a Value-Added Chain Diagram." . + +# Value-Added Chain (the diagram itself) +:ValueAddedChain + rdf:type owl:Class ; + rdfs:subClassOf :VADElement ; + rdfs:label "Value-Added Chain" ; + rdfs:comment "A top-level model representing a sequence of value-adding steps." . + +# Element in a value-added chain (e.g., process, cluster) +:ValueAddedChainElement + rdf:type owl:Class ; + rdfs:subClassOf :VADElement ; + rdfs:label "Value-Added Chain Element" ; + rdfs:comment "A single node in a value-added chain, representing a business function, process, or cluster." . + +# Specific types of VAD elements +:Cluster + rdf:type owl:Class ; + rdfs:subClassOf :ValueAddedChainElement ; + rdfs:label "Cluster" ; + rdfs:comment "Group of logically related VAD elements." . + +:Process + rdf:type owl:Class ; + rdfs:subClassOf :ValueAddedChainElement ; + rdfs:label "Process" ; + rdfs:comment "Detailed business process, often further decomposed." . + +:Function + rdf:type owl:Class ; + rdfs:subClassOf :ValueAddedChainElement ; + rdfs:label "Function" ; + rdfs:comment "Lowest-level activity or task." . + +# External entities +:Interface + rdf:type owl:Class ; + rdfs:subClassOf :VADElement ; + rdfs:label "Interface" ; + rdfs:comment "Connection point between two VAD elements, or between a VAD element and external entities." . + +:OrganizationalUnit + rdf:type owl:Class ; + rdfs:subClassOf :VADElement ; + rdfs:label "Organizational Unit" ; + rdfs:comment "Responsible actor (department, role, person) that performs a VAD element." . + +:ApplicationComponent + rdf:type owl:Class ; + rdfs:subClassOf :VADElement ; + rdfs:label "Application Component" ; + rdfs:comment "IT system or software used to support a VAD element." . + +:DataObject + rdf:type owl:Class ; + rdfs:subClassOf :VADElement ; + rdfs:label "Data Object" ; + rdfs:comment "Information artifact produced or consumed by a VAD element." . + +# ------------------------------------------------------------ +# Object Properties (Relations) +# ------------------------------------------------------------ + +:precedes + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :ValueAddedChainElement ; + rdfs:label "precedes" ; + rdfs:comment "Indicates that one VAD element directly precedes another in the chain." ; + owl:inverseOf :succeeds ; + rdf:type owl:TransitiveProperty . # if A precedes B and B precedes C then A precedes C + +:succeeds + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :ValueAddedChainElement ; + rdfs:label "succeeds" ; + rdfs:comment "Indicates that one VAD element directly follows another in the chain." ; + owl:inverseOf :precedes . + +:hasInput + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :DataObject ; + rdfs:label "has input" ; + rdfs:comment "Links a VAD element to a data object that is consumed as input." . + +:hasOutput + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :DataObject ; + rdfs:label "has output" ; + rdfs:comment "Links a VAD element to a data object that is produced as output." . + +:performedBy + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :OrganizationalUnit ; + rdfs:label "performed by" ; + rdfs:comment "Assigns a VAD element to the organizational unit responsible for its execution." . + +:supportedBy + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :ApplicationComponent ; + rdfs:label "supported by" ; + rdfs:comment "Links a VAD element to an application component that supports it." . + +:hasInterface + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :Interface ; + rdfs:label "has interface" ; + rdfs:comment "Associates a VAD element with an interface for external communication." . + +:connects + rdf:type owl:ObjectProperty ; + rdfs:domain :Interface ; + rdfs:range :ValueAddedChainElement ; + rdfs:label "connects" ; + rdfs:comment "An interface connects two VAD elements (source and target)." . + +# ------------------------------------------------------------ +# Datatype Properties (Attributes) +# ------------------------------------------------------------ + +:hasName + rdf:type owl:DatatypeProperty ; + rdfs:domain :VADElement ; + rdfs:range xsd:string ; + rdfs:label "has name" ; + rdfs:comment "Unique human-readable name of the element." . + +:hasDescription + rdf:type owl:DatatypeProperty ; + rdfs:domain :VADElement ; + rdfs:range xsd:string ; + rdfs:label "has description" ; + rdfs:comment "Detailed textual description." . + +:hasCreationDate + rdf:type owl:DatatypeProperty ; + rdfs:domain :ValueAddedChain ; + rdfs:range xsd:dateTime ; + rdfs:label "creation date" ; + rdfs:comment "Timestamp when the VAD was created." . + +:hasVersion + rdf:type owl:DatatypeProperty ; + rdfs:domain :ValueAddedChain ; + rdfs:range xsd:string ; + rdfs:label "version" ; + rdfs:comment "Version identifier of the VAD model." . + +:hasResponsibleRole + rdf:type owl:DatatypeProperty ; + rdfs:domain :OrganizationalUnit ; + rdfs:range xsd:string ; + rdfs:label "responsible role" ; + rdfs:comment "Role name within the organizational unit." . + +# ------------------------------------------------------------ +# Axioms and Restrictions (optional constraints) +# ------------------------------------------------------------ + +# A VAD element must have at least one name (but open world, only annotation) +:ValueAddedChainElement + rdfs:subClassOf [ + rdf:type owl:Restriction ; + owl:onProperty :hasName ; + owl:cardinality 1 ; + owl:onClass xsd:string ; + owl:qualifiedCardinality 1 ; + ] . + +# A VAD must have at least one element (existential restriction) +:ValueAddedChain + rdfs:subClassOf [ + rdf:type owl:Restriction ; + owl:onProperty :hasElement ; # we need to define hasElement property? Or simply use composition + owl:someValuesFrom :ValueAddedChainElement ; + ] . + +# Since we didn't define hasElement, we add it now +:hasElement + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChain ; + rdfs:range :ValueAddedChainElement ; + rdfs:label "has element" ; + rdfs:comment "Relates a value-added chain to its contained elements." ; + owl:inverseOf :isPartOf . + +:isPartOf + rdf:type owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; + rdfs:range :ValueAddedChain ; + rdfs:label "is part of" ; + rdfs:comment "Links a VAD element to the chain it belongs to." ; + owl:inverseOf :hasElement . + +# ------------------------------------------------------------ +# Example Individuals (Instances) +# ------------------------------------------------------------ + +# A sample Value-Added Chain +:SampleChain + rdf:type :ValueAddedChain ; + :hasName "Order-to-Cash VAD" ; + :hasDescription "High-level value chain for processing customer orders from receipt to payment." ; + :hasCreationDate "2026-05-14T10:00:00Z"^^xsd:dateTime ; + :hasVersion "1.0" . + +# Example VAD elements +:OrderEntry + rdf:type :Process ; + :hasName "Order Entry" ; + :hasDescription "Capture and validate customer order." ; + :isPartOf :SampleChain ; + :performedBy :SalesDept ; + :hasOutput :OrderData ; + :precedes :InventoryCheck . + +:InventoryCheck + rdf:type :Process ; + :hasName "Inventory Check" ; + :hasDescription "Verify product availability." ; + :isPartOf :SampleChain ; + :performedBy :Warehouse ; + :hasInput :OrderData ; + :hasOutput :AvailabilityStatus ; + :precedes :Shipment . + +:Shipment + rdf:type :Process ; + :hasName "Shipment" ; + :hasDescription "Pick, pack, and ship goods to customer." ; + :isPartOf :SampleChain ; + :performedBy :Logistics ; + :hasInput :AvailabilityStatus ; + :hasOutput :ShippingNotice . + +# Organizational units +:SalesDept + rdf:type :OrganizationalUnit ; + :hasName "Sales Department" ; + :hasResponsibleRole "Sales Representative" . + +:Warehouse + rdf:type :OrganizationalUnit ; + :hasName "Warehouse" ; + :hasResponsibleRole "Inventory Manager" . + +:Logistics + rdf:type :OrganizationalUnit ; + :hasName "Logistics" ; + :hasResponsibleRole "Shipping Coordinator" . + +# Data objects +:OrderData + rdf:type :DataObject ; + :hasName "Order Data" ; + :hasDescription "Customer order details including items, quantities, and shipping address." . + +:AvailabilityStatus + rdf:type :DataObject ; + :hasName "Availability Status" ; + :hasDescription "Indicates whether ordered items are in stock." . + +:ShippingNotice + rdf:type :DataObject ; + :hasName "Shipping Notice" ; + :hasDescription "Notification sent to customer with tracking information." . + +# Interface example +:OrderInterface + rdf:type :Interface ; + :hasName "Order Interface" ; + :hasDescription "External interface for order submission from web shop." ; + :connects :OrderEntry . + +# Application component +:ERP_System + rdf:type :ApplicationComponent ; + :hasName "ERP System" ; + :hasDescription "Enterprise resource planning system handling order processing." ; + :supportedBy :OrderEntry , :InventoryCheck . diff --git a/METAMODEL/modeler/first_step/ttl/vad1_deep.ttl b/METAMODEL/modeler/first_step/ttl/vad1_deep.ttl new file mode 100644 index 00000000..9be73ba9 --- /dev/null +++ b/METAMODEL/modeler/first_step/ttl/vad1_deep.ttl @@ -0,0 +1,66 @@ +@prefix : . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dc: . + + + rdf:type owl:Ontology ; + dc:title "ARIS VAD Metamodel Ontology" ; + dc:description "Ontology representing the core metamodel of ARIS Value-Added Chain Diagrams (VAD)." ; + dc:creator "Generated for Protege" ; + dc:date "2026-05-14"^^xsd:date ; + owl:versionIRI . + +# Classes +:VADElement rdf:type owl:Class ; rdfs:label "VAD Element" . +:ValueAddedChain rdf:type owl:Class ; rdfs:subClassOf :VADElement ; rdfs:label "Value-Added Chain" . +:ValueAddedChainElement rdf:type owl:Class ; rdfs:subClassOf :VADElement ; rdfs:label "Value-Added Chain Element" . +:Cluster rdf:type owl:Class ; rdfs:subClassOf :ValueAddedChainElement ; rdfs:label "Cluster" . +:Process rdf:type owl:Class ; rdfs:subClassOf :ValueAddedChainElement ; rdfs:label "Process" . +:Function rdf:type owl:Class ; rdfs:subClassOf :ValueAddedChainElement ; rdfs:label "Function" . +:Interface rdf:type owl:Class ; rdfs:subClassOf :VADElement ; rdfs:label "Interface" . +:OrganizationalUnit rdf:type owl:Class ; rdfs:subClassOf :VADElement ; rdfs:label "Organizational Unit" . +:ApplicationComponent rdf:type owl:Class ; rdfs:subClassOf :VADElement ; rdfs:label "Application Component" . +:DataObject rdf:type owl:Class ; rdfs:subClassOf :VADElement ; rdfs:label "Data Object" . + +# Object Properties +:precedes rdf:type owl:TransitiveProperty , owl:ObjectProperty ; + rdfs:domain :ValueAddedChainElement ; rdfs:range :ValueAddedChainElement ; + rdfs:label "precedes" ; owl:inverseOf :succeeds . +:succeeds rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :ValueAddedChainElement ; + rdfs:label "succeeds" ; owl:inverseOf :precedes . +:hasInput rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :DataObject ; rdfs:label "has input" . +:hasOutput rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :DataObject ; rdfs:label "has output" . +:performedBy rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :OrganizationalUnit ; rdfs:label "performed by" . +:supportedBy rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :ApplicationComponent ; rdfs:label "supported by" . +:hasInterface rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :Interface ; rdfs:label "has interface" . +:connects rdf:type owl:ObjectProperty ; rdfs:domain :Interface ; rdfs:range :ValueAddedChainElement ; rdfs:label "connects" . +:hasElement rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChain ; rdfs:range :ValueAddedChainElement ; rdfs:label "has element" ; owl:inverseOf :isPartOf . +:isPartOf rdf:type owl:ObjectProperty ; rdfs:domain :ValueAddedChainElement ; rdfs:range :ValueAddedChain ; rdfs:label "is part of" . + +# Datatype Properties +:hasName rdf:type owl:DatatypeProperty ; rdfs:domain :VADElement ; rdfs:range xsd:string ; rdfs:label "has name" . +:hasDescription rdf:type owl:DatatypeProperty ; rdfs:domain :VADElement ; rdfs:range xsd:string ; rdfs:label "has description" . +:hasCreationDate rdf:type owl:DatatypeProperty ; rdfs:domain :ValueAddedChain ; rdfs:range xsd:dateTime ; rdfs:label "creation date" . +:hasVersion rdf:type owl:DatatypeProperty ; rdfs:domain :ValueAddedChain ; rdfs:range xsd:string ; rdfs:label "version" . +:hasResponsibleRole rdf:type owl:DatatypeProperty ; rdfs:domain :OrganizationalUnit ; rdfs:range xsd:string ; rdfs:label "responsible role" . + +# Restrictions (исправлены для datatype property) +:ValueAddedChainElement rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty :hasName ; owl:cardinality 1 ] . +:ValueAddedChain rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty :hasElement ; owl:someValuesFrom :ValueAddedChainElement ] . + +# Индивиды (те же, что были) +:SampleChain rdf:type :ValueAddedChain ; :hasName "Order-to-Cash VAD" ; :hasDescription "High-level value chain for processing customer orders from receipt to payment." ; :hasCreationDate "2026-05-14T10:00:00Z"^^xsd:dateTime ; :hasVersion "1.0" . +:OrderEntry rdf:type :Process ; :hasName "Order Entry" ; :hasDescription "Capture and validate customer order." ; :isPartOf :SampleChain ; :performedBy :SalesDept ; :hasOutput :OrderData ; :precedes :InventoryCheck . +:InventoryCheck rdf:type :Process ; :hasName "Inventory Check" ; :hasDescription "Verify product availability." ; :isPartOf :SampleChain ; :performedBy :Warehouse ; :hasInput :OrderData ; :hasOutput :AvailabilityStatus ; :precedes :Shipment . +:Shipment rdf:type :Process ; :hasName "Shipment" ; :hasDescription "Pick, pack, and ship goods to customer." ; :isPartOf :SampleChain ; :performedBy :Logistics ; :hasInput :AvailabilityStatus ; :hasOutput :ShippingNotice . +:SalesDept rdf:type :OrganizationalUnit ; :hasName "Sales Department" ; :hasResponsibleRole "Sales Representative" . +:Warehouse rdf:type :OrganizationalUnit ; :hasName "Warehouse" ; :hasResponsibleRole "Inventory Manager" . +:Logistics rdf:type :OrganizationalUnit ; :hasName "Logistics" ; :hasResponsibleRole "Shipping Coordinator" . +:OrderData rdf:type :DataObject ; :hasName "Order Data" ; :hasDescription "Customer order details including items, quantities, and shipping address." . +:AvailabilityStatus rdf:type :DataObject ; :hasName "Availability Status" ; :hasDescription "Indicates whether ordered items are in stock." . +:ShippingNotice rdf:type :DataObject ; :hasName "Shipping Notice" ; :hasDescription "Notification sent to customer with tracking information." . +:OrderInterface rdf:type :Interface ; :hasName "Order Interface" ; :hasDescription "External interface for order submission from web shop." ; :connects :OrderEntry . +:ERP_System rdf:type :ApplicationComponent ; :hasName "ERP System" ; :hasDescription "Enterprise resource planning system handling order processing." ; :supportedBy :OrderEntry , :InventoryCheck . \ No newline at end of file diff --git a/METAMODEL/modeler/first_step/ttl/vad2_easy.ttl b/METAMODEL/modeler/first_step/ttl/vad2_easy.ttl new file mode 100644 index 00000000..1ef3f836 --- /dev/null +++ b/METAMODEL/modeler/first_step/ttl/vad2_easy.ttl @@ -0,0 +1,24 @@ +@prefix : . +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . + +# +: rdf:type owl:Ontology ; + rdfs:comment " VAD domain/range" . + +# +:Process rdf:type owl:Class ; rdfs:label "Process" . +:Executor rdf:type owl:Class ; rdfs:label "Executor" . +:ProcessType rdf:type owl:Class ; rdfs:label "Process type" . + +# Datatype ( domain/range) +:id rdf:type owl:DatatypeProperty ; rdfs:label "id" . +:hasExecutorId rdf:type owl:DatatypeProperty ; rdfs:label "executor id" . +:comment rdf:type owl:DatatypeProperty ; rdfs:label "comment" . + +# Object ( domain/range) +:hasNext rdf:type owl:ObjectProperty ; rdfs:label "has next" . +:hasExecutor rdf:type owl:ObjectProperty ; rdfs:label "has executor" . +:hasProcessType rdf:type owl:ObjectProperty ; rdfs:label "has process type" . \ No newline at end of file diff --git a/METAMODEL/modeler/first_step/ttl/vad2_easy_example.ttl b/METAMODEL/modeler/first_step/ttl/vad2_easy_example.ttl new file mode 100644 index 00000000..7fae28d2 --- /dev/null +++ b/METAMODEL/modeler/first_step/ttl/vad2_easy_example.ttl @@ -0,0 +1,70 @@ +@prefix : . +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . + +####################################################################### +# () +####################################################################### + +# ---- ( ProcessType) ---- +:CuttingType rdf:type :ProcessType ; + rdfs:label "Cutting" . +:BendingType rdf:type :ProcessType ; + rdfs:label "Bending" . +:CoatingType rdf:type :ProcessType ; + rdfs:label "Coating" . + +# ---- ( Process) ---- +:CutWire rdf:type :Process ; + rdfs:label "Cut the wire" ; + :id "P001" ; + :comment "Cut a piece of wire 8 cm long" ; + :hasProcessType :CuttingType ; + :hasNext :BendWire ; + :hasExecutor :Executor1, :Executor2 . + +:BendWire rdf:type :Process ; + rdfs:label "Bend the wire into a paperclip shape" ; + :id "P002" ; + :comment "Form a classic paperclip" ; + :hasProcessType :BendingType ; + :hasNext :CoatWire ; + :hasExecutor :Executor3, :Executor4, :Executor5, :Executor6, :Executor7 . + +:CoatWire rdf:type :Process ; + rdfs:label "Apply coating" ; + :id "P003" ; + :comment "Apply blue polymer coating" ; + :hasProcessType :CoatingType ; + :hasExecutor :Executor8, :Executor9 . + +# ---- ( Executor) ---- +:Executor1 rdf:type :Executor ; + :hasExecutorId "E001" ; + rdfs:label "Ivan" . +:Executor2 rdf:type :Executor ; + :hasExecutorId "E002" ; + rdfs:label "Cutting machine" . +:Executor3 rdf:type :Executor ; + :hasExecutorId "E003" ; + rdfs:label "Peter" . +:Executor4 rdf:type :Executor ; + :hasExecutorId "E004" ; + rdfs:label "Bending robot" . +:Executor5 rdf:type :Executor ; + :hasExecutorId "E005" ; + rdfs:label "Controller" . +:Executor6 rdf:type :Executor ; + :hasExecutorId "E006" ; + rdfs:label "Electronic scheme" . +:Executor7 rdf:type :Executor ; + :hasExecutorId "E007" ; + rdfs:label "Lubricator" . +:Executor8 rdf:type :Executor ; + :hasExecutorId "E008" ; + rdfs:label "Maria" . +:Executor9 rdf:type :Executor ; + :hasExecutorId "E009" ; + rdfs:label "Coating chamber" . \ No newline at end of file diff --git a/METAMODEL/modeler/first_step/ttl/vad2_nogroup.ttl b/METAMODEL/modeler/first_step/ttl/vad2_nogroup.ttl new file mode 100644 index 00000000..8cf087a8 --- /dev/null +++ b/METAMODEL/modeler/first_step/ttl/vad2_nogroup.ttl @@ -0,0 +1,38 @@ +@prefix : . +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . + +: rdf:type owl:Ontology . + +# +:Process rdf:type owl:Class ; + rdfs:label "" . +:Executor rdf:type owl:Class ; + rdfs:label "" . +:ProcessType rdf:type owl:Class ; + rdfs:label " " . + +# +:id rdf:type owl:DatatypeProperty ; + rdfs:domain :Process ; + rdfs:range xsd:string . +:hasExecutorId rdf:type owl:DatatypeProperty ; + rdfs:domain :Executor ; + rdfs:range xsd:string . +:comment rdf:type owl:DatatypeProperty ; + rdfs:domain :Process ; + rdfs:range xsd:string ; + rdfs:subPropertyOf rdfs:comment . + +# +:hasNext rdf:type owl:ObjectProperty ; + rdfs:domain :Process ; + rdfs:range :Process . +:hasExecutor rdf:type owl:ObjectProperty ; + rdfs:domain :Process ; + rdfs:range :Executor . # , +:hasProcessType rdf:type owl:ObjectProperty ; + rdfs:domain :Process ; + rdfs:range :ProcessType . \ No newline at end of file diff --git a/METAMODEL/modeler/first_step/ttl/vad2_nogroup_en.ttl b/METAMODEL/modeler/first_step/ttl/vad2_nogroup_en.ttl new file mode 100644 index 00000000..551f32cb --- /dev/null +++ b/METAMODEL/modeler/first_step/ttl/vad2_nogroup_en.ttl @@ -0,0 +1,66 @@ +@prefix : . +@prefix rdf: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . + +: rdf:type owl:Ontology ; + rdfs:comment " VAD ( )" . + +####################################################################### +# ( ) +####################################################################### +:Process rdf:type owl:Class ; + rdfs:label "Process" ; + rdfs:comment "- , ." . + +:Executor rdf:type owl:Class ; + rdfs:label "Executor" ; + rdfs:comment " (, , )." . + +:ProcessType rdf:type owl:Class ; + rdfs:label "Process type" ; + rdfs:comment " (, , )." . + +####################################################################### +# (datatype properties) +####################################################################### +:id rdf:type owl:DatatypeProperty ; + rdfs:domain :Process ; + rdfs:range xsd:string ; + rdfs:label "id" ; + rdfs:comment " ." . + +:hasExecutorId rdf:type owl:DatatypeProperty ; + rdfs:domain :Executor ; + rdfs:range xsd:string ; + rdfs:label "executor id" ; + rdfs:comment " ." . + +:comment rdf:type owl:DatatypeProperty ; + rdfs:domain :Process ; + rdfs:range xsd:string ; + rdfs:subPropertyOf rdfs:comment ; + rdfs:label "comment" ; + rdfs:comment " ." . + +####################################################################### +# (object properties) +####################################################################### +:hasNext rdf:type owl:ObjectProperty ; + rdfs:domain :Process ; + rdfs:range :Process ; + rdfs:label "has next" ; + rdfs:comment " ." . + +:hasExecutor rdf:type owl:ObjectProperty ; + rdfs:domain :Process ; + rdfs:range :Executor ; + rdfs:label "has executor" ; + rdfs:comment " ( )." . + +:hasProcessType rdf:type owl:ObjectProperty ; + rdfs:domain :Process ; + rdfs:range :ProcessType ; + rdfs:label "has process type" ; + rdfs:comment " ." . \ No newline at end of file diff --git a/METAMODEL/modeler/first_step/ttl/Минимальная онтология без группы.docx b/METAMODEL/modeler/first_step/ttl/Минимальная онтология без группы.docx new file mode 100644 index 0000000000000000000000000000000000000000..d7aea6a7ceef74e23c1c457cba0a083eb8f7e596 GIT binary patch literal 18292 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