foundation
type: Ontology
version IRI: http://ont.enapso.com/foundation/1.0.0
imports: http://ont.enapso.com/datatypes/1.0.0
imports: http://ont.enapso.com/terms/1.0.0
comment: (C) Copyright 2019-2020 Innotrade GmbH, Herzogenrath, NRW, Germany
comment: enapso foundation ontology

can have resource
type: ObjectProperty
domain: Resource
range: Resource
comment: "canHave" means that a resource optionally can include a sub-resource. If a resource uses "canHave" it must be equipped with an "add" property to enable an external instance (like an agent) to include a sub-resource. "canHave" refers to another resource, thus the range is "Resource".

emits event
type: ObjectProperty
comment: Individual fires an event with a message.

exclude
type: ObjectProperty
range: Capability
comment: "exclude" for a resource specifies a service that enables a resource to remove a sub-resource. All resources that use the "canHave" property can to be equipped with a "exclude" service to enable an agent to remove a sub-resource from the resource. "exclude" does not mean, that the sub-resource is "destroyed". The sub-resource remains "alive". "exclude" refers to an action (a service), thus the range is "Action".

has Argument
type: ObjectProperty
range: Argument

has Aspect
type: ObjectProperty
range: Aspect

has Attributes
type: ObjectProperty
range: Attribute

has Behvior
type: ObjectProperty
range: Behavior

has Capabilities
type: ObjectProperty
range: Capability
comment: "has Capability" means that an individual can perform an action. Opposed to "does" this action needs to be triggered explictly. The object in the statement is an individual of the type "Action". thus the range is "Action".

context
type: ObjectProperty
range: Context
comment: A context for a certain resource. For instance, a context mapper maps a certain term in a certain context to a certain meaning.

hasCss
type: ObjectProperty

has Data Type
type: ObjectProperty
comment: Data type of each attribute or argument

default
type: ObjectProperty

has event
type: ObjectProperty
range: Event
comment: Used by Event Emitters and Event Listeners.

has Event Emitter
type: ObjectProperty
domain: Behavior
range: Event Emitter

has Event Listener
type: ObjectProperty
domain: Behavior
range: Event Listener

means
type: ObjectProperty
comment: A term has a certain meaning in a certain context.

has Resource
type: ObjectProperty
type: IrreflexiveProperty
range: Resource
comment: "has" for a resource means to include (embed) another resource, a sub-resource. Opposed to "canHave" this is not optional, meaning that the resource in fact includes the sub-resource already, not that it just possible to include it. "has" always refers to a resource, this the range is "Resource". Since a resource canot include itself, the property is irreflexive.

has Resource Specification
type: ObjectProperty

result Type
type: ObjectProperty

term
type: ObjectProperty
range: Term
comment: A term used for a certain context in a context mapper.

value
type: ObjectProperty

has verb
type: ObjectProperty
range: Verb
comment: The verb(s) for a certain action.

include
type: ObjectProperty
range: Capability
comment: "include" for a resource specifies a service that enables a resource to add a sub-resource. All resources that use the "canHave" property need to be equipped with and "include" service to enable an agent to add a sub-resource to the resource. "include" refers to an action, thus the range is "Action".

listens to event
type: ObjectProperty
comment: Individual processes an event with a message.

mustHaveResource
type: ObjectProperty
domain: Resource
range: Resource
comment: "must have" means that an undividual requires a certain resource (another individual). The resource cannot exist or work without this resource. The agent or user needs to ensure that the resource is provided to the resource. A resource that uses the "mustHave" property must provide a "include" service. "mustHave" refers to another resource, thus the range is "Resource".

optional
type: ObjectProperty
comment: Individual can make use of a resource (optional, not required)

peek
type: ObjectProperty
sub property of: exclude

pop
type: ObjectProperty
sub property of: exclude

replace
type: ObjectProperty
sub property of: topObjectProperty

shouldHaveResource
type: ObjectProperty
range: Resource
comment: "should have" means that an individual "should" include a certain sub-resource (another individual). The resource can exist or work without this sub-resource but it is recommended to include it for certain reasons. The agent or user is encouraged to that the SUB-resource is provided to the resource. A resource that uses the "shouldHave" property must provide a "include" service. "shouldHave" refers to another resource, thus the range is "Resource".

states
type: ObjectProperty
comment: a certain property / characteristic

update
type: ObjectProperty

authorization
type: DatatypeProperty

can be destroyed
type: DatatypeProperty
domain: Resource
range: boolean
comment: Specifies if the resource can be destroyed. Only resources can have this property, thus the domain is "Resource".

can be excluded
type: DatatypeProperty
domain: Resource
range: boolean
comment: Specifies that a sub-resource can be excluded from its parent. Only resources can have this property, thus the domain is "Resource".

can be included
type: DatatypeProperty
domain: Resource
range: boolean
comment: Specifies that the resoure can be included into a parent resource. Only resources can have this property, thus the domain is "Resource".

can be replaced
type: DatatypeProperty
domain: Resource
range: boolean
comment: Specifies if the resource can be replaced. Only resources can have this property, thus the domain is "Resource".

canBeUpdated
type: DatatypeProperty
domain: Resource
range: boolean
comment: Specifies if the resource can be updated (changed). Only resources can have this property, thus the domain is "Resource".

code
type: DatatypeProperty

data
type: DatatypeProperty

dataId
type: DatatypeProperty

Event Type
type: DatatypeProperty

exceptions
type: DatatypeProperty

hash
type: DatatypeProperty

implementation
type: DatatypeProperty

life Cycle
type: DatatypeProperty

name
type: DatatypeProperty

Attribute unit
type: DatatypeProperty
comment: The unit of the value for a property, might be empty or non-existent e.g. for String properties.

Attribute value
type: DatatypeProperty
comment: The literal value for a property.

rights
type: DatatypeProperty

scheduling
type: DatatypeProperty

scope
type: DatatypeProperty
comment: scope of each attribute

style
type: DatatypeProperty

type
type: DatatypeProperty

user
type: DatatypeProperty

uuid
type: DatatypeProperty
comment: A universally unique identifier (UUID) is a 128-bit number used to create unique number

Argument
type: Class
subclass of: Restriction
  on property: has Data Type
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: default
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: name
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: order
  qualified cardinality: 1
  on data range: integer
subclass of: Restriction
  on property: uuid
  qualified cardinality: 1
  on data range: string
comment: Argument

Aspect
type: Class

Aspect "Architecture"
type: Class
subclass of: Aspect

Aspect "Behavior"
type: Class
subclass of: Aspect

Aspect "Business Logic"
type: Class
subclass of: Aspect

Aspect "Design"
type: Class
subclass of: Aspect

Aspect "Layout"
type: Class
subclass of: Aspect

Aspect "Life Cycle"
type: Class
subclass of: Aspect

Aspect "Navigation"
type: Class
subclass of: Aspect

Aspect "User Interaction"
type: Class
subclass of: Aspect

Aspect "Workflow"
type: Class
subclass of: Aspect

Attribute
type: Class
subclass of: Restriction
  on property: has Data Type
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: default
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: value
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: name
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: uuid
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: authorization
  max qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: scope
  max qualified cardinality: 1
  on data range: string
comment: An "attribute" is a semantically uniquely defined base property. Compound attributes are composed of these attributes and so have a defined meaning as well, e.g. position composed of x and y corrdinate.

Behavior
type: Class
subclass of: Restriction
  on property: has Event Emitter
  all values from: Event Emitter
subclass of: Restriction
  on property: has Event Listener
  all values from: Event Listener

Capability
type: Class
subclass of: Restriction
  on property: has Argument
  all values from: Argument
subclass of: Restriction
  on property: result Type
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: implementation
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: uuid
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: exceptions
  max qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: An capability is defined as a change of a status, an activity that leads to a different status of an object. An action needs to be triggered, it is not performed automatically.

Class
comment: A class is set of individuals with common characteristics.

Compound Attribute
type: Class
subclass of: Restriction
  on property: has Attributes
  some values from: Class
    union of: Attribute
    union of: Compound Attribute
comment: Compound Attributes are sets of (known and semantically uniquely defined) base-attributes. Compound Attributes can be nested.

Compound Capability
type: Class
subclass of: Restriction
  on property: has Capabilities
  some values from: Class
    union of: Capability
    union of: Compound Capability
comment: Compound Capabilities are sets of (known and semantically uniquely defined) base-capabilities. Compound Capabilities can be nested.

Compound Resource
type: Class
subclass of: Restriction
  on property: has Resource
  some values from: Class
    union of: Compound Resource
    union of: Resource
comment: Compound Resources are sets of (known and semantically uniquely defined) base-resources. Compound Resources can be nested.

Context
type: Class
comment: A context is a space in which a certain term has a certain meaning.

Context Mapper
type: Class
subclass of: Restriction
  on property: context
  some values from: Context
subclass of: Restriction
  on property: term
  some values from: Term
subclass of: Restriction
  on property: means
  qualified cardinality: 1
  on class: Resource
comment: A context mapper maps a certain term to a certain context.

Axiom
annotated source: Context Mapper
annotated property: subClassOf
annotated target: Restriction
  on property: context
  some values from: Context
comment: A context mapper maps a term to one or more contexts. The contexts are interpreted in logical "and" operations

Axiom
annotated source: Context Mapper
annotated property: subClassOf
annotated target: Restriction
  on property: term
  some values from: Term
comment: This is the actual term to be mapped to one or more contexts.

Css
type: Class
subclass of: Restriction
  on property: style
  qualified cardinality: 1
  on data range: string

Event
type: Class
subclass of: Restriction
  on property: data
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: life Cycle
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: name
  qualified cardinality: 1
  on data range: string

Event Emitter
type: Class
subclass of: Restriction
  on property: has event
  qualified cardinality: 1
  on class: Event
subclass of: Restriction
  on property: scheduling
  qualified cardinality: 1
  on data range: string

Event Listener
type: Class
subclass of: Restriction
  on property: has Argument
  all values from: Argument
subclass of: Restriction
  on property: has event
  qualified cardinality: 1
  on class: Event
subclass of: Restriction
  on property: result Type
  max qualified cardinality: 1
  on class: DataType
subclass of: Restriction
  on property: exceptions
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: implementation
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: name
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: uuid
  qualified cardinality: 1
  on data range: string

JavaScript Service
type: Class
subclass of: Service

Requirement
type: Class
comment: A requirement is a noun. Required is an object, that either does something, can do something, has something, emits something or reacts on something.

Resource
type: Class
subclass of: Restriction
  on property: can have resource
  all values from: Resource
subclass of: Restriction
  on property: has Attributes
  all values from: Attribute
subclass of: Restriction
  on property: has Capabilities
  all values from: Capability
subclass of: Restriction
  on property: hasCss
  all values from: Css
subclass of: Restriction
  on property: mustHaveResource
  all values from: Resource
subclass of: Restriction
  on property: shouldHaveResource
  all values from: Resource
subclass of: Restriction
  on property: has Behvior
  max qualified cardinality: 1
  on class: Behavior
subclass of: Restriction
  on property: code
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: dataId
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: hash
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: name
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: rights
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: type
  qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: user
  max qualified cardinality: 1
  on data range: string
comment: An object is an existing (instantiated) individual, that can execute certain actions, has certain characteristics and that behaves in a certain way. A object can send, receive and react on events. Events can contain messages.

Resource Container
type: Class
comment: A list of resources. A container is used when a resource can include more than one object of the same type.

Resource Specification
type: Class

Service
type: Class
comment: A service is an executable code that can perform a certain action. Examples are to include or exclude resources from a resource container.

argument13
type: NamedIndividual
type: Argument
name: ytrfeds
uuid: hgrfedwsa

argumentDemo
type: NamedIndividual
type: Argument
name: yasir
uuid: 12345yhvdw23456

argumentDemo2
type: NamedIndividual
type: Argument
name: OPTION
uuid: vrewszaq

attribute
type: NamedIndividual
type: Attribute
name: attri
uuid: uybtgvrcfedxsza

behavior
type: NamedIndividual
type: Behavior

capabilityDemo
type: NamedIndividual
type: Capability
name: hello
uuid: 1234ujhgfew123456iuyt

capabilityDemo2
type: NamedIndividual
type: Capability
name: test
uuid: j76yb5tf4d3s2a1

capability2
type: NamedIndividual
type: Capability
name: once afin
uuid: ukjljkl

datatypedemo
type: NamedIndividual

eventEmitter
type: NamedIndividual
type: Event Emitter
scheduling: onblur

eventListener
type: NamedIndividual
type: Event Listener
name: event Listener
uuid: iuyb6t5vrce3xwzq

Event
type: NamedIndividual
data: nothing
name: event

resourceDemo
type: NamedIndividual
type: Resource
code: function test(yasir){ console.log(`Hello World`) }
dataId: jhtr432wedfgh8765
hash: 23hgf6uyt56uyt
name: Demo
rights: rwx
type: function
user: hgt5432hyt54

resourceDemo2
type: NamedIndividual
type: Resource
code: function(option){ alert(option) }
dataId: 65trfedwq
name: arms
rights: rwx
type: function
user: un6ybtvrfeds