Towards Hybrid Reasoning for Verifying and Validating Multilevel Models
|
Wednesday, September 8, 2010
Ontologies and its reasoning services are expected to play an important role in many application domains, as well as in software engineering in general. In model-driven engineering (MDE), models, like UML models, represent and specify software systems.
One problem with using ontologies within software engineering is that while model-driven engineering realizes a four-layer metamodelling architecture, the new version of OWL Web Ontology Language, called OWL 2, it supports only simple metamodelling. Moreover, the semantics of metamodelling in OWL 2 corresponds to the contextual semantics which leads to non-intuitive results. Another issue is that the Open World Assumption (OWA) assumes a model is incomplete. Therefore, we could not validate some constrains in OWA.
We demonstrate multilevel (meta-) modelling using ontologies described in OWL FA, which has a well defined fixed-layered architecture and semantics. As well as an approach to integrate Closed World Assumption (CWA) with OWA in order to use both assumptions for verifying and validating multilevel model.
This joint work with the University of Aberdeen will be presented
at the EKAW conference, October, Lisbon
One problem with using ontologies within software engineering is that while model-driven engineering realizes a four-layer metamodelling architecture, the new version of OWL Web Ontology Language, called OWL 2, it supports only simple metamodelling. Moreover, the semantics of metamodelling in OWL 2 corresponds to the contextual semantics which leads to non-intuitive results. Another issue is that the Open World Assumption (OWA) assumes a model is incomplete. Therefore, we could not validate some constrains in OWA.
We demonstrate multilevel (meta-) modelling using ontologies described in OWL FA, which has a well defined fixed-layered architecture and semantics. As well as an approach to integrate Closed World Assumption (CWA) with OWA in order to use both assumptions for verifying and validating multilevel model.
This joint work with the University of Aberdeen will be presented
at the EKAW conference, October, Lisbon
Specialization and Validation of Statecharts in OWL
|
It is germane in the engineering process of knowledge bases to represent a model on different abstraction levels, developed and refined by different engineers. Hence, they are initially described at a level of coarse granularity and then refined into a more specific representation.
Given two behavior models like statecharts, it is a challenging task to decide whether one statechart is still a valid specialization of the other, more abstract model. We use OWL to model statecharts and to validate statechart specializations.
This work will be presented at the EKAW conference in October
in Lisbon.
Given two behavior models like statecharts, it is a challenging task to decide whether one statechart is still a valid specialization of the other, more abstract model. We use OWL to model statecharts and to validate statechart specializations.
This work will be presented at the EKAW conference in October
in Lisbon.
Bridging Software Languages and Ontology Technologies
|
Tuesday, September 7, 2010
Today's model-driven development approaches allow for a more productive way of developing software systems. However, building tools and languages for software development still suffer a neglect of semantics in modeling and metamodeling.
An interest to extend software languages that gained scientific and commercial attention is the integration of ontology technology and software development. Ontology formalisms for consistency validation and dynamic classification as well as ontology technologies to enable shared terminologies, automated reasoning, provide means for leveraging metamodeling and language engineering.
Check out our tutorial at SPLASH 2010 (previously OOPSLA) on Bridging Software Languages and Ontology Technologies
An interest to extend software languages that gained scientific and commercial attention is the integration of ontology technology and software development. Ontology formalisms for consistency validation and dynamic classification as well as ontology technologies to enable shared terminologies, automated reasoning, provide means for leveraging metamodeling and language engineering.
Check out our tutorial at SPLASH 2010 (previously OOPSLA) on Bridging Software Languages and Ontology Technologies
Extend Ecore with OWL by Ecore Annotations of OWL Axioms
|
Friday, August 27, 2010
Do you want more expressiveness than Ecore can offer?
In this video we show how to use an ecore textual language for annotating ecore metamodels with OWL axioms. Afterwards, you can use the OWLizer to transform metamodel and model into OWL.
In this video we show how to use an ecore textual language for annotating ecore metamodels with OWL axioms. Afterwards, you can use the OWLizer to transform metamodel and model into OWL.
OWL Annotations for textual Ecore Metamodels
|
Tuesday, August 17, 2010
Using the TwoUse Toolkit, it is possible to easily annotate text-based Ecore metamodels by (Ecore-based) textual annotations. The editor provides syntax highlighting for annotations which are based on OWL 2 Web Ontology Language in Manchester Syntax. The Ecore metamodels together with its annotations are transformed by the OWLizer into a pure OWL 2 Ontology (representing the input for reasoning tools). Figure 1 gives a screenshot of the editor which is implemented as an Eclipse plugin based on EMF Text.

In general we have extended a metamodeling language (Ecore) by constructs provided by OWL. Thus we have a much more expressiveness language to develop Ecore-based metamodels which continuously can be used in the MDD process (e.g. to define the abstract syntax of a modeling language or for code generation) and in addition are "ready" for ontology technologies.
The extended grammar for Ecore metamodels and the extended annotations is given in the following:
EPackage =
{EAnnotation} "package" name
[EDataType]
["\"" name "\""] "{" {EClass} {EPackage} "}" ;
EClass =
["abstract"] ("interface" | "class")
["" EClass {"," EClass} ">"] name
["\"" name "\""]
["extends" EClass {"," EClass}]
{classAnnotation} "{" {EClass | EOperation} "}";
EParameter =
{EAnnotation}
{("ordered" | "unique")} EClass name
["(" integer ".." integer ")"] ;
EReference =
{ ("containment" | "derived" | "transient" | "volatile" | "unique" |
"ordered" | "unsettable" | "changeable" | "resolveProxies") }
{frontReferenceAnnotation}
"reference" (EClass | EGenericType) name
["=" "\"" name "\""]
["(" integer ".." integer ")"]
["opposite" EReference] {endReferenceAnnotation} ";" ;
EOperation =
{EAnnotation}
{("ordered" | "unique")} "operation" ("void" | EClass)
["(" integer ".." integer ")"]
["" ETypeParameter {"," ETypeParameter} ">"] name "(" [EParameter {"," EParameter}] ")"
["throws" EClass {"," EClass}] ";" ;
EEnumLiteral = {EAnnotation} EDataType ":" name "=" "\"" EEnumLiteral "\"" ";" ;
EAnnotation = "[" {
"eAnnotations" ":" EAnnotation |
"source" ":" "\"" name "\"" |
"details" ":" "\"" name "\"" "=" "\"" name "\"" |
"contents" ":" EObject |
"references" ":" EReference |
"eModelElement" ":" EObject } "]";
EObject = "EObject";
EDataType = {EAnnotation} ["serializable"] "datatype" name "\"" name "\"";
ETypeParameter = {EAnnotation} name ;
EGenericType =
"typed" ["" (ETypeParameter | "?" "extends" EGenericType | "?" "super" EGenericType) ">"]
EClass ["" (EGenericType | "?" ) {"," (EGenericType | "?")} ">"] ;
frontReferenceAnnotation = "(" (
"functional" |
"inversefunctional" |
"symmetric" |
"asymmetric" |
"reflexive" |
"irreflexive" |
"transitive"
) ")";
endReferenceAnnotation = "(" (
"equivalentTo" OPE |
"subPropertyOf" OPE |
"domain" CE |
"range" CE |
"disjointWith" OPE |
"inverseOf" name |
"subPropertyChain" OPE "o" OPE {"o" OPE}
) ")";
classAnnotation = "(" (
("equivalentTo" | "disjointWith") CE {CE} |
"subClassOf" CE |
"disjointUnionOf" CE CE {CE}
) ")";
CE = "(" (
["not"] name |
"not" CE |
CE "and" CE { "and" CE } |
CE "or" CE {"or" CE} |
OPE ("some" | "only") CE |
OPE "Self" |
OPE ("min" | "max" | "exactly") "cardinality" nonnegativeinteger CE
) ")" ;
OPE = name | "(" "inverse" name ")" ;
digit = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";
nonnulldigit = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";
integer = ["-"] nonnulldigit {digit} | "0";
nonnegativeinteger = "0" | nonnulldigit {digit};
name = ( letter | "_" ) { letter | digit | "_" } ;
letter = "a".."z" | "A".."Z" ;
In general we have extended a metamodeling language (Ecore) by constructs provided by OWL. Thus we have a much more expressiveness language to develop Ecore-based metamodels which continuously can be used in the MDD process (e.g. to define the abstract syntax of a modeling language or for code generation) and in addition are "ready" for ontology technologies.
The extended grammar for Ecore metamodels and the extended annotations is given in the following:
EPackage =
{EAnnotation} "package" name
[EDataType]
["\"" name "\""] "{" {EClass} {EPackage} "}" ;
EClass =
["abstract"] ("interface" | "class")
["" EClass {"," EClass} ">"] name
["\"" name "\""]
["extends" EClass {"," EClass}]
{classAnnotation} "{" {EClass | EOperation} "}";
EParameter =
{EAnnotation}
{("ordered" | "unique")} EClass name
["(" integer ".." integer ")"] ;
EReference =
{ ("containment" | "derived" | "transient" | "volatile" | "unique" |
"ordered" | "unsettable" | "changeable" | "resolveProxies") }
{frontReferenceAnnotation}
"reference" (EClass | EGenericType) name
["=" "\"" name "\""]
["(" integer ".." integer ")"]
["opposite" EReference] {endReferenceAnnotation} ";" ;
EOperation =
{EAnnotation}
{("ordered" | "unique")} "operation" ("void" | EClass)
["(" integer ".." integer ")"]
["" ETypeParameter {"," ETypeParameter} ">"] name "(" [EParameter {"," EParameter}] ")"
["throws" EClass {"," EClass}] ";" ;
EEnumLiteral = {EAnnotation} EDataType ":" name "=" "\"" EEnumLiteral "\"" ";" ;
EAnnotation = "[" {
"eAnnotations" ":" EAnnotation |
"source" ":" "\"" name "\"" |
"details" ":" "\"" name "\"" "=" "\"" name "\"" |
"contents" ":" EObject |
"references" ":" EReference |
"eModelElement" ":" EObject } "]";
EObject = "EObject";
EDataType = {EAnnotation} ["serializable"] "datatype" name "\"" name "\"";
ETypeParameter = {EAnnotation} name ;
EGenericType =
"typed" ["" (ETypeParameter | "?" "extends" EGenericType | "?" "super" EGenericType) ">"]
EClass ["" (EGenericType | "?" ) {"," (EGenericType | "?")} ">"] ;
frontReferenceAnnotation = "(" (
"functional" |
"inversefunctional" |
"symmetric" |
"asymmetric" |
"reflexive" |
"irreflexive" |
"transitive"
) ")";
endReferenceAnnotation = "(" (
"equivalentTo" OPE |
"subPropertyOf" OPE |
"domain" CE |
"range" CE |
"disjointWith" OPE |
"inverseOf" name |
"subPropertyChain" OPE "o" OPE {"o" OPE}
) ")";
classAnnotation = "(" (
("equivalentTo" | "disjointWith") CE {CE} |
"subClassOf" CE |
"disjointUnionOf" CE CE {CE}
) ")";
CE = "(" (
["not"] name |
"not" CE |
CE "and" CE { "and" CE } |
CE "or" CE {"or" CE} |
OPE ("some" | "only") CE |
OPE "Self" |
OPE ("min" | "max" | "exactly") "cardinality" nonnegativeinteger CE
) ")" ;
OPE = name | "(" "inverse" name ")" ;
digit = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";
nonnulldigit = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";
integer = ["-"] nonnulldigit {digit} | "0";
nonnegativeinteger = "0" | nonnulldigit {digit};
name = ( letter | "_" ) { letter | digit | "_" } ;
letter = "a".."z" | "A".."Z" ;
OWL, UML, SPARQL, templates: TwoUse examples
|
Friday, August 6, 2010
This video shows how to start using the twouse toolkit by examples:
- SPARQL Querying
- OWL Ontology Template
- OWL Graphical Notation
- OWL Functional Syntax
- SWRL Rule Graphical Notation
- SWRL Rule with UML Profile for SWRL
- SPARQLAS Query
- OWL Ontology with UML Profile for OWL
Subscribe to:
Posts (Atom)