Upper Ontology
_________________________________________________________________________________________
Table of Contents
0. Uppermost or Primitive Types
0.0. Informal “Decision Trees” of Most Important Types
0.1. Uppermost Concept Type Distinctions (Situation/Entity, Type/ ...)
0.1.1. Situation Uppermost Types
0.1.2. Entity Uppermost Type
0.2. Second-order Types and Their Uppermost Instances
0.2.0. Common 2nd-order Types For Concept Types and Uppermost Instances
0.2.1. Function_type and Uppermost Instances
0.2.2. Relation_type and Uppermost Instances
0.2.2.1. Binary-relation_type and Uppermost Instances
0.2.2.2. Binary Relations Uppermost Distinctions (Functional/Non-functional, ...)
0.3. Types of Basic Relations/Functions (most of which are from an Information_object)
0.3.0. Context (Weakly_true, ...), If, While, ...
0.3.1. Logic Functions (Logic Operators)
0.3.2. Comparable Or Uncomparable, Esp. Via Entailment, Generalisation, PartOf, MemberOf
0.3.2.1. Comparable Or Uncomparable Via Semantic Equivalence (Or Identity)
0.3.2.2. Comparable Or Uncomparable Via Extended Entailment
0.3.2.3. SUP-comparable Or SUP-uncomparable Via Extended Entailment
0.3.2.4. Comparable Via Extended PartOf
0.3.3. Extended Entailments, Their Inverses and Exclusions
0.3.3.1. (Extended) Entailment (Spec/Gen)
0.3.3.2. (Extended) Entailed-By (Spec/Gen)
0.3.4. Semantic Generalizations/Specializations and Their Exclusions
0.3.4.0. Set_of_things_that_may_be_specialized and Spec-exclusive_things
0.3.4.1. Semantic Specializations (Instance/...)
0.3.4.2. Semantic Core Specializations (Natural/Non-natural)
0.3.4.3. Semantic Generalizations (Type/...)
0.3.4.4. Semantic Core Generalizations
0.3.4.5. Statement Generalizations (Truth_preserving/..., Adding_information/...)
0.3.5. Parts, Members, Their Inverses and Exclusions
0.3.5.1. Parts and Exclusions
0.3.5.2. Parts Of
0.3.6. Relations Between Two Statements
0.3.6.1. Relation Between Two Statements, Wrt. the Assertion Of the Source
0.3.6.2. Relation Between Two Statements, Wrt. Truth Preservation
0.3.6.3. Overriding or Correcting Relations Between Two Statements
0.4. Collections and Their Interpretations
0.4.1. Set of Potential Sources of a Transitive Relation (Spec-partition, Part-partition, ...)
1. Attributes/Characteristics/Dimension/Measures
1.1. Attributes Wrt. Object Types
1.2. Attributes Wrt. Roles
1.2.1. Positive/Negative Attribute
1.2.2. Quality Increasing the Usability of the Qualified Thing
1.2.3. Ratio-based Value of a Positive Attribute
1.2.4. N-valuated-Logic Values and Modal Values
1.3. Attributes Wrt What They Qualify
1.4. Attribute Aggregating Other Attributes
1.4.1. Positive Attribute Aggregating Other Attributes
2. Situations
2.1. Relations From Situations
2.1.1. Relations From Situations To Situations
2.1.2. Relations From Situations To Entities
2.1.2.1. Relation From Situations To Contextualizing Things
2.1.2.2. Process Participants
2.2. Processes wrt. Their Relations
3. Description Content/Instruments/Results/Containers (Additional Types
for Creating/Storing or Accessing Representations of Entities/Situations)
3.1. Description Semantic Content
3.2. Description Instruments/Results (Information Objects)
3.2.1. Description Results
3.2.2. Description Instruments
3.2.2.1. Programming Languages
3.2.3. Abstract Description Instruments Or Results (i.e. Abstract Information-objects)
Wrt. the Described Thing(s)
3.2.4. Abstract Information-objects Wrt. the Used Method or Language-element
(e.g. Terms, Statements, Commands)
3.2.5. Statements
3.2.5.1. Statements Wrt. the Described Thing(s)
3.2.5.2. Statements Wrt. Roles (e.g. ODPs, ODRs, Constraints)
3.2.5.3. Statements Wrt. Thruth, Logic Or Composition
3.2.5.4. Statements Wrt. Assertion
3.2.5.5. Statement Wrt. Contradictions or Supports
3.2.6. Composite Information Objects
3.3. Description Containers
0. Uppermost Types
and Types Not Specific to Entities or Situations
0.0. Informal “Decision Trees” of Most Important Types
"80% minimal upper ontology":
types – along with their definitions – that
i) belong to 80% of the most used primitive types in upper ontologies, or
ii) are primitives types useful for partially defining these most used primitive types.
Every type has 0..* (complete or not) sets of (exlusive or not) direct subtypes.
The direct subtypes that should be used for categorization are
i) informally in bold characters,
ii) in a set with [__ use].
Combinations of those direct subtypes are not necessarily provided (via indirect subtypes),
even for the first/main set (so no explicit decision tree but a graphical interface can still
generate a decition tree for search/categoriation).
A natural type may have i) 0..* sets of natural subtypes,
ii) 0..* sets of role subtypes, ii) 0..* sets of phase subtypes, etc.
A role/phase type can only have role/phase subtypes.
There should be many depths|encodings, e.g.,
i) 1(+) Type-set_wrt _(natural_type) (e.g. Type/Sit/Ent, ex Type_for_categorizing_wrt_object_natural_types),
ii) 1(+) Type-set_wrt _(object_natural-type) (ex Set-of-types_for_categorizing_wrt_object_types),
iii) 1+ Type-set_wrt _(role_of) (ex Type_for_categorizing_wrt_role),
iv) 1+ Type-set_wrt _(attribute) (ex Type_of_Type-set_wrt _(attribute)),
v) 1+ Type-set_wrt _(contextualizing_relation) (e.g. phases).
//no: 2 bits for binary partitioning: 0(non)/1(oui)/2(unknown)/3(role)
//complex and a default max depth of 32 might be too restrictive
//yes: 1 bit for binary partitioning (if unknown, parent is used; Thing=1stBit; Nothing=Impossibility=0)
// so use the order amongst partitions (or the types 1stDiscriminantPartition, 2nd... but complex)
// with warning/fix if the 1stPartition is not a natural one, given the type definitions
// and all but one (the first natural one) *may* not have fully defined types;
// in an {\.,=,=!}intern-complete KB, any two of 2^64 non-equiv types can be compared via at most 64 bits
// from the lowest bit to the highest bit; in 2 groups of 32 or 64 bits: see above i) and ii)
// warning: v_p{...} should count too!
==== Natural type/kind:
Thing
Type //2nd-order concept type //depth 1 (or more if relation accessed via role types)
Concept_type //e.g. Ontoclean
Relation_type //types for RTs: Symmetry Reflexivity Injectivity, TotalOrder, ...
Non-type_thing = Individual_thing
Relation-or-function_individual = relation_or_function //= Proposition ?
fct //depth 3
relation //! symmetry reflexivity injectivity //depth 3
!order
order //depth 4
totalOrder //depth 5, for now; symmetry, reflex, ...
partialOrder!TotalOrder //asymetry, ...
!strictPartialOrder
strictPartialOrder //depth 6
p{ ...OnTypes (...OnIndivs p{ ...onStatements ...onIndiv!Statements }) }
p{ output_or_successor_or_implication !Output_or_successor_or_implication } //depth 7
!gSpec p{ !Part !Part (e.g. SubProcess, PhysicalPart) } //what about GSpecAndPart?
gSpec //depth 7
lexicalGSpec
semanticGSpec p{ ...OnTypes (...OnIndivs p{ ...onStatements
...onIndiv!Statements }) }
Concept_individual
Situation //depth 2
State //wrt. rel. from main object
Process //wrt. input/output then agent then union/division
Entity //depth 2
Attribute_or_characteristic_or_dimension_or_measure //Value vs. !Value //depth 3
Entity_that_is_not_a_characteristic_or_dimension_or_measure //Endurant //depth 3
Entity_not_having_at_least_1_spatial_attribute //depth 4
Entity_not_having_at_least_1_spatial_attribute_and _not being_a_description_object
Description_content-or-instrument-or-result-or-container = Description_object //depth 5
Description_container //e.g. File, Software, Web_server, KB_server
Description_semantic-content //e.g. Proposition_content
Description_instrument-or-result = Information-object //e.g. Proposition //depth 6
p{ Fully-informal_information-object Not-fully-informal_information-object }
p{ Concrete_information-object //e.g. Java_concrete_grammar, Character
Abstract_information-object }
p{ Fully-declarative_information-object Non-fully-declarative_information-object }
p{ Expression //cannot have a truth value|status, e.g., Type, Word, Quantifier, ...
Statement_or_proposition //has or can have a truth value|status //depth 7
Statement = Information //rt instance //e.g. Type_description/definition)
Proposition = relation //can have -- but does not have -- truth value|status
}
Semantic_information-object = Representation_object //but still viewable as !semantic
Non-semantic_description_instrument-or-result
Lexical_information-object //depth 8
Structural_information-object //depth 8
!ADT //Abstract_function, ...
Abstract_data_type //depth 10
!Structured_ADT //Char vs. !Char
Structured_ADT //depth 11
!Array //struct/OO_class vs. !...
Array //depth 12
!NumericallyIndexedArray //AA vs. !AA
NumericallyIndexedArray //String vs. !String
Entity_having_at_least_1_spatial_attribute //Spatial_entity, e.g. Spatial_point //depth 4
Non-physical_spatial-entity //e.g. Mathematical_square //depth 5
Physical_spatial-entity
Non-concrete_physical_spatial_entity //e.g. Radio_wave, Magnetic field //depth 6
Concrete_spatial-entity
Concrete_spatial-entity_that_is_not_a_physical-object //e.g. Matter, Clay //depth 7
Physical_object
Non-biological_physical_object //Natural vs. Artefact //depth 8
Biological_object
Non-animal_biological_object //depth 9
Animal \. p{ Human_being vs. Not_human-being }
==== Role-based type/kind:
from_an_Entity //link to Entity made via the signature or the supertype links
from_a_Situation
!from_a_Situation_to_an_Entity
from_a_Situation_to_an_Entity
relation_from_a_Situation_to_a_contextualizing_thing // !Participant; no: use context
relation_from_a_Situation_to_a_non-contextualizing_thing //Participant
!agent_or_from-or-to-agent
!input_or_output
input_or_output
!input
input //e.g. parameter
!output //deleted vs. !deleted, then (intrinsically) modified vs.!
output //created vs. !created, then (intrinsically) modified vs.!
agent_or_from-or-to-agent //causal vs !causal, then conscious/!conscious, then Person/!person
!from_agent
from_agent //e.g. Student, Driver
!to_agent //(intrinsically) modified vs.! OR volitional/!volitional
to_agent //(intrinsically) modified vs.! //experiencer/beneficiary
==== Generated phase-based/location-based type/kind: //no need: simply give temporal context
for_an_Entity //with the link to Entity made via the signature ?
Living/mature/... (for once potentially living being / animal)
for_a_Situation
0.1. Uppermost Concept Type Distinctions (Situation/Entity, Type/ ...)
Thing .[] //".[]" is a way to signal the parser that "Thing" is a concept type
:= "anything is a Thing" //^'Thing' has for full_definition "anything is a Thing"
`∀x Thing(x)', //formal full_definition in PRN
= owl#Thing,
=! //"=!" is an abbreviation for pm#complement_class
(
owl#nothing = kif#bottom __[pm] sowa#absurdity __[pm] daml#empty __[pm],
:= "the type of logically impossible objects (not of imaginary objects such as unicorns);
this type cannot have any instance or subtype" ),
\_ //"\_" is for natural_strict-subtype, "\~" for non-natural_strict-subtype
//next line: "v_p", not "p", because a relation may be viewed as a Proposition or Statement
v_p{
Type /* //---------- this commented part is asserted and detailed in Section 0.2.1:
._( := ^"supertype of all 2nd-order types (those with types as instances)", = sub#Type,
\_ p{ (
Concept_type = Class Non-statement_type)
(
Function-or-non-unary-relation_type = Statement_type)
} ) //---------- end of commented part */
(Non-type_thing = Individual_thing Statement-or-not_Individual_thing,
\. v_p{ Function_or-N-ary-relation_individual // _( = relation function ) //see 0.3 and 2.1
(Concept_individual
\_ p{ Situation (Entity_individual = ^@(Entity exceptFor: Type)) })
} )
._(type _[.*->.]: Main_partition, type _[.&->.]: Ignored_partition)
//this partition (not its items: "_[.->.]") is first for exploitation but ignored for display
},
\_ p{
Situation //see next partition and next subsection
Entity //See Section 0.1.2
}
._(type _[.&->.]: Main_partition, type _[.*->.]: Ignored_partition)
//this partition (not its items: "_[.->.]") is first for display but ignored for exploitation
p{ (Thing_with_temporal_part = Occurrent, //existence_related_to_a_time_period,
// = "Thing defined wholly with reference to time or
// which consists of one or more things which are defined wholly with reference to time",
// ^"Thing that cannot have one of its parts removed without loosing its identity"
// ^"Thing that happens (has participants)"
\. Process //= Occurrent_that_is_a_perdurant Occurrent_that_is_a_situation
// ^"temporally extended entity of which the temporal parts are
// temporal entities (occurrents), down to the theoretical limit of instants"
// ^"Thing that happens (has participants) and makes a changes"
Entity_seen_as_4D ) //viewpoint
(Thing_without_temporal_part = Continuant, //existence may be related to time period
= ^"Thing, when it exists, exists in all its parts, even if it changes over time",
\. p{ Thing_related_to_a_time_period Thing_not_related_to_a_time_period }
p{ State //= Continuant_that_is_a_perdurant Continuant_that_is_a_situation
// ^"temporally extended entity of which the temporal parts are spatial entities
// (continuants), down to the theoretical limit of spatial points"
//
https://www.researchgate.net/post/Perdurant-occurrents-and-perdurant-continuants-definitions-and-implications
Endurant // \.viewpoint: Entity_seen_as_3D //Endurants "participate"
} )
}
p{ (Thing_whose_existence_is_related_to_a_time_period = Thing_with_temporal_extent Particular,
\. p{ Situation //= pm#Perdurant //"pm#"! //e.g. my life
//in DOLCE: State Process Achievement Accomplishment
Endurant // \.viewpoint: Entity_seen_as_3D //e.g. me at a certain time period
} ) //an endurant is a particular reification of a perdurant = commitment to an identity
// Leibniz's Law: identity is based on having the same properties
// but parts and other properties change over time
//Endurant: something which exists and retains its identity across points in time
(Thing_whose_existence_is_not_related_to_a_time_period = Thing_without_temporal_extent,
\. Type Mathematical_thing
Attribute_or_characteristic_or_dimension_or_measure ) //Section 1
}
p{ sub#Statement //= Logical-or-not_sentence ... see Section 3 //or Proposition
(sub#Individual = sub#Non-statement_individual sub#Individual_in_the_sense_of_OWL-DL)
}
v_c{ (sowa#Firstness_thing = ^"Thing considered as an atomic separate entity")
(sowa#Secondneness_thing = ^"Thing considered wrt. its parts")
(sowa#Thirdness_thing = ^"Thing considered wrt. some of its relationships to some other things")
},
\~= Thing_wrt_role |^ Type_wrt _(role_of), //e.g., wrt. agent/object/end_situation relations
(Thing_wrt_part_relations |^ Type_wrt _(part),
\~ v_p{ Atomic_thing Composite_thing /*alias Collection; details in
Section 0.4 */
} ).
0.1.1. Situation Uppermost Types
Situation = Perdurant,
:= ^"Thing 'occurring' ('happening') in a real/imaginary region of some time and space"
^"
Thing that has temporal part: sequential ones if it is not instantaneous, i.e. if it
is a
perduring occurrent, a thing for which only a part exists at any point in time",
/* \. Perdurant_continuant: temporally extended entity of which the temporal parts are spatial
entities (continuants), down to the theoretical limit of spatial points;
Perdurant_occurrent: temporally extended entity of which the temporal parts are temporal
entities (occurrents), down to the theoretical limit of instants.
//https://www.researchgate.net/post/Perdurant-occurrents-and-perdurant-continuants-definitions-and-implications
// David Hirst
*/
\. v_p{ (
Process .[1..* Agent ?a ~% 1..* Object ?o] ?p //a signature associated to a concept type
// ?ct (here Process the type of ?p) supports the automatic derivation of a
// relation type ?rt, the definition of which can also be directly associated
// to ?ct (see the 1st formal definition below). If a relation of type
// ^'derived_relation-type' (from ?ct to ?rt, as illustrated below) is also
// specified, ?rt is identified/specified. If a relation of type
// ^'derived_relation-type' is specified but no relation signature is associated
// to ?ct or ?rt, this signature is `.[Thing ~% ?ct]'.
// From each subtype of ?ct a subtype of ?rt can be automatically derived.
// This may be used as a way to fully derive the relation type hierarchy from
// the concept type one and hence help normalize and organize the KB.
//Furthermore, in FL, ?ct can directly be used instead of ?rt in a relation node
// (or a function head node if the signature is one of a function type)
:= ^"Situation making a change, hence whose end_situation is different from its
begin_situation",
end_situation:=> (a Situation != (the Situation begin_situation of: ?p)),
agent:=> 1..* Agent ?a, object:=> 1..* Object ?o, //definition of ?rt
\. (Cooperation_related_process //further defined in Section 2.0a
\. Information-sharing_related_process /* defined in Section 1.0.1 */
(Representing_knowledge
\. Representing_knowledge_for_particular_applications
Representing_knowledge_for_knowledge-sharing ) ) )
(
State := ^"Situation that is not seen as a Process")
}
p{ (Spatial_situation = Situation_with_spatial-entity_as_output
^(Situation output: a Spatial_entity) )
Non-spatial_situation
},
\~= (Situation_wrt_non-natural_type |^ Type_wrt _(non-naturel_type),
\~= (Situation_wrt_attribute |^ Type_wrt _(attribute)),
relation_from_this_type _[.->.]: relation_from_a_Situation //see
Section 2.2
)
//Section 2.2 gives the signature and direct subtypes of this relation type.
// Based on this signature, an FL parser would actually have generated this last
// ^'relation_from_this_type' relation if it had not been manually specified here.
// The `_[.->.]' part specifies that this relation is between types, not between
// their instances. This `_[.->.]' part is optional for relations whose signature
// specifies that they are between types, i.e. between instances of Type that are
// different from the type Thing.
0.1.2 Entity Uppermost Types
Entity
:= ^"Thing that is not a Situation, hence that may be
1. an
Endurant (thing that has no conceptually distinguishable temporal parts
and thus exists in its entirety at each instant of its existence,
i.e., it is temporally complete at any point in time)
participating in a situation (i.e.,
involved in one), or
2. an Attribute (
Characteristic|Dimension|Property|Quality|Trope|Criteria
or a Measure|Value|Quale for it) of an Endurant",
\. p{ (
Attribute_or_characteristic_or_dimension_or_measure //Section 1
=
Attribute .[1..* Thing ?o ~% ?a] ?a //e.g. Temporal_attribute (Section 1.1)
:= ^"
Characteristic|Dimension|Property of something (e.g. Speed)
or measure for it, via a constant (e.g. '27m/s')",
:=> //as further explained at the beginning of
Section 2.3:
"at least in FL, a function type or the definition of a
function can be used for defining its result, typically
a measure; thus, for example, the measure of speed can be
defined via a function dividing a distance by a duration",
derived_relation-type: (attribute = attr, \. chrc),
\. p{ (Characteristic = dolce#Quality,
:=> "sometimes also named Dimension, Property, Trope or Criteria",
derived_relation-type: (characteristic = chrc property) )
(Measure = dolce#Quale Attribute_value,
= ^(Attribute chrc_measure of: a Characteristic),
\~ v_p{
Value_of_a_positive_attribute Value_of_a_negative_attribute },
(Percentage_value \. p{ 0pc Between_0_an_100pc 100pc })
(Logical-or-modal_value
\. p{ (Logical_value = Truth_value Truth_status,
\. (Boolean_value \. p{ (False_value /^ 0pc) (True_value /^ 100pc) } ) )
Non-logical_modal_value
} ),
derived_relation-type:
(measure
\. p{ measure_with_unit
(value := ^"measure without associated unit",
\. (normalized_value := ^"value in the standard/default unit") )
}
chrc_measure ) )
}
p{ Numerical_attribute Non-numerical_attribute
} //the next two subtypes should be generated
\~ (Attribute_wrt_object_natural_type //with (for attributes) "object" = "attr of"
object_natural-type @:=> Thing /* subtypes generated for navig even if no spec.
@|^ Type_wrt _(object_natural-type) //'@' not needed when 1..* non-generated spec. */ )
(Attribute_wrt_role |^ Type_wrt _(role_of) //with "role" = "(attrOf)agent/object of Process"
) //@@@@ to do: define object_natural-type, role_of and core-object_natural-type
(Endurant = Entity_that_is_not_a_characteristic_or_dimension_or_measure,
\. p{ (
Spatial_entity = Entity_with_dimension-or-location_in_a_space
Entity_having_at_least_1_spatial_attribute,
\. p{ (Spatial_entity_without_physical_attribute \. Mathematical_square)
(Spatial_entity_with_physical_attributes
\. Animal Building Street Market_square Electron )
})
(Non-spatial_endurant
\.
Description_content-or-instrument-or-result-or-container ) //
Section 3
} )
},
\= (Entity_instance_of_non-natural_type
:=> "the subtypes of this type are 'non-natural types';
they are one way to categorize natural type instances having particular relations
in a particular temporal/spatial/modal/... context; e.g.,
from the definition (of the non-natural type Not-yet-adult_cat)
`Not-yet-adult_cat = ^(cat attribute: (an age less_than: 1 year))'
and the fact
` `Tom attribute: (an age less_than: 1 year)' time: between 1980 and 1999'
an inference engine could derive
` `Tom type: Not-yet-adult_cat' time: between 1980 and 1999' ",
\= Closed_set //or simply "c"
{ (Entity_with_a_relation_to_a_situation
\. (Situation_participant
derived_relation-type: relation_from_a_Situation_to_an_Entity
/*
Section 2.2 presents many relation subtypes */ )
(Entity_with_a_relation_to_a_process
\. (Entity_that_can-or-is-or-was-or-will-be_playing_a_role
\. (Entity_that_can_play_a_role
\. Non-exclusive_set
{ (
Causal_entity := ^"Entity that can cause something",
initiator of:=> 0..* Process,
\. p{ (Physical_causal-entity /^ Physical_entity)
(Non-physical_causal-entity \. Software)
}
p{ (Volitional_causal_entity =
Agent,
agent of:=> a Process,
part: 0..* Agent, //i.e. may be a group of agents
\. p{ (Agent_able_to_experience_satisfaction_or_dissatifaction
= Conscious_agent )
Agent_not_able_to_experience_satisfaction_or_dissatifaction
}
p{ Physical_agent
(Non-physical_agent \. (Software_agent /^Software))
}
v_p{ (Set_of_agents := Set{1..* Agent})
(Atomic_agent \.p{Sofware Living_entity})
} )
Non-volitional_causal-entity
} )
(
Instrument := ^"Entity usable as instrument",
instrument of:=> 0..* Process,
\. c{ (Physical_causal-entity supertype: Physical_entity)
Agent
} )
} )
(Entity_playing_a_role .[?source ~% ?r] ?r
derived_relation-type:
relation_to_an_Entity //click for details
) ) ) )
(Entity_with_a_relation_to_something-other-than-a-situation
\= (Entity_with_a_temporal_relation
\= (Entity_in_a_temporal_phase
\. (Animal_in_a_temporal_phase //this is just an example
\. p{ Not_yet_adult_animal Adult_animal } ) ) ) )
}.
0.2. Second-order Types and Their Uppermost Instances
0.2.0 Common 2nd-order Types For Concept Types and Uppermost Instances
Type := ^"supertype of all 2nd-order types (those with types as instances)", = sub#Type,
\. //An "individual constant" (i.e. a Concept_individual that is not a Proposition) is often identified
// as a zero-ary function constant.
//A Proposition symbol is often identified as a zero-ary relation symbol.
//A(n N-ary) Relation is often identified as a function mapping its arguments to a zero-ary relation.
//In KIF(Knowledge Interchange Format), a Concept_type is represented a Unary-relation_type,
// and a function with N arguments is represented as an n+1-ary functional relation that maps
// the arguments to the value returned by the function.
//These viewpoints are not incompatible. None of them is explicitly represented below.
p{
(
Concept_type = Class Non-statement_type, := ^"type of all concept types",
:=> "for people who view a Concept_type as a Zero-ary-relation_type
or a Unary_relation_type, Concept_type is subtype of Relation_type",
\= (rdfs#Class \= owl#class),
\. (Attribute_type = ^(Type /^ Attribute)
derived_relation-type: (attr_type .(Thing ?o, Attribute_type ?at)
:= [?o attr: (an Attribute type: ?at)] ) )
)
(
Function-or-non-unary-relation_type = Statement_type,
:= ^"type of all function or non-unary relation types", //see Section 2.1
\. p{ Function_type
(Non-unary-relation_type
\. (
Binary-relation_type = rdf#Property,
|.
binary_relation, //see below
\. p{ (Functional-binary-relation_type ?rt
:= [ [^src ?rt: ^dest1 ^dest2] => [^dest1 = ^dest2] ],
|.
functional_binary_relation ) //see below
(Non-functional-binary-relation_type
|.
non-functional_binary_relation ) //see below
} ) )
}
p{ (
Non-functional-relation_type |.
non-functional_relation) //see below
(Function-or-functional-relation_type
\. p{ Function_type
(Functional-relation_type |. functional_relation)
} )
} )
}
(Essential_type) //from Ontoclean, DOLCE, Onto-UML
p{ (Rigid_type)
(Anti-rigid_type ?t
\.:=> an Anti-rigid_type )
}
(Semi-rigid_type).
0.2.1. Function_type and Uppermost Instances
Function_type //2nd-order type
|. function. //1st-order type
function
\. (Aggregation_function = aggregation_function), //in WebKB, this '=' is useless (→ automatic)
\~ (function_wrt_result_type |^ Type_wrt _(result_type),
\. p{ (Type_generating_function = ^(function result: a Type),
\. p{ Concept_type_generating_function
(Function-or-non-unary-relation_type_generating_function
\. p{ Function_type_generating_function
(Non-unary-relation_type_generating_function
\. (f-rt__attributeRT__operRT .(Attribute_type ?attrRT,
function ?operRT)
-% (?subOperRT .(?x,?y) /^ ?operRT,
:= [?x ?attrRT: (a Measure ?vx :_ ?operRT :
(the Measure ?vy :_ ?attrRT of: ?y))
] ) ) //this (and the next) used below for defining
// the fct ^'>=' (= superior_or_equal)
(f-rt__attributeRT__operRT .({2..* Attribute_type ?attrRT
} ?attrRTs, function ?operRT)
-% (?subOperRT .(?x,?y) /^ ?operRT,
:=% //not ":=%" to let users add defs for some ?operRT
[?x /*for each*/?attrRT: (a Measure ?vx :_ ?operRT :
(the Measure ?vy :_ ?attrRT of: ?y))
] ) )
(f-rt__attributeRT-set__operRT .(1..* Attribute_type ?attrRT,
?operRT,
Aggregation_function_on_proposition-set_and_generating_a_proposition
?aggregFctOnPropSetAndGeneratingProp)
-% (?subOperRT .(?x,?y) /^ ?operRT,
:= ?aggregFctOnPropSetAndGeneratingProp
_(.{each [?x ?attrRT: (a Measure ?vx :_ ?operRT :
(the Measure ?vy :_ ?attrRT of: ?y))]
}) ) )
} )
}
(Type_wrt .(?relRt) -% Type ?t
\. p{ (Concept-type_wrt .(Binary-relation_type ?relRt) -% Concept_type ?subCT
:= [?subCT = ^(Thing ?relRT: a Thing)] )
Function-or-non-unary-relation_type (Concept-type ?ct)
-% Function-or-non-unary-relation_type ?subRT
} )
)
(Non-type_thing_generating_function = ^(function result: a Type),
\. e{ Statement-or-logical-value_generating_function //Section 0.3.1
(Information-object_generating_function -% Information-object
\. (Aggregation_function_on_proposition-set_and_generating_a_proposition
.(.{1..* Proposition?p} ?ps) -% Proposition ?resultProp,
/^ Aggregation_function,
\. (Majority-based_aggregFct_on-propositions_and_generating_a_prop
:= [?resultProp = .AND{at least 51% of .p}] ) ) )
} )
} ).
0.2.2. Relation_type and Uppermost Instances
Each relation type implicitly or explicitly has a signature: the array of the
types of the information objects connected by a relation of this type.
In these signatures, for each type, a variable may also be used for referring to
universally quantified instances of this type.
In FL, variable identifiers begin by "?".
Signatures of a relation type are inherited by its subtypes and may be overrided
by the signature of these subtypes.
The default (i.e. implicit) signature is "(+)".
In a signature, "*" refers to a positive (natural) number of arguments of type Thing
,
and "+" refers to a strictly positive number of arguments of type Thing
,
Non-unary-relation_type
\. (Type_of_fake_uppermost_relation_type
:= "Warning: any instance ?rt of this type is a supertype for all relation types ?rt that
are instances of a particular subtype of Relation_type ?s BUT these relation types ?rt may
ALSO be subtyped - or at least specialized - by relation types which are NOT instances
of ?s; thus, an ?rt is only useful for navigation purposes: it should not be used for
inferencing purposes" )
p{ sub#object_not_known_to_be_related-to_via .(.{1 Thing, 0..* Thing ?otherParameters} -% ?x)
(sub#object_known_to_be_related-to_via
\. comparable-or-uncomparable_via )
},
|. (relation_from_a_Thing .(Thing ?t, *) = relation,
:= ^"supertype of all relation types", //uppermost instance of Relation_type
\. e{ relation_from_a_Situation relation_from_an_Information-object
} ).
0.2.2.1. Binary-relation_type and Uppermost Instances
Binary-relation_type = rdf#Property,
|. binary_relation, //see below
\. (Inverse-functional-relation_type ?rt
:= [ [^dest ?rt of: ^src1 ^src2] => [^src1 := ^src2] ],
|. (identifier .(Thing %- Concrete_language-element) = id)
(inverse-functional_attribute // /^ attribute, //below
= i_attr,
:= ^"attribute individual generated to uniquely identify its
source, even though its value may be shared by many other
such attribute",
:=> "this relation is crucial to ease the definition
of particular types of attributes" ) )
(Transitive-binary-relation_type ?rt
:= [ [^?x ?rt: (^y ?rt: ^z)] => [^x ?rt: ^z] ],
|. transitive_binary_relation ) //below
(Type_of_relation-type_necessary_for_any_instance_of_its_domain ?rt
:= [ [?rt .(?tSrc, ?tDest) ] => [any ?ct ?rt: a ?Dest] ],
|. part consequence )
(Type_of_preference_relation |. preferred_thing //total/partial ordering
).
0.2.2.2. Binary Relations Uppermost Distinctions (Functional/Non-functional, ...)
binary_relation .(Thing ?t, Thing ?t) ?
= relation_to_a_Thing owl#topObjectProperty sub#relation ,
= ^"fake supertype of all binary relation types",
:= [by default any ^(type subtype of: binary_relation) type: Binary-relation_type],
type: Type_of_fake_uppermost_relation_type,
:=> "Warning: a binary relation type may be specialized
(although not 'subtyped' in its most common sense) by a relation type
with more arguments (that contextualize/precise it) or
with less arguments (some being hard-coded by
currying)",
\. p{ relation_to_a_Situation .(Thing, Situation)
relation_to_an_Entity .(Thing, Entity)
}
n{
non-functional_binary_relation //should not be used, the signature states this
functional_relation
}
n{
transitive_binary_relation non-transitive_binary_relation }.
transitive_binary_relation //= comparison_relation, ???
type: Type_of_fake_uppermost_relation_type,
= ^"fake supertype of all transitive relation types",
:= [by default any ^(type subtype of: transitive_binary_relation)
type: Transitive-binary-relation_type],
:=> "Warning: a transitive relation type may be specialized by a non-transitive relation type",
\. p{
transitive_binary_relation_definable_using_a_part_or_member_relation
transitive_binary_relation_not_definable_using_a_part_or_member_relation
}.
transitive_binary_relation_definable_using_a_part_or_member_relation
\. e{ gGeneralization_or_equivalent gSpecialization_or_equivalent
part //defined in Section 2.3
(
transitive_member-relation
:= ^"member relation that is transitive",
\. (
definition_member .(?t, ?dm)
=
definable-with, //sub#definition_element (ex "definition_part")
//:= [?t definition: (a NR_Statement member: a Thing ?dm)],
:= OR{ [?x gGen: ?y] [?y gGen: ?x]
[?x type: Type, definition: (a Definition member: (a Thing gSpecEq of: ?y))]
[?y type: Type, definition: (a Definition member: (a Thing gSpecEq of: ?x))]
[?x type: Individual (?t != Individual),
definition: (a Definition member: (a Thing type: ?t, gSpecEq of: ?y)) ]
[?y type: Individual (?t != Individual),
definition: (a Definition member: (a Thing type: ?t, gSpecEq of: ?x)) ]
},
\. gGen gSpec //given the above definition
(definition_type-member .(?t, Type)
\. (main_definition-type-member = genus,
\. cGeneralization,
converse: (genus_of \. derived_relation-type) //next definition below
) )
) )
}.
transitive_binary_relation_not_definable_using_a_part_or_member_relation
\. e{ (
output_or_successor_or_conclusion = ^'*->' ^'*→' ^'*/^',
\. p{ output successor_situation
formal-or-informal_conclusion_of_a_rule-or-inference_meant_to_be_valid
} )
preferred_thing .({1..* ?other_thing}, ?preferred_thing) //partial/total ordering
superior_or_equal //not set-based; has a subtype `maximum' overloaded by the next one
}
(
maximum .(.{1..* ?t ?x}, ?t ?y) := [each ?x =< (?y =< no ?t ?z)]
).
superior_or_equal .(?t ?x, ?t ?y) = ^'=<' less-than_or_equal lte,
derived_function_type: //overloading identifiers thanks to their different signatures
e{ (^'=<' .(1..* Attribute_type ?attrRT) = f-rt__attributeRT__operRT _(?attrRT,lte))
(^'=<' .(1..* Attribute_type ?attrRT,
Aggregation_function_on_proposition-set_and_generating_a_proposition ?ft)
= f-rt__attributeRT-set__operRT _(?attrRT,lte,?ft) )
},
\. e{ (superior-or-equal_for .(?x, ?y, Attribute_type ?attrRT) //called as in this def:
:= [?x =< _(?attrRT,lte): ?y] )
(superior-or-equal_for .(?x, ?y, 1..* Attribute_type ?attrRT,
Aggregation_function_on_proposition-set_and_generating_a_proposition ?ft)
:= [?x =< _(?attrRT,lte,?ft): ?y] )
},
converse:
(strict_inferior = ^'>' greater-than greater_than gt more-than more_than,
\. (better-than
\. (better-than_wrt_argumentations-or-preferences
\. { (better-than_wrt_argumentations
\. p{ (better-statement_than //def. in 0.3.6.1, used in 3.2.5.4
= better-supported_than )
(Uncontradicted-or-unsuccessfully-contradicted_better-than
:= [ [?x better-than: ?y ] |^
Uncontradicted-or-unsuccessfully-contradicted_statement
] )
} )
} )
(better-than_wrt_ethicalities-conform_argumentations-or-preferences ?s
:=% [[[?x attr: no ^(Attribute_type exclusion: each Ethicality_to_be_used)]
[?y attr: no ^(Attribute_type exclusion: each Ethicality_to_be_used)]
[?s attr: no ^(Attribute_type exclusion: each Ethicality_to_be_used)]
] <= ThisKB ] //closed-world each + global paramameter
derived_function_type:
(f-rt_better-than_wrt_ethicalities-conform_argumentations-or-preferences
.(1..* ^(Type /^ Ethicality_to_be_used) ?et) -% ?rt .(?x,?y)
:=[ [?x attr: no ^(Attribute_type cSpec_exclusion: each ?et)]
[?y attr: no ^(Attribute_type cSpec_exclusion: each ?et)]
[?s attr: no ^(Attribute_type cSpec_exclusion: each ?et)] ] )
) )
(
minNE = minimum_not-equal) ),
\. p{ equal
(strict_superior = ^'<' less-than lt,
converse: (inferior_or_equal = ^'>=' more-than_or_equal gte)
derived_function_type:
e{ (^'<' .(1..* Attribute_type ?attrRT)
= f-rt__attributeRT__operRT _(?attrRT,lt),
\. better-than_wrt .(1..* Positive_attribute ?criteria) )
(^'<' .(1..* Attribute_type ?attrRT,
Aggregation_function_on_proposition-set_and_generating_a_proposition ?ft)
= f-rt__attributeRT-set__operRT _(?attrRT,lt,?ft) )
} )
}
p{ (
maximum .(?t ?x, ?t ?y) := [?x =< (?y =< no ?t ?z)], //overloaded
\. p{ (
maxNE /^ strict_superior)
maxE } // (see above)
best .(.{1..* (Positive_attribute ?t) ?x}, ?t ?y) )
(not_maximum \. (minimum \. p{
minNE min }))
}
)
}.
non-transitive_binary_relation
\. n{ (
exclusion .(?x, ?y)
\. e{ (
core-specialization_exclusion .(?x, ?y) = cSpec_exclusion cSpec_excl,
:= [ [^ix type: (^sx cSpec of: ?x), != (^iy type: (^sy cSpec of: ?y))]
=> [ [?ix != ?iy] [?sx != ?sy] ] ] )
(
part_exclusion .(?x, ?y) = part_excl,
:= [ [^ix cSpec of: (^sx part of: ?x),
!= (^iy cSpec of: (^sy part of: ?y))]
=> [ [?ix != ?iy] [?sx != ?sy] ] ] )
} )
(
attribute .(Thing, Attribute) = attr, \. inverse-functional_attribute)
(
instrument .(Thing, Thing) = instr)
(
derived_relation-type .(Concept_type .?ct, Relation_type ?rt)
:=> [ [^ct1 ?ct: ^ct2] => [^ct1 ?rt: ^ct2] ],
:= "using ?ct in a relation node in the place of a relation type
(if this is allowed by the used KR) is equivalent to using ?rt" )
}.
0.2.2.2.1. Functional Binary Relations
functional_binary_relation .(Thing -% Thing) //or: .(Thing, 0..1 Thing)
url: "https://encyclopediaofmath.org/wiki/Functional_relation",
type: Functional_relation_type Type_of_fake_uppermost_relation_type,
\. ne{ (converse .(Binary-relation_type ?rt1 -% Binary-relation_type ?rt2)
:= [ [^src ?rt1: ^dest] => [^dest ?rt2: ^src] ],
\. (inverse := [?rt1 converse: rt2, type: Bijective_relation_type])
)
(negation /^ exclusion,
\. e{ negated_statement-or-logical-value //defined in Section 0.3.1
(negated_relation-type .(Type ?rt1, Type ?rt2)
:= [ [^x ?rt1: ^y] <=> ![^x ?rt2: ^y] ] )
} )
(monotonic_functional_binary_relation .(^Numerical_attribute -% ^Numerical_attribute)
//relation between numerical attribute types, not instances of them
\. (monotonic_numeric_functional_relation
\. p{ (monotonously-increasing_numeric_functional_relation
\. (positive_gradual-rule_destination = ^'++/^' ^'++:',
converse: (positive_gradual-rule_destination_of
= ^'^\++' ^':++' ),
:= "The more the source increases, the more the destination increases",
example: "the more food a man eats, the more this man puts on weight"
[any Man ?m [^(?mass mass of: (the food object of:
1..* ^(eating agent: ?m) ) )
++/^ ^(?w weight of: ?m) ] ] ) )
(monotonously-non-increasing_numeric_functional_relation
\. (monotonously-decreasing_numeric_functional_relation
\. (negative_gradual-rule_destination
= ^'+-/^' ^'+-:',
converse: (negative_gradual-rule_destination_of
= ^'^\-+' ^':-+' ),
:= "The more the source increases,
the more the destination decreases" ) ) )
}) )
}.
As seen in Section 0.2, although somewhat implicitly,
each ^'Term' in a KR is an Abstract_language-element but
i) can refer to anything (typically via Description_semantic-content),
ii) is written via – and may also be –
a Concrete_language-element.
KRs often do not use relations to make explicit and relate these different notions.
Indeed, using such relations makes KRs very cumbersome to read and write.
Therefore, KR parsers/interpreters/checkers
– or at least FL ones – take into account the
conflating of these notions when checking that KRs respect the signatures
the types of the relations they include (however, if there is an ambiguity,
it should be signaled). E.g., writing
[ [a Cat place: a Mat] type: Description_semantic-content Description_instrument]
is not a contradiction even though these last two types are exclusive:
indeed, two different things are typed here. This sentence is only useless: it
brings no additional information to interpreters that know about the
meaning of Description_semantic-content and Description_instrument (and
interpreters that do not know may conclude this is an error).
Similarly, a function is an information object but, at least with FL, can be
used as a definition for i) a process type, ii) any type equal to
the function result type, or iii) a type which can be defined by the
information object result of the function. Again, any ambiguity or contradiction
should be signaled by the parser.
relation_to_an_Information-object .(+, Information_object)
\. (information_object
\. representing_information-object
method_descr .(Process, Method_description) )
relation_between_2_Information-objects.
relation_from_an_Information-object .(Information_object .?, *)
\. (information-object_container .(Information_object .?, Information_container)
/^ description_container )
relation_between_2_Information-objects.
relation_between_2_Information-objects .(Information_object .?, Information_object)
\. p{ (relation_from_an_Information-object_to_a_Statement .(Information_object .?, Statement)
\. ne{ (relation_from_a_Term_to_a_Statement .(Term .?, Statement)
\. (definition .(Information_object .?, Statement)
:=> "a full definition of a statement is equivalent to this statement",
\. c{ sub#"<=" sub#"=>" }
(full_definition = ^':=')
(necessary_condition = ^':=>' ^':=%')
(sufficient_condition = ^':<=' ^':%=')
annotation
) )
relation_between_two_statements //Section 0.3.6
} )
(relation_from_an_Information-object_to_one_that-is-not-a-Statement
\. (relation_from_a_Statement_to_an_information-object_that-is-not-a-Statement
\. (statement_contextualizing_object-that-is_not-a-statement
\. pm#believer .(pm#description,pm#causal_entity)
pm#modality .(pm#description,pm#modality_measure) )
) )
}
(contextualizing_object
\. p{ (contextualizing_object-that-is_not-a-statement
\. statement_contextualizing_object-that-is_not-a-statement ) //above
(contextualizing_statement \. statement-contextualizing_statement) //below in Section 0.3.6
} )
logic_operator
comparable-or-uncomparable_via_gSpecialization_or_part .
0.3.0. Context (Weakly_true, ...), If, While, ...
/*
kif98#weakly_true = kif9_#wtr
kif93#true
IKL#isTrue =?=
IKL#ist
+ translation into fct with added param or other ad-hoc forms
*/
if .(Situation ?condition, Situation ?thenStmt, Situation ?elseStmt) -% Situation o
:= [ [ ?condition => [?o = ?thenStmt] ] [! ?condition => [?o = ?elseStmt] ] ].
while .(Situation ?condition, Process ?loopProcess, Situation ?i) -% Situation ?o
:= [ [ ?condition => [?o = while _(?condition,?loopProcess,(the Situation output of: ?loopProcess))] ]
[!?condition => [?o = ?i] ] ].
0.3.1. Logic Functions (Logic Operators)
//the '-%' syntax used below come from the ':->" syntax of the
KIF standard of 1998
//to do (redo): G dpANS "NCITS.T2/98-004"
logic_operator = truth_function //declared in the previous subsection
.(Distr{1..* Statement_or_logical-value ?i}
-> Statement_or_logical-value ?o) //defined in
Section 3.2.4
/^ Statement-or-logical-value_generating_function, //redundant <- signature; introduced in Section 0.2.1
\. p{ (truth-status-restricting_logic_operator
\. e{
disjunction negation truth-preserving_conclusion })
(not-truth-status-restricting_logic_operator \. c{
conjunction })
}
e{ (unary_logic_operator \. negation/*below*/)
(binary-based_logic_operator
|^ Type_of_more-than-unary-relation_repeating_the_same_binary_relation_to_each_destination)
}
p{ logic_operator_that_has_only_2_possible_values_for_its_output
(logic_operator_that_does_not_necessarily_have_only_2_possible_values_for_its_output
:=> "using 'unknown' as the third possible value besides True and False is
using a logic that is not
bivalent (alias two-valued) and yet, semantically,
this does not seem to be rejecting the
principle of bivalence"
"the (
three-valued)
Logic of Paradox (LP) validates the law of excluded middle
but not the
law of non-contradiction (¬(P ∧ ¬P)) and (
hence?) its
intended semantics is not bivalent" )
\. (logic_operator_that_can_have_3_possible_values_for_its_output
\. (logic-operator_of_Kleene-or-Lukasiewicz
\. c{ (logic-operator_of_Kleene \. logic-operator_of_Kleene-and-Lukasiewicz)
(logic-operator_of_Lukasiewicz
\. (logic-operator_of_Kleene_and_Lukasiewicz
\. e{ and_of_Kleene-and-Lukasiewicz or_of_Kleene-and-Lukasiewicz
(not_of_Kleene-and-Lukasiewicz
\. (open-world_not = ow_not, /^ open-world_operator) )
}
(operator_of_Kleene-Lukasiewicz_returning_FALSE_TRUE_or_ERROR
\. SQL_logical_operator Javascript_operator )
(operator_of_Kleene-Lukasiewicz_returning_FALSE_TRUE_or_UNKNOWN
/^ open-world_operator )
) )
}
open-world_operator ) ) )
}.
conjunction .(Distr{2..* Statement_or_logical-value ?i} -% Statement_or_logical-value ?o)
:= "supertype of 'and' in any logic (multi-valued or not) except may be of quantum logic",
:=> [ [some ?i |^ False] => [?o |^ False] ],
:=> [ [every ?i |^ True ] => [?o |^ True ] ], //redundant only in binary_logic
\. (and = classic_and, //the one in this document
\. (and_of_Kleene-and-Lukasiewicz
:=> [ AND_{ [some ?i |^ Neither_true_nor_false], [no ?i |^ False] }
=> [?o |^ Neither_true_nor_false]
] ) )
multiplicative_conjunction_of_
linear-logic
additive_conjunction_of_
linear-logic.
disjunction .(Distr{2..* Statement_or_logical-value ?i} -% Statement_or_logical-value ?o)
:=> [ [some ?i |^ True ] => [?o |^ True ] ],
:=> [ [every ?i |^ False] => [?o |^ False] ], //redundant only in binary_logic
\. (or = classic_or, //the one in this document
\. (or_of_Kleene-and-Lukasiewicz
:=> [ AND_{ [some ?i |^ Neither_true_nor_false], [no ?i |^ True] }
=> [?o |^ Neither_true_nor_false]
] ) )
multiplicative_disjunction_of_
linear-logic
additive_disjunction_of_
linear-logic.
/* in FL: [pm#English#not] <=> [user: pm; English#not] <=> [ [__ notation: FL] &.&(pm#English#not) ]
<=> [ &.&[__ notation: FL Notation_in_which_a_colon_plays_the_role_of_diese_in_FL
] pm:English:not ] //in FL, the role of '#" is only by default
Notation_in_which_a_colon_can_play_the_role_of_diese_in_FL
\. (Notation_in_which_a_semicolon_plays_the_role_of_diese_in_FL
\. FL_where_the_roles_of_colon_and_diese_are_inversed XML Turtle ).
Notion of KRL_limited_to_data_representation //RDF-based as opposed to OWL-DL based
*/
Negated_statement .[-% ?s] ?s = owl#NegativePropertyAssertion,
derived_relation-type: r_negation .(Statement_or_logical-value ?i) -% Statement_or_logical-value ?o,
derived_function-type: f_negation .
negation .(Statement_or_logical-value ?i, Statement_or_logical-value ?o)
=
r_negation negated_statement-or-logical-value,
\. f_negation .(Statement_or_logical-value ?i) -% Statement_or_logical-value ?o
:=> [ [?i |^ False] => [?o |^ True] ],
:=> [ [?i |^ True] => [?o |^ False] ], //redundant only in binary_logic
\. e{ (
bivalent_not = ^'¬',
/^ logic_operator_that_can_have_2_possible_values_for_its_output,
\. (
closed-world_not = ^'¬°') ) //redundant: closed-world_bivalent-not
(three-valued_not
\. (
not_of_Kleene-and-Lukasiewicz = ^'!' open-world_not, /^ open-world_operator,
:=> [ [?i |^ Neither_true_nor_false] => [?o |^ Neither_true_nor_false] ] ) )
}.
truth-preserving_conclusion//also in Section 0.3.6
.(Distr{2..* Statement_or_logical-value ?premise} -% Statement_or_logical-value ?concl)
\. (logic_implication
:=> [ [some ?premise |^ False] => [?o |^ True] ],
:=> [ AND_{[no ?premise |^ False], [every ?concl |^ True]} => [?o |^ True] ],
:=> [ AND_{ [every ?premise |^ True], [every ?concl |^ False] } => [?o |^ False] ],
//every ?concl False since if 1..* is unknown then their AND is unknown and ?o is unknown
\. (ternary-logic_implication
\. (implication_of_Kleene-or-Lukasiewicz
:=> "see http://en.wikipedia.org/wiki/Kleene_logic#Kleene_logic",
:=> [ AND_{ [some ?premise |^ Neither_true_nor_false],
[no ?premise |^ False], //to be safe even (this case is covered above)
[some ?concl |^ !True] //OR_{False, Neither_true_nor_false}
//if all True, already handled above
} => [?o |^ Neither_true_nor_false] ], //avoid OR_{...} after =>
:=> [ AND_{ [every ?premise |^ True],
[some ?concl |^ Neither_true_nor_false]
} => [?o |^ Neither_true_nor_false] ],
\. (implication_of_Kleene-only
:=> [ AND_{ [some ?premise |^ Neither_true_nor_false],
[no ?concl |^ False],
[some ?concl |^ Neither_true_nor_false] }
=> [?o |^ Neither_true_nor_false]
] )
(implication_of_Lukasiewicz-only
:=> [ AND_{ [some ?premise |^ Neither_true_nor_false],
[no ?concl |^ False],
[some ?concl |^ Neither_true_nor_false] }
=> [?o |^ True]
] )
) )
(
equivalent_statement = statement_necessary-and-sufficient_condition,
/^ statement_sufficient_condition )
(linear_implication = implication_of_
linear-logic ^'
⊸') ).
0.3.2. Comparable Or Uncomparable, Esp. Via
Entailment, Generalisation, PartOf, MemberOf
As made explicit va the partion "{ sub#object_not_known_to_be_related-to_via
sub#object_known_to_be_related-to_via }" in Section 0.2.2,
"uncomparable" means "explicitly (i.e. known to be) not comparable",
i.e. the KB includes relations stating that the related objects cannot be compared.
When not prefixed by "explicitly" or "known to be"; the expression "not comparable" means
that the KB does not include relations stating that the related objects can be compared or not.
sub#comparable-or-uncomparable_via .(.{1 Thing, 0..* Thing ?otherParameters} -% ?x)
= object_known_to_be_comparable-or-uncomparable_via,
\. p{ uncomparable_via
(comparable_via //generic; ingerited signature
\. (comparable_via_semantic-or-lexical_generalization-or-equivalence
= comparable_via_semantic-or-lexical_specialization-or-equivalence,
\. p{ (semantic-or-lexical_equivalent
\. p{ semantic_equivalent lexical_equivalent })
(semantic-or-lexical_strict_specialization
\. p{ semantic_strict_specialization //below
(lexical_strict_specialization converse: semantic_strict_generalization)
})
(semantic-or-lexical_strict_generalization
\. p{ semantic_strict_generalization //below
(lexical_strict_generalization .(String .?, Regular_expression)
= matching_regular_expression,
:= ^"generalization where the destination is a
regular expression matching the source" )
})
}
c{ (semantic-or-lexical_specialization_or_equivalent //specialization
\. p{ semantic-or-lexical_equivalent
semantic-or-lexical_strict_specialization }
p{ semantic_specialization_or_equivalent //Section 0.3.4.1
lexical_specialization-or-equivalent })
(semantic-or-lexical_generalization_or_equivalent //generalization
\. p{ semantic-or-lexical_equivalent
(semantic-or-lexical_strict_generalization
\. (semantic-or-lexical_core_generalization
:= ^"type of relation for which the destination contains
less information than the source",
converse: semantic-or-lexical_core-specialization ) )
}
p{ semantic_generalization_or_equivalent //Section 0.3.4.2
lexical_generalization_or_equivalent })
}
(comparable_via_semantic_generalization-or-equivalence
= comparable_via_semantic_specialization-or-equivalence,
\. c{ semantic_specialization_or_equivalent //Section 0.3.4.1
semantic_generalization_or_equivalent //Section 0.3.4.2
}) ) )
}
(comparable-or-uncomparable_via_semantic-generalization-or-equivalence-or-part-or-member
\. (comparable-or-uncomparable_via_semantic-generalization-or-equivalence
\. comparable-or-uncomparable_via_semantic-equivalence //below
(comparable-or-uncomparable_via_extended-entailment
= sub#object_known_to_be_comparable_or_uncomparable_via_extended-entailment
\. sub#object_known_to_be_SUP-comparable-or-uncomparable_via_extended-entailment
) )
(sub#object_known_to_be_comparable-or-uncomparable_via_part
= sub#object_known_to_be_part-comparable-or-uncomparable,
\. p{ (sub#comparable_via_part \. p{ owl#sameAs sub#part sub#part_of } )
(sub#uncomparable_via_part
\. p{ sub#part_exclusion
sub#part-uncomparable_but_not_part-exclusive
})
}
(sub#object_known_to_be_c_comparable-or-uncomparable_via_part
= sub#object_known_to_be_c_part-comparable-or-uncomparable,
\. p{ (sub#comparable_via_c_part \. p{ sub#eqC sub#c_part sub#c_part_of } )
(sub#uncomparable_via_c_part
\. p{ sub#c_part_exclusion
sub#c_part-uncomparable_but_not_c_part-exclusive
})
}) )
(extended-part-or-gSpecialization-or-equivalent-or-exclusion_comparable .(?o1,?o2)
= extendedPartOrGspecEqOrExcl_comparable,
:= ^"relation excluding the case where, for any two objects in the KB, it is not known
whether or not there exists an asserted/inferrable
part/gSpecialization/equivalence/exclusion relation between the two objects
(without using closed world inferences)",
:= [OR_{[?o1 partOrGspecEqOrExcl: ?o2], [?o1 partOrGspecEqOrExcl of: ?o2]}],
\. c{ comparable_via_semantic_generalization-or-equivalence //above
comparable_via_extended_part_or_equivalence //0.3.2.4
}
ne{ (part_or_gSpecialization_or_equivalent_or_exclusion = partOrGspecEqOrExcl,
\. p{ part
(gSpecialization_or_equivalent_or_exclusion = gSpecEqOrExcl,
\. p{ gSpecialization_or_equivalent //Section 0.3.4.1
core-specialization_exclusion //Section 0.2.2.2
} )
}
p{ part_or_equivalent
(gSpecialization_or_exclusion \. p{ gSpec exclusion } )
} )
(gSpecialization-or-equivalent-or-exclusion_comparable .(?o1,?o2)
= gSpecEqOrExcl_comparable,
:= [OR_{[?o1 gSpecEqOrExcl: ?o2], [?o1 gSpecEqOrExcl of: ?o2]}],
\. p{ (exclusion_comparable := [OR_{[?o1 exclusion: ?o2],
[?o1 exclusion of: ?o2]}])
(gSpecialization-or-equivalent_comparable
\. p{ (gSpecEq converse: gSpecEq_of) gSpecEq_of }
(gSpecialization_comparable = gSpec_comparable,
\. p{ (gSpec converse: gSpec_of) gSpec } ) )
}
p{ (type_comparable := [OR_{[?o1 type: ?o2], [?o1 type of: ?o2]}])
(core-specialization-or-equivalent-or-exclusion_comparable
= cSpecEqOrExcl_comparable,
\. p{ (cSpecEqOrExcl converse: cSpecEqOrExcl_of) cSpecEqOrExcl_of }
(core-specialization-or-equivalent_comparable
= cSpecEq_comparable,
\. p{ (cSpecEq converse: cSpecEq_of) cSpecEq_of }
(core-specialization_comparable = cSpec_comparable,
\. p{ (cSpec converse: cSpec_of) cSpec_of } ) ) )
} )
}) ).
0.3.2.1. Comparable Or Uncomparable Via Semantic Equivalence (Or Identity)
comparable-or-uncomparable_via_semantic-equivalence
\. (comparable-or-uncomparable_via_identity = identical_or_not,
\. p{ (equal .(Thing .?t1, Thing+) = ^'==',
//".?" means that the source does not have the
// default quantifier 'any' if it has no explicit quantifier
converse: equal, //symmetric relation
\. (identical_to = ^'===' owl#sameAs,
:=> "same abbreviation as in Javascript" )
(equal_to_a_type_representing_a_distributive_set_of_types
= ^'====' ) )
(not_equal = ^'!==',
\. (not_identical_to = ^'!===' owl#differentFrom,
\. p{ sub#different_but_equivalent sub#different_and_non-equivalent })
(not_equal_to_a_type_representing_a_distrib_set_of_types = ^'!====' ) )
})
p{ (semantic_equivalent .(Thing .?t1, Thing+)
= equal_or_equivalent ^'=' sub#eq sub#equivalent sub#"<=>",
\. p{ equal sub#different_but_equivalent }
p{ (sub#equivalent_type = sub#equivalentType,
\. p{ (owl#equivalentProperty = sub#eqP)
(owl#equivalentClass = sub#eqC)
})
(sub#equivalent_non-type_thing = sub#eqT,
\. p{ (sub#equivalent_statement .(sub#Statement, sub#Statement)
= sub#eqS sub#"<==>" ^'<=>' ^'*=*' ^'≡' )
(sub#equivalent_individual = sub#eqI)
})
}
p{ sub#equivalent_statement (sub#equivalent_non-statement = sub#eqNS) }
)
(non_semantically_equivalent = different_from sub#non-equivalent ^'!=' sub#"!<=>",
converse: not_equal-or-equivalent, //symmetric relation
\. not_equal core-specialization_exclusion //Section 2.1
(sub#non-equivalent_nor_entailing
! sub#extended-entailed_thing_or_equivalent,
\. p{ (sub#non-equivalent_type .(sub#Type, sub#Type)
\. p{ (sub#non-equivalent_property
\. p{ owl#propertyDisjointWith
(sub#non-equivalent_nor_exclusive_property = sub#neP)
})
(sub#non-equivalent_class .(rdfs#Class, rdfs#Class)
\. p{ owl#disjointWith
(sub#non-equivalent_nor_exclusive_class = sub#neC)
}
(sub#non-equivalent_nor_subClassOf ! rdfs#subClassOf ) )
})
sub#non-equivalent_non-type_thing
}
(sub#non-equivalent_nor_exclusive_things
.(owl#Thing ?t, .{2..* owl#Thing} ?ts) = sub#neTs,
:= [ [?ts sub#member: ^t1 (^t2 != ^t1)]
==> [^t1 sub#non-equivalent_nor_exclusive_thing: ^t2, ?t] ],
\. p{ (sub#non-equivalent_nor_exclusive_types .(sub#Type, sub#Type)
\. p{ (sub#non-equivalent_nor_exclusive_classes
.(rdfs#Class, .{2..* rdfs#Class}) = sub#neCs)
(sub#non-equivalent_nor_exclusive_properties
.(rdf#Property, .{2..* rdf#Property}) = sub#nePs)
})
sub#non-equivalent_nor_exclusive_non-types
})
//each of the next subtypes is specialized in a next (sub-)section
sub#strict_semantic_generalization_or_specialization
sub#strict_extended_part_or_part-of
sub#contextualizing-or-negating_relation ))
}.
0.3.2.2. Comparable Or Uncomparable Via Extended Entailment
sub#object_known_to_be_comparable_or_uncomparable_via_extended-entailment
= sub#object_known_to_be_comparable_or_uncomparable,
\. p{ (sub#comparable_via_extended-entailment
\. p{ extended_entailed-by_or_equivalent //below (Section 0.3.3.2)
extended_entailment_or_equivalent //= SUP-comparable_via_extended-entailment
},
(sub#comparable_class .(rdfs#Class, rdfs#Class)
//hence: \. p{ sub#equivalentClass sub#strict_superClass sub#strict_subClass }
//or: \. p{ rdfs:subClassOf sub#strict_subClass)
))
(sub#uncomparable_via_extended-entailment
\. p{ sub#extended-entailment_exclusion
(sub#known_to_be_uncomparable_but_not_exclusive_via_extended-entailment
\. (sub#uncomparable-but-not-disjoint_type .(sub#Type, sub#Type)
\. (sub#uncomparable-but-not-disjoint_class .(rdfs#Class, rdfs#Class)
! owl#disjointWith ) ) )
}
p{ (sub#uncomparable_type .(sub#Type, sub#Type)
\. (sub#uncomparable_class .(rdfs#Class, rdfs#Class)
\. sub#uncomparable-but-not-disjoint_class ) )
sub#uncomparable_non-type
})
}
p{ (sub#type_known_to_be_comparable_or_uncomparable .(sub#Type, sub#Type)
\. p{ (sub#class_known_to_be_comparable_or_uncomparable .(rdfs#Class, rdfs#Class)
//hence: \. p{ sub#comparable_class sub#uncomparable_class }
// or: \. p{ sub#comparable_class owl#disjointWith
// sub#non-equivalent_class_nor_subClassOf }
)
sub#property_known_to_be_comparable_or_uncomparable
})
sub#non-type_known_to_be_comparable_or_uncomparable
}.
0.3.2.3. SUP-comparable Or SUP-uncomparable Via Extended Entailment
sub#object_known_to_be_SUP-comparable-or-uncomparable_via_extended-entailment
= sub#object_known_to_be_SUP-comparable_or_SUP-uncomparable,
\. sub#object_known_to_be_comparable_or_uncomparable_via_extended-entailment
p{ (sub#extended_entailment_or_equivalent //= sub#SUP-comparable_via_extended-entailment
\. sub#superClass_or_equivalent )
sub#not_known_to_be_SUP-comparable-or-uncomparable_via_extended-entailment
(sub#SUP-uncomparable_via_extended-entailment
\. p{ (sub#SUP-uncomparable_type .(sub#Type, sub#Type)
\. (sub#SUP-uncomparable_class .(rdfs#Class, rdfs#Class)
= sub#non-equivalent_class_nor_subClassOf
\. sub#SUP-uncomparable-but-not-disjoint_class ) )
sub#SUP-uncomparable_non-type
}
sub#uncomparable_via_extended-entailment )
}
p{ (sub#type_known_to_be_SUP-comparable-or-uncomparable .(sub#Type, sub#Type)
\. p{ (sub#class_known_to_be_SUP-comparable-or-uncomparable .(rdfs#Class, rdfs#Class)
= sub#class_known_to_be_SUP-comparable_or_exclusive_or_SUP-uncomparable
//hence: \. p{ sub#comparable_class sub#uncomparable_class }
// or: \. p{ sub#comparable_class owl#disjointWith
// sub#non-equivalent_class_nor_subClassOf }
)
sub#property_known_to_be_SUP-comparable-or-SUP-uncomparable
})
sub#non-type_known_to_be_comparable_or_uncomparable
}.
0.3.2.2. Comparable Via Extended PartOf
comparable_via_extended_part_or_equivalence = sub#extended_part_or_part-of,
sub#type: owl#TransitiveProperty,
\. p{ sub#eq
(sub#strict_extended_part_or_part-of
\. p{ sub#strict_extended_part sub#strict_extended_part-of } )
}
p{ sub#extended_part_or_part-of_directly_between_individuals .(sub#Individual, sub#Individual)
(sub#extended_part_or_part-of_between_types_but_for_their_instances .(sub#Type, sub#Type)
\. (sub#part_or_part-of_between_types_but_for_their_instances
\. c{ sub#part_between_types_but_for_their_instances
sub#part-of_between_types_but_for_their_instances
}) )
}.
0.3.3. Extended Entailments, Their Inverses and Exclusions
Box ??. Example <=/=> relations that are spec/gen (correction or not) relations
∀x P5(x) ∃y P5(y)
↑g ⇓cS(restr) ⇑cG ↓s ⇑cG ↓s
∀x P1(x) => P5(x) ∀x P5(x) ^ ∃y P5(y) ^ P6(y)
⇑cG ↓s(prec) ↑g ⇓cS(restr)
∀x P1(x) => P5(x) ^ P6(x) ∀x P1(x) ^ P2(x) => P5(x)
↑g ⇓cS(restr) ⇑cG ↓s(prec)
∀x P1(x) ^ P2(x) => P5(x) ^ P6(x)
[98%-100%]x P5(x) [98-100]y P5(y)
⇑cG ↓s ⇑cG ↓s
[98%-100[x P5(x) 98y P5(y)
↑(c)g ↓(c)s ↑g ⇓cS(restr) ⇑cG ↓s ⇑cG ↓s
98-99%xP1(x)=>P5(x) 98%x P1(x) => P5(x) 98%x P5(x) ^ 98y P5(y) ^ P6(y)
⇑cG ↓s(prec) ↑g ⇓cS(restr)
98%x P1(x) => P5(x) ^ P6(x) 98%x P1(x) ^ P2(x) => P5(x)
↑g ⇓cS(restr) ⇑cG ↓s(prec)
98%x P1(x) ^ P2(x) => P5(x) ^ P6(x)
Legend: ↑g : generalization without implication
⇑cG: corrective generalization and implication
↓s : specialization without implication
⇓cS: corrective specialization and implication
[98%-100%]x P(x): [98%-100%]x Thing(x) => P(x)
[98%-100%]x P1(x) => P2(x): 98-100%x P1(x) => P2(x)
for each x member of 98% to 100% of instances of P1, P2(x) is true
[98-100]x P1(x) => P2(x): for each of 98 to 100 instances of P1, P2(x) is true
|
|
0.3.3.1. (Extended) Entailment (Spec/Gen)
extended_entailment_or_equivalent .(.?o1, ?o2)
= sub#SUP-comparable_via_extended-entailment sub#"=>"
\. p{ semantic_core-generalization_or_equivalent
(sub#entailed_specialing_statement_or_equivalent
\. p{ sub#eqS sub#strict_entailed_specialing_statement })
}
p{ sub#eq
(strict_extended_entailment
\. p{ strict_semantic_core-generalization sub#strict_entailed_specialing_statement }
p{ (strict_statement_entailment .(sub#Statement, sub#Statement)
= strict_classic_entailment)
strict_semantic_non-statement_generalization
})
}
p{ (statement_entailment_or_equivalent = classic_entailment_or_equivalent sub#"==>",
\. c{ sub#entailed_generalizing_statement_or_equivalent
sub#entailed_specialing_statement_or_equivalent })
(semantic_non-statement_generalization_or_equivalent
\ c{ sub#entailed_generalizing_statement_or_equivalent
sub#entailed_specialing_statement_or_equivalent })
}.
0.3.3.2. (Extended) Entailed-By (Spec/Gen)
extended_entailed-by_or_equivalent .(.?o1, ?o2) = sub#"<=",
converse: extended_entailment_or_equivalent,
\. p{ (semantic_core-specialization_or_equivalent //below (statement ot not)
converse: semantic_core-generalization_or_equivalent )
(sub#extended_entailed-by_generalisation_or_equivalent //statement ot not
converse: sub#entailed_specialing_statement_or_equivalent,
\. p{ sub#eqS
(sub#strict_entailed-by_generalizing_statement
converse: sub#strict_entailed_specialing_statement)
})
}
p{ sub#eq
(strict_extended_entailed-by converse: strict_extended_entailment,
\. p{ sub#strict_semantic_core-specialization //=strict_extended-entailed-by_specialization
sub#strict_entailed-by_generalizing_statement }
p{ (sub#strict_entailed-by_statement .(sub#Statement, sub#Statement)
= strict_classic_entailed-by,
converse: strict_statement_entailment )
(strict_semantic_non-statement_specialization
converse: strict_semantic_non-statement_generalization )
})
}
p{ (statement_entailed-by_or_equivalent = classic_entailed-by_or_equivalent,
converse: statement_entailment_or_equivalent,
\. c{ (sub#entailed-by_generalizing_statement_or_equivalent
converse: sub#entailed_generalizing_statement_or_equivalent )
(sub#entailed-by_specialing_statement_or_equivalent
converse: sub#entailed_specialing_statement_or_equivalent )
})
(semantic_non-statement_entailed-by_or_equivalent
\ c{ (sub#entailed-by_generalizing_statement_or_equivalent
converse: sub#entailed_generalizing_statement_or_equivalent )
(sub#entailed-by_specialing_statement_or_equivalent
converse: sub#entailed_specialing_statement_or_equivalent )
})
}.
0.3.4. Semantic Generalizations/Specializations and Their Exclusions
0.3.4.0. Set_of_things_that_may_be_specialized and Spec-exclusive_things
Set_of_things_that_may_be_specialized ?s
:= [ [^m member of: ?s] => [^m gSpec: 0..* Thing] ],
\. (
Set_of_specializations_for_a_same_thing ?s
:=> [a Thing ?x0 cSpec: every ^(Thing member of ?s)],
\. p{ (Open_set_of_specializations_for_a_same_thing =
d)
(
Closed_set_of_specializations_for_a_same_thing ?s =
cd, // /^ Closed_set,
:= "if ^x is that thing, any spec of ^x is a specEq of a member of ?s",
:= [ [any ^(Thing member of ?s) cSpec of: (?x cSpec: only a ^(Thing member of: ?s))]
] => [any ^(Thing gGen: ^x) gGenEq: (a Thing member of: ?s)] ] )
}
e{ (Set_of_spec-comparable_specializations_for_a_same_thing ?s
:= [ [?s member: ?m1 (?m2 != ?m1)] => [?m1 cSpec_comparable: ?m2] ] )
(Set_of_non-spec-comparable_specializations_for_a_same_thing
\. p{ (Set_of_different_but_not-spec-uncomparable_specializations_for_a_same_thing
\. p{ (Open_set_of_different_but_not-spec-uncomparable_specializations
=
cd )
(Closed_set_of_different_but_not-spec-uncomparable_specializations
=
d, /^ Closed_set_of_specializations_for_a_same_thing )
} )
(Set_of_spec-uncomparable_specializations_for_a_same_thing ?s
:= [ [?s member: ?m1 (?m2 != ?m1)] => [?m1 !cSpec_comparable: ?m2] ],
\. p{ (Open_set_of_at-least-weakly_spec-uncomparable_specializations
=
ne )
(Closed_set_of_at-least-weakly_spec-uncomparable_specializations
=
ce, /^ Closed_set_of_specializations_for_a_same_thing )
}
p{ (Set_of_weakly_spec-uncomparable_specializations_for_a_same_thing
\. p{ (Open_set_of_weakly_spec-uncomparable_specializations
=
we wu )
(Closed_set_of_weakly_spec-uncomparable_specializations
=
wp, /^ Closed_set_of_specializations_for_a_same_thing)
} )
(Set_of_strongly_spec-uncomparable_specializations_for_a_same_thing
/^
Spec-exclusive_things ) //below
} )
} )
} ).
Spec-exclusive_things
\. p{ (Things_that_are_
spec-exclusive-always //the next 2 defs are equivalent
:= [ [^m1 member of: ?s, != (^m2 member of: ?s)]
=> [no ^(Thing cGen: ^m1, cGen: ^m2)] ],
:= [ [^i1 gGen: (^m1 member of: ?s, != (^m2 member of: ?s, gGen of: ^i2))]
=> [^i1 != ^i2] ], //generalization of the next def for types only
\. (Types_that_are_spec-exclusive-always ?s /^ Set_of_types,
:=> [ [^i1 type: (^m1 member of: ?s, != (^m2 member of: ?s, type of: ?i2))]
=> [^i1 != ^i2] ] ),
e{ (Spec-open-exclusion_always =
e Excl)
(Spec-
partition_always ?s =
p,
/^ Closed_set_of_specializations_for_a_same_thing )
} )
(Things_that_are_
spec-exclusive_for-a-time ?s
:= [ [?s type: Things_that_are_spec-exclusive-always] time: a time ?t],
\. (Types_that_are_spec-exclusive-for-a-time ?s /^ Set_of_types,
:=> [ [?s type: Types_that_are_spec-exclusive-always] time: a time ?t] )
e{ (Spec-open_exclusion_for_a_time =
t_e Excl)
(Spec-partition_for_a_time =
t_p,
/^ Closed_set_of_specializations_for_a_same_thing,
:=> "in 't_p', the 't' is for 'time-dependent' ",
:= [ [?s type: Spec-partition_always] time: ?t] )
} )
(Things_that_are_
spec-exclusive_for-an-agent ?s
:= [ [?s type: Things_that_are_spec-exclusive-for-an-agent]
believer: an agent ?a],
\. (Types_that_are_spec-exclusive-for-an-agent ?s /^ Set_of_types,
:=> [ [?s type: Types_that_are_spec-exclusive-for-an-agent]
author: an agent ?a] )
e{ (Spec-open_exclusion_for_an-agent =
v_e Excl)
(Spec-partition_for_an-agent =
v_p,
/^ Closed_set_of_specializations_for_a_same_thing,
:=> "in 'v_p', the 'v' is for 'viewpoint/agent-dependent' ",
:= [ [?s type: Spec-partition_for-an-agent] believer: an agent ?a] )
} )
}.
0.3.4.1. Semantic Specializations (Instance/...)
semantic_specialization_or_equivalent .(.?superObject, ?subObject)
//reminder: the above ".?" means that the source does not have the
// default quantifier 'any' if it has no explicit quantifier
= sSpecEq gSpecEq gSpecialization_or_equivalent,
converse: sub#semantic_generalization_or_equivalent,
\. p{ sub#eq
(strict_semantic_specialization
= sSpec sub#strict_semantic_specialization ^'\~.' ,
\. p{ instance scSpec }) //both types are defined in the next two subsections
}
p{ (instance_or_equivalent
\. p{ sub#eq
(instance .(Information_object, Type) = ^'|.' sub#instance,
:= ^"specialization from a type to an individual, e.g. [Cat |. Tom]",
\. example )
})
semantic_core-specialization_or_equivalent //next subsection
}.
0.3.4.2. Semantic Core Specializations (Natural/Non-natural)
sub#semantic_core-specialization_or_equivalent .(?t1 ?o1, ?t2 ?o2)
= cSpecEq,
\. p{ sub#eq
(sub#strict_semantic_core-specialization
= scSpec subterm subtype_or_subindividual_or_substatement
0.3.4.3. Semantic Generalizations (Type/...)
semantic_generalization_or_equivalent .(.?subObject, ?superObject)
//reminder: the above ".?" means that the source does not have the
// default quantifier 'any' if it has no explicit quantifier
= type_or_core-generalization-or-equivalent sGenEq gGenEq,
,
converse: semantic_specialization_or_equivalent,
\. p{ sub#eq
(strict_semantic_generalization = sGen,
\. p{ type scGen }) //both types are defined in the next two subsections
}
p{ (type_or_equivalent = rdf#type, //e.g. in Turtle: "owl:Class rdf:type owl:Class"
\. p{ sub#equivalent_type
(type .(Information_object, Type) = ^'|^' sub#type,
converse: instance )
})
semantic_core-generalization_or_equivalent //see below
}
p{ (semantic_gGeneralization_inferred_using_at_least_this_source
\. semantic_generalizing-statement_inferred_using_at_least_this_source //Section 0.3.6
^"generalization in Formal Concept Analysis or all those for indexing KB objects" )
(semantic_gGeneralization_not_inferred_using_this_source
\. (semantic_generalizing-statement_not_inferred_using_this_source /*def.: Section 1.3.8.2
\. ^"given rule or a definition (e.g. a supertype relation) enabling generalizations"
non-generated_semantic-generalizing-statement
p{ corrective_generalization non-corrective_generalizing-statement } */ ) )
}
p{ statement_generalization //see below
(semantic_gGeneralization_of_a_term_that_is_not_a_reference_to_a_statement
converse: semantic_gSpecialization_of_a_term_that_is_not_a_reference_to_a_statement,
\. p{ (semantic_gGeneralization_of_a_formal_term_that_is_not_a_reference_to_a_statement
\. ne{ type strict_semantic_core-generalization } ) //see below
(semantic_gGeneralization_of_an_informal_term_that_is_not_a_reference_to_a_statement
:=> "each meaning of the source term must be generalized by at least one
meaning of the destination term" )
})
}.
0.3.4.4. Semantic Core Generalizations
sub#semantic_core-generalization_or_equivalent .(?t1 ?o1, ?t2 ?o2)
= cGenEq sub#extended-entailed_generalization,
:=> [?t1 cSpecEq_comparable: ?t2],
converse: (cSpecialization_or_equivalent = ^'\='),
\. p{ sub#eq
(strict_semantic_core-generalization
= scGen super_term supertype_or_super-individual ^'/°'
sub#strict_extended-entailed_generalization,
converse: (subterm = ^'°\'),
\. e{ (sub#strict_supertype .(sub#Type, sub#Type) = '/^' ^'<',
:= ^"generalization between types, e.g. [Cat /^ Feline]",
converse: (strict_subtype = ^'>',
\. (ne_subtype .(Type ?t1, ne{Type} ?t2s) = ^'\.',
:= [?t1 > ne ?t2s] ) ),
:= [ [^subObject type: ^superObject] => [^subObject type: ^superObject] ],
\. p{ (sub#strict_superProperty .(rdf#Property, rdf#Property)
= sub#proper-subPropertyOf )
(sub#strict_superClass = sub#proper-subClassOf,
\. p{ (strict_natural-type_supertype .(Type, Type) = ^':/',
converse: (natural_subtype = ^'\_') )
(strict_non-natural-type_supertype .(Type, Type) = ^'_/',
converse: (non-natural_subtype = '\~') )
})
})
(sub#strict_superIndividual .(sub#Individual, sub#Individual)
:= ^"generalization from an Individual to another,
e.g. [Tom_in_2018 ../ Tom]",
converse: (sub-individual = ^'\..') )
sub#strict_entailed_statement .(sub#Statement, sub#Statement)
}) )
}
e{ (sub#supertype_or_equivalent .(sub#Type, sub#Type)
\. p{ sub#equivalent_type sub#strict_supertype }
p{ (sub#superProperty_or_equivalent = owl#subPropertyOf,
\. p{ owl#equivalentProperty sub#strict_superProperty } )
(sub#superClass_or_equivalent .(rdfs#Class, rdfs#Class)
= rdfs#subClassOf sub#SUP-comparable_class,
//e.g. in Turtle: owl:Class rdfs#subClassOf owl:Class
\. p{ owl#equivalentClass sub#strict_superClass } )
})
(sub#superIndividual_or_equivalent .(sub#Individual, sub#Individual)
converse: sub#subIndividual_or_equivalent )
(sub#semantic_statement_generalization_or_equivalent .(sub#Statement, sub#Statement)
converse: sub#semantic_statement_specialization_or_equivalent,
\. p{ sub#eqS
(sub#strict_semantic_statement_generalization
converse: sub#strict_semantic_statement_specialization )
}
p{ (sub#entailed_generalizing_statement_or_equivalent
\. p{ sub#eqS
(sub#strict_entailed_generalizing_statement
converse: sub#strict_entailed_specializing_statement )
})
(sub#non-entailed_generalizing_statement_or_equivalent
\. p{ sub#eqS
(sub#strict_non-entailed_generalizing_statement
converse: sub#strict_non-entailed_specializing_statement )
})
}
p{ (sub#entailed-by_generalizing_statement_or_equivalent
\. p{ sub#eqS
(sub#strict_entailed-by_generalizing_statement
converse: sub#strict_entailed-by_specializing_statement )
})
(sub#non-entailed_by_generalizing_statement_or_equivalent
\. p{ sub#eqS
(sub#strict_non-entailed_by_generalizing_statement
converse: sub#strict_non-entailed_by_specializing_statement )
})
})
)
}.
0.3.4.5. Statement Generalizations (Truth_preserving/..., Adding_information/...)
statement_generalization .(Statement .?p1, Statement ?p2) = ^'__/',
converse: (statement_specialization = ^'\~_',
\. e{ (truth_preserving_specialization)
(not-truth-preserving_generalization)
}
(statement_instantiation = instantiation) ),
\. p{ (statement_generalization_adding_information = generalization_adding_information)
(statement_generalization_loosing_information = generalization_loosing_information,
converse: (statement_specialization_adding_information
= specialization_adding_information ) )
}
p{ (truth_preserving_generalizing-statement
converse: truth_preserving_specializing-statement,
\. (generalization_of_conjunctive_existential_statement_with_no_context
:= ^"generalization of a statement whose quantifiers are only existential,
whose logical connector are only 'and' and whose meta-statement (if
any) are not context, i.e. are truth preserving",
:=> "the destination and the source
- only include individuals or existentially quantified terms;
- only include ^'and' as logical connector;
- may be meta-statements but not contexts",
example:
[ [ [Tom color: a Light_grey, part: a Leg] language: FL]
__/ [ [a Cat color: a Grey] //there exists a grey cat
language: a KRL ] ]
[ [57 Cat color: a Grey] __/ [at least 57 Cat color: a Grey] ]
) )
(not-truth-preserving_generalizing-statement
converse: not-truth-preserving_specializing-statement,
example: //here, the source statements have universal quantifiers and contexts
[ [ [every Legged_cat color: a Grey, part: a Leg] time: 23/12/2017 ]
__/ [ [every Cat color: a Grey] //every cat is grey
time: 2017 ] ] )
}.
0.3.5. Parts, Members, Their Inverses and Exclusions
0.3.5.1. Parts and Exclusions
extended_part_or_equivalent = extendedPartEq,
derived_relation-type of: (Extended_part_or_equivalent /^ Thing_wrt_role).
\. p{ sub#eq
(sub#strict_extended_part
\. (sub#strict_part .(?t1 ?o1, ?t2 ?o2) = sub#part,
\. sub#sPart,
:=> [?t1 cSpecEq_comparable: ?t2],
\. e{ subprocess .(Process, Process)
spatial-part .(Spatial_entity, Spatial_entity)
},
:=> "the partial definition requiring that the source and
destination are cSpecEq_comparable prevents the combination of
part relations such subprocess and spatial-part" )
(sub#part_between_types_but_for_their_instances .(sub#Type ?t1, sub#Type ?t2)
= c_part, := [ [^i sub#type: ?t1] ==> [^i sub#part: a ?t2] ],
\. c_sPart
)
(sub#strict_member .(owl#Thing, owl#Thing)
\. (sub#statement_member .(sub#Statement, owl#Thing)
\. (sub#definition_member
\. sub#definition_member_via_OWL ) //see Section 3
//just another example:
(sub#relation_member .(sub#Statement, owl#Thing)
\. (sub#relation_type .(sub#Statement, owl#Thing)
\. (sub#relation_type_of_an_RDF_reified_statement = rdf#predicate)))))
(sub#"=>-element" = sub#extended-entailment_element,
\. p{ (sub#"==>-element" .(sub#Statement ?X, sub#Statement ?y)
= sub#entailment_element,
:= "∀X,y ==>-element(X,y) <==>
(∃y2,Y (X==>Y) ∧ (Y <==> (y ∧ y2)))",
:= [?X ==> (a sub#Statement ?Y <==> [?y. (?y2 != ?y)])],
\. (sub#"<==>-element" .(sub#Statement ?X, sub#Statement ?y)
= sub#equivalent-statement_element,
:= [?X <==> [?y. (?y2 != ?y)] ] ) )
(sub#NC-definition_element .(owl#Thing ?t, owl#Thing ?e)
:= [?t sub#"=>": (a sub#Statement sub#statement_member: ?e)],
\. (sub#NSC-definition_element .(owl#Thing ?t, owl#Thing ?e)
:= [?t <==> (a sub#Statement sub#statement_member: ?e)] ) )
})
(sub#"<=-element" = sub#extended-reverse-entailment_element,
\. p{ (sub#"<==-element" .(sub#Statement ?X, sub#Statement ?y)
= sub#reverse-entailment_element,
:= [?X <== (a sub#Statement ?Y <==> [?y. (?y2 != ?y)])],
\. sub#"<==>-element" )
(sub#SC-definition_element .(owl#Thing ?t, owl#Thing ?e)
:= [?t sub#"<=": (a sub#Statement sub#statement_member: ?e)],
\. sub#NSC-definition_element )
})
(sub#definition-element .(owl#Thing ?t, owl#Thing ?e)
|^ owl#TransitiveProperty, >
\. c{ sub#NC-definition_element sub#SC-definition_element }
p{ sub#def_necessary-element sub#def_non-necessary_element },
sub#definition-element_via_OWL //defined in Section 2
)
sub#strict_extended_parts
)
}
e{ (sub#member_or_equivalent \. p{ sub#eq sub#strict_member })
(sub#part_or_equivalent = partEq, \. p{ sub#eq sub#strict_part })
(sub#c_part_or_equivalent \. p{ sub#eqC sub#strict_c_part })
}.
0.3.5.1.1. Relations to Extended Parts
sub#strict_extended_parts
\. (sub#part-exclusive_parts .( sub#Individual ?i, .{2..* sub#Individual} ?pIs )
= sub#non-overlapping_parts,
:= [[?pIs sub#member: ^pI1 (^pI2 != ^pI1)] ==> [^pI1 sub#part_exclusion ^pI2]],
\. p{ (sub#part_partition = sub#partPartition sub#pParts) //pParts
(sub#incomplete_set_of_part-exclusive_parts = sub#eParts) //eParts
})
(sub#c_part-exclusive_parts .( sub#Type ?t, .{2..* sub#Type} ?pTs )
:= [ [^i sub#type: ?t, sub#part-exclusive_parts: ?pIs]
[ [^pI sub#member of: ?pIs]
==> [^pI sub#type: (a sub#Type sub#member of: ?pTs)] ] ],
\. p{ (sub#c_part_partition = sub#c_pParts) //c_pParts
(sub#incomplete_set_of_part-exclusive_parts = sub#c_eParts) //c_eParts
})
(sub#complete_set_of_parts .( sub#Individual ?i, .{2..* sub#Individual} ?pIs )
:= [ [^e sub#part of: ?i] ==>
[^e sub#part of: (a owl#Thing sub#member of: ?pIs)] ],
\. p{ sub#part_partition
(sub#complete_set_of_non-part-exclusive_parts = sub#cParts) //cParts
})
(sub#c_complete_set_of_parts .( sub#Type ?t, .{2..* sub#Type} ?pTs )
:= [ [^i sub#type: ?t, sub#union_of_parts: ?pIs]
[ [^pI sub#member of: ?pIs]
==> [^pI sub#type: (a sub#Type sub#member of: ?pTs)] ] ],
\. p{ sub#c_part_partition
(sub#complete_set_of_c_non-part-exclusive_parts = sub#c_cParts) //c_cParts
}).
0.3.5.1.2. Set_of_things_that_may_have_a_part and Part-exclusive_things
Set_of_things_that_may_have_a_part ?s
:= [ [^m member of: ?s] => [^m part: 0..* Thing] ],
\. (Set_of_parts_for_a_same_thing ?s
:=> [a Thing ?x0 part: every ^(Thing member of ?s)],
:= [ [^x member of: ?s] => [a Thing ?x0 part: every ^(Thing ?xi member of ?s)] ],
\. p{ (Open_set_of_parts_for_a_same_thing = d)
(Closed_set_of_parts_of_a_same_thing ?s = cd, // /^ Closed_set,
:= "if ^x is that thing, any part of ^x is a partEq of a member of ?s",
:= [ [ [^x part: only a ^(Thing member of ?s) ]
[any ^(Thing member of ?s) part of ?x] //^x is that thing
] => [any ^(Thing part of: ^x) partEq of: (a Thing member of: ?s)] ] )
}
e{ (Set_of_part-comparable_parts_for_a_same_thing ?s
:= [ [?s member: ?m1 (?m2 != ?m1)] => [?m1 cPart_comparable: ?m2] ] )
(Set_of_non-part-comparable_parts_for_a_same_thing
\. p{ Set_of_different_but_not-part-uncomparable_parts_for_a_same_thing
(Set_of_part-uncomparable_partializations_for_a_same_thing ?s
:= [ [?s member: ?m1 (?m2 != ?m1)] => [?m1 !cPart_comparable: ?m2] ],
\. p{ (Open_set_of_at-least-weakly_part-uncomparable_parts = npe )
(Closed_set_of_at-least-weakly_part-uncomparable_parts
= cpe, /^ Closed_set_of_parts_for_a_same_thing )
}
p{ Set_of_weakly_part-uncomparable_parts_for_a_same_thing
(Set_of_strongly_part-uncomparable_parts_for_a_same_thing
/^ Part-exclusive_things ) //below
} )
} )
} ).
Part-exclusive_things
\. p{ (Things_that_are_part-exclusive-always ?s //the next 2 defs are equivalent
:= [ [^m1 member of: ?s, != (^m2 member of: ?s)]
=> [no ^(Thing part of: ^m1, part of: ^m2)] ],
:= [ [^i1 part of: (^m1 member of: ?s, != (^m2 member of: ?s, part: ^i2))]
=> [^i1 != ^i2] ],
\. e{ (Part-open-exclusion_always = part_e)
(Part-partition_always = part_p,
/^ Closed_set_of_parts_for_a_same_thing )
} )
(Things_that_are_part-exclusive_for-a-time ?s
:= [ [?s type: Things_that_are_part-exclusive-always] time: a time ?t],
\. e{ (Part-open-exclusion_for_a_time = t_part_e, )
(Part-partition_for_a_time = t_part_p,
/^ Closed_set_of_specializations_for_a_same_thing,
:= [ [?s type: Part-partition_always] time: ?t] )
} )
(Things_that_are_part-exclusive_for-an-agent ?s
:= [ [?s type: Things_that_are_part-exclusive-for-an-agent]
believer: an agent ?a],
\. e{ (Part-open_exclusion_for_an-agent = v_e Excl)
(Part-partition_for_an-agent = v_p,
/^ Closed_set_of_parts_for_a_same_thing,
:=> "in 'v_p', the 'v' is for 'viewpoint/agent-dependent' ",
:= [ [?s type: Part-partition_for-an-agent] believer: an agent ?a] )
} )
}.
0.3.5.2. Parts Of
sub#extended_part-of_or_equivalent
converse: sub#extended_part-of_or_equivalent,
\. p{ sub#eq
(sub#strict_extended_part-of
\. (sub#strict_part-of = sub#part_of sub#partOf,
converse: sub#strict_part )
(sub#part-of_between_types_but_for_their_instances = sub#c_part_of sub#c_partOf,
converse: sub#part_between_types_but_for_their_instances )
(sub#"elementOf-=>" = sub#elementOf-extended-entailment,
\. p{ (sub#"elementOf-==>" .(sub#Statement ?x, sub#Statement ?Y)
= sub#elementOf-entailment,
:= "∀x,Y elementOf-==>(x,Y) <==>
(∃X,x2!=x (X==>Y) ∧ (X <==> (x ∧ x2)))",
:= [a sub#Statement ?X ==> ?Y, <==> [?x. (?x2 != ?x)] ],
\. (sub#"elementOf-<==>" .(sub#Statement ?x, sub#Statement ?Y)
= sub#elementOf-equivalent-statement,
:= [?Y <==> [?x. (?x2 != ?x)] ] ) )
(sub#elementOf-NC-definition owl#inverseOf: sub#NC-definition-element)
})
(sub#"elementOf-<=" = sub#elementOf-extended-reverse-entailment,
\. p{ (sub#"elementOf-<==" .(sub#Statement ?x, sub#Statement ?Y)
:= [a sub#Statement ?X <== ?Y, <==> [?x. (?x2 != ?x)] ],
\. sub#"elementOf-<==>" )
(sub#elementOf-SC-definition owl#inverseOf: sub#SC-definition-element)
})
)
}
partOf_or_equivalent .
0.3.6. Relations Between Two Statements
relation_between_two_statements .(Statement .?, Statement)
= relation_to_another_statement related_statement,
\= relation-between-two-statements_wrt_the_assertion_of_the_source //see subsection below
relation-between-two-statements_wrt_truth-preservation, //see subsection below
\. overriding-or-correcting_statement //see subsection below
p{ relation-to-another-statement_that_is_not_a_logic_operator
logic_operator //defined in Section 0.3.1
// \. (truth-status-restricting_logic_operator \. e{or xor implication not})
}
p{ (not-truth-status-restricting_relation_to_another_statement
:= "the destination statement does not modify the truth status of the source statement" )
(truth-status-restricting_relation_to_another_statement
:= "the destination statement modifies the truth status of the source statement,
at least according to the author of the relation",
\. e{ statement-contextualizing_statement //defined in 0.3.6.1 (next subsection)
logic-objection_or_correction //defined in 0.3.6.1
truth-status-restricting_logic_operator //in Section 0.3.1
} )
}
p{ (statement_not_inferred_using_this_source
\. p{ semantic_generalizing-statement_not_inferred_using_this_source //Section 1.3.8.2
(semantic_specializing-statement_not_inferred_using_this_source
/^ semantic_gSpecialization )
} )
(statement_inferred_using_at_least_this_source
\. p{ not-necessarily-truth-preserving_inference truth-preserving_conclusion }
p{ semantic_generalizing-statement_inferred_using_at_least_this_source //Section 0.3.4.3
(semantic_specializing-statement_inferred_using_at_least_this_source
/^ semantic_gSpecialization )
} )
}
(version \. (summary \. truth_preserving_summary))
overriding-or-correcting_statement . //see subsection below
0.3.6.1. Relation Between Two Statements, Wrt. the Assertion Of the Source
relation-between-two-statements_wrt_the_assertion_of_the_source
\. p{ (relation_to-another-statement_not_meaning_that_the_source_was_asserted
:=> //the following note was also given in Section 0.2.1, although it was
// about FL statements whereas here it is for any statement
"A statement that is source/destination of a relation, function or operator
(except for "and") is not asserted. Conversely, a statement is asserted if the
statement is an un-embedded statement (an embedding via an "and" operator does
not count). However, FL provides an exception: by prefixing a statement (or a
relation the statement is source of) by '.', the statement is asserted
regardless of its embedding level. This for example permits
[.?p => ?p2]
and
[?p .=> ?p2]
to be equivalent (and shortcuts for)
[?p [?p => ?p2]]
.",
\. p{ (relation_to-another-statement_meaning_that_the_source_should_be_asserted
\. (
statement-contextualizing_statement .(.?p, ?c)
:= [?p descr_instrument of:
(a Situation situation_contextualizing-thing:
(a Thing descr_instrument: ?c)) ]
) ) //situation_contextualizing-thing is defined in
Section 2.2
(^"relation_to_another_statement_where_the_source_does_not_need_to_be_asserted
and not_meaning_that_the_source_was_asserted"
\. e{ (rule_conclusion converse: rule_premise) rule_premise
truth-status-restricting_logic_operator //see Section 0.3.1
// \. e{or xor implication not}
} )
} )
(relation-to-another-statement_meaning_that_the_source_was_asserted
.(Statement .?p1, Statement ?p2)
:=> ?p1,
\. (argument_or_objection
\. p{ (argument \. logic-argument)
(objection .(.?p1, ?p2) \. logic-objection,
:= [?p1 negation: (a Statement argument: ?p2)] )
}
(
logic-argument-or-objection_or_correction
\. p{ (
logic-argument .(Statement, Logically-atomic_statement)
:=> "any logic-argument should be asserted and without
superfluous relations",
\. p{ (formal-or-informal_proof \. formal_proof)
(logic-argument_that_is_not_a_formal-or-informal_proof
\. (implied_logic-argument_that_is_not_a_formal-or-informal_proof
= ^"logic-argument that is not a formal-or-informal_proof
but still the destination of an implication" ) )
} )
(
logic-objection_or_correction
\. p{ (
logic-objection .(.?p1, ?p2)
:= [?p1 negation: (a Statement logic-argument: ?p2)] )
corrective_statement //next subsection
} )
}) )
(better-supported_than .(Statement ?s, Statement ?d)
\. OR{ [ [?s |^ Successfully-supported_statement
Uncontradicted-or-unsuccessfully-contradicted_statement ]
[?d |^ Unsupported_or_unsuccessfully-supported_statement] ]
[ [?s |^ Uncontradicted-or-unsuccessfully-contradicted_statement]
[?d |^ Successfully-contradicted_statement] ],
} ) //apparently no need for ?s and ?d to be argument_or_objection related
)
}.
0.3.6.2. Relation Between Two Statements, Wrt. Truth Preservation
relation-between-two-statements_wrt_truth-preservation
\. p{ (relation-to-another-statement_not_necessarily_meant_to_be_truth-preserving
:= "the destination statement is not necessarily true when the source statement is true",
\. e{ (not-necessarily-truth-preserving_inference \. analogy induction abduction )
(argument_or_objection
\.
logic-argument-or-objection_or_correction )
} )
(relation-to-another-statement_meant_to_be_truth-preserving //equal to next subtype?
:= "the destination statement is necessarily true when the source statement is true",
\. (
formal-or-informal_conclusion_of_a_rule-or-inference_meant_to_be_valid
.(Statement .?premise, Statement ?conclusion)
converse: (premise \. e{ cause_description logic-argument } ), //both defined below
\. c{ //not exclusive because a common-knowledge_based_implication may implicitly
// involve physical consequence
(
formal-or-informal_consequence_descr .(.?p, ?c) = ^'->'
^'→',
:= [?p descr_instrument of:
(a Situation consequence: (a Situation descr_instrument: ?c)) ],
converse: cause_description )
(
truth-preserving_conclusion
=
formal-or-informal_logic-based_conclusion
formal-or-informal_implication-or-deduction-or-derivation ^'==>',
:= ^"extension of the formal logic implication to allow
1. ?premise and ?conclusion to be informal statements, and
2. common-knowledge_based_implication (see the subtype)",
//reminder: [_?p => ?p2] is equivalent to [?p [?p => ?p2]]
converse:
(
formal-or-informal_logic-based_premise
\. p{ (
premisse_of_formal-or-informal_logic-derivation = ^'<=|',
\. (premise_of_formal_logic-derivation = ^'–|' ^'-|') )
(
premise_of_rule-exploitable-by-a-rule-of-inference
=
statement_sufficient_condition,
:= ^"statement of logic premise, at least within
a context where particular axioms are asserted if this
premise depends on particular axioms",
\. e{ (
premise_of_rule_for_modus-ponens_and_modus-tollens
= ^'<=' ^'
⇐' )
(
premise_of_rule_for_modus-ponens_not_modus-tollens
= ^'<<=' )
}
logic-argument )/defined below
} )
\. p{ (
formal-or-informal_logic-derivation = ^'|=>',
converse: premisse_of_formal-or-informal_logic-derivation,
:= ^"application of - or way to define - a
rule-of-inference_conclusion",
\. (formal_logic-derivation = ^'⊢' ^'|–' ^'|-',
converse: premise_of_formal_logic-derivation ) )
(
conclusion_of_rule-exploitable-by-a-rule-of-inference
=
statement_necessary_condition logic_implication,
converse: statement_sufficient_condition,
\. e{ (
conclusion_of_rule_for_modus-ponens_and_modus-tollens
=
classic_implication ^'=>' ^'
⇒' )
(
conclusion_of_rule_for_modus-ponens_not_modus-tollens
= ^'=>>' )
}
e{ conclusion_of_formal_rule-or-implication_statement
(conclusion_of_common-knowledge_reying_rule-or-implication
:= ^"conclusion of an implication in which ?premise does not
include all the information necessary to deduce
?conclusion but where the missing information is easily
retrievable by people given common knowledge and
common sense" )
} )
}
p{ truth_preserving_generalizing-statement //see below
truth_preserving_specializing-statement //see below
sub#equivalent_statement
}
truth_preserving_summary )
} ) )
}.
0.3.6.3. Overriding or Correcting Relations Between Two Statements
overriding-or-correcting_statement .(Statement .?p1, Statement ?p2)
\. ne{ (overriding_statement
\. (pm#overriding_specialization /^ statement_specialization,
\. (statement_overriding_instantiation /^ statement_instantiation ) ) )
(correcting_statement .(Statement .?p1, Statement ?p2) = truer_reformulation,
\. p{ (corrective_spec-comparable_statement /^ gSpec_comparable
\. (corrective_generalization /^ statement_generalization,
= generalizing_correction truer_generalization c_/ )
(corrective_specialization /^ statement_specialization,
= specializing_correction truer_specialization c\~ ) )
(corrective_not-spec-comparable_statement .(Statement .?p1, Statement ?p2)
\. (corrective_at-least-weakly-spec-uncomparable_statement := [wu{?p1,?p2}],
\. (corrective_strongly-spec-uncomparable_statement
= corrective_exclusion corr_excl cExcl ce, := [e{?p1,?p2}],
\. (corrective_negation = corr_neg c!:= [?p1 = not ,p2]) )
(corrective_alternative = correction_via_an_alternative)
) )
} )
}.
0.4. Collections and Their Interpretations
Composite_thing = Collection,
\. p{ (Collection_that_is_not_necessarily-at-least-partially-ordered
\. ne{ (OR_collection = OR_coll OR_, \. (OR_set /^ Set))
(XOR_collection = XOR_coll XOR_, \. (XOR_set /^ Set))
(AND_collection = AND_coll AND_, \. (AND_set /^ Set))
} )
(Collection_that_is_necessarily-at-least-partially-ordered
\. e{ (Collection_that_is_necessarily-at-least-partially-ordered-but-not-totally-ordered
\. Partially-ordered_graph Hash_table )
(Collection_that_is_necessarily-totally-ordered
\. p{ (Collection_that_is_necessarily-totally-ordered_and_indexed
\. p{ (Collection_necessarily-indexed-by-a-positive-natural-number = Array,
\. e{ Static_array (Dynamic_array = Vector) }
(Array_part_of_an_array \. Column (Row \. Head_row) ) )
(^"Collection that necessarily has a totally-ordered index that is
not necessarily-a-positive-natural-number" = Associative_array,
\. (Collection_necessarily-indexed-by-strings = Object_ADT,
\. p{ (Static_object-ADR = Record)
(Dynamic_object = Dictionnary)
} ) )
}
(Array_of_array = Table, part: 1..* Array_part_of_an_array)
)
(Collection_that_is_necessarily-totally-ordered_and_not-indexed
\. (List \. e{ (FIFO_list = Queue) (LIFO_list = Stack) } ) )
} )
} )
}
t_p{ (List_with_no_element = Null_list = kif#nil)
(List_with_one_element = Singleton)
List_with_more_than_one_element
}
(sumo#Unique_list = "list which happens to have no repetition_of_element")
p{ (Collection_with_possible_repetition_of_elements = Bag Multiset)
(Collection_without_possible_repetition_of_elements ?s = Set,
:= [ [?s member: ^m1 ^m2] => [^m1 != ^m2] ], //???
\. (Relation-type_instances = Relation_in_mathematics Relationship)
(Set_of_types = Set_of_things_that_can_have_an_instance,
= ^(Set member: only 1..* Type) )
}
p{ (Open_collection \. (Open_set = nc))
(Closed_collection
\. (Closed_set ?s = Complete_set c,
:= "if ^r is a type of relation from(/to) the members of a Closed_set
then from any ^x destination(/source) of that relation
any relation of type ^r from ^x is a member of ?s",
:= AND{ [ [any ^(Thing member of ?s) ^r of: (?x ^r: only a ^(Thing member of: ?s))]
] => [any ^(Thing ^r of: ^x) ^r of: (a Thing member of: ?s)],
[ [any ^(Thing member of ?s) ^r: (?x ^r of: only a ^(Thing member of: ?s))]
] => [any ^(Thing ^r: ^x) ^r: (a Thing member of: ?s)]
} ) ) //^r or equal?
}
Set_of_sources-of-a-transitive-relation. //specialized below
0.4.1. Potential Sources of a Transitive Relation
(Spec-partition, Part-partition, ...)
Collection_of_sources-of-a-transitive-relation
\. (Set_of_sources-of-a-transitive-relation /^ Set,
\. Set_of_things_that_may_be_specialized //0.3.4.1
Set_of_things_that_may_have_a_part ) //0.3.5.1.2
(Exclusive_things
\. Spec-exclusive_things //0.3.4.1
Part-exclusive_things ). //0.3.5.1.2
1. Attributes/Characteristics/Dimension/Measures
The starting types in the next subsections wer introduced in
Section 0.1.2 ( Entity Uppermost Types).
1.1. Attributes Wrt. Object Types
Physical_numerical_attribute = ^(Numerical_attribute attr of: a Physical_entity)
//hence /^ Attribute_of_Physical_entity if automatically generated
Attribute_about_an_increase_or_decrease
attribute of:=> Process_about_an_increase_or_decrease,
\.
Marginal_utility .
/* ne{ (Numerical_attribute \. Physical_numerical_attribute)
(Physical_attribute //for a physical process/entity, so could also be in Section 3.4
\. Physical_numerical_attribute (Spatial_attribute \. Volume)
(
Temporal_attribute
\. e{ (Past_time = ^(Temporal_attribute numerically-superior_attribute: Present])
(Future_time = ^(Temporal_attribute numerically-inferior_attribute: Present])
},
|. Present, //if directly/indirectly used (e.g., via the use of Past_time)
// but not defined with a value (as in [Present := 31/12/2018]), the inference
// engine should signal an error
) )
} ._(type _[.->.]: Type-set_wrt _(object_natural-type).
*/
1.2. Attributes Wrt. Roles
Attribute_wrt_role
\~ v_p{ Negative_attribute Positive_attribute }
Attribute_that_is_a_criteria
(Attribute_aggregating_other_attributes
\. Positive_attribute_aggregating_other_attributes )
/* (Attribute_value /^ Measure, //not here, useless, already declared in Section 0.1.2
\~ v_p{ Value_of_a_positive_attribute Value_of_a_negative_attribute },
(Percentage_value \. p{ 0pc Between_0_an_100pc 100pc })
(Logical-or-modal_value
\. p{ (Logical_value = Truth_value Truth_status,
\. (Boolean_value \. p{ (False_value /^ 0pc) (True_value /^ 100pc) } ) )
Non-logical_modal_value
} )
) */ .
1.2.1. Positive/Negative Attribute
Negative_attribute = Attribute_expressing_a_dissatisfaction_or_fitness-to-dissatisfy-an-agent-or-a-use,
:= ^"Characteristic or measure of 1. the dissatifaction of an agent or
2. how (and how much) a Thing may lead to the dissatisfaction of an agent or a use",
:=> "whether or not something leads to the dissatisfaction of an agent
depends on the preferences of each Agent but some preferences are
common to most agents; if (instances of) this type and its subtypes are
used without identifying a particular (group of) agents, they (implicitly
but clearly)
should apply to most agents",
\. p{ Attribute_expressing_a_dissatisfaction
(Fitness-to-dissatisfy-an-agent-or-a-use
\~ ne{ (Consumption-seen-as-cost_attribute
\. (Monetary-consumption_seen-as-cost = Cost)
Energy-consumption_seen-as-cost Network-consumption_seen-as-cost )
} )
}.
Positive_attribute ?a
\. (Globally-positive_wrt .[1..* Attribute ?attr]
\. (Globally_positive //either directly asserted or calculated (e.g. via this next subtype)
\. (Globally_positive_wrt_all_other_attributes ?a
:= [ [?a attr of: (?e attr _[inferencing: closed_world]: c{1..* Attribute ?a} ?as)]
[ [[an Aggregation_function ?f input: ?as] <= #ThisKB] //_[inferencing: closed_world]
=> [?a = ?f _(?as)] ] //?as is distributive, @.?as would be cumulative
[ [[no Aggregation_function ?f input: ?as] <= #ThisKB] => [?a value: false] ]
] ) ) )
(Attribute_expressing_a_satisfaction_or_fitness-to-satisfy-an-agent-or-a-use
= Utility ?u, //cardinal/ordinal
:=> [a Like-or-dislike-or-preference_description part: [?u attr of: a Thing ?object],
result of: (a Valuating_satisfaction object: ?object) ],
\. p{ (
Cardinal_utility ?cardUtil = Attribute_characterizing_a_valuation,
measure_unit_type: Util Satisfaction_unit Currency_unit,
)
(
Ordinal_utility ?ordUtil
= Attribute_characterizing_a_preference,
:= [?ordUtil attribute of: a Preference],
\. Attribute_characterizing_a_situation_that_is_a_right_or_a_duty )
}
p{ (Attribute_expressing_a_satisfaction
= Attribute_characterizing_an_agent_experiencing_a_satisfaction,
:=> "a measure of the satisfaction of an agent which is a group of
individual agents is an aggregation of measures for the satisfactions
of these individual agents;
for software agents, a measure of satisfaction may be a measure of how
well they have (or will be able to) achieve the goals they have;
a measure may be an aggregation of measures for different criteria",
\. ne{ (
Well-being = Wellness Welfare, /^ Characteristic )
Happiness_as_attribute Joy_as_attribute Pride_as_attribute
} )
(Fitness-to-satisfy-an-agent-or-a-use
= Attribute_characterizing_a_participant_to_a_potential_satisfaction,
\. (
Economic_value_of-at-least-1-thing_for-at-least-1-agent =
Economic_utility )
p{ (
Fitness_for_an_agent = Conformity_to_the_preferences_of_an_agent,
:= ^"how (and how much) a Thing may lead to the satisfaction of an Agent",
:=> "whether or not something leads to the dissatisfaction of an
agent depends on the preferences of each Agent but some preferences are
this depends on the preferences and goals of each Agent but some
preferences are common to most agents; if (instances of) this type and
its subtypes are used without identifying a particular (group of) agents,
they (implicitly but clearly)
should apply to most agents;
the use of attributes instances of this type - instead of attributes not
instances of this type - participates to normalizing the KB, e.g. it leads
to the creation and use of the Attribute type
^'Usability_of_the_qualified_thing_according_to_its_licensing' instead of
the Attribute type ^'Licensing' whose meaning is less constrained and
hence more likely to lead to uses that are not
compatible/comparable/inter-operable",
\. Fitness_for_an_agent_and_a_use )
(
Fitness_for_a_use
= Quality Conformity_to_a_specification_for_something_useful,
:= ^"Characteristic (and valuation) of/increasing the usability of a Thing;
for a particular use or specification, it can be possible to prove that
an attribute measures something that helps this use or helps satisfy
this specification",
//exclusion: Default, //no such exclusion exists since instantiating
// Quality and Default may depend on preferences
\. Fitness_for_an_agent_and_a_use
e{ (Usability \. Re-usability)
Quality_increasing_the_usability_of_the_qualified_thing
} )
} )
}.
1.2.2. Quality Increasing the Usability of the Qualified Thing
Quality_increasing_the_usability_of_the_qualified_thing
=
Quality_increasing_the_conformity_to_a_specification_for_something_useful,
++/^ Usability,
:=> "this category and its direct subtypes might seem strange but
they permit the grouping and organisation of some related
process qualities and entity qualities, e.g. they permit the
organisation/alignment and generalization+complementation of
1. the Dependability/Security related qualities extracted from
this ontology derived from the RESIST taxonomy", and
2. categorisations from [
Zaveri et al., 2016] via the types
Usability-increasing-quality_dependent_of_the_quality_evaluation_context
and Accessibility-or-dependability-or-security_related_quality",
\. p{ (
Usability-increasing-quality_dependent_of_the_quality_evaluation_context
\. (^"Usability-increasing-quality dependent_of when_the_quality-evaluation_occurs"
\. (Timeliness := ^"how up-to-date data is relative to a specific task",
/^ Description_semantic-content_attribute ) )
(^"Usability-increasing-quality dependent_of who_performs_the_quality_evaluation"
\. (Trustworthiness \. Authority) )
Relevancy
(Usability-increasing_description-instrument-quality_dependent_of_the_evaluation_context
/^ Description-instrument_attribute,
\. Naturalness (Understandability = Clarity, ^\++ Naturalness)
Learnability Operability )
)
(
Usability-increasing-quality_independent_of_the_quality_evaluation_context
\. (Conciseness /^ Description-instrument_attribute,
:=> "somewhat opposite to Redundancy" ) )
}
(
Accessibility-or-dependability-or-security_related_quality ?a
//note: the last above partition and the first one below have not yet been mixed;
// this will be done when this mix can be applied to several subtypes
\. p{ (
Quality_increasing_accessibility-or-dependability_but_not_security
++/^ Accessibility Dependability,
\. (
Information_sharability
= Info_sharability Info-sharability_attribute,
\. p{ Description-semantic-content_sharability
Description-instrument_sharability
Description-container_sharability
}
p{ (
Ratio-based_information_sharability
\. (Info-sharability_of_100pc = ^(Info-sharability value: 1))
(ODR-G-R_attribute //next attribute defined in
Section 0.6.2.1
\. ODR-G-R_attribute_derived_from_an_ODR-NG_relation ) )
(Not-ratio-based_information_sharability
\. ODR-NG_attribute )
}
p{
}
p{ (Strictly-internal_information_sharability
:= ^"Sharability only based on relations within the information" )
Non-strictly-internal_information_sharability
}
p{ //'p' even though `Information \. v_p{ Knowledge Data }'
(Knowledge_sharability = kr_sharability)
(Data_sharability \. Structured-data_sharability)
}
ne{ (Info-sharability_for_at-least-minimal_absolute-scalability
\. (Info-sharability_for_unique_place_to_insert-or-search_a_new_object
= ^"Degree of comparability-or-not via specialization relations
between any 2 objects (member objects for
Internal_info_sharability, member-of object otherwise)"
Degree_of_explicit-irredundancy-between-any-2-sub-objects,
\. (Info-sharability_for_differentia
= ^"Degree of explicit_differentia-or-not beween any 2 objects
(member objects for Internal_info_sharability)" )
)__[<=_ AND_{"any inference (and thereby any knowledge engineering
task) directly or indirectly relies on
comparability-or-not_via_gSpec_relations between
at least some objects",
"information sharing scalability requires inferences
for checking and guiding information sharing"
} ] )
Info-sharability_for_at-least-minimal_scalability-wrt-declared-relations
}
)
(Information-sharability_increasing_quality ++/^ Information_sharability)
(Maintenability := ^"ability to undergo repairs and modifications, or
time to restoration from the last failure occurrence")
(Maintenability_increasing_quality ++/^ Maintenability,
\. Testability Observability Stability
(Modifiability \. Extendability) (Reusability ^\++ Modularity) )
(Reliability := ^"measure of continuous delivery of correct service, or
measure of the time to failure",
\. (Safety := ^"reliability in case of catastrophic failure, or
measure of the time to catastrophic failure" ) )
(Reliability_increasing_quality ++/^ Reliability,
\. Robustness Tolerance_to_faults Recoverability
(Resilience \. Survivability) )
)
(
Quality_increasing_accessibility_and_dependability_and_security
++/^ Accessibility Dependability Security,
\. (Availability //what "Denial of service attacks" compromise
\. e{ Readiness_for_a_correct_service Service_correctness }
e{ Process_availability Description-container_availability } )
(Integrity := ^"absence of improper alterations",
\. (Authenticity := ^"integrity of a message content+origin(+other
information, e.g. the time of emission)"
\. e{ (Data-origin_authenticity
:= "whether the data truly originates from a particular agent" )
(Process_authenticity
:= "whether a process authentically did - or was object of -
particular actions (after/before some others)" )
} )
e{ Process_integrity Description-semantic-content_integrity
Agent_integrity } )
(Accountability := ^"Availability&integrity of the identity of the
person who performed an operation",
\. e{ Process_accountability Agent_accountability } )
(Non-repudiability //agent tracability, proof of agent authenticity
//no (action too):
// /^ Attribute_of_description_content-or-result-or-instrument-or-container,
\. (Non-repudiability_of_origin
:= ^"availability and integrity of the identity of message sender" )
(Non-repudiability_of_origin
:= ^"availability and integrity of the identity of a message receiver" ) )
(Trustability
\. (Autorisability
:= "represents whether an agent can do some action on something,
based on their characteristics and Action Control Policies" ) )
(Freshness
/^ Attribute_of_description_content-or-instrument-or-result-or-container,
:= "the (received) object received by an entity is not a copy of another
received by the same or another entity in the past" )
Tolerance_to_faults
Graceful degradation
)
(
Quality_increasing_security_but_not_accessibility_nor_dependability
++/^ Security,
\. (Confidentiality
:= ^"(relative) absence of (unauthorized) disclosure of information
that may permit particular agent to infer particular information",
\. Privacy )
Unlinkability Anonymity )
}
(
Completeness_with_respect_to_a_world_or_a_specification_for_something_useful
\. ne{ (Representation-completeness_with_respect_to_a_world // ++/^ Relevancy,
\. (Accuracy = Validity Correctness) //Relevancy Precision
(Description-semantic-content_completeness
/^ Description-semantic-content_attribute,
\. Logical_expressiveness Logical_completeness )
(Organization = Cohesiveness, //for any Thing, even a Process
\. Interlinking Intralinking Modularity )
(Origin_verifiability := ^"calcul on the existence of links to a reference
supporting the veracity of the qualified thing" )
)
(Completeness_wrt_specification-or-constraints \. Versatility )
}
(Completeness_of_description_content-or-instrument-or-result-or-container
\. Description-semantic-content_completeness Description-instrument_completeness
Description-container_completeness )
)
(
Consistency_of_behavior-or-content ++/^ Relevancy,
\. (Description-semantic-content_consistency /^ Description-semantic-content_attribute,
\. e{ Logical_consistency Semantic_consistency } )
(Description-instrument_consistency /^ Description-instrument_attribute,
\. e{ Structural_consistency Lexical_consistency } ) )
(
Efficiency \. Performance_efficiency Algorithmic_efficiency)
Usability_of_the_qualified_thing_according_to_its_licensing
//
Cooperativeness //in coop.html
).
1.2.3. Ratio-based Value of a Positive Attribute
Value_of_a_positive_attribute
\. e{ (Absolute_value_of_a_positive_attribute
= Positive_attribute_with_an_absolute_value )
(Percentage-based_value_of_a_positive_attribute
= Percentage_valuated_positive_attribute
Positive_attribute_valuated_with_a_percentage_of_the_maximal-fitness,
\. (Minus100percent_of_maximal-fitness-to-satisfy = -100pc_fit, value: -1)
(0percent_of_maximal-fitness-to-satisfy = 0pc_fit, value: 0)
(100percent_of_maximal-fitness-to-satisfy = 100pc_fit, value: 1)
e{ (0-33percent_of_maximal-fitness-to-satisfy = 0-33pc_fit,
value: (a real minE: 0, maxNE: 0.33) )
(^"[33-67[ percent of maximal-fitness-to-satisfy" = 33-67pc_fit,
value: (a real minE: 0.33, maxNE: 0.67) )
(67to00percent_of_maximal-fitness-to-satisfy = 67to100pc_fit,
value: (a real minE: 0.67, maxE: 1) )
}
e{ (0-20percent_of_maximal-fitness-to-satisfy = 0-20pc_fit,
value: (a real minE: 0, maxNE: 0.2),
\. p{ (Less-than-10-percent_of_maximal-fitness-to-satisfy= 0-10pc_fit,
value: (a real minE: 0, maxNE: 0.1) )
(^"[10-20[ percent of maximal-fitness-to-satisfy"= 10-20pc_fit,
value: (a real minE: 0.1, maxNE: 0.2) )
} )
(20to100-percent_of_maximal-fitness-to-satisfy = 20to100pc_fit,
value: (a real minE: 0.2, maxE: 1),
\. p{ (^"[20-40[ percent of maximal-fitness" = 20-39pc_fit,
value: (a real minE: 0.2, maxNE: 0.4),
\. p{ (^"[20-30[ percent of maximal-fitness"=20-30pc_fit,
value: (a real minE: 0.2, maxNE: 0.3) )
(^"[30-40[ percent of maximal-fitness"=30-40pc_fit,
value: (a real minE: 0.3, maxNE: 0.4) )
} )
(^"[40-60[ percent of maximal-fitness" = 40-59pc_fit,
value: (a real minE: 0.4, maxNE: 0.6),
\. p{ (^"[40-50[ percent of maximal-fitness"=40-50pc_fit,
value: (a real minE: 0.4, maxNE: 0.5) )
(^"[50-60[ percent of maximal-fitness"=50-60pc_fit,
value: (a real minE: 0.5, maxNE: 0.6) )
} )
(^"[60-80[ percent of maximal-fitness" = 60-79pc_fit,
value: (a real minE: 0.6, maxNE: 0.8),
\. p{ (^"[60-70[ percent of maximal-fitness" = 60-70pc_fit,
value: (a real minE: 0.6, maxNE: 0.7) )
(^"[70-80[ percent of maximal-fitness" =70-80pc_fit,
value: (a real minE: 0.7, maxNE: 0.8) )
} )
(80to100-percent_of_maximal-fitness = 80to100pc_fit,
value: (a real minE: 0.8, maxE: 1),
\. p{ (^"[80-90[ percent of maximal-fitness"=80-90pc_fit,
value: (a real minE: 0.8, maxNE: 0.9) )
(90to100-percent_of_maximal-fitness = 90to100pc_fit,
value: (a real minE: 0.9, maxE: 1) )
} )
} )
} )
}.
1.2.4. N-valuated-Logic Values and Modal Values
//see
Section 0.3.1. (Logic Operators) for details/exploitations
Statement_or_logical-value_or_modal-value
\. (Statement_or_logical-value
\. p{ Statement Logical_value } //both previously declared
c{ (Statement_or_logical-value_of_infinite-valued_logic
\. Value_of_fuzzy_logic Value_of_probability_logic)
(Statement_or_logical-value_of-finite-valued_logic
\. e{ (Binary-logic_value \. p{ (FALSE = false) (TRUE = true) })
} )
}
p{ (False \. p{ False_statement False_value }, |. c{FALSE})
(Not_false
\. p{ (True \. p{ True_statement True_value}, |. c{TRUE})
(Neither_true_nor_false |. c{ (Neither_true_nor_false = NTNF) }
\. (Ternary-logic_unknown |. c{ (UNKNOWN ../ NTNF) })
(Ternary-logic_error |. c{ (ERROR ../ NTNF) })
(Ternary-logic_undecidable |. c{ (UNDECIDABLE ../ NTNF) })
)
} )
} )
(
Modal_statement-or-value
\. p{ (Modal_statement = ^(Statement measure: a Modal_value))
Modal_value
}
(Statement-or-value_expressing_a_checking_constraint = PvC,
\. p{ (Checking_constraint = ^(Statement measure: a Checking-constraint_modality),
\. Rule-based-checking_constraint ) /*
Section 3.2.5.3 */
(Checking-constraint_modality /^ Modal_value)
} )
(Statement-or-value_of_alethic_modality = Statement-or-value_about_the_truth_in_the_world,
\. (Statement-or-value_of_alethic-modality_of_
classical_modal_logic
:=> "Every
Normal_modal_logic is a
Regular_modal_logic and every
Regular_modal_logic is a
Classical_modal_logic",
\. p{ (Necessarily_false = Impossible Not_possibly_true, /^ False)
(Not_necessarily_false = Possible Possibly_true,
:=> "may be actually true or actually false",
\. p{ (Contingent /^ Not_necessarily_true,
:= ^"possible and|but not necessarily true" )
(Necessarily_false = Impossible, /^ False)
} )
}
p{ (Necessary = Necessarily_true Not_possibly_false, /^ True)
(Not_necessarily_true = Possibly_false,
\. p{ Contingent
(Necessarily_true /^ True)
} )
} )
e{ //https://en.wikipedia.org/wiki/Modal_logic#Alethic_logic
(Statement-or-value_of_alethic-modality_only_about_logical_possibility
= ^"Statement-or-value_of_alethic-modality where the used modality only
involves logic rules, not physical/... rules of the current world/context")
(Statement-or-value_of_alethic-modality_only_about_physical_possibility
= ^"Statement-or-value_of_alethic-modality where the used modality only
involves physical rules of the current world/context")
(Statement-or-value_of_alethic-modality_only_about_metaphysical_possibility
= ^"Statement-or-value_of_alethic-modality where the used modality only
involves metaphysical rules/axioms of the current world/context")
} )
(Statement-or-value_of_epistemic-modality
= Statement-or-value_about_the_truth_in_an_individual-s_mind_given_what_he_knows )
Statement-or-value_of_temporal-modality
(Statement-or-value_of_deontic-modality
:=> "related to may/must regarding morality/obligations/norms",
\. p{ Value_of_deontic-modality
(Statement_of_deontic-modality /^ Statement,
\. e{ (Statement_authorizing-or-not_some_actions_on_some_possessions ?p
:= [?p descr_instrument of:
[an authorization object:
[1..* action object: (1..* Thing owner: 1..* Agent)] ] ],
\.
(Statement_by_an_agent_authorizing-or-not_some_actions_on_its_possessions
?p := [?p descr_instrument of:
[an agent ?a agent of: (an authorization object:
[1..* action object: (1..* Thing owner: ?a)] )] ] ) )
(Statement_using_a_deontic-modality_to_express_a_best_practice
\.
Statement_using_RFC-2119_to_express_a_best_practice )
} )
}
e{ (Statement-or-value_of_deontic-modality_about_rule_compliance
\. e{ (^"Statement-or-value_of_deontic-modality_about_rule_compliance
as informally defined in RFC 2119"
\. Statement_using_RFC-2119_to_express_a_best_practice )
} )
} )
(Statement-or-value_of_doxastic-modality
:=> "modality expressing 'It is believed by all/some/x/y/... that' " )
).
1.3. Attributes Wrt What They Qualify
Attribute_qualifying_something
\. Complete_set { Situation_attribute Entity_attribute } //not exclusive_set
Exclusive_set{ Situation-specific_attribute Entity_specific_attribute }.
Situation_attribute
= ^(Attribute attribute of: a Situation) //to inherit the non-specific_attributes
\. Complete_set{ (Process_attribute = ^(Attribute attribute of: a Process))
(State_attribute = ^(Attribute attribute of: a State))
}
(Situation-specific_attribute = ^(Situation_attribute not attribute of: an Entity),
\. (Process-specific_attribute = ^(Process_attribute not attribute of: a State),
\. (Process_cooperativeness
\. (Cooperativeness_of_a_process_wrt_its_instruments
\. (Cooperativeness-sum_of_a_process_wrt_its_instruments ?csp
:= ^"sum of the cooperativenesses of the instruments of this process",
:= sum_( {1..* ^(Cooperativeness attribute of:
(a Thing instrument of: ?csp) ) } ) )
(Cooperativeness-average_of_a_process_wrt_its_instruments ?cap
:= ^"average of the cooperativenesses of the instruments of this process",
:= div_( (the Cooperativeness-sum_of_a_process_wrt_its_instruments
attribute of: ?cap),
Cardinality_( {1..* ^(Thing instrument of: ?cap)} ) ) )
) ) )
)
(Attribute_of_situation_via_a_participant_of_it .(Situation, Situation_attribute)
\. (Attribute_of_process_via_a_participant_of_it .(Process ?p, Process_attribute ?pa)
:= [?pa attribute of: (a Thing process_participant of: ?p)]
) ).
Entity_attribute
= ^(Attribute attribute of: an Entity), //to inherit the non-specific_attributes
\. c{ (Spatial-entity_attribute = ^(Attribute attribute of: a Spatial_entity)
Non-spatial-entity_attribute
}
(Entity-specific_attribute = ^(Entity_attribute not attribute of: a Situation),
\. Agent_attribute
(Attribute_of_description_content-or-instrument-or-result-or-container //see Section 1
\. Description-semantic-content_attribute
(Description-instrument_attribute
\. (Description-instrument_usability /^ Usability,
\. Description-instrument_sharability ) ) // /^ Information_sharability
Description-container_attribute ) )
(Statement_attribute = ^(Entity_attribute attribute of: a Statement) ). //Section 1.3.9
Agent_attribute
= ^(Attribute attribute of: an Agent),
\. (Cooperativeness_of_an_agent
\. e{ (Cooperativeness-sum_of_an_agent ?csa
:= ^"sum of the cooperativenesses of past actions of this agent",
:= sum_( {1..* ^(Cooperativeness attribute of:
(a Process agent: (an Agent attr: ?csa), time: a Past_time) )
} ) )
(Cooperativeness-average_of_an_agent ?caa
:= ^"average of the cooperativenesses of past actions of this agent",
:= div_( (the Cooperativeness-sum_of_an_agent attribute of: ?caa),
Cardinality_( {1..* ^(Process agent: (an Agent attr: ?caa),
time: a Past_time ) } ) ) )
} )
(Satisfaction_of_an_agent
\. e{ (Satisfaction-sum_of_an_agent ?ssa
:= ^"sum of the satisfactions of this agent",
:= sum_( {1..* ^(Agent_satisfaction attribute of: (an Agent attr: ?ssa)) } ) )
(Satisfaction-average_of_an_agent ?saa
:= ^"average of the satisfactions of this agent",
:= div_( (the Satisfaction-sum_of_an_agent attribute of: ?saa),
Cardinality_( {1..* ^(Agent attr: ?saa)} ) ) )
} ).
Agents_attribute = ^(Attribute attribute of: {1..* Agent}),
\. (Cooperativeness_of_agents
\. (Cooperativeness-sum_of_agents ?csas
:= sum_( { (1..* ^(Cooperativeness-average_of_an_agent
attr of: (an Agent member of: ({1..* Agent} attr: ?csas)) ) )
} ) )
(Cooperativeness-average_of_agents ?caas
:= div_( (Cooperativeness-sum_of_agents attribute of: ?caas),
Cardinality_( {1..* ^(Agent member of: ({1..* Agent} attr: ?caas))} )
) )
)
(Satisfaction_of_agents
\. (Satisfaction-sum_of_agents ?ssas
:= sum_( { (1..* ^(Satisfaction-average_of_an_agent
attr of: (an Agent member of: ({1..* Agent} attr: ?ssas)) ) )
} ) )
(Satisfaction-average_of_agents ?saas
:= div_( (Satisfaction-sum_of_agents attribute of: ?saas),
Cardinality_( {1..* ^(Agent member of: ({1..* Agent} attr: ?saas))} )
) )
).
1.4. Attribute Aggregating Other Attributes
Attribute_aggregating_other_attributes
\. Positive_attribute_aggregating_other_attributes.
1.4.1. Positive Attribute Aggregating Other Attributes
Positive_attribute_aggregating_other_attributes
\.(Positive_attribute-of-a-thing_aggregating_pc-valuated_attributes_of_this_thing
\. e{(Positive-attr-of-a-thing_arithmetic-average-of-pc-valuated-attrs-of-this-thing ?a
:= arithmetic_average_({1..* ^(Percentage_valuated_positive_attribute
attr of: (the Thing attr: ?a), != ?a)}) )
(Positive-attribute-of-a-set-of-things_aggregating_pc-valuated-attrs_of_these_things
\. (Positive-attr-of-a-set-of-things_arithm-average-of-pc-valuated-attr-of-the-things ?a
:= arithmetic_average _({1..*
^(Positive-attr-of-a-thing_arithmetic-average-of-pc-valuated-attrs-of-this-thing
attr of: (a Thing member of: (a set attr: ?a)) ) }) ) )
} )
(Positive-attr-of-a-set-of-things
\. (Pos-attr-of-a-set_arithm-average-of-non-default-pc-valuated-attrs-for-given-type
.(Set ?set, ^Percentage_valuated_positive_attribute ?givenAttrType) -% ?a
:= 1 - (sum _({1..* ?givenAttrType attr of: (a Thing member of: ?set) })
/size(?set) ),
\. (Pos-attr-of-a-KB_arithm-average-of-non-default-pc-valuated-attrs-for-the-given-type
.(^Attribute ?givenAttrType) -% ?a
:= Pos-attr-of-a-set_arithm-average-of-non-default-pc-valuated-attrs-for-given-type
_((the KB attr: ?a), ?givenAttrType) )
)
(Positive-attr-of-a-set-of-things_average-of-pc-valuated-attrs-for-the-given-type
.(Set ?set, ?average_fct, ^Percentage_valuated_positive_attribute ?givenAttrType) -% ?a
:= ?average_fct _({1..* ?givenAttrType attr of: (a Thing member of: ?set) }),
\. (Pos-attr-of-a-KB_arithm_average-of-pc-valuated-attrs-of_its_objects_for-the-given-type
.(^Attribute ?givenAttrType) -% ?a
:= Positive-attr-of-a-set_average-of-pc-valuated-attrs-for-the-given-type
_((the KB attr: ?a), ?arithmetic_average, ?givenAttrType) ) )
).
2. Situations
2.1. Relations From Situations
relation_from_a_Situation .(Situation, *)
\. p{ relation_from_a_Situation_to_a_Situation relation_from_a_Situation_to_an_Entity }.
2.1.1. Relations From Situations To Situations
relation_from_a_Situation_to_a_Situation .(Situation, Situation)
/^ relation_to_a_Situation,
\. (predecessor_situation converse: successor_situation,
\. p{ predecessor_process predecessor_state }
(cause converse: consequence, \. p{ cause_state cause_process} )
(consequence \. p{ consequence_state consequence_process} ) )
p{ (relation_from_a_Situation_to_a_Process \. predecessor_process)
(relation_from_a_Situation_to_a_State
\. (predecessor_state converse: successor_state,
\. beginning_state precondition cause )
(successor_state \. end_state postcondition consequence purpose ) )
}.
2.1.2. Relations From Situations To Entities
relation_from_a_Situation_to_an_Entity .(Situation, Entity)
/^ relation_to_an_Entity,
\. p{ (relation_from_a_Situation_to_a_non-contextualizing_entity
\. (relation_from_a_Process_to_a_non-contextualizing_entity .(Process, Entity)
\. e{ (relation_from_a_Process_to_a_non-contextualizing_attribute
.(Process, Entity) \. manner speed )
process_participant
} ) )
relation_from_a_Situation_to_a_contextualizing_thing
}.
2.1.2.1. Relation From Situations To Contextualizing Things
relation_from_a_Situation_to_a_contextualizing_thing = situation_contextualizing-thing
\. (universally-quantified-situation_contextualizing-thing .(Situation ?si, Thing ?t)
:=> [?si __/ [ .]0--100%] Situation relation: a Thing] ],
relation_from_a_universally-quantified-Situation_to_a_Spatial-entity
)
e{ (relation_from_a_universally-quantified-Situation_to_a_Spatial-entity
.(Situation ?si, Spatial-entity ?sp)
\. place
(relation_from_a_Process_to_a_Spatial-entity .(Process, Spatial-entity)
\. from_place (to_place = destination)
path_length .(Process -% Spatial_attribute)
via_places .(Situation,
{Spatial-entity+} //non-empty distributive set of
) ) ) // spatial entities
(relation_from_a_Situation_to_a_Temporal-attribute .(Situation, Temporal_attribute)
\. time //as noted in Section 0.6, if Present is valuated, ^'a Past_time' and
// ^'a Future_time' are usable as destinations of ^'time' relation
// in assertions or queries
(from_time = since_time) (to_time = until_time) duration
via_times .(Situation, {Temporal_attribute+}) )
relation_from_a_Situation_to_a_modality
}.
2.1.2.2. Process Participants
Participants vs. modifications (creation, update, deletion)
Legend: "-": "unexpected" (bad practice, ...); "+": "expected";
" ": "not un-expected" (but, if subtypes exist, an enticement to use them is valuable);
"-/+": "unexpected in I.T., expected in the physicical world";
other: only subtype where expected |
| not modified |
non-intrinsically modified |
intrinsically modified |
*-agent | | |
|
agent | | |
– |
initiator | + | – |
– |
permanent_agent | | + |
– |
from-agent | + | – |
– |
to-agent | – | recipient |
patient |
input_or_output | | |
|
input_only | | |
|
input-only_object | + |
–/+ |
deleted_input |
instrument | + | –/+ |
–/+ |
parameter | + | – |
– |
input-output | – | + |
+ |
output_only | – | – |
+ |
process_participant .(Process, Entity) = case_relation_with thematic_relation_with,
\= process-participant_wrt_modification,
\. e{ agent_or_from-or-to-agent input_or_output }[__ use] //below
p{ constant_participant temporary_participant }
p{ (core_participant \. main_participant) non-core_participant }.
process-participant_wrt_modification
\. p{ (unmodified_process-participant \. e{ unmodified_agent unmodified_input-or-output })
(modified_process-participant
\. p{ (participant_that_is_modified_but_not_intrinsically
\. e{ participant_that_is_updated_but_not_intrinsically }
e{ agent_that_is_modified_but_not_intrinsically
input-or-output_that_is_modified_but_not_intrinsically
} )
(intrinsically-modified_participant
\. p{ created_participant intrinsically-updated_participant deleted_participant }
e{ intrinsically-modified_agent intrinsically-modified_input-or-output } )
}
p{ (created_participant \. e{ created_agent created_input-or-output })
(updated_participant
\. p{ participant_that_is_updated_but_not_intrinsically
intrinsically-updated_participant
}
e{ updated_agent updated_input-or-output } )
(deleted_participant \. e{ deleted_agent deleted_input-or-output })
} )
}
p{ (participant_that_is_not_modified_or_at_least_not_intrinsically
\. p{ unmodified_process-participant
participant_that_is_modified_but_not_intrinsically
} )
(intrinsically-modified_participant
:=> "by '
intrinsic', the usual philosophical meaning is here refered
(without intrinsicism), e.g., parts are intrinsic while colors, containers
and space/time positions generally are not unless the modified thing is
'specifically dependent' on them; for an information record/structure/object,
any modification of its recorded parts, attributes or methods is an
intrinsic modification" )
}.
agent_or_from-or-to-agent .(Process ?p, Causal_entity ?ce) = do-er doer,
\. (
agent
\. p{ permanent_agent (temporary_agent \. initiator) }
(agent_and_instrument .(Process ?p, Instrument ?i)
:= [?p agent: (?i instrument of: ?p)] ) )
n{ from_agent
(to_agent \. n{ (
recipient \.
beneficiary .(Process, Volitional_agent))
(
patient =
experiencer) } )
}
p{ (agent_that_is_not_modified_or_at_least_not_intrinsically
\. p{ (unmodified_agent \. initiator from_agent)
(agent_that_is_modified_but_not_intrinsically \. c{
recipient })
}
agent __[modality: by_default_with_warning_if_used_otherwise] )
(intrinsically-modified_agent
\. p{ created_agent (intrinsically-updated_agent \. c{
patient } )
deleted_agent
} )
}.
input_or_output .(Process ?p, sub#Individual ?i)
\. p{ (
input_only
\. p{ (core_input-only = input-only_object, := [?p, core input-only: ?i],
\. p{ unmodified_input-only_object
(modified_input-only_object
\. p{ input-only_object_that_is_modified_but_not_intrinsically
(intrinsically-modified_input-only_object \. deleted_object)
} )
}
p{ (core_physical_input-only = input-only_physical-object,
:= [?p core_input-only: (?i type: Physical_object)] )
(core_non-physical_input-only = input-only_non-physical-object)
} )
(non-core_input-only
\. e{ (parameter \. p{ input_parameter process_parameter output_parameter })
(instrument \. p{ non-physical_instrument physical_instrument })
} )
}[__ use]
p{ (
unmodified_input-only
\. e{
parameter non-physical_instrument input-only_non-physical-object } )
(
modified_input-only
\. e{
physical_instrument input-only_physical-object }
p{ input-only_that_is_modified_but_not_intrinsically //no more details below
(intrinsically-modified_input-only
\. p{ (
deleted_input \. deleted_object)
intrinsically-updated_input-only } )
} )
} )
(
input-output
\. p{ unmodified_input-output //as below
(modified_input-output
\. p{ input-output_that_is_modified_but_not_intrinsically //below
intrinsically-modified_input-output //below
}
p{ (modified_input-output_object := [?p, core modified_input-output: ?i])
modified_non-core_input-output
} )
} )
(
output_only = intrinsically-modified_output-only
core_output-only created_output created_object,
\. p{ physical_output-only non-physical_output-only } )
}
c{ (
input
\. p{ input_only input-output }
p{ unmodified_input
(
modified_input
\. p{ input_that_is_modified_but_not_intrinsically
(
intrinsically-modified_input
\. p{ intrinsically-modified_input-only //above
intrinsically-modified_input-output //as above
} )
}
p{ (
modified_input_object := [?p, core modified_input: ?i],
\. p{ modified_input-only modified_input-output } ) //above
modified_non-core_input
} )
} )
(
output = result,
\. p{ input-output
output_only //above: (intrinsically-modified created object)
} )
}
p{ (unmodified_input-or-output //not deleted, not created/assigned, not updated
\. p{ unmodified_input-only unmodified_input-output unmodified_output-only } )
(modified_input-or-output
\. p{ (
modified_object := [?p, core modified_input-or-output: ?i],
\. modified_input_object input-only_object) //above
(modified_non-core_input-or-output \. modified_non-core_input) //above
}
p{ modified_input-only modified_input-output //above
output-only //above: (intrinsically-modified created object)
}
p{ (input-or-output_that_is_modified_but_not_intrinsically
\. p{ input-only_that_is_modified_but_not_intrinsically //as above
input-output_that_is_modified_but_not_intrinsically
} )
(intrinsically-modified_input-or-output
= created-or-intrinsically-updated-or-deleted_input-or-output,
\. p{ (
intrinsically-modified_object
:= [?p, core intrinsically-modified_input-or-output: ?i] )
intrinsically-modified_non-core_input-or-output
}
c{ (intrinsically-modified_input = deleted-or-intrinsically-updated_input,
\. p{ intrinsically-modified_input-only //above
(intrinsically-modified_input-output
= intrinsically-updated_input-output )
}
p{ deleted_input
(intrinsically-updated_input
\. p{ intrinsically-updated_input-only
intrinsically-modified_input-output } )
} )
output-only //above: (intrinsically-modified created object)
}
p{ intrinsically-modified_input-only //above
intrinsically-modified_input-output //above
output-only //(intrinsically-modified created object)
}
p{ deleted_input //below
(created-or-intrinsically-updated_input-or-output
= created-or-modified_output , /^ output,
\. p{ (created_output = created_object)
(intrinsically-modified_input-output
= intrinsically-modified_input,
\. p{ (intrinsically-modified_object
\. material resource muted_object)
intrinsically-modified_instrument
} )
} )
}
c{ intrinsically-modified_input
\. p{ deleted_input intrinsically-modified_input-output } )
(created-or-modified_output
} )
} )
}
p{ (created_input-or-output \. p{ created_input-output output-only })
(updated_input-or-output \. p{ updated_input-only updated_input-output updated_output-only })
(deleted_input-or-output = deleted_input deleted_object)
}
p{ (physical_input-or-output := [?p input_or_output: (?i type: Physical_object)],
\. p{ (physical_input-only
\. p{ core_physical_input-only //= input-only_physical-object
(non-core_physical_input-only \. physical_instrument)
} )
physical_input-output physical_output-only
} )
(non-physical_input-or-output
\. p{ (non-physical_input-only
\. p{ core_non-physical_input-only //= input-only_non-physical-object
(non-core_non-physical_input-only \. e{ parameter non-physical_instrument })
} )
non-physical_input-output non-physical_output-only
} )
}
p{ (core_input-or-output = input-or-output_object
core_object,
:= [?p, core input-or-output: ?i],
\. p{ core_input-only core_input-output core_output-only } )
(non-core_input-or-output
\. p{ non-core_input-only non-core_input-output non-core_output-only } )
}[__ use].
2.2. Processes wrt. Their Relations
Process
\= n{ //old?: naming of 2 partitions:
Process_wrt_input_modification
(Process_wrt_goal
\. (Process_wrt_CRUD
\. n{ Getting-or-retrieving //below
(Creating_or_updating_or_deleting
\. p{ Creating-or-updating-or-deleting_without_object-intrinsic-modification
Creating-or-updating-or-deleting_via_object-intrinsic-modification
} ) //details below
} ) )
(Process_wrt_core-object_type |^ Type_wrt _(core-object_natural-type)
\. n{ //not exclusive??? how to tell Type_wrt???
(
Process_having_a_physical_object_as_core_object
:= [Process core_object: a Physical_object] )
(
Process_having_an_information_object_as_core_object
:= [Process core_object: an Information_object] )
(
Process_having_an_agent_as_core_object
:= [Process core_object: an Agent],
\. Restriction_of_an_agent )
} )
}
n{ Union-or-addition_based_process
Intersection-or-substraction_based_process
} .
Process_wrt_input_modification
\. p{ (Process_not_modifying_its_inputs_or_at_least_not_intrinsically
= ^(Process intrinsically-modified_input: 0 Thing),
\. p{ Process_not_modifying_its_inputs //below
Process_modifying_some_of_its_inputs_but_never_intrinsically //below
} )
(Process_intrinsically_modifying_an_input
\. Process_intrinsically_modifying_a_core_object ) //modifying, not creating it
}
p{ (
Process_not_modifying_its_core_objects_or_at_least_not_intrinsically
= ^(Process intrinsically-modified_object: 0 Thing),
\. Process_not_modifying_its_inputs_or_at_least_not_intrinsically //above
p{ Process_not_modifying_its_core_objects //below
Process_modifying_some_of_its_core_objects_but_never_intrinsically //below
}
p{ Getting-or-retrieving_without_object-intrinsic-modification //below
Creating-or-updating-or-deleting_without_object-intrinsic-modification
Conservatively_creating Conservatively_modifying
} )
(Process_intrinsically_modifying_a_core_object
= ^(Process intrinsically-modified_object: 1.* Thing) )
}
p{ (
Process_not_modifying_its_inputs = ^(Process modified_input: 0 Thing),
\. (Process_not_modifying_its_core_objects = ^(Process modified_input_object: 0 Thing))
ne{ Creating-or-updating-or-deleting_without_input_modification //below
Getting-or-retrieving_without_input_modification //below
}
(Function-based_process_on_information_object
input: 1..* Info_object, output: 1..* Info_object
) )
(Process_modifying_an_input_intrinsically-or-not
\. p{ (
Process_modifying_some_of_its_inputs_but_never_intrinsically
= ^(Process modified_input: 1..* Thing,
intrinsically-modified_input: 0 Thing),
\. (
Process_modifying_some_of_its_core_objects_but_never_intrinsically
= ^(Process modified_object: 1..* Thing,
intrinsically-modified_object: 0 Thing) ) )
(Process_intrinsically_modifying_an_input
= ^(Process intrinsically-modified_input: 1..* Thing),
\. (
Process_intrinsically_modifying_a_core_object
\. p{ (Process_structurally_modifying_an_object
\. p{ Process_additively_modifying_an_object
Process_non-additively_modifying_an_object
} )
Process_intrinsically-but-not-structurally_modifying_an_object
} ) )
} )
}
(Process_about_an_increase_or_decrease).
Getting-or-retrieving
\. p{ (Getting-or-retrieving_via_object-intrinsic-modification
/^ Process_intrinsically_modifying_a_core_object,
\. Info-object_getting-or-retrieval_directly_used_for_creation-or-update )
(Getting-or-retrieving_without_object-intrinsic-modification
/^ Process_not_modifying_its_core_objects_or_at_least_not_intrinsically,
\. e{ Getting-or-retrieving_of_a_physical_object_by_moving_it
(Information-object_getting-or-retrieval_without_object-intrinsic-modification
:=> "e.g., as in the
Read operations in databases,
\. (Information-object_getting-or-retrieval_that_is_not_also_a_creation-or-update
\. ^"Getting-or-retrieving_of_an_information_object
without_input-output-variable_initialization" ) )
} )
}.
Creating-or-updating-or-deleting_without_object-intrinsic-modification
/^ Process_not_modifying_its_core_objects_or_at_least_not_intrinsically,
\. p{ (Creating-or-updating-or-deleting_without_input_modification
/^ Process_not_modifying_its_inputs,
\. (Creating-or-updating-or-deleting_of_information_object_without_input_modification
/^ Function-based_process_on_information_object ) )
(Creating-or-updating-or-deleting_with_some_input_modification_but_never_intrinsically
/^ Process_modifying_some_of_its_inputs_but_never_intrinsically
}
n{ (Creating_without_object-intrinsic-modification created_output: 1..* Thing,
\. Creating_by_duplication_of_the_core_objects ) //below
(Updating_without_object-intrinsic-modification
non-intrinsically-modified_input-output: 1..* Thing)
(Deleting_without_object-intrinsic-modification deleted_object: 1..* Thing)
}
n{ (Creating-or-updating-or-deleting_by_duplication_of_the_core_objects ?p
created-or-intrinsically-modified-or-deleted_input-or-output:
1..* ^(Thing copy of: (a Thing input of ?p)),
\. Creating_by_duplication_of_the_core_objects ?p
\. Creating_an_information-object_via_duplication ) ) //below
(Creating-or-updating-or-deleting_by_association_without_duplication
\. n{ (Creating_by_associating_to_core_objects
/^ Creating_without_object-intrinsic-modification,
\. Creating_an_information-object_by_association )
(Updating_by_associating_to_core_objects
/^ Updating_without_object-intrinsic-modification,
\. Updating_an_information-object_by_association )
(Deleting_by_associating_to_core_objects
/^ Updating_without_object-intrinsic-modification,
\. Deleting_an_information-object_by_association Deactivating )
} )
}.
Creating-or-updating-or-deleting_via_object-intrinsic-modification
:=> "e.g., as in the
Create, Update and Delete operations in databases,
/^ Process_intrinsically_modifying_a_core_object,
\. p{ (Creating_or_updating-by-adding-to_via_object-intrinsic-modification
:=> "e.g., as the
Create operations for databases",
\. p{ Creating_without_updating-by-adding-to_via_object-intrinsic-modif
Updating-by-adding-to_via_object-intrinsic-modification
} )
(^"Updating-without-adding-to-nor-removing-from
via_object-intrinsic-modification"
:=> "e.g., as the
Update operations for databases" )
(Deleting-or-deactivating-or-removing-from_via_object-intrinsic-modification
:=> "e.g., as the
Delete operations for databases"
\. p{ ^"Deleting_without_removing-from-nor-deactivating
via_object-intrinsic-modification"
(Deactivating_or_removing-from_via_object-intrinsic-modification
\. p{ (Deactivating_via_object-intrinsic-modification
/^ "Updating-without-adding-to-nor-removing-from
via_object-intrinsic-modification" )
Updating-by-removing-from_via_object-intrinsic-modification
} )
} )
}
n{ (Creating_without_updating-by-adding-to_via_object-intrinsic-modification
\. )
(Updating_via_object-intrinsic-modification
\. p{ ^"Updating-without-adding-to-nor-removing-from
via_object-intrinsic-modification"
(^"Updating-by-adding-to-or-removing-from
via_object-intrinsic-modification"
\. p{ Updating-by-adding-to_via_object-intrinsic-modification
Updating-by-removing-from_via_object-intrinsic-modification
} )
} )
(^"Deleting_without_removing-from-nor-deactivating
via_object-intrinsic-modification"
deleted_input: 1..* Thing )
}.
Process_having_an_information_object_as_core_object
object: 1..* Info_object,
\. n{ (Information-object_getting-or-retrieval
\. p{ Info-object_getting-or-retrieval_directly_used_for_creation-or-update //below
Information-object_getting-or-retrieval_that_is_not_also_a_creation-or-update
}
n{ Info-object_reading (Info-object_selection \. Info-object_search)
(Info_object_extraction \. Info-object_interpretation)
} )
(Information-object_creation-or-update
input: 1..* Info_object, output: 1..* Info_object,
\. n{ (
Information-object_aggregation
/^ Union-or-addition_based_process,
\. (Information-object_synthesis
\. (Modeling succ: Designing Planning)
Designing Planning Conservative_merging ) )
(
Information-object_selection-or-intersection-or-substraction
/^ Intersection-or-substraction_based_process,
\. p{ (Info-object_getting-or-retrieval_directly_used_for_creation-or-update
\. Copying Storing Distributing Sharing )
(^"Information-object_creation-or-update not just using the
result of a selection-or-intersection-or-substraction"
\. Representing Teaching
(Analysing \. (Predicting succ: (Assessing succ: Correcting))
(Monitoring succ: (Diagnosis succ: Repairing))
Assessing Diagnosis ) )
} )
(
Information-object_transformation_or_initialization
\. p{ (Information-object_update_without_object-intrinsic-modification
/^ Updating_without_object-intrinsic-modification )
(Information-object_update_via_object-intrinsic-modification
/^ Updating_via_object-intrinsic-modification )
}
p{ (Information-object_transformation
\. Translating Exporting Repairing Reconstructing )
(Information-object_initialization \. Assigning Writing)
} )
(
Information-object_creation_via_an_association
\. Comparing
(Valuating = Evaluating,
\. e{ Validating
(Valuating_satisfaction .[?agent, ?object, ?util] ?v
:= [?v agent: ?agent,
object: a Thing ?object, //cardinal/ordinal utility
result: (a Like-or-dislike-or-preference_description
part: [?object attr: an Utility ?util]) ],
derived_relation-type: (valuation .(?object, ?util)
\. valuation_by .(?agent, ?object, ?util) )
) ) )
(
Information-object_update_via_an_association
\. Indexing Annotating Classifying Aligning )
}
Inferencing )
Information-object_deletion
}.
3. Description Content/Instruments/Results/Containers
(Additional Types for Creating, Storing or Accessing
Representations of Entities/Situations)
A "description content" represents (the meaning of) a real/imaginary thing.
This representation uses "description instruments" and is stored inside at least one
"description container". More details on description objects and their relationships are given.
/*
any Thing //(referent,object), e.g. Tom, [Tom place: a mat], (*&Tom = ^(Thing repr: &Tom))
description_semantic-content: //this type must be interpreted in a special way!
0..* (Description_semantic-content //(internal repr/thought) e.g. &Tom, &[Tom place: a mat]
semantic_abstract_description_result:
1..* (Semantic_abstract_description_result //(symbol/id) e.g. &&Tom, &&[Tom place: a mat]
semantic_concrete_description_instrument:
1..* (Semantic_concrete_description_instrument: //e.g. "[Tom place: a mat]"
description_container:
1..* (Description_container //e.g. &0xFA01, RAM, File
physical_support: 1..* Physical_entity ) ) ) ).
any Situation
description_semantic-content:
0..* (Proposition
logic-independent_semantic_description_result:
1..* (sub#Statement_of_a_proposition = sub#Logical_statement,
logic-dependent_description_instrument:
1..* (sub#Logical_statement
concrete_description_instrument: 1..* String ) ) ).
Example:
^"content-representation of John's car" descr_instrument: 1..*
(^"abstract elements representing John's car" descr_instrument: 1..*
(^"concrete elements used for representing the abstract elements representing John's car"
descr_container: 1..* ^"description container that includes concrete elements used for
representing the abstract elements representing John's car" ) ).
*/
At its heart, the initial creation of information is based on description processes.
Here is a representation of such processes.
any Description_process
input: 0..* Thing, //e.g. a Situation or a Cat, as it is perceived by someone
output: 0..* Abstract_description_instrument //e.g. a Statement, a Function
0..* Concrete_description_instrument, //e.g. a String, a Graphic
(a Description_content ?dc
descr_instrument: {1..* Description_instrument ?di} ?dis,
descr_container: {1..* Description_container ?dctn} ?dctns ),
instrument: /* 0..* Description_instrument */ ?dis, //e.g. terms and a Language
agent: 1..* Agent ?writer,
recipient: ({1..* Agent} ?readers attr: (a Satisfaction_of_agents ^\++ ??) ),
attribute: a Cooperativeness-average_of_a_process_wrt_its_instruments.
/*
Description_content-or-instrument-or-result-or-container = Description_object //depth 5
Description_container //E.g. File, Software, Web_server, KB_server
Description_semantic-content //E.g. Proposition_content //depth 6
Description_instrument-or-result = Information-object //e.g. Proposition
p{ Fully-informal_information-object Not-fully-informal_information-object }
p{ Abstract_description_instrument-or-result
Abstract_description_instrument-or-result_wrt_the_described_thing
Situation_abstract_description_instrument-or-result //E.g. Principle_of_Coriolis_acceleration
Process_abstract_description_instrument-or-result
Control-structure_based_description_instrument-or-result //E.g. While_loop, Procedure
Declarative_based_abstract_description_instrument-or-result //E.g. Petri-Net
Search_algorithm
Graph-traversal_and_path-search_algorithm //E.g. the A* algorithm
State_abstract_description_instrument-or-result //E.g. Object_oriented_class, Array
Entity_abstract_description_instrument-or-result //E.g. Path_description, Integer
Abstract_description_instrument-or-result_wrt_the_used_method_or_instrument
Non-declarative_abstract_description_instrument-or-result
Declarative_abstract_description_instrument-or-result
Semantic_abstract_description_instrument-or-result
Semantic_description_instrument //E.g. Java_semantic, Logic_semantic, Type
Semantic_description_result //E.g. Semantic_of_a_KB, Semantic_of_a_program
Logic-independent_semantic_description_result //E.g. Logical_statement
Logic-dependent_description_instrument //E.g. Logical_sentence
Structural_abstract_description_instrument-or-result
Abstract_data_type //E.g. Object_oriented_class, Array, Integer
Structural_abstract_language-or-language_element //E.g. Java_abstract_grammar
Concrete_description_instrument-or-result
Concrete_description_instrument //E.g. Java_concrete_grammar, Character
Concrete_description_result //E.g. Java_concrete_function
Semantic_concrete_description_instrument
Structural_concrete_description_instrument
}
p{ Fully-declarative_information-object Non-fully-declarative_information-object }
p{ Expression //cannot have a truth value|status, e.g., Word, Quantifier, ...
Statement_or_proposition //has or can have a truth value|status //depth 7
Statement = Information //rt instance //e.g. Type_description/definition
Proposition = relation //can have -- but does not have -- truth value|status //depth 8
}
Semantic_information-object = Representation_object //but still viewable as !semantic
Non-semantic_description_instrument-or-result
Lexical_information-object //depth 8
Structural_information-object //depth 8
!ADT //Abstract_function, ...
Abstract_data_type //depth 10
*/
Description_content-or-instrument-or-result-or-container = Description_object,
derived_relation-type: (description_content-or-instrument-or-result-or-container = descr,
\. p{ description_semantic-content description_container
(description_instrument-or-result
\. p{ description_result description_instrument })
}),
\. p{ (
Description_semantic-content .[Thing ~% ?d] ?d
=
Thing_actually_described_by_a_description-instrument-or-result ,
:= ^"Thing that is actually represented, e.g.
1. when a particular cat or type of cats is referred to or defined by a person,
what is actually represented is not the real cat(s) but the person's mental object
for the cat(s),
2. when the representation is a statement or is defined, what is actually represented
may not be what the representation author really intended to represented",
attr: 0..* Description-semantic-content_attribute, //e.g. Consistency, Completeness wrt ...
\. (Description_of_relations_between_parts_of_an_entity
\. (Architecture \. Software_architecture)
(Design_pattern \. Software_architecture_design_pattern) ),
derived_relation-type: (description_semantic-content = descr_content),
description_instrument: 1..* Description_instrument
)
(
Description_instrument-or-result // =
Information_object
.[Description_semantic-content ~% ?d] ?d
=
Information_object,
:= ^"Thing useful for representing a Description_semantic-content,
e.g. Term, Statement, Language, Information_repository (Database, ...)",
derived_relation-type: description_instrument-or-result,
descr_instr of: 0..* Description_semantic-content,
attribute: 0..* Description-instrument_attribute, //e.g. High-levelness, Translatability,
object of: 0..* ^(Storage output: 1..* Description_container
physical_support: 1..* Physical_entity, //e.g. some Paper or a Disk
input of: 0..* Information-Technology_task ),
\. p{
Semantic_information-object = Representation_object //but still viewable as !semantic
(Non-semantic_description_instrument-or-result //added on 2023-02-28
\. p{
Lexical_information-object //depth 8
(
Structural_information-object
\. { Abstract_data_type Non-ADT_structural_information-object } ) //depth 10
} )
}
c{
Description_instrument
Description_result //= (Information \. v_p{ Knowledge Data }); see
Section 3.2
}
c{ (
Abstract_description_instrument-or-result = Abstract_information_object,
\~=
Abstract_information_object_wrt_the_described_thing //Section 3.2.3 )
(Concrete_description_instrument-or-result
\. c{ Concrete_description_instrument Concrete_description_result }
e{ Semantic_concrete_description_instrument
Structural_concrete_description_instrument } )
}
p{
Type Individual_information-object }
p{ (Expression = ^"group of words that is not a sentence, e.g. Token, Word, Term, Quantifier, ...",
\.
Type ) //see 0.2.1 (some general 2nd-order Types) and now hidden 3.2.4
(Sentence = Statement Statement_from_an_information_technology_viewpoint
Logic-or-not_statement, /*
Section 3.2.5 */
/^ Individual_information-object,
= ^"
group of words (e.g., Question, Command, Exclamation, Grammatical_statement ) that
is complete in itself and makes sense in at least one particular language or logic",
\. (Fully-or-not_declarative_sentence
= Statement_from_a_grammatical_or_philosophical_viewpoint,
/^ Fully-or-not_declarative_information-object,
= ^"grammatically declarative sentence that must be either true or untrue (thus,
it cannot be a question), although the truth or falsehood of the provided
statement may be unknown",
\. p{ (Proposition = Logic_statement relation, //can have truth value|status
= ^"declarative logic statement (hence not restricted to a particular
language); may be asserted or denied",
\. Asserted_proposition ) ) )
}
p{ Fully_non-declarative_information-object
(Fully-or-not_declarative_information-object \. Proposition)
}
p{ Not-fully-declarative_information_object //subtypes in 3.2.2.1
(Fully-declarative_information-object \. e{ Value Fully-declarative_statement }
\. p{ (Semantic_description_instrument-or-result
\. c{ Semantic_description_instrument //E.g. Java_semantic, Logic_semantic, Type
Semantic_description_result //E.g. Semantic_of_a_KB, Semantic_of_a_program
}
p{ (Logic-independent_semantic_description_result \. Logic_statement)
(Logic-dependent_description_instrument \. Logic_sentence)
}
)
(Structural_abstract_description_instrument-or-result //E.g. Java_abstract_grammar
\. Grammar Abstract-data-type )
})
}
p{ Formal_information-object Informal-or-semi-formal_information-object }
p{ Informal_information-object
(Formal-or-semi-formal_information-object
\. p{ (Formal_information-object
:= ^"information object which, given its syntax or embedding module (e.g. document
or statement), can automatically be recognised as refering to only 1 meaning")
(Semi-formal_information-object
\. p{ (Semi-formal_statement /^ Statement, //see below
:= ^"Statement which is a well-formed knowledge representation but
contains some informal terms" )
(Semi-formal_information-object_that_is_not_a_statement)
} )
} )
}
p{ (Information_object_not_composed_of_other_information_objects \. Token)
Information_object_composed_of_other_information_objects /*
Section 3.2.6
categorizes its subtypes according to the structuration by semantic relations:
- none: Unstructured_informal_document
- few predefined one: Structured_document, Database, Object-oriented_program
- defined by end-users: KB (fully formal or not) */
}
)
(
Description_container
.[Description_content-or-instrument-or-result-or-container ~% ?c] ?c
:= ^"Thing containing instances of Language_element (e.g. a File containing a Database)
and/or tool enabling the access to these instances (e.g. a Database server)",
derived_relation-type: (description_container = descr_container) )
}.
3.1. Description Semantic Content
This section is empty on purpose: its objects are always referred-to/accessed-from
Description_instrument-or-result objects,
using inverses of descr_instrument relations (or, more precisely inverse of
semantic_abstract_description_result relations) or,
equivalently, via the '*' shortcut.
3.2. Description Instruments/Results (Information Objects)
Description_instrument-or-result (Information_object) is declared a bit above,
at the beginning of Section 3.
3.2.1. Description Results
Description_result .[1..* Thing ?described_thing ~% ?dr] ?dr
= Information,
derived_relation-type: (description_result = descr_result),
\. v_p{ (Represented_data = Data)
(
Represented_Knowledge =
Knowledge_representation KR) //
Section 3.2.5.3
}
c{ (Abstract_description_result /^ Abstract_information_object,
\. e{ Semantic_abstract_description_result Structural_abstract_description_result } )
(Concrete_description_result /^ Concrete_description_instrument-or-result,
\. e{ Semantic_concrete_description_result Structural_concrete_description_result } )
},
e{ (Semantic_description_result /^ Semantic_information-object,
\. c{ Semantic_abstract_description_result Semantic_concrete_description_result }
ne{ (Like-or-dislike-or-preference_description
.[0..* Attribute_type ?attrRT] //if used, this parameter should be specified first
.[0..* Agent ?a ~% ?d] ?d
= ^"Description that relates 1..* agent ?a to the cardinal/ordinal utilities of
what each ?a likes or dislikes",
.{1..* Atomic_like-or-dislike-or-preference_description}, //via a Function/Array/formula/...
\. p{ (Atomic_like-or-dislike-or-preference_description .[0..* Attribute_type ?attrRT]
//preferences of a same agent should be consistent (default protocol)
// (+maybe: the normalized sum of an agent's contradictory preferences values
// should be the same for all agents)
attr_type:=> ?attrRT, //if given
\. (Atomic_preference_description .[Agent ?a1, a Thing ?o1, a Thing ?o2,
0..* Attribute_type ?attrRT]
= (&[ [?o1 < _(?attrRT): ?o2] believer: ?a1]
result of: (a Valuating_satisfaction agent: ?a1, object: ?o1 ?o2) ) )
(Atomic_valuation_description_wrt_attr .[Agent ?a1, a Thing ?o1, a Utility ?u]
= (&[ [?o1 value: ?u] believer: ?a1] //Utility_function
result of: (a Valuating_satisfaction agent: ?a1, object: ?o1) ),
\. e{ (Atomic_negative_valuation_description_wrt_attr := [?u < 0])
(Atomic_positive_valuation_description_wrt_attr := [?u > 0])
} )
(Atomic_like-or-dislike_description .[Agent ?a1, a Thing ?o1]
= &[ [ [a Liking agent: ?a1, object: ?o1] value: a Logical-or-modal_value ?v
] believer: ?a1 ],
\. e{ (Atomic_description_of_a_disliking := [?v < 0])
(Atomic_description_of_a_positive_liking := [?v > 0])
} )
e{ (Atomic_dislike_description
\. Atomic_negative_valuation_description_wrt_attr
Atomic_description_of_a_disliking )
(Atomic_positive-liking_description
\. Atomic_positive_valuation_description_wrt_attr
Atomic_description_of_a_positive_liking )
} )
(Composite_like-or-dislike-or-preference_description
.[0..* Attribute_type ?attrRT] .[0..* Agent ?a ~% ?d]
= .{2..* Atomic_like-or-dislike-or-preference_description _(?attrRT) _(?a) } )
}
p{ Like-or-dislike_description_without_preference_implication
(Preference_description
=
Preference-relationship_description,
result of: a (
Preference_situation .[?agent, {1..* ?other_thing},
?preferred_thing] ?p
:= [?p agent: ?agent, input: {1..* Thing ?other_thing},
input: a Thing ?preferred_thing, output: ?preferred_thing ],
derived_relation-type:
(preferred_thing .({1..* ?other_thing}, ?preferred_thing)
\. preference_by .(?agent, {1..* ?other_thing}, ?preferred_thing)
) ),
part: 0..*
Ordinal_utility,
\. e{ Preference_
weak-total-ordering
Preference_
semiordering
} )
}
(Non-restrictive_preference_description //to do: refine @@
) )
} )
(Structural_description_result /^ Structural_information-object,
\. c{ Structural_abstract_description_result Structural_concrete_description_result } )
}
ne{ Document_element
}.
3.2.2. Description Instruments
Description_instrument
derived_relation-type: (description_instrument = descr_instr),
\. //each Abstract_description_instrument may have may concrete (re)presentations
c{ (Abstract_description_instrument /^ Abstract_information_object,
\. e{Semantic_abstract_description_instrument Structural_abstract_description_instrument }
Abstract_language-or-language-element )
(Concrete_description_instrument /^ Concrete_description_instrument-or-result,
\. e{Semantic_concrete_description_instrument Structural_concrete_description_instrument }
Concrete_language-or-language-element )
},
e{ (Semantic_description_instrument /^ Semantic_information-object,
\. c{ Semantic_abstract_description_instrument Semantic_concrete_description_instrument })
(Structural_description_instrument /^ Structural_information-object,
\. c{Structural_abstract_description_instrument Structural_concrete_description_instrument})
},
(
Language_or_language-element
\. c{ (Abstract_language-or-language-element
\. c{ Abstract_language-model Abstract_language-element } )
(Concrete_language-or-language-element
\. c{ Concrete_language-model Concrete_language-element } )
}
c{ (Language
part:= 1 Language_model 1 Language_notation 1..* Language_element,
descr_instrument: 1..* Language,
\. p{ (Language_abstract-model = Language_model,
r_member:= only ^(Language_element
descr_instr of: 1..* Abstract_language-element) )
(Language_concrete-model = Language_notation,
r_member:= only ^(Language_element
descr_instr of: 1..* Concrete_language-element) )
}
p{ (Formal_language /^ Formal_information-object,
part:=> only a Formal_information-object)
(Informal-or-semi-formal_language /^ Informal-or-semi-formal_information-object,
\. p{ (Semi-Formal_language part:= a Formal_grammar)
Informal_language } )
}
p{ Programming_language //see below: Section 3.2.2.1
Non-programming_language
}
p{ //some languages permit the use of "instructions" and "assertions"
(Fully-or-not_non-declarative_language /^ Fully-or-not_declarative_information-object,
\. Fully_non-declarative_language )
(Fully-declarative_language /^ Fully-declarative_information-object,
r_member:= only Fully-declarative_information_object,
\. (Fully-declarative_logic-based_language
r_member:= only Logic-based_information_object,
\. (KRL = Knowledge_representation_language,
\. Non-exclusive_set
{ (KRL_model /^ Language_model)
(KRL_notation /^ Language_notation) },
r_KRL of: 1..* Language_element ) )
(Grammar r_member: 1..* Grammar_element,
\. p{ (Formal_grammar /^ Formal_language)
(Informal-or-semi-formal_grammar
/^ Informal-or-semi-formal_language)
}
ne{ (Abstract_grammar /^ Language_model)
(Concrete_grammar /^ Language_notation)
} ) )
}
p{ (Fully_non-declarative_language /^ Fully-non-declarative_information-object,
r_member: only Not-fully-declarative_information_object),
(Fully-or-not_declarative_language \. Logic-based_language )
}
)
(Language_element
\. c{ Abstract_language-element
(Concrete_language-element
\. p{ (Non-symbolic_concrete_language-element
\. (Image_element \. Image) Audio_element )
(Symbolic_concrete_language-element
\. (String_element \. String) (Graphic_element \. Graphic) )
} )
} )
}).
3.2.2.1. Programming Languages
Programming_language /^ Formal_language,
descr_instrument of: 1..* Program,
:= ^"formal language that (solely/also) has 'instructions',
and hence permits the description of programs",
\. /* the categories in italic bold below are derived from
https://en.wikipedia.org/wiki/Programming_paradigm */
Non-exclusive_set //since some languages permit the use of "instructions" and "assertions"
{ (
Fully-or-not_non-declarative_programming_language
/^ Fully-or-not_non-declarative_language,
:= ^"language with which the programmer merely declares properties of the desired result,
but not how to compute it",
\. (Fully_non-declarative_programming_language /^ Fully_non-declarative_language,
\. Procedural_language ) )
(
Fully-or-not_declarative_programming_language /^ Fully-or-not_declarative_language,
:= ^"language with which the programmer can declare properties of the desired result,
rather than giving instructions of how to compute this result",
\. (Fully-declarative_programming_language /^ Fully-declarative_language,
\. Purely-functional_programming_language Purely-logic_programming_language )
(Logic-based_declarative_programming_language
r_member:= only Logic-based_information_object ) //to do: declare!
(Mathematical_programming_language
:= ^"language with which the desired result can be declared as the solution of
an optimization problem" )
)
}
(Functional-or-procedural_like_programming_language
descr_instrument of: 1..* Function_or_procedure,
\. (
Functional_programming_language
:= ^"language with which the desired result can be declared as the value of a series of
function applications",
\. Purely-functional_programming_language )
(
Imperative_language
descr_instrument of: 1..* Non-declarative_information_object,
\. (
Procedural_programming_language
:= ^"language with which instructions can be grouped into procedures" )
(
Object-oriented_language
:= ^"language with which instructions can be grouped according to the
state they operate on" )
) ).
/*to do: categorize instruction/phrase kinds based on
https://en.wikipedia.org/wiki/Programming_paradigm
and, from these kinds, let language kinds be derived */
Expression_in_a_program /^ Expresssion,
\. p{ (Fully-declarative_expression \. IF_THEN_ELSE_expression Pure_function)
(Not-fully-declarative_expression =
Not-fully-declarative_information_object,
\. p{ (Not-fully-declarative_expression_that_can_be_converted_into_a_declarative_one
\. LOOP_expression
Global-variable_set_expression_that_can_be_converted_into_a_declarative_one )
(Not-fully-declarative_expression_that_cannot_be_converted_into_a_declarative_one
\. Global-variable_set_expression_that_cannot_be_converted_into_a_declarative_one )
} )
}
(Control-flow_expression
\. IF_THEN_ELSE_expression LOOP_expression BREAK_expression RETURN_expression )
(Set_expression
\. p{ Local-variable_set_expression
(Global-variable_set_expression
\. p{ (Global-variable_set_expression_that_can_be_converted_into_a_declarative_one
\. "Global-variable_set_expression_that_can_be_converted_into
_a_declarative_one_via_a_monome" )
Global-variable_set_expression_that_cannot_be_converted_into_a_declarative_one
} )
} )
(Function_or_procedure_or_method
\. Pure_function
(Procedure_or_method
\. p{ (Procedure-or-method_that_can_be_converted_into_a_declarative_one
\. "Procedure or method where only the 1st parameter (the class instance
in case of a class method) is modifiable and this parameter is the
environment or has access to it" )
(Procedure-or-method_that_cannot_be_converted_into_a_declarative_one)
}
) ).
Abstract_information_object_wrt_the_described_thing
\. p{ Statement_wrt_the_described_thing //Section 3.2.5.1
Non-statement_information_object_wrt_the_described_thing
}
p{ (Situation_abstract_description_instrument-or-result//E.g. Principle_of_Coriolis_acceleration
descr of: Situation, //precicely, automatically: abstract_description_instrument-or-result
\. p{ (Process_abstract_description_instrument-or-result //E.g. While_loop, Petri-Net
descr of: Process,
\. (Control-structure_based_description_instrument-or-result
\. e{ (Procedure \. Declarative-or-not_function Object_oriented_method)
(Control-structure \. While_loop If_statement)
}
p{(Declarative_control-structure_based_description_instrument-or-result
\. Petri-Net_structure_element )
(Non-declarative_control-structure_based_description_instrument-or-result
\. Global_variable_assignment )
})
(Search_algorithm
\. Graph-traversal_and_path-search_algorithm ) ) //E.g. the A* algorithm
(State_abstract_description_instrument-or-result descr of: State,
\. Non-atomic_abstract-data-type ) //E.g. Object_oriented_class, Array
} )
(Entity_abstract_description_instrument-or-result descr of: Entity,
\. p{ (Spatial_entity_abstract_description_instrument-or-result //E.g. Path_description
descr of: Spatial_entity )
(Non-spatial_entity_description_instrument-or-result descr of: Non-spatial_entity,
\. p{ (Attribute_abstract_description_instrument-or-result //E.g. Integer
descr of: an Attribute )
(Non-attribute-non-spatial-entity_abstract_description_instrument-or-result
descr of: a Non-spatial_entity_that_is_not_an_attribute )
} )
} )
}.
3.2.5. Statements
Statement
= Reference-to-statement_or_non-reference_statement
sub#Statement sub#abstract-structure_statement AS_Phrase
sub#Statement_content_from_a_logic_or_abstract-structure_viewpoint,
:= "Statement (syntactic/structural abstract statement) or reference to it",
//type: Zero-ary-relation_type,//at least for some people (see Section 2.1)
\=
Statement_wrt_the_described_thing Statement_wrt_role //below
Statement_wrt_thruth_or_logic_or_composition //below
Statement_wrt_assertion Statement_wrt_contradiction_or_support, //below
\. p{ (
Non-reference_statement
= NR_statement, //see the subtypes in Section 3.2.5.3
\.
NR_statement_that_can_be_represented_by_an_open-or-closed_logical_formula )
Reference_to_a_statement
}.
3.2.5.1. Statements Wrt. the Described Thing(s)
Statement_wrt_the_described_thing
desc of: a Situation, //State or (Process outcome: a State, result: an Entity,
// pred of: 0..* Process, pred: 0..* Process )
\. p{Statement_describing_an_entity
(Statement_describing_a_situation
\. p{ Statement_describing_a_state
(Statement_describing_a_process //ref (e.g.Fct_call) or not (e.g.Fct_def)
\. (Statement_describing_a_process_on_a_description_object
= Statement_describing_an_information_management_process,
\. p{ (Fully-declarative_statement_describing_an_information_management_process
/^ Fully-declarative_statement )
(Not-fully_declarative_statement
= ^"Executable Statement with side effects" )
}
Statement_describing_an_information_management_process ) )
} )
}.
3.2.5.2. Statements Wrt. Roles (e.g. ODPs, ODRs, Constraints)
Statement_wrt_role
\~ p{ Statement_usable_for_proof //also below
Statement_not_usable_for_proof
}
(Method_description = ^(Statement method_descr of: a Process)
\. (Design_pattern := "how something can be designed",
\. (Ontology-design_pattern = ODP,
:= "description of a method to represent something
while satisfying particular conditions/criteria",
\. (Meta-ODR |. ODR)
(Ontology-design_best-practice
:= "one of the best ODPs to achieve particular good criteria" ) ) ) )
(Design_pattern-or-rule
\. p{ Design_pattern //just above
(Design_rule /^ Checking_constraint,
:= "how something should be designed to achieve particular criteria",
\. Software_design_rule
(Ontology_design_rule = ODR)
p{ (Gradual_design-rule := "the more ... the better",
\. p{ (Ratio-based_gradual_design-rule
\. (Ratio-based_gradual_ODR = ODR-G-R, /^ ODR) )
(Non-ratio-based_gradual_design-rule
\. (Non-ratio-based_gradual_ODR = ODR-G-NR, /^ ODR) )
} )
(Non-gradual_design_rule = Boolean_design_rule,
\. (Non-gradual_ODR = ODR-NG, /^ ODR) )
} )
}
p{ (Checkable_design-pattern-or-rule
\. p{ (Checkable_design-pattern \. (Checkable_ODP /^ ODP))
(Checkable_design-rule
\. (Checkable_ODR /^ ODR,
\. (CODR-G-R /^ ODR-G-R) (CODR-G-NR /^ ODR-G-NR)
(CODR-NG /^ ODR-NG) ) )
} )
(Non-automatically-checkable_design-pattern-or-rule
\. p{ (Non-automatically-checkable_design-pattern
\. (Non-automatically-checkable_ODP /^ ODP) )
(Non-automatically-checkable_design-rule
\. (Non-automatically-checkable_ODR /^ ODR,
\. (NCODR-G-R /^ ODR-G-R) (NCODR-G-NR /^ ODR-G-NR)
(NCODR-NG /^ ODR-NG,
\. (Meta-ODR instance:=> an ODR) ) ) )
} )
} ).
3.2.5.3. Statements Wrt. Statements Wrt. Thruth, Logic Or Composition
Statement_wrt_thruth_or_logic_or_composition
\. (sub#NR_statement_that_can_be_represented_by_an_open-or-closed_logical_formula
\. (sub#NR_statement_that_can_be_represented_via_a_closed_logical-formula
= sub#Logical_NR-statement sub#Logical_content_of_a_logical_NR_statement
sub#NR_statement_of_a_proposition
sub#NR_statement_describing_a_situation sub#Statement,
\= (
rdf#Statement
\. (
owl#NegativePropertyAssertion ?ns
:= [?ns <==> [ [a rdf#statement ?s] [?ns <==> ! ?s] ]]) ) ) )
p{ Statement_that_is_true Statement_that_is_false
(Statement_that_is_neither_true_nor_false = ^(Statement attr:= NTNF),
\. Statement_that_is_undecidable )
}
p{ (Informal_statement /^ Informal_information-object) (Formal_statement \. Formal_KR) }
p{ Non-fully-declarative_statement /^ Not-fully-declarative_information_object,
(Fully-declarative_statement
\. p{ Logic_statement //subtype of Logic-independent_semantic_description_result
Logic_sentence //"sentence" in the sense used in logics
}
(
KR, //
declared in Section 3.2.1
part: 1..* Information_object, //any KR has for part at least 1 Object
\. p{ Formal_KR Semi-formal_KR } ) )
}
p{ (Statement_without_embedding_statement =
Command)
(
Statement_with_embedding_statement
= ^(Statement ?s1 part of: (a Statement ?s2!= ?s1)),
\. p{ (Statement_with_opaque_embedding_statement
=
Statement_with_contextualizing_statement,
= ^(Statement ?s1
statement-contextualizing_statement: (a Statement ?s2 != ?s1)))
(Statement_with_transparent_embedding_statement =Statement_with_white_meta-statement,
\. (Implication_conclusion_with_unasserted_premisse
= ^(Implication_conclusion type: no Asserted_deduction) )
(Unasserted_implication-premise
= ^(Implication_premise type: no Asserted_statement) )
Denotation-level_change_source Denotation-level_change_destination )
} )
}
p{ Statement_without_embedded_statement
(Statement_with_embedded_statement = Meta-statement,
= ^(Statement ?s1 part: (a Statement ?s2!= ?s1)) )
}
(
Logically-atomic_statement ?laS = Minimally-logically-complete_statement,
:= "for any relation ?r part of a Logically-atomic_statement ?laS, ?laS minus ?r is false
(i.e. the AND-set of the other relations part of ?laS is false)"
[ [^r type: relation, part of: ?laS]
=> ! AND{ any ^(relation part of: ?laS, != ^r) } ]
)
(Rule_or_logical-implication = Statement_directy_suporting_logical_inferences,
\. p{ (Logical_implication ?p = Statement_supporting_modus-ponens_and_modus-tollens,
:= ^"Statement translatable to the form [X => Y]"
[?p <=> [a Statement ?p1 => a Statement ?p2]] )
(Rule = Unidirectional_rule Statement_supporting_modus-ponens_but_not_modus-tollens,
:= ^"Statement translatable to the form [X =>> Y]"
[?p <=> [a Statement ?p1 =>> a Statement ?p2]],
\. c{ Rule_without_modal-statement_as_conclusion
(Rule_with_modal-statement_as_conclusion
\. (Rule_with_conclusion-using-should-or-must
\. (
Rule-based-checking_constraint ?c
// /^ Checking_constraint, //
Section 1.2.4
:= ^"Rule_with_conclusion-using-must where the 'must' means that
the constraint should be used for checking statements,
not deriving statements"
^"Rule_with_conclusion-using-must equivalent to a
Rule_without_modal-statement_as_conclusion with False as
conclusion",
:= [?c <=> [a Statement ?p1 =>> False]],
\. v_p{ (Negative_rule-based-constraint
:= ^"Constraint that has False as conclusion or which
uses 'must not' in its conclusion",
\. (Constraint_in_inconsistency-implying_form
:= ^"Constraint that has False as conclusion"
[?c <=> [a Statement ?p1 =>> False]] ) )
Positive_rule-based-constraint
}
p{ (
Rule-based-constraint_not_using_all_possible_inferences
\. (Rule-based-constraint_for_manual_entering
= Prescriptive_constraint ) )
Descriptive_constraint
}) ) )
})
}).
3.2.5.4. Statements Wrt. Assertion
Statement_wrt_assertion
\. p{ (Statement_assertion_equivalent_to_the_asserted_statement = Asserted_statement,
/^ Fully-declarative_statement
(Statement_assertion r_operator:= an Assertion_operator, r_arg: 1 Statement),
= ^(Statement_assertion ?pa r_arg: (1 asserted_statement <=> ?pa)) )
(^"Statement_which_when-interpreted_leads_to an_information-object removal or
modification that is not simply an addition"
/^ Statement_describing_a_process_on_a_description_object,
\. Statement_modification Statement_removal )
}
p{ //this partition is detailed in
Section 3.2.2.1
(Statement_that_could_not_be_asserted,
\. (Program r_member:= 1..* Not-fully-declarative_expression )
Not-fully_declarative_command
)
(Statement_that_can_be_asserted = Fully-declarative_statement,
\~ ne{ (Like-or-dislike-or-preference_description
\. Like-or-dislike-or-preference_description_about_oneself ) //ex Own_preference
(Observation_description = ^(Statement descr_instrument of: an Observation)
\. Own_observation)
Belief
Axiom_or_definition Inference_rule
},
\. e{ (Statement_with_only_a_preference_or-observation_based_argument
\. p{ (Statement_with_only_a_preference-based_argument
= ^(Statement logic-argument: //recursive definition:
only 1..* OR{Like-or-dislike-or-preference_description, //recursion end
Statement_with_only_a_preference-based_argument //recurs.
} ) )
(Statement_with_only_an_observation-based_argument
= ^(Statement logic-argument:
only a OR{Observation_description, //recursion end
Statement_with_only_an_observation-based_argument //recursion
} ),
better-supported_than: any Statement_with_only_a_preference-based_argument )
} )
(Statement_with_an_axiom-or-definition-based_argument
= ^(Statement logic-argument:
1..* OR{ Axiom_or_definition, //recursion end
Statement_with_an_axiom-or-definition-based_argument
} ),
better-supported_than:
any Statement_with_only_a_preference_or-observation_based_argument )
}
},
\. p{ (Unasserted_statement = Statement_that_is_not_an_assertion,
\. p{ Statement_that_could_not_be_asserted
(Statement_that_could_be_asserted_but_is_not /^ Statement_that_could_be_asserted)
} )
(Asserted_statement
\. p{ (Asserted-statement_that_cannot_be_false
=
Statement_that_cannot_be_contradicted Statement_usable_for_a_proof,
\. Axiom Asserted_definition )
(Asserted-statement_that_can_be_false //false = incorrect
//below: Successfully-supported_statement = Validated_statement
// Successfully-contradicted_statement = Invalidated_statement"
\. p{(
Asserted-statement_that_can_be_false_but_not_successfully_contradicted
\. (Asserted-statement_about_one-s-own_preference
=
Asserted_like/dislike/preference_description_about_oneself,
= ^(Asserted_statement agent: an agent ?a,
description of: (a Preference owner: ?a) ) )
(Asserted-statement_about_one-s-own_observation =
Own_observation,
= ^(Asserted_statement agent: an agent ?a,
description of: (a Situation object of: (an Observation
agent: ?a) ) ) )
(
Successfully-supported_statement_that_can_be_false
/^ Successfully-supported_statement, //defined below
:=> "a successfully supported statement cannot be directly
successfully objected/corrected: its arguments must first be
successfully objected/corrected" )
Asserted_axiom
(
Asserted-statement_that_can_be_successfully_contradicted
=
Counter-arguable_statement,//counter-argued/corrected/contradicted
\. p{ (Counter-arguable_statement_not_derived_from_other_statements
:=>
"Asserted fact/belief that is not an axiom, nor an
assertion of own preference or observation, nor
derived from other statements;
here, 'belief' is to be interpreted as a situation
description with recorded authors/believers,
not as the description that they believe the
situation; for scalable knowledge sharing
purposes, when fact descriptions are represented
their believers/authors should be too, i.e. beliefs
should be represented instead of facts" )
(Asserted-statement_derived_from_other_statements
\. (Asserted_deduction
= ^(Asserted_statement ?a formal-or-informal_deduction of:
(an Asserted_statement != ?a) ) ) )
}
(
Belief \. Believed_fact Believed_physical_law) )
} )
} )
}.
3.2.5.4. Statements Wrt. Contradictions or Supports
Statement_wrt_contradiction_or_support
\. p{ (Statement_that_cannot_be_successfully_contradicted
= Not-successfully_contradictable_statement
Statement_that_cannot_have_a_contradiction_worth_to_exploit, //"successfully" implies that
\. p{ ^(Statement type: Statement_that_is_not_an_assertion //see above
__[!type: Successfully-contradicted_statement] )
^(Statement type: Asserted-statement_that_cannot_be_false //see above
__[!type: Successfully-contradicted_statement] )
^(Statement
type: Asserted-statement_that_can_be_false_but_not_successfully_contradicted
__[!type: Successfully-contradicted_statement] )
} )
Asserted-statement_that_can_be_successfully_contradicted //see above
}
p{ (Uncontradicted_statement
\. p{ Statement_that_cannot_be_contradicted
(Statement_that_can_be_contradicted_but_is_not
/^ Asserted-statement_that_can_be_contradicted )
} )
(Contradicted_statement /^ Asserted-statement_that_can_be_contradicted,
= ^(Statement negation: a Supported_statement),
\. Logically-contradicted_statement ) //below
}
p{ Unsupported_statement
(Supported_statement = ^(Statement argument: a Statement),
\. Logically-supported_statement ) //below
}
p{ (Unsupported_or_unsuccessfully-supported_statement
\. p{ Unsupported_statement Logically-but-unsuccessfully-supported_statement } )
Successfully-supported_statement
}
p{ (Uncontradicted-or-unsuccessfully-contradicted_statement
\. p{ Uncontradicted_statement Logically-but-unsuccessfully-contradicted_statement } )
Successfully-contradicted_statement
}.
3.2.5.4.1. Logically-contradicted Statements
Logically-contradicted_statement
= ^(Statement logic-objection_or_correction: a Statement), //Section 0.3.6
\. p{ (Logically-but-unsuccessfully-contradicted_statement
\. p{ (Logically-contradicted_statement_that_cannot_be_successfully_contradicted
/^ Statement_that_cannot_be_successfully_contradicted ) //see above
Unsuccessfully-contradicted_statement_that_can_be_successfully_contradicted
} )
(Successfully-contradicted_statement = Invalidated_statement,
= ^(Statement exclusion: a (Successfully-supported_statement = Validated_statement),
\. p{ (Successfully-contradicted_and_unsuccessfully-supported_statement
= ^(Successfully-contradicted_statement
type: Logically-but-unsuccessfully-supported_statement ) )
Successfully-contradicted_and_unsupported-or-unsuccessfully-supported_statement
} )
}
p{ (Corrected_statement = ^(Statement correcting_statement: a Statement),
\. p{ (Successfully-corrected_statement
= ^(Corrected_statement correcting_statement: an
Uncontradicted-or-unsuccessfully-contradicted_statement ) )
Unsuccessfully_corrected_statement
} )
Contradicted-but-uncorrected_statement
}.
3.2.5.4.2. Logically-supported Statements
Logically-supported_statement
= ^(Statement logic-argument: a Statement),
\.p{ Logically-but-unsuccessfully-supported_statement
(Successfully-supported_statement
/^ ^(Uncontradicted-or-unsuccessfully-contradicted_statement //below
logic-argument _[logic-objection: //(probably not: logic-objection_or_correction)
0 Uncontradicted-or-unsuccessfully-contradicted_statement]
: an Uncontradicted-or-unsuccessfully-contradicted_statement),//see below
:=> "Warning: this definition may lead non-monotonicity if inferencing can
generate arguments/objections"
"Warning: since this type is important (it permits the definition of
other important types) and has no direct full definition, it is crucial
for it to have a complete set of fully defined direct subtypes"
"a successfully contradicted statement cannot be directly
successfully supported: its objections/corrections must first be
successfully objected/corrected",
\.p{ //is this really a partition: is there really nothing else?
(Successfully-supported_observation
= ^(Successfully-supported_statement type: Observation_description,
description_container: a Document ),
:=> "Warning: this definition is application/community dependent
and, strictly speaking, '/^' should be used instead of ':='
in this definition but ':=' is needed for inferencing purposes;
here, the use of Document is meant to require each
observation to be in a recorded source in addition to
not be an Uncontradicted-or-unsuccessfully-contradicted_statement;
an authentified source may need to be required too" )
(Successfully-supported_deduction
= ^(Successfully-supported_statement type: Asserted_deduction) )
}
p{ (Successfully-supported_and_uncontradicted-or-unsuccessfully-contradicted_statement
/^ ^(Successfully-supported_statement
type: Uncontradicted-or-unsuccessfully-contradicted_statement ),
:=> "'/^' is used instead of ':=' because that definition
would be circular if the statement is not uncontradicted" )
Successfully-supported_and_successfully-contradicted_statement
} )
}.
Information_object_composed_of_other_information_objects
=
Composite_information_object Information-repository_representation_instrument,
part: 1..* Information_object,
\. p{ (Composite-information-object_not_structured_by_any_formal_semantic_relation
= Unstructured_informal_document,
attr: a 0-10pc_fit Description-instrument_completeness,
\_ (Composite-concrete-information-object_not_structured_by_any_formal_semantic_relation
\. p{ (Non-symbolic_composite-concrete-information-object
/^ Non-symbolic_concrete_language-element,
\. (Audio_composite-information-object
\. (Audio_file part: 0..* Audio_composite-information-object) )
(Image_composite-information-object
\. (Image_file part: 0..* Image_composite-information-object) ) )
("Symbolic_composite-concrete-information-object
not_structured_by_any_formal_semantic_relation"
/^ Symbolic_concrete_language-element Informal_information-object )
} ) )
(Composite-information-object_structured_by_at_least_some_formal_semantic_relations
\. p{ (Composite-information-object_structured_only_by_few_predefined_relations
attr: a 10-20pc_fit Description-instrument_completeness,
\.
Structured_document-element Database Object-oriented_program )
(Composite-information-object_structured_by_unpredefined_semantic_relations
=
Knowledge_base KB,
attr: a 20to100pc_fit Description-instrument_completeness,
part: Parts_partition
{ 0..1 (Onto-terminology
:= ^"KB part consisting in the list of its non-predefined terms and
the list of formal/informal complete/incomplete definitions
formally associated to the terms",
\. (Ontology := ^"Onto-terminology about formal terms") )
0..1 (Fact_base := ^"part of the KB that is not its onto-terminology",
\. Formal_fact_base )
},
\. p{ (Fully-formal_KB part: Parts_partition{ Ontology Formal_fact_base })
Not-fully-formal_KB
}
e{ (Ontology := ^"KB containing only relations between types")
(Fact_base := ^"KB containing only relations from individuals")
(Thesaurus := ^"KB with an onto-terminology that is not an ontology")
}
ne{ (
KB_about_an_agent .[Agent ?a, KB ?kb],
derived_relation-type: kb_about_this_agent .( ?a, KB ?kb),
description_instrument of: ?a,
part: 0..* (
Like-or-dislike-or-preference_description
:= ^"KRs for the preferences of an Agent"
^(Phrase description_instrument of:
1..* ^(Preference agent: ?a) ) )
0..* ^(
Belief believer: ?a) )
(
KB_of_an_agent
derived_relation-type:
(kb_of_this agent .(Agent ?a -% KB ?kb) = ^(KB ?kb owner: ?a)
) //inverse:_kb
\. (
Agent-s_kb = ^"Agent's KB", /^ KB_about_an_agent,
:= ^"set of rules, preferences and believed facts of an agent;,
set of statements (rules/preferences/facts) which the agent
has explicitly declared that he follows/prefers/believes and
hence that s/he can be judged by"
annotation: "statements declared under duress are not valid;
logically conflicting statements in an agent's kb do not count;
the 'rules of inference' of classical predicate logic (e.g., see
https://en.wikipedia.org/wiki/List_of_rules_of_inference) are
by default part of any agent's kb but may be removed or
complemented by this agent as long as this does not introduce
nor remove internal contradiction in the rest of the principles
nor means to detect any such internal contradiction" )
} )
} )
}.
3.3. Description Containers
Description-container_attribute
\. (
Description-container_quality := ^(Quality attribute of: a Description_container),
\. e{ (Description-container_quality_dependent_of_the_quality_evaluation_context
/^ Quality_dependent_of_the_quality_evaluation_context )
(Description-container_quality_independent_of_the_quality_evaluation_context
/^ Context-independent_quality,
\. p{ (Description-container_quality_directly_easing_the_access_of_an_expected_object
/^ Quality_directly_easing_the_access_of_an_expected_object )
("Context-independent_description-container_quality_not_directly_easing_the
access_of_an_expected_object"
/^ "Context-independent_quality_not_directly_easing_the
access_of_an_expected_object" )
} )
} ).
//satisfaction|confort, efficiency souplesse, easiness
Description-container_maintenability cf. process
Description_container
\. p{ Static_container Dynamic_container }.
Static_container = File Information-repository_container,
:= ^(Description_container
descr_content: an ^(Information-repository_content
:= ^(Description-content
descr_instrument: an
Information-repository_representation_instrument
) ) ),
\. p{ (Dynamic_file := ^"File at least partially generated by a software_tool
in answer to a query or command" )
(Static_File \. Program_file Data_file)
}
p{ (File_not_structured_by_any_semantic_relation
descr_container of: only 1..*
Composite-information-object_structured_only_by_few_predefined_relations )
(File_structured_by_some_semantic_relation
descr_container of: only 1..*
Composite-information-object_structured_by_unpredefined_semantic_relations )
}.
Dynamic_container = Software_tool Software_actor,
agent of: 0..1 (Software_process := ^(Process parameter: a Program_file)),
\. (Software_tool_for_vieving_an_information_repository
\. (Software_tool_for_accessing_parts_of_a_file_or_other_information_repositories
\. (Information_repository_viewer
\. Information_repository_editor )
(Information_repository_management_system
\. FileMS DBMS KBMS ) // Language-element(Text/image/Graph/...)_viewer
) //very bad: image, no copy-paste
(Software_tool_of_a_client-server_architecture
\. (Server_software-tool \. Web_server Mail_server)
(Client_software-tool \. Web_client Mail_client)
).
(Description-container_management_system = Language-element_management_system
Information-object_management_system Document-element_management_system,
\. Static-file_management_system Set-of-static-files_management_system
Mail_server_parameter_file \. replcomps components .netrc .forward //+vacation ...
//the next type and its subtypes are here for convenience purposes even though,
// as shown in
Section 0.3 [1.2.1], they are subtypes of Description_content
Software_architecture
\. (Distributed_software_architecture
\. (Client_server_architecture
//no: part: 1..* Server_software-tool 1..* Client_software-tool,
\. (Multi-tier_architecture = N-tier_architecture,
\. e{ (Two-tier_architecture
\. Model_architecture View_architecture Presenter_architecture
View-Model_architecture )
(Three-tier_architecture
\. (Model-View-Controller_architecture /*
//design_pattern: a MVC_design_pattern */)
Presentation-Abstraction-Control_architecture
(Genuine_three-tier_architecture
annotation: "communications should not occur directly between
the 'Presentation tier' (e.g., 'Client'; 'View' in the MVC
terminology) and the 'Data tier' (e.g., DBMS of a 'Server';
'Model' in MVC) but should go via the 'Application tier'
(of the Server; 'Controller' in the MVC terminology)" ) )
} ) )
). //webkb.org/kb/it/o_software/d_archi.html#IS_architecture