This document mixes HTML and FL
(a KRL, i.e., a Knowledge Representation Language; it is here used in the
preformatted text parts).
It is an input+backup+presentation file for the
Multi-Source Ontology (MSO).
The MSO i) aligns and extends several ontologies, and
ii) can be extended by Web users via the shared KB server
WebKB-2 and its
shared KB (knowledge base) editing protocols.
In this document, for supertype links, "/^" is used instead of the more common "<" symbol.
Similarly, for subtype links, "\." is used instead of the more common ">" symbol.
The ontology in this document is original. Some content is added to it from time to time.
It is part of complementary "ontologies on formal languages":
The goals, underlying ideas, conventions and content of these ontologies are explained and illustrated in this article.
0. Relations between particular KRL (abstract) models (figure)
1. Predicate Logic based particular models
1.1. First-order Logic (FOL) based particular models
1.1.1. Common Logics (CL)
1.2. Higher-Order Logic (HOL) based particular models
1.3. The RIF models
2. Conjunctive existential formula based models
2.1. RDF, OWL and their variations (JSON-LD, OWL profiles, ...)
KRL_model = KRL_abstract_model, /*/^ Language_abstract-model, //already in ../o_KRLmodelTop/d_KRLmodelsTop.html */ \. exclusion { (Propositional-logic_model ) (Predicate-logic_model r_sub_KRL_model: Propositional-logic_model, \. exclusion { (Predicate-logic_model_less_expressive_than_1st-order-logic \. Description_logic_model_that_is_less_expressive_than_1st-order-logic //to avoid discussions about modal operators and extended description logics ) (First-order-logic_model = FOL_model, r_sub_KRL_model: Predicate-logic_model_less_expressive_than_1st-order-logic, \. partition { (FOL_model_without_sets \. CL_model) (FOL_model_with_sets \. KIF_model) } partition { (FOL_model_without_meta-statements \. CL_model) (FOL_model_with_meta-statements \. KIF_model) } partition { (FOL_model_without_Henkin_interpretation \. CL_model) (FOL_model_with_Henkin_interpretation \. KIF_model FL_model, r_sub_KRL_model: FOL_model_without_Henkin_interpretation ) } ) (Higher-order-logic_model r_sub_KRL_model: FOL_model_with_Henkin_interpretation, \. RIF-FLD ) } ) } exclusion { (KRL-model_not_graph_based //statement: 1 operator with its parameters \. (KRL-model_based_on_operators-with-parameters \. KIF_model) ) (KRL-model_mostly_graph_based //statement: object + relations from/to it \. (KRL_model_mostly_based_on_a_graph_with_only_binary_relations \. (Frame_based_model \. partition { (Frame_model_with_closed_world_assumption \. F-Logic_classic_model) (Frame_model_with_open_world_assumption \. Description_logic_model) } ) (RDF_model = RDF) (JSON-LD_model r_sub_KRL_model: RDF/*1.1*/) (RDFS r_sub_KRL_model: RDF) ) ) FL_model ) } (RIF \. RIF-Core (RIF-BLD r_sub_KRL_model: RIF-Core) (RIF-FLD r_sub_KRL_model: RIF-BLD) ) (Description_logic_based_model \. Description_logic_model_that_is_less_expressive_than_1st-order-logic (OWL_model = OWL, r_part_type: RDFS, //not semantic sub-model but structural sub-model (enough for '@') \. (OWL-1 = OWL1, \. OWL1-Lite //follows the SHIF DL logic (OWL1-DL r_sub_KRL_model: OWL1-Lite) //follows SHOIN(D) (OWL1-Full r_sub_KRL_model: OWL1-DL RDFS) ) (OWL-2 = OWL2, r_sub_KRL_model: OWL-1, \. OWL2-EL OWL2-QL OWL2-RL //OWL2-EL follows EL++ (OWL2-DL //follows SROIQ(D), extends OWL1-DL and OWL2-EL r_sub_KRL_model: OWL2-EL OWL2-QL OWL2-RL OWL1-DL ) (OWL-2-Full r_sub_KRL_model: OWL2_DL OWL1-Full) ) ) );
Abstract_element@CL \. partition { NR_phrase@CL Value_or_reference@CL } (AE_that_can_be_annotated_without_link@CL \. cl#Text_construction cl#Sentence cl#Term (cl#comment = Annotation@CL) ) (Ordered_non-token_AE@CL /^ Positional_AE@CL); NR_phrase@CL \. partition //CL is FOL, not HOL { (Modularizing_NR-phrase@CL \. partition { (Group_of_phrases@CL //reminder: Document is head of a KRL grammar \. (Module@CL = f_link_type _("",r_context,Module_body@CL,Module_context@CL), \. (cl#text = Document@CL, \. partition{ cl#Text_construction cl#Domain_restriction cl#Text_importation } ) %{ (cl#Named_module_that_may_have_submodules = cl#Module, r_link_source: 0..* Module@CL, r_link_destination: (a Module_context@CL r_part: a Module_name_link@CL) ) (cl#Module_that_may_not_have_submodules = cl#Text, r_link_source: 0 Module@CL) } ) (Module_body@CL = cl#Text_construction cl#body_text) ) (Modularizing_group-of-phrases_part@CL = cl#statement, \. partition { (cl#Titling_statement = Module_name_link@CL) (cl#Importation = Module_import_link@CL) (cl#Discourse_statement /^ cl#Name_sequence, \. partition { (cl#Out_discourse_statement /^ Module_excluded_AE_link@CL) cl#In_discourse_statement } ) } ) } ) (cl#Sentence = Formula@CL, \. partition { (Composite_formula@CL \. partition { (cl#Boolean_sentence = Connective_formula@CL, \. (Negating_formula@CL /^ Symmetric_negating_formula) ) (cl#Quantified_sentence = First-order_logic_quantified_formula@CL) } ) (cl#Atom = NR_atomic_formula@CL, \. partition { (cl#Equation = Equal@CL f_link_type_("=",r_equal,cl#Term,cl#Term) ) (cl#Atomic_sentence = Relation@CL) } ) cl#Irregular_sentence } ) }; Value_or_reference@CL \. partition { (cl#Sequence_marker = Variable@CL, /^ Explicitly_bound_variable Variable_not_referring_to_a_relation_type ) (cl#Term = Value_or_referring_AE-that-is-not-a-variable@CL, \. partition { (cl#Functional_term = Non-aggregate_function_call@CL) //e.g., a list? (cl#Name //e.g., a datatype such as an integer! = Value_or_referring_AE_that_is_not_a_variable_nor_a_function_call@CL ) } ) };
KRLO is based on a HOL model (even though the operator+arguments relations enable to describe the structures in RIF-BLD). The descriptions of HOL models will require less "restrictions" (w.r.t. the top-level of KRLO) than less expressive models.
Sources:
RIF-FLD RIF-PS grammar,
RIF-BLD RIF-PS grammar,
RIF-Core RIF-PS grammar.
Abstract_element@RIF-FLD
\. (AE_that_can_be_annotated_without_link@RIF-FLD
\. NR_phrase@RIF-FLD rif-fld#Term )
(Annotation_body@RIF-FLD
\. (Annotation_body@RIF-BLD r_arg =: a AE@RIF-BLD
\. Annotation_body@RIF-Core r_arg =: a AE@RIF-Core ),
r_operator: 0..1 Constant@RIF-FLD,
r_arg =: 0..1 Or{Minimal-frame_as_NR-phrase@RIF-FLD,
.{1..* Minimal-frame_as_NR-phrase@RIF-FLD} } )
(rif-fld#Termula
\. partition { NR_formula@RIF-FLD rif-fld#Term } );
Modularizing_NR-phrase@RIF-FLD
\. (Modularizing_NR-phrase@RIF-Core = Modularizing_NR-phrase@RIF-BLD,
\. partition
{ (Group_of_phrases@RIF-Core = Group_of_phrases@RIF-BLD,
\. partition
{ (Document@RIF-Core = f_link_type_("",r_context,Module_body@RIF-Core,
Module_context@RIF-Core) )
(rif#Group = Module_that_may_have_submodules@RIF-Core,
/^ Module_body@RIF-Core,
r_link_source=: Or{rif#Group,rif-core#Rule} )
(Module_context@RIF-Core
= f_relation_type _("",r_and,
.[0..* Link_in_module_context@RIF-Core]) )
} )
Link_in_module_context@RIF-Core
} )
partition
{ (Group_of_phrases@RIF-FLD
\. partition
{ //The next line can be left implicit since it is automatically derived:
//(Document@RIF-FLD = f_link_type_("",r_context,Module_body@RIF,Module_context@RIF-FLD))
(rif-fld#Group = Module_that_may_have_submodules@RIF-FLD,
/^ Module_body@RIF-FLD,
r_link_source=: Or{rif#Group,rif#Formula} )
(Module_context@RIF-FLD
= f_relation_type _("",r_and,.[0..* Link_in_module_context@RIF-FLD]) )
} )
(Link_in_module_context@RIF-FLD,
\. partition
{ (Link_in_module_context@RIF-BLD = Link_in_module_context@RIF-Core,
\. (rif#Base = Module_base_IRI_link@RIF-Core)
(rif#Prefix = Module_context_namespace-definition_link@RIF-Core)
(rif#Import = Module_import_link@RIF-Core) )
(rif#Dialect = Module_dialect_link@RIF-FLD)
(rif#Module = Remote_module_naming_link@RIF-FLD)
} )
}
(Annotation_link@RIF-FLD
/^ f_link_type _("",r_annotation,Formula@RIF-FLD,Annotation_body@RIF-FLD) );
Formula@RIF-FLD //formulas can be term(ula)s, i.e., reified
\. (Formula@RIF-BLD
\. (Formula@RIF-Core
\. partition { NR_formula@RIF-Core Reference_to_formula@RIF-Core } )
partition { NR_formula@RIF-BLD Reference_to_formula@RIF-BLD } )
partition { NR_formula@RIF-FLD Reference_to_formula@RIF-FLD };
(rif-fld#Atomic
\. (rif-bld#Atomic = NR_atomic_formula@RIF-BLD,
\. (rif-core#Atomic
\. partition { rif-core#Atom Minimal-frame_as_NR-phrase@RIF-Core } ) )
partition { NR_atomic_formula@RIF-FLD Reference_to_formula@RIF-FLD }
);
NR_formula@RIF-FLD = f_relation_type _("",r_relation,.[1..* Formula@RIF-FLD]),
\. partition
{ (Composite_formula@RIF-FLD
\. (Composite_formula@RIF-BLD
\. (Composite_formula@RIF-core
\. partition{rif-core#Rule rif-core#Composite_formula_but_not_rule} )
partition {rif-bld#Rule rif-bld#Composite_formula_but_not_rule} )
partition { Connective_formula@RIF-FLD Classic_quantified_formula@RIF-FLD } )
(NR_atomic_formula@RIF-FLD
\. partition
{ (Non_frame_NR_atomic_formula@RIF-FLD
/^ f_relation_type _("",r_relation,.[1..* rif-fld#Termula]),
\. NR_atomic_formula@RIF-BLD
partition
{ (Equal@RIF-FLD
/^ f_link_type_("=",r_equal,rif-fld#Termula,rif-fld#Termula),
\. (Equal@RIF-BLD r_arg =: a rif-bld#Term,
\. Equal@RIF-Core r_arg =: a rif-core#Term ) )
(Typing@RIF-FLD
= f_link_type_("#",r_type,rif-fld#Termula,rif-fld#Termula),
\. (Typing@RIF-BLD r_arg =: a rif-bld#Term,
\. Typing@RIF-Core r_arg =: a rif-core#Term ) )
(Supertyping@RIF-FLD
= f_link_type_("##",r_supertype,rif-fld#Termula,rif-fld#Termula),
\. (Supertyping@RIF-BLD r_arg =: a rif-bld#Term,
\. Supertyping@RIF-Core r_arg =: a rif-core#Term ) )
(rif-fld#Atom
/^ f_relation_type_("",r_relation,.[1..* rif-fld#Termula]),
\. (rif-bld#Atom
r_arg =: a rif-bld#Term,
\. (rif-core#Atom
/^ f_relation_type_("",r_relation,.[1..* rif-core#Term]))
partition
{ (rif-fld#Atom_with_named_arguments
/^ Language_element_with_named_arguments )
(rif-fld#Atom_with_positional_arguments
/^ Positional_language_element )
} ) )
} )
(Minimal-frame_as_NR-phrase@RIF-FLD
\. Minimal-frame_as_NR-phrase@RIF-BLD,
r_frame_head: 1 rif-fld#Termula,
r_args: .[0..* ^(Minimal_half-link@RIF-FLD r_op: 1 rif-fld#Termula,
r_link_destination: 1 rif-fld#Termula) ] )
} )
}
(NR_formula@RIF-BLD
\. (NR_formula@RIF-Core
\. partition { Composite_formula@RIF-Core NR_atomic_formula@RIF-Core } )
partition
{ (rif-bld#Rule
\. (rif-core#Rule
\. partition { rif-core#Non-quantified_clause
rif-core#Quantified_clause} )
partition
{ (rif-bld#Non-quantified_clause
\. (rif-core#Non-quantified_clause)
partition
{ (rif-bld#Atomic_clause /^ rif-bld#Atomic,
\. (rif-core#Atomic_clause /^ rif-core#Atomic) )
(rif-bld#Implies
\. (rif-core#Implies
\. partition { rif-core#Atomic_implies
rif-bld#Non-atomic_implies } )
partition
{ (rif-bld#Atomic_implies /^ rif-bld#Atomic,
\. (rif-core#Atomic_implies /^ rif-core#Atomic) )
(rif-bld#Non-atomic_implies //And(ATOMIC*):-FORMULA
= f_Link_type_(":-",r_rule-implication_of,
rif-bld#And_of_atomic,rif-bld#Formula )
\. (rif-core#Non-atomic_implies
= f_Link_type_(":-",r_rule-implication_of,
rif-core#And_of_atomic,
rif-core#Formula ) ) )
} )
} )
(rif-bld#Quantified_clause
= f_quantification_type_("Forall",q_forall,.[],
Variable_not_referring_to_a_phrase,
rif-bld#Non-quantified_clause )
\. (rif-core#Quantified_clause
= f_quantification_type_("Forall",q_forall,.[],
Variable_not_referring_to_a_phrase,
rif-core#Non-quantified_clause ) ) )
} )
(rif_bld#Formula //= rif_core#Formula + rif-bld#Subclass
\. (rif_core#Formula
\. partition { rif-core#Composite_formula_but_not_rule
NR_atomic_formula@RIF-Core } )
partition
{ (rif-bld#Composite_formula_but_not_rule
\. (rif-core#Composite_formula_but_not_rule
\. partition
{ (f_relation_type_("And",r_and,.[1..* rif_core#Formula])
\. (rif-core#And_of_atomic
= f_relation_type_("And",r_and,
.[1..* rif_core#Atomic] ) ) )
f_relation_type_("Or",r_or,.[1..* rif_bld#Formula])
f_quantification_type_("Exists",q_exists,.[],
rif#Variable,rif_core#Formula )
} )
partition
{ (f_relation_type_("And",r_and,.[1..* rif_bld#Formula])
\. (rif-bld#And_of_atomic
= f_relation_type_("And",r_and,.[1..* rif_bld#Atomic])))
f_relation_type_("Or",r_or,.[1..* rif_bld#Formula])
f_quantification_type_("Exists",q_exists,.[],rif#Variable,
rif_bld#Formula )
} )
(NR_atomic_formula@RIF-BLD
\. (NR_atomic_formula@RIF-Core
\. partition { Non_frame_NR_atomic_formula@RIF-Core
Minimal-frame_as_NR-phrase@RIF-Core } )
partition
{ (Non_frame_NR_atomic_formula@RIF-BLD
/^ f_relation_type _("",r_relation,.[1..* rif-bld#Term]),
\. (Non_frame_NR_atomic_formula@RIF-Core
/^ f_relation_type_("",r_relation,.[1..* rif-core#Term]),
\. partition
{ (Non_frame_NR_atomic_formula@RIF-Core
\. partition{ Equal@RIF-Core Typing@RIF-Core
rif-core#Atom } )
Minimal-frame_as_NR-phrase@RIF-Core
} )
partition
{ (Non_frame_NR_atomic_formula@RIF-BLD
\. Non_frame_NR_atomic_formula@RIF-Core
partition { Equal@RIF-BLD Typing@RIF-BLD
Supertyping@RIF-BLD rif-bld#Atom } )
Minimal-frame_as_NR-phrase@RIF-BLD
} )
(Minimal-frame_as_NR-phrase@RIF-BLD
\. (Minimal-frame_as_NR-phrase@RIF-Core
r_frame_head: 1 rif-core#Term,
r_args: .[0..* ^(Minimal_half-link@RIF-Core
r_op: 1 rif-core#Term,
r_link_destination: 1 rif-core#Term ) ] ),
r_frame_head: 1 rif-bld#Term,
r_args: .[0..* ^(Minimal_half-link@RIF-BLD
r_op: 1 rif-bld#Term,
r_link_destination: 1 rif-bld#Term ) ] )
} )
} )
} )
(Frame_or_Frames@RIF-FLD
\. partition
{ Minimal-frame_as_NR-phrase@RIF-FLD
f_relation_type_("And",r_and,.[1..* Minimal-frame_as_NR-phrase@RIF-FLD])
} );
rif-fld#Term = Value_or_reference@RIF-FLD,
\. (rif-bld#Term
\. (rif-core#Term
\. (rif-core#Grounded_term
\. partition { rif-core#non-external_term
rif-core#Grounded_external_term } )
partition { rif-core#non-external_term rif-core#External_term } )
partition { rif-bld#non-external_term rif-bld#External_term }
)
partition
{ (rif-fld#non-external_term
\. (rif-bld#non-external_term
\. (rif-core#non-external_term
\. partition { rif-core#Const rif-core#Var rif-core#List } )
partition { rif-core#Const rif-core#Var rif-bld#List rif-bld#Expr } )
exclusion
{ (rif-core#Const = Constant@RIF-FLD Constant@RIF-BLD Constant@RIF-Core )
(rif-fld#Var /^ Explicitly_bound_variable@RIF-FLD,
\. rif-core#Var /^ Variable_not_referring_to_a_phrase@RIF-BLD )
(rif-fld#List = List@RIF-FLD, r_arg=: 1..* rif-fld#Term,
\. (rif-bld#List = List@RIF-FLD, r_arg=: 1..* rif-bld#Term,
\. (rif-core#List = Closed_list@RIF-Core,
r_arg=: 1..* rif-core#Grounded_term ) )
partition { Closed_list@RIF-FLD Open_list@RIF-FLD } )
(Function_call@RIF-FLD /^ Function_call_with_possible_name_parameters@RIF-FLD,
\. partition
{ (rif-fld#Expr /^ Non-aggregate_function_call@RIF-FLD,
r_arg =: 1..* rif-bld#Term,
\. (rif-bld#Expr /^ Positional_function_call@RIF-Core,
/^ f_function-call_type("",rif-core#Const,.[1..* rif-core#Term],
"" ) ) )
(rif-fld#Aggregate = Aggregate_function_call@RIF-FLD,
r_args: .[1..* rif-fld#Var, NR_formula@RIF-FLD] )
}
partition
{ (Positional_function_call@RIF-FLD
= f_function-call_type("",rif-fld#Termula,.[1..* rif-fld#Termula],
) )
(Function_call_with_named_parameter@RIF-FLD
= f_function-call_type(rif-core#Name,rif-fld#Termula,
.[1..* rif-fld#Termula] ) )
} )
} )
(rif-fld#External_term = Structured_reference_to_externally_defined_AE@RIF-FLD,
\. partition
{ (rif-fld#External_formula
/^ f_frame_as_ref_("External",r_external_reference,
.[1 rif-fld#Atomic, 1 rif-fld#Locator] ) )
(rif-fld#External_non-formula_term
/^ f_frame_as_ref_("External",r_external_reference,
.[1 rif-fld#Expric, 1 rif-fld#Locator] ),
\. (rif-bld#External_term
/^ f_frame_as_ref_("External",r_external_reference,rif-bld#Expr),
\. (rif-core#External_term
/^ f_frame_as_ref_("",r_external_reference,rif-core#Expr),
\. (rif-core#Grounded_external_term
/^ f_frame_as_ref_("External",r_external_reference,
rif-core#Grounded_expr ) ) )
) )
} )
};
Reference_to_formula@RIF-FLD r_result=: 1 Formula@RIF-FLD,
\. (Reference_to_formula@RIF-BLD r_result=: 1 Formula@RIF-BLD,
\. (Reference_to_formula@RIF-Core r_result=: 1 Formula@RIF-Core) )
partition
{ Formula_referring_token@RIF-FLD
(Structured_reference_to_formula@RIF-FLD
\. partition
{ Function_call_returning_a_formula@RIF-FLD
Frame_as_reference_to_formula@RIF-FLD
Structured_reference_to_formula_from_a_remote_module@RIF-FLD //same KRL
Structured_reference_to_externally_defined_formula@RIF-FLD //another KRL
} )
};
Abstract_element@Conjunctive-existential-formula_based_model \. partition { (Formula@Conjunctive-existential-formula_based_model \. partition { (Composite_formula@Conjunctive-existential-formula_based_model \. partition { Conjunction_of_formulas@Conjunctive-existential-formula_based_model Existentially_quantified_formula@Conjunctive-existential-formula_based_model } ) NR_atomic_formula@Conjunctive-existential-formula_based_model } ) Value_or_reference@Conjunctive-existential-formula_based_model };
rdfs#Resource = owl#Thing Thing, \. (Abstract_element@RDF /^ Abstract_element@Conjunctive-existential-formula_based_model, \. partition { (NR_phrase@RDF \. partition { Modularizing_NR-phrase@RDF (NR_formula@RDF = rdf#Statement, \. partition { (NR-Composite_formula@RDF \. partition { Conjunction_of_formulas@RDF Existentially_quantified_formula@RDF } ) NR_link@RDF } ) } ) Value_or_reference@RDF } (Abstract_element@OWL \. partition { (NR_phrase@OWL \. partition { (Modularizing_NR-phrase@OWL \. partition { (Group_of_phrases@OWL \. //The next 2 lines are implicit since automatically derived: //(Document@OWL = f_link_type_("",r_context,Module_body@OWL, // Module_context@OWL)) (owl#Ontology = Module_body@OWL) owl#Ontology_Importation ) (Link_in_module_context@OWL \. Module_IRI_link@OWL Module_version_link@OWL Module_import_link_with_IRI@OWL Module_annotation_link ) } ) (owl#Axiom /^ NR_atomic_formula@OWL) //see below } ) Value_or_reference@OWL //see below } (owl#Thing_refered_by_an_IRI = owl#Entity, r_reference=: 1 IRI, \. owl#NamedIndividual rdfs#Class rdfs#Datatype owl#ObjectProperty owl#DataProperty owl#AnnotationProperty ) partition { (Individual@RDF \. partition { (owl#NamedIndividual = Individual@OWL2-EL Individual@OWL2-QL, = ^(Individual@RDF r_reference: 1 IRI)) (owl#AnonymousIndividual = ^(Individual@RDF r_reference: 1 Sparql_blank-node_ID )) } ) r_relation@RDF //see below (Type@RDF \. partition { Class@RDFS Property_type@RDF }) //see below } partition { AE_that_cannot_be_annotated_without_link@OWL (AE_that_can_be_annotated_without_link@OWL \. partition { ^(Thing r_reference: 1 IRI) owl#AnonymousIndividual } ) } partition { AE_that_cannot_be_annotation_value@OWL (AE_that_can_be_annotation_value@OWL \. owl#AnonymousIndividual IRI rdfs#Literal ) } partition { (Constant@RDF \. (owl#IRI_for_type_of_basic_type-or-named-individual = ^(IRI r_reference of: ^(Type r_instance: a owl#Thing_refered_by_an_IRI) ) ) Thing_that_is_not_a_constant@RDF } ) ); owl#Axiom \. partition { (owl#Declaration = ^[a IRI r_type: a owl#IRI_for_type_of_basic_type-or-named-individual] ) (owl#ClassAxiom \. partition { (owl#SubClassOf = ^[a owl#SubClassExpression rdfs#subClassOf: a owl#SuperClassExpression ]) (owl#EquivalentClasses = ^[an owl#AllEquivalentClasses r_member: 2..* owl#SuperClassExpression], \. (owl#EquivalentClasses@OWL2-RL = ^[an owl#AllEquivalentClasses r_member: 2..* owl#EquivClassExpression] ) ) (owl#DisjointClasses = ^[an owl#AllDisjointClasses r_member: 2..* owl#SuperClassExpression] ) (owl#DisjointUnion = ^[a owl#ObjectClass_IRI owl#unionOf: an owl#AllDisjointClasses] ) } (owl#ClassAxiom@OWL2-EL //no owl#DisjointUnion \. partition { owl#SubClassOf@OWL2-EL owl#EquivalentClasses@OWL2-EL owl#DisjointClasses@OWL2-EL } ) (owl#ClassAxiom@OWL2-QL //no owl#DisjointUnion \. partition { owl#SubClassOf@OWL2-QL owl#EquivalentClasses@OWL2-QL owl#DisjointClasses@OWL2-QL } ) (owl#ClassAxiom@OWL2-RL //no owl#DisjointUnion \. partition { owl#SubClassOf@OWL2-RL owl#EquivalentClasses@OWL2-RL owl#DisjointClasses@OWL2-RL } ) ) (owl#ObjectPropertyAxiom \. partition { (owl#SubObjectPropertyOf = ^[a owl#ObjectPropertyExpressionOrChain rdfs#subPropertyOf: a owl#ObjectPropertyExpression ], \. (owl#SubObjectSinglePropertyOf = ^[a owl#ObjectPropertyExpression rdfs#subPropertyOf: a owl#ObjectPropertyExpression ] ) ) (owl#EquivalentObjectProperties //owl#AllEquivalentProperties yet implicit in OWL = ^[an owl#AllEquivalentProperties r_member: 2..* owl#ObjectPropertyExpression] ) (owl#DisjointObjectProperties //owl#AllDisjointProperties implicit in OWL = ^[an owl#AllDisjointProperties r_member: 2..* owl#ObjectPropertyExpression] ) //all members are owl#propertyDisjointWith of one another (owl#InverseObjectProperties = ^[a owl#ObjectPropertyExpression owl#inverseOf: a owl#ObjectPropertyExpression ]) (owl#ObjectPropertyDomain = ^[a owl#ObjectPropertyExpression rdfs#domain: a owl#ClassExpression ], \. (owl#ObjectPropertyDomainSup = ^[a owl#ObjectPropertyExpression rdfs#domain: a owl#SuperClassExpression ] ) ) (owl#ObjectPropertyRange = ^[a owl#ObjectPropertyExpression rdfs#range: a owl#ClassExpression ], \. (owl#ObjectPropertyRangeSup = ^[a owl#ObjectPropertyExpression rdfs#range: a owl#SuperClassExpression ] ) ) (owl#FunctionalObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#FunctionalProperty ]) (owl#InverseFunctionalObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#InverseFunctionalProperty ]) (owl#ReflexiveObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#ReflexiveProperty ]) (owl#IrreflexiveObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#IrreflexiveProperty ]) (owl#SymmetricObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#SymmetricProperty ]) (owl#AsymmetricObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#AsymmetricProperty ]) (owl#TransitiveObjectProperty = ^[a owl#ObjectPropertyExpression rdf#type: owl#AsymmetricProperty ]) } (owl#ObjectPropertyAxiom@OWL2-EL \. partition { owl#EquivalentObjectProperties@OWL2-EL owl#SubObjectPropertyOf@OWL2-EL owl#ObjectPropertyDomain@OWL2-EL owl#ObjectPropertyRange@OWL2-EL owl#ReflexiveObjectProperty@OWL2-EL owl#TransitiveObjectProperty@OWL2-EL } ) /* no: owl#IrreflexiveObjectProperty owl#DisjointObjectProperties owl#InverseObjectProperties owl#FunctionalObjectProperty owl#InverseFunctionalObjectProperty owl#SymmetricObjectProperty owl#AsymmetricObjectProperty */ (owl#ObjectPropertyAxiom@OWL2-QL \. partition { owl#EquivalentObjectProperties@OWL2-QL owl#SubObjectSinglePropertyOf@OWL2-QL owl#ObjectPropertyDomainSup@OWL2-QL //domain: owl#SuperClassExpression owl#ObjectPropertyRangeSup@OWL2-QL //range: owl#SuperClassExpression owl#IrreflexiveObjectProperty@OWL2-QL //forgotten in official grammar! owl#ReflexiveObjectProperty@OWL2-QL //no: owl#TransitiveObjectProperty@OWL2-QL /*yes*/owl#DisjointObjectProperties owl#InverseObjectProperties owl#SymmetricObjectProperty owl#AsymmetricObjectProperty } ) //still no: owl#FunctionalObjectProperty owl#InverseFunctionalObjectProperty (owl#ObjectPropertyAxiom@OWL2-RL \. partition { owl#EquivalentObjectProperties@OWL2-RL owl#SubObjectSinglePropertyOf@OWL2-RL owl#ObjectPropertyDomainSup@OWL2-RL //domain: owl#SuperClassExpression owl#ObjectPropertyRangeSup@OWL2-RL //range: owl#SuperClassExpression owl#IrreflexiveObjectProperty@OWL2-RL /*no*/owl#ReflexiveObjectProperty@OWL2-RL /*yes*/owl#TransitiveObjectProperty@OWL2-RL /*yes*/owl#DisjointObjectProperties owl#InverseObjectProperties owl#SymmetricObjectProperty owl#AsymmetricObjectProperty /*+*/owl#FunctionalObjectProperty owl#InverseFunctionalObjectProperty } ) ) (owl#DataPropertyAxiom \. partition { (owl#SubDataPropertyOf = ^[a owl#DataPropertyExpression rdfs#subPropertyOf: a owl#DataPropertyExpression ]) (owl#EquivalentDataProperties //owl#AllEquivalentProperties implicit in OWL = ^[an owl#AllEquivalentProperties r_member: 2..* owl#DataPropertyExpression] ) (owl#DisjointDataProperties //owl#AllDisjointProperties is implicit in OWL = ^[an owl#AllDisjointProperties r_member: 2..* owl#DataPropertyExpression] ) //owl#propertyDisjointWith (owl#DataPropertyDomain = ^[a owl#DataPropertyExpression rdfs#domain: a owl#ClassExpression ], \. (owl#DataPropertyDomainSup = ^[a owl#DataPropertyExpression rdfs#domain: a owl#SuperClassExpression ] ) ) (owl#DataPropertyRange = ^[a owl#DataPropertyExpression rdfs#range: a owl#ClassExpression ], \. (owl#DataPropertyRangeSup = ^[a owl#DataPropertyExpression rdfs#range: a owl#SuperClassExpression ] ) ) (owl#FunctionalDataProperty = ^[a owl#DataPropertyExpression rdf#type: owl#FunctionalProperty ]) } (owl#DataPropertyAxiom@OWL2-EL //no owl#DisjointDataProperties \. owl#SubDataPropertyOf@OWL2-EL owl#EquivalentDataProperties@OWL2-EL owl#DataPropertyDomain@OWL2-EL owl#DataPropertyRange@OWL2-EL owl#FunctionalDataProperty@OWL2-EL ) (owl#DataPropertyAxiom@OWL2-QL //no owl#DisjointDataProperties \. owl#SubDataPropertyOf@OWL2-QL owl#EquivalentDataProperties@OWL2-QL owl#DataPropertyDomainSup@OWL2-QL owl#DataPropertyRangeSup@OWL2-QL /*owl#FunctionalDataProperty@OWL2-QL*/ owl#DisjointDataProperties@OWL2-QL ) (owl#DataPropertyAxiom@OWL2-RL \. owl#SubDataPropertyOf@OWL2-RL owl#EquivalentDataProperties@OWL2-RL owl#DataPropertyDomainSup@OWL2-RL owl#DataPropertyRangeSup@OWL2-RL //Sup forgotten in official grammar? owl#FunctionalDataProperty@OWL2-RL //forgotten in official summary (grammar ok)? owl#DisjointDataProperties@OWL2-RL ) ) (owl#DatatypeDefinition = ^[a rdfs#Datatype owl#equivalentClass: owl#DataRange]) (owl#HasKey = ^[a owl#ClassExpression owl#hasKey: 0..* owl#ObjectPropertyExpression 0..* owl#DataPropertyExpression ], \. (owl#SubHasKey = ^[a owl#SubClassExpression owl#hasKey: 0..* owl#ObjectPropertyExpression 0..* owl#DataPropertyExpression ] ) ) (owl#Assertion \. partition { (owl#ObjectPropertyAssertion = ^[an Individual@RDF, (a owl#ObjectPropertyExpression): an Individual@RDF] ) (owl#NegativeObjectPropertyAssertion = ^[an Individual@RDF, not (a owl#ObjectPropertyExpression): an Individual@RDF], \. (owl#NegativeObjectPropertyAssertion@OWL2-DL //hence in OWL2-EL/QL/RL but the = ^[a owl#NamedIndividual, // OWL2-RL official grammar missed that!? not (a owl#ObjectPropertyExpression): a owl#NamedIndividual ] ) ) (owl#SameIndividual = ^[a Same_things@OWL r_member: 2..* Individual@RDF], \. (owl#SameIndividual@OWL2-DL = ^[a Same_things@OWL2-DL r_member: 2..* owl#NamedIndividual] ) ) (owl#DifferentIndividuals = ^[a Different_things@OWL r_member: 2..* Individual@RDF], \. (owl#DifferentIndividuals@OWL2-DL = ^[a Different_things@OWL2-DL r_member: 2..* owl#NamedIndividual] ) )) (owl#ClassAssertion = ^[a owl#ClassExpression r_instance: an Individual@RDF], \. owl#Super_ClassAssertion = ^[a owl#SuperClassExpression r_instance: an Individual@RDF] (owl#DataPropertyAssertion = ^[an Individual@RDF, (a owl#DataPropertyExpression): a rdfs#Literal] ) (owl#NegativeDataPropertyAssertion = ^[an Individual@RDF, not (a owl#DataPropertyExpression): a rdfs#Literal], \. (owl#NegativeDataPropertyAssertion@OWL2-DL = ^[a owl#NamedIndividual, not(a owl#DataPropertyExpression): a rdfs#Literal ] ) ) } (owl#Assertion@OWL2-QL //no: owl#Negative(Object/Data)PropertyAssertion \. partition //no: owl#SameIndividual { owl#ObjectPropertyAssertion@OWL2-QL owl#DifferentIndividuals@OWL2-QL owl#ClassAssertion@OWL2-QL owl#DataPropertyAssertion@OWL2-QL } ) (owl#Assertion@OWL2-RL //no: owl#Negative(Object/Data)PropertyAssertion \. partition //no: owl#SameIndividual { owl#ObjectPropertyAssertion@OWL2-RL owl#DifferentIndividuals@OWL2-RL owl#Super_ClassAssertion@OWL2-RL owl#DataPropertyAssertion@OWL2-RL /*+*/ owl#SameIndividual@OWL2-RL owl#NegativeObjectPropertyAssertion@OWL2-RL owl#NegativeDataPropertyAssertion@OWL2-RL } ) ) (owl#AnnotationAxiom \. partition { (owl#AnnotationAssertion = ^[an AE_that_can_be_annotated_without_link@OWL (a owl#AnnotationProperty): an AE_that_can_be_annotation_value@OWL ] ) (owl#SubAnnotationPropertyOf = ^[a owl#AnnotationProperty rdfs#subPropertyOf: a owl#AnnotationProperty] ) (owl#AnnotationPropertyDomain = ^[a owl#AnnotationProperty rdfs#domain: a owl#ObjectClass_IRI] ) (owl#AnnotationPropertyRange = ^[a owl#AnnotationProperty rdfs#range: a owl#ObjectClass_IRI] ) } ) } /* (owl#Axiom@OWL2-EL //useless since no selection of direct subtypes: \. partition { owl#ClassAxiom@OWL2-EL owl#ObjectPropertyAxiom@OWL2-EL owl#DataPropertyAxiom@OWL2-EL owl#Assertion@OWL2-EL owl#HasKey@OWL2-EL//these 2 and next 3: not restricted in OWL2-EL owl#DatatypeDefinition@OWL2-EL owl#Declaration@OWL2-EL owl#AnnotationAxiom@OWL2-EL } ) */ (owl#Axiom@OWL2-QL //no: owl#HasKey \. partition { owl#ClassAxiom@OWL2-QL owl#ObjectPropertyAxiom@OWL2-QL owl#DataPropertyAxiom@OWL2-QL owl#Assertion@OWL2-QL //the next 3 are not restricted in OWL2-QL: owl#DatatypeDefinition@OWL2-QL owl#Declaration@OWL2-QL owl#AnnotationAxiom@OWL2-QL } ) (owl#Axiom@OWL2-RL \. partition { owl#ClassAxiom@OWL2-RL owl#ObjectPropertyAxiom@OWL2-RL owl#DataPropertyAxiom@OWL2-RL owl#Assertion@OWL2-RL owl#SubHasKey@OWL2-RL //next 3 not restricted in OWL2-RL: owl#DatatypeDefinition@OWL2-RL owl#Declaration@OWL2-RL owl#AnnotationAxiom@OWL2-RL } ); Value_or_reference@RDF \. partition { (rdfs#Literal = Value_token@RDF, //note: any rdfs#Datatype is subclass of rdfs#Literal \. (rdf#langString = Language-tagged_string_value) rdf#HTML rdf#XMLLiteral ) (Reference_or_structured-value_or_type@RDF \. partition { (Referring_token@JSON-LD_model /^ Implicitly_existentially_bound_variable Absolute_identifier, \. partition { IRI@JSON-LD_model Blank_node_identifier@JSON-LD_model } ) Frame_as_reference@JSON-LD_model } partition { Type@RDF (Referring_individual_AE@RDF \. partition { Referring_token@RDF (Structured_referring_AE@RDF \. (Collection@RDF \. (rdf#List \.. (rdf#nil = Null_list@RDF)) (rdfs#Container = Collection@RDF, \. partition { (rdf#Bag = Bag@RDF) (rdf#Seq = Sequence@RDF) (rdf#Alt = List_of_alternatives) } ) (Collection_of_types@OWL \. (Disjoint_types@OWL \. (owl#AllDisjointClasses r_member=: 2..* owl#ClassExpression) (owl#AllDisjointProperties //yet implicit in OWL r_member=: 2..* Property_type@RDF ) ) (Equivalent_types@OWL //although yet implicit in OWL \. (owl#AllEquivalentClasses r_member=: 2..* owl#ClassExpression) (owl#AllEquivalentProperties r_member=: 2..* Property_type@RDF) ) Same_things@OWL Different_things@OWL ) ) (Component_of_an_AE_that_is_not_an_NR-phrase@OWL \. (owl#Datarange_restriction r_part: owl#ConstrainingFacet owl#RestrictionValue ) owl#ConstrainingFacet owl#RestrictionValue ) ) } ) } ) }; Class@RDFS = Concept_type@RDFS, != rdfs#Class, \. partition { (rdfs#IRI_for_Concept_type = ^(IRI r_reference of: Class@RDFS), \. partition { (owl#ObjectClass_IRI = ^(IRI r_reference of: a owl#ClassExpression), //hence (next line), en OWL FSS: = ^(IRI r_declaration_with_type@OWL =: the rdfs#IRI_for_Concept_type), \. (owl#Thing_IRI = ^(IRI r_reference of: a owl#Thing)) ) (owl#Datatype_IRI = ^(IRI r_reference of: a rdfs#Datatype)) } ) owl#Class_or_datatype_expression_that_is_not_an_IRI } partition { (owl#ClassExpression \. (rdfs#Class = owl-full#Class, \. owl-dl#Class (owl#Class_different_from_Thing != owl#Thing), \.. owl#Thing owl#Nothing ) owl#SubClassExpression owl#SuperClassExpression (owl#EquivClassExpression \. partition { owl#ObjectClass_IRI_other_than_Thing owl#ObjectHasValue owl#DataHasValue owl#EquivObjectIntersectionOf } ) partition { (owl#ObjectClass_IRI = owl#Class, \. (owl#ObjectClass_IRI_other_than_Thing != owl#Thing_IRI) ) (owl#Restriction /^ Anonymous_type, \. partition { (owl#ClassExpression_to_classCollection \. partition { (owl#ObjectIntersectionOf = ^(owl#ClassExpression owl#intersectionOf=: .{2..* owl#ClassExpression} ), \. (owl#SubObjectIntersectionOf = ^(owl#SubClassExpression owl#intersectionOf=: .{2..* owl#SubClassExpression} ) ) (owl#SuperObjectIntersectionOf = ^(owl#SuperClassExpression owl#intersectionOf=: .{2..* owl#SuperClassExpression} ) ) (owl#EquivObjectIntersectionOf = ^(owl#SuperClassExpression owl#intersectionOf=: .{2..* owl#EquivClassExpression} ) ) ) (owl#ObjectUnionOf = ^(owl#ClassExpression owl#unionOf=: .{2..* owl#ClassExpression}), \. (owl#SubObjectUnionOf = ^(owl#SubClassExpression owl#unionOf=: .{2..* owl#SubClassExpression} ) ) (owl#SuperObjectUnionOf = ^(owl#SuperClassExpression owl#unionOf=: .{2..* owl#SuperClassExpression} ) ) ) } ) (owl#ObjectComplementOf = ^(owl#ClassExpression owl#complementOf=: 1 owl#ClassExpression), \. (owl#SuperObjectComplementOf //uses SubClassExpression as noted in // https://www.w3.org/TR/owl2-profiles/#Class_Expressions_3 = ^(owl#ClassExpression owl#complementOf=: 1 owl#SubClassExpression) ) ) (owl#ObjectOneOf = ^(owl#ClassExpression owl#oneOf=: .{1..* owl#Individual@RDF}), \. (owl#ObjectOneOf1Individual= ^(owl#ClassExpression owl#oneOf=: .{1 owl#Individual@RDF} ) ) (owl#ObjectOneOf@OWL2-DL owl#oneOf=: .{1..* a owl#NamedIndividual}) ) (owl#PropertyRestriction = ^(owl#ClassExpression //owl#Thing if implicit, e.g., in ObjectMaxCardin. owl#onProperty =: 1 Property_type@RDF, owl#onProperty_restriction=: 1 owl#Thing ), \. partition { (owl#ObjectPropertyRestriction = ^(owl#PropertyRestriction owl#onProperty =: 1 owl#ObjectPropertyExpression ), \. partition { (owl#ObjectAllValuesFrom owl#allValuesFrom=: 1 owl#ClassExpression, \. (owl#SuperObjectAllValuesFrom owl#allValuesFrom=: 1 owl#SuperClassExpression ) ) (owl#ObjectSomeValuesFrom owl#someValuesFrom=: 1 owl#ClassExpression, \. (owl#ObjectSomeValuesFromThing owl#someValuesFrom=: 1 owl#Thing_IRI ) \. (owl#SubObjectSomeValuesFrom owl#someValuesFrom=: 1 owl#SubClassExpression ) ) (owl#ObjectHasValue owl#hasValue=: 1 owl#Individual, \. (owl#ObjectHasValue@OWL2-DL owl#hasValue=: 1 owl#NamedIndividual ) ) (owl#ObjectHasSelf owl#hasSelf=: 1 xsd#boolean) } ) (owl#ObjectPropertyCardinalityRestriction = ^(owl#PropertyRestriction owl#r_relation_from_restriction_to_nonNegativeInteger =: 1 xsd#nonNegativeInteger ), \. partition { owl#(ObjectMinCardinality owl#minCardinality=: 1 xsd#nonNegativeInteger ) (owl#ObjectExactCardinality owl#cardinality=: 1 xsd#nonNegativeInteger ) (owl#ObjectMaxCardinality owl#maxCardinality=: 1 xsd#nonNegativeInteger, \. (owl#SuperObjectMaxCardinality owl#maxCardinality=: 0..1 xsd#nonNegativeInteger, \. partition { (owl#SuperObjectMaxCardinalityWithExpressionAsSource /^ owl#SubClassExpression ) //strange but ok (owl#SuperObjectMaxCardinalityWithThingAsSource /^ owl#Thing_IRI ) //strange but ok } ) ) } ) (owl#DataPropertyRestriction = ^(owl#PropertyRestriction owl#onProperty=: 1 owl#DataPropertyExpression), \. partition { (owl#DataAllValuesFrom owl#allValuesFrom=: 1 owl#DataRange) (owl#DataSomeValuesFrom owl#someValuesFrom=: 1 owl#DataRange) (owl#DataHasValue owl#hasValue=: 1 rdfs#Literal) } ) (owl#DataPropertyCardinalityRestriction = ^(owl#DataPropertyExpression owl#r_relation_from_restriction_to_nonNegativeInteger =: 1 xsd#nonNegativeInteger ), \. partition { (DataMinCardinality owl#minCardinality=: 1 xsd#nonNegativeInteger) (DataExactCardinality owl#cardinality=: 1 xsd#nonNegativeInteger) (DataMaxCardinality owl#maxCardinality=: 1 xsd#nonNegativeInteger, \. (SuperDataMaxCardinality owl#maxCardinality=: 0..1 xsd#nonNegativeInteger ) ) } ) } (owl#PropertyCardinalityRestriction \. partition { owl#ObjectPropertyCardinalityRestriction owl#DataPropertyCardinalityRestriction } ) )//end of owl#PropertyRestriction } (owl#Restriction@OWL2-EL \. partition { //no: disjunction (ObjectUnionOf, DisjointUnion, and DataUnionOf) // enumerations of more than 1 indiv. (ObjectOneOf and DataOneOf) // class negation (ObjectComplementOf), cardin.(just All...) owl#ObjectIntersectionOf@OWL2-EL owl#ObjectOneOf1Individual@OWL2-EL //owl#PropertyRestriction@OWL2-EL: //no cardin, owl#ObjectAllValuesFrom owl#ObjectSomeValuesFrom@OWL2-EL owl#ObjectHasValue@OWL2-EL owl#ObjectHasSelf@OWL2-EL //owl#DataPropertyRestriction@OWL2-EL //no cardin, owl#DataAllValuesFrom owl#DataSomeValuesFrom@OWL2-EL owl#DataHasValue@OWL2-EL } ) (owl#Restriction@OWL2-QL \. /* partition //useless since Sub/Super-ClassRestriction { //no: disjunction (ObjectUnionOf, DisjointUnion, and DataUnionOf) // enumerations (ObjectOneOf and DataOneOf), cardin.(just Some...) owl#ObjectIntersectionOf@OWL2-QL //this and the next 2 in SuperClassExpr /*+*/owl#ObjectComplementOf@OWL2-QL //owl#PropertyRestriction@OWL2-QL: owl#ObjectSomeValuesFrom@OWL2-QL //from Thing when in SubClassExpr owl#DataSomeValuesFrom@OWL2-QL //also in SuperClassExpr, despite what } // the official summary says (the official grammar is ok there) */ partition { (owl#SubClassRestriction@OWL2-QL \. partition { owl#ObjectSomeValuesFromThing@OWL2-QL owl#DataSomeValuesFrom@OWL2-QL } ) (owl#SuperClassRestriction@OWL2-QL \. partition { owl#ObjectIntersectionOf@OWL2-QL owl#ObjectComplementOf@OWL2-QL owl#ObjectSomeValuesFrom@OWL2-QL owl#DataSomeValuesFrom@OWL2-QL } ) } ) (owl#Restriction@OWL2-RL \. partition { (owl#SubClassRestriction@OWL2-RL //+ disjunction, some, exact \. partition { owl#SubObjectIntersectionOf@OWL2-RL owl#SubObjectUnionOf@OWL2-RL owl#ObjectOneOf@OWL2-RL owl#SubObjectSomeValuesFrom@OWL2-RL owl#ObjectHasValue@OWL2-RL owl#DataSomeValuesFrom@OWL2-RL owl#DataHasValue@OWL2-RL } ) (owl#SuperClassRestriction@OWL2-RL //+ negation, all, exact \. partition { owl#SuperObjectIntersectionOf@OWL2-RL owl#SuperObjectComplementOf@OWL2-RL owl#SuperObjectAllValuesFrom@OWL2-RL owl#ObjectHasValue@OWL2-RL owl#SuperObjectMaxCardinality@OWL2-RL owl#DataHasValue@OWL2-RL owl#SuperDataMaxCardinality@OWL2-RL owl#DataAllValuesFrom@OWL2-RL } ) } ) ) } (owl#ClassExpression@OWL2-QL \. //partition { owl#ObjectClass_IRI owl#Restriction@OWL2-QL } partition { (owl#SubClassExpression@OWL2-QL \. partition { owl#ObjectClass_IRI owl#SubClassRestriction@OWL2-QL } ) (owl#SuperClassExpression@OWL2-QL \. partition { owl#ObjectClass_IRI owl#SuperClassRestriction@OWL2-QL }) } ) (owl#ClassExpression@OWL2-RL \. //partition { owl#ObjectClass_IRI owl#Restriction@OWL2-RL } partition { (owl#SubClassExpression@OWL2-RL \. partition { owl#ObjectClass_IRI_other_than_Thing owl#SubClassRestriction@OWL2-RL } ) (owl#SuperClassExpression@OWL2-RL \. partition { owl#ObjectClass_IRI_other_than_Thing owl#SuperClassRestriction@OWL2-RL } ) } ) ) (owl#DataRange = rdfs#Datatype, //in Turtle, "rdfs:Datatype" is used \. //see https://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/#built-in-datatypes partition { (owl#Floating-point_number \. partition { xsd:float xsd:double }) (owl#real = owl#real_ValueSpace, \. (owl#rational \. (xsd#decimal \. (xsd#integer \. (xsd#long \. (xsd#int \. (xsd#short \. xsd#byte))) ) (xsd#nonNegativeInteger \. xsd#positiveInteger (xsd#unsignedLong \. (xsd#unsignedInt \. (xsd#unsignedShort \. xsd#unsignedByte) ) ) ) (xsd#nonPositiveInteger \. xsd#negativeInteger) ) ) ) } partition { (owl#Datatype_IRI = owl#Datatype) (owl#Anonymous_datatype /^ Anonymous_type, \. partition { (owl#DataIntersectionOf = ^(owl#Anonymous_datatype owl#intersectionOf=: .{2..* owl#DataRange}) ) (owl#DataUnionOf = ^(owl#Anonymous_datatype owl#unionOf=: .{2..* owl#DataRange}) ) (owl#DataComplementOf = ^(owl#Anonymous_datatype owl#complementOf=: 1 owl#DataRange) ) (owl#DataOneOf = ^(owl#Anonymous_datatype owl#oneOf=: .{1..* rdfs#Literal}), \. (owl#DataOneOf1Literal = ^(owl#ClassExpression owl#oneOf=: .{1 rdfs#Literal}) ) ) (owl#DatatypeRestriction = ^(owl#Anonymous_datatype owl#onDatatype =: 1 Datatype_IRI, owl#withRestrictions: .{1..* owl#Datarange_restrictions} ) ) } ) } (owl#DataRange@OWL2-EL \. partition { ^(owl#real not /^^ xsd:nonPositiveInteger xsd#nonNegativeInteger) } partition { owl#Datatype_IRI owl#DataIntersectionOf@OWL2-EL owl#DataOneOf1Literal } ) (owl#DataRange@OWL2-QL //still no DataUnionOf \. partition { ^(owl#real not /^^ xsd:nonPositiveInteger xsd#nonNegativeInteger) } partition { owl#Datatype_IRI owl#DataIntersectionOf@OWL2-QL } ) (owl#DataRange@OWL2-RL \. partition { owl#Floating-point_number xsd#decimal } partition { owl#Datatype_IRI owl#DataIntersectionOf@OWL2-RL } ) ) }; Property_type@RDF = owl#PropertyExpressionOrChain, \. (rdf#Property \. rdfs#ContainerMembershipProperty) partition { (owl#ObjectPropertyExpressionOrChain \. partition { (owl#ObjectPropertyExpression \. partition { (owl#InverseObjectProperty) (owl#ObjectProperty = owl#ObjectProperty_IRI, = owl#ObjectPropertyExpression@OWL2-EL ) } ) (owl#PropertyExpressionChain = AND{ 2..* ObjectPropertyExpression }) } partition { owl#SubObjectPropertyExpression owl#SuperObjectPropertyExpression } ) (owl#DataPropertyExpression \. (owl#DataProperty = owl#DataProperty_IRI) ) (owl#AnnotationProperty = owl#AnnotationProperty_IRI, = rdfs#comment /*supertype of all RDFS annotation links*/ ) }; r_relation@RDF ~[rdfs#Resource, rdfs#Resource] \. (r_relation_from_or_to_AE-or-thing_that-should_be@RDF \. partition { (r_relation_from_AE-or-thing_that-should_be@RDF \. r_relation_from_and_to_AE-or-thing_that-should_be@RDF //below ) (r_relation_to_AE-or-thing_that-should_be@RDF \. r_relation_from_and_to_AE-or-thing_that-should_be@RDF //below (r_relation_to_value-or-thing-that-should-be@RDF \. rdf#value) (r_relation_to_CE-or-thing_that-should_be@RDFS \. (rdfs#label ~[rdfs#Resource, rdfs#Literal] /^ r_name) ) ) } r_relation_from_or_to_Type-or-thing_that-should_be@RDF //below ) (owl#differentFrom ~[owl#Thing, owl#Thing] /^ r_different) (owl#sameAs ~[owl#Thing, owl#Thing] /^ r_equal) (r_annotation@RDFS \. (rdfs#comment \. r_annotation_without_link@OWL) (owl#annotationPropertyFromOntology ~[Document_IRI@OWL, owl#Thing] \. (owl#versionInfo /^ r_document_version) (owl#annotationPropertyBetweenOntologies ~[Document_IRI@OWL, Document_IRI@OWL] \. (owl#incompatibleWith /^ r_incompatible_document) (owl#priorVersion /^ r_incompatible_document) (owl#backwardCompatibleWith /^ r_backward_compatible_document) ) (rdfs#isDefinedBy /^ r_definition) rdfs#seeAlso owl#deprecated ~[IRI, Boolean] ); r_relation_from_and_to_AE-or-thing_that-should_be@RDF ~[rdfs#Resource, rdfs#Resource] \. r_relation_from_and_to_Type-or-thing_that-should_be@RDF //below (r_relation_for_module_context@RDF \. r_namespace_definition@RDF ~[owl#Ontology,Namespace_shortcut_definition_in_context] owl#imports ~[owl#Ontology,Document_IRI@OWL] ) (reification_relation@RDF ~[rdf#Statement, rdf#Resource] \. rdf#predicate@RDF rdf#subject rdf#object owl#annotatedSource ~[owl#Axiom, owl#Class] owl#annotatedProperty ~[owl#Axiom, owl#Class] owl#annotatedTarget ~[owl#Axiom, owl#Class] ) (r_relation_from_collection_to_AE-or-thing_that-should_be@RDF \. rdfs#r_member /* /^ r_member, //if from rdfs#Container; generalizes each rdf#_nnn /^^ rdfs#ContainerMembershipProperty */ (r_relation_from_list@RDF ~[rdf#List, Thing] \. (rdf#first = r_first@RDF) (rdf#rest = r_rest@RDF) ) ); r_relation_from_or_to_type-or-thing_that-should_be@RDF ~[rdfs#Resource, rdfs#Resource] ~[rdfs#Resource, rdfs#Resource] \. (r_relation_from_Type-or-thing_that-should_be@RDF \. (r_relation_from_type@RDFS \. (r_relation_from_type_to_collection@RDF ~[Type@RDF,Collection] \. owl#oneOf //to assert the "only" instances of the class //DataOneOf in OWL/XML owl#hasKey ~[owl#Class,.{1..* rdf#Property}] (r_relation_from_type_to_collection_of_types@RDF ~[Type,.{1..* Type@RDF}] \. (rdf#r_relation_from_class_to_classes ~[owl#Class,.{1..* owl#Class}] \. (owl#intersectionOf /^ r_types_intersection_of) (owl#unionOf /^ r_types_union_of) ) (rdf#r_relation_from_property_to_properties ~[rdf#Property,.{1..* rdf#Property}] \. owl#propertyChainAxiom ) owl#withRestrictions ~[rdfs#Datatype, .{1..* rdfs#Datatype}] ) ) (owl#r_relation_from_restriction ~[owl#Restriction,owl#Thing] /^ r_relation_from_anonymous_concept_type@OWL, \. owl#onClass ~[owl#Restriction,owl#Class] owl#onProperty ~[owl#Restriction,rdf#Property] (owl#onProperty_restriction \. owl#someValuesFrom ~[owl#Restriction, owl#ObjectPropertyExpression] owl#allValuesFrom ~[owl#Restriction, owl#ObjectPropertyExpression] owl#hasValue ~[owl#Restriction, Individual] owl#hasSelf ~[owl#Restriction, xsd#boolean] ) (owl#r_relation_from_restriction_to_nonNegativeInteger ~[owl#Restriction,xsd#nonNegativeInteger] /^ r_relation_from_anonymous_concept_type_to_value-token_type@OWL, \. (owl#cardinality \. owl#qualifiedCardinality) (owl#minCardinality ;\. owl#minQualifiedCardinality) (owl#maxCardinality ;\. owl#maxQualifiedCardinality) ) ) (owl#r_relation_from_datatype ~[rdfs:Datatype,owl#Thing] \. (owl#r_relation_from_datatype_to_literal ~[rdfs:Datatype,rdfs#Literal] \. xsd#minInclusive xsd#maxInclusive xsd#minExclusive xsd#maxExclusive ) ) ) (r_relation_from_and_to_type-or-thing_that-should_be@RDF \. (r_relation_from_and_to_Type@RDF \. (r_relation_from_and_to_concept_type@RDFS ~[Class@RDFS, Class@RDFS] \. r_relation_from_anonymous_concept_type_to_concept_type@OWL //above (owl#equivalentClass = r_equivalent_concept_type@OWL) (owl#complementOf = r_complement_type@OWL) (rdfs#subClassOf ~[Class@RDFS, Class@RDFS] /^ r_super-or-equal_concept-type, \. owl-dl#subClassOf ~[Class@OWL-DL, Class@OWL-DL] ) (r_relation_from_and_to_value-token_type@RDFS ~[rdfs#Datatype, rdfs#Datatype] \. owl#datatypeComplementOf xsd#maxInclusive xsd#maxInclusive ) ) (r_relation_from_relation_type_to_concept_type@RDFS ~[rdf#Property, Class@RDFS] \. (rdfs#domain /^ r_binary-relation-type_domain) (rdfs#range /^ r_binary-relation-type_range) ) (r_relation_from_and_to_relation_type@RDFS ~[rdf#Property, rdf#Property] \. (rdfs#subPropertyOf /^ r_super-or-equal_relation-type) (owl#inverseOf /^ r_inverse ) (owl#propertyDisjointWith /^ r_disjoint_relation_type) ) ) ) ) (r_relation_to_type-or-thing_that-should_be@RDF \. (r_relation_to_type@RDFS ~[rdfs#Resource, Type@RDFS] \. (rdf#type /^ r_type_or_equal) (rdf#datatype ~[rdfs#Literal, rdf#Datatype] /^ r_datatype) ) );