Skip to content

Commit

Permalink
update M3 to latest specification (or attempt to, at least)
Browse files Browse the repository at this point in the history
  + make qualifiedName and allFeatures external to M3Node
  + Refactor here and there
  + organize imports throughout
  • Loading branch information
dslmeinte committed Jul 28, 2023
1 parent 7e05446 commit 3bc0a2f
Show file tree
Hide file tree
Showing 39 changed files with 1,260 additions and 1,247 deletions.
49 changes: 24 additions & 25 deletions diagrams/metametamodel-gen.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,60 @@
```mermaid
classDiagram
class Classifier
<<Abstract>> Classifier
LanguageEntity <|-- Classifier
class Concept {
+Boolean abstract
+Boolean partition
}
FeaturesContainer <|-- Concept
Classifier <|-- Concept
class ConceptInterface
FeaturesContainer <|-- ConceptInterface
Classifier <|-- ConceptInterface
class Containment
Link <|-- Containment
class DataType
<<Abstract>> DataType
LanguageElement <|-- DataType
LanguageEntity <|-- DataType
class Enumeration
DataType <|-- Enumeration
class EnumerationLiteral
NamespacedEntity <|-- EnumerationLiteral
class Feature {
+Boolean optional
}
<<Abstract>> Feature
NamespacedEntity <|-- Feature
class FeaturesContainer
<<Abstract>> FeaturesContainer
LanguageElement <|-- FeaturesContainer
class IKeyed {
+String key
}
<<Interface>> IKeyed
INamed <|-- IKeyed
class Language {
class INamed {
+String name
}
<<Interface>> INamed
class Language {
+String version
}
class LanguageElement
<<Abstract>> LanguageElement
NamespacedEntity <|-- LanguageElement
class LanguageEntity
<<Abstract>> LanguageEntity
class Link {
+Boolean multiple
}
<<Abstract>> Link
Feature <|-- Link
class NamespaceProvider
<<Interface>> NamespaceProvider
class NamespacedEntity {
+String name
+String key
}
<<Abstract>> NamespacedEntity
class PrimitiveType
DataType <|-- PrimitiveType
Expand All @@ -66,6 +65,7 @@ classDiagram
Link <|-- Reference
Classifier "1" o-- "*" Feature: features
Concept "*" -- "0..1" Concept: extends
Concept "*" -- "*" ConceptInterface: implements
ConceptInterface "*" -- "*" ConceptInterface: extends
Expand All @@ -74,13 +74,12 @@ classDiagram
Enumeration "1" o-- "*" EnumerationLiteral: literals
FeaturesContainer "1" o-- "*" Feature: features
Language "1" o-- "*" LanguageElement: elements
Language "*" -- "*" Language: dependsOn
Link "*" -- "1" FeaturesContainer: type
Language "1" o-- "*" LanguageEntity: entities
Language "*" -- "*" Language: dependsOn
Link "*" -- "1" Classifier: type
Property "*" -- "1" DataType: type
Expand Down
40 changes: 21 additions & 19 deletions diagrams/metametamodel-gen.puml
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,45 @@ hide empty members
' qualified name: "LIonCore.M3"


class Concept extends FeaturesContainer {
abstract class Classifier extends LanguageEntity

class Concept extends Classifier {
abstract: Boolean
partition: Boolean
}

class ConceptInterface extends FeaturesContainer
class ConceptInterface extends Classifier

class Containment extends Link

abstract class DataType extends LanguageElement
abstract class DataType extends LanguageEntity

class Enumeration extends DataType implements NamespaceProvider
class Enumeration extends DataType

class EnumerationLiteral extends NamespacedEntity
class EnumerationLiteral implements IKeyed

abstract class Feature extends NamespacedEntity {
abstract class Feature implements IKeyed {
optional: Boolean
}

abstract class FeaturesContainer extends LanguageElement implements NamespaceProvider
interface IKeyed extends INamed {
key: String
}

class Language implements NamespaceProvider {
interface INamed {
name: String
}

class Language implements IKeyed {
version: String
}

abstract class LanguageElement extends NamespacedEntity
abstract class LanguageEntity implements IKeyed

abstract class Link extends Feature {
multiple: Boolean
}

interface NamespaceProvider
abstract class NamespacedEntity {
name: String
key: String
}

class PrimitiveType extends DataType

class Property extends Feature
Expand All @@ -51,6 +53,7 @@ class Reference extends Link

' relations:

Classifier "1" o-- "*" Feature: features
Concept "*" -- "0..1" Concept: extends
Concept "*" -- "*" ConceptInterface: implements
ConceptInterface "*" -- "*" ConceptInterface: extends
Expand All @@ -59,13 +62,12 @@ ConceptInterface "*" -- "*" ConceptInterface: extends
Enumeration "1" o-- "*" EnumerationLiteral: literals


FeaturesContainer "1" o-- "*" Feature: features
Language "1" o-- "*" LanguageElement: elements
Language "*" -- "*" Language: dependsOn

Link "*" -- "1" FeaturesContainer: type

Language "1" o-- "*" LanguageEntity: entities
Language "*" -- "*" Language: dependsOn

Link "*" -- "1" Classifier: type

Property "*" -- "1" DataType: type

Expand Down
44 changes: 26 additions & 18 deletions models/meta/builtins.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,40 @@
"concept": {
"language": "LIonCore_M3",
"version": "1",
"key": "Language"
"key": "LIonCore.M3-Language"
},
"properties": [
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "Language_name"
"key": "LIonCore.M3-Language-version"
},
"value": "LIonCore.builtins"
"value": "1"
},
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "version"
"key": "LIonCore.M3-INamed-key"
},
"value": "1"
"value": "LIonCore_builtins"
},
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "LIonCore.M3-INamed-name"
},
"value": "LIonCore.builtins"
}
],
"children": [
{
"containment": {
"language": "LIonCore_M3",
"version": "1",
"key": "elements"
"key": "LIonCore.M3-Language-entities"
},
"children": [
"LIonCore_builtins_String",
Expand All @@ -49,22 +57,22 @@
"concept": {
"language": "LIonCore_M3",
"version": "1",
"key": "PrimitiveType"
"key": "LIonCore.M3-PrimitiveType"
},
"properties": [
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_name"
"key": "LIonCore.M3-INamed-key"
},
"value": "String"
},
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_key"
"key": "LIonCore.M3-INamed-name"
},
"value": "String"
}
Expand All @@ -78,22 +86,22 @@
"concept": {
"language": "LIonCore_M3",
"version": "1",
"key": "PrimitiveType"
"key": "LIonCore.M3-PrimitiveType"
},
"properties": [
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_name"
"key": "LIonCore.M3-INamed-key"
},
"value": "Boolean"
},
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_key"
"key": "LIonCore.M3-INamed-name"
},
"value": "Boolean"
}
Expand All @@ -107,22 +115,22 @@
"concept": {
"language": "LIonCore_M3",
"version": "1",
"key": "PrimitiveType"
"key": "LIonCore.M3-PrimitiveType"
},
"properties": [
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_name"
"key": "LIonCore.M3-INamed-key"
},
"value": "Integer"
},
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_key"
"key": "LIonCore.M3-INamed-name"
},
"value": "Integer"
}
Expand All @@ -136,22 +144,22 @@
"concept": {
"language": "LIonCore_M3",
"version": "1",
"key": "PrimitiveType"
"key": "LIonCore.M3-PrimitiveType"
},
"properties": [
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_name"
"key": "LIonCore.M3-INamed-key"
},
"value": "JSON"
},
{
"property": {
"language": "LIonCore_M3",
"version": "1",
"key": "NamespacedEntity_key"
"key": "LIonCore.M3-INamed-name"
},
"value": "JSON"
}
Expand Down
Loading

0 comments on commit 3bc0a2f

Please sign in to comment.