Skip to content

Commit 695976d

Browse files
authored
Merge pull request #20 from bci-oss/feature/#19-load-complete-namespace
#19 Load complete namespaces and allow to traverse it
2 parents d85a6df + a851e93 commit 695976d

31 files changed

+572
-157
lines changed

AUTHORS.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
The following people have contributed to this repository:
44

5-
* [Sven Walter](https://github.com/waltersve), Robert Bosch GmbH, Sven.Walter@de.bosch.com
5+
* [Sven Walter](https://github.com/waltersve), Robert Bosch GmbH, Sven.Walter4@de.bosch.com
66
* [Andreea Suditu](https://github.com/andreea-suditu)
77
* [Michele Santoro](https://github.com/michelu89), Robert Bosch GmbH, [email protected]
8-
* Wolfgang Klenk
8+
* Hagen Wittlich, Robert Bosch GmbH
9+
* Wolfgang Klenk, Robert Bosch GmbH
910
* George Moscu
1011

1112
Please add yourself to this list, if you contribute to the content.

README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
## Introduction
1818

19-
The main purpose of this package it to allow users to load and parse one or
20-
more [.ttl files](<https://en.wikipedia.org/wiki/Turtle_(syntax)>) into native TypeScript objects.
19+
This project enables developers to effortlessly load and parse one or more [.ttl files](<https://en.wikipedia.org/wiki/Turtle_(syntax)>)
20+
and instantiate native TypeScript objects of the pared [SAMM](<https://projects.eclipse.org/projects/dt.esmf>) semantic concepts.
2121

2222
## Getting help
2323

@@ -39,7 +39,7 @@ npm install @esmf/aspect-model-loader
3939

4040
## Usage
4141

42-
This package contains two methods for loading ttl files(string value of the .ttl files).
42+
Instantiating an Aspect the following two methods for loading ttl files(string value of the .ttl files) are provided.
4343

4444
Load an aspect model which is self-contained (includes no imports to other ttl file):
4545

@@ -49,16 +49,27 @@ new AspectModelLoader().loadSelfContainedModel(ttl).subscribe((aspect: Aspect) =
4949
});
5050
```
5151

52-
or if the model contains imports to additional ttl files:
52+
or if the model contains imports to further ttl files:
5353

5454
```
55-
new AspectModelLoader().load('<aspect-model-urn>', ttl-1, ttl-2, ttl-3).subscribe((aspect: Aspect) => {
55+
new AspectModelLoader().load('<aspect-model-urn>', ttl-1, ttl-2, ttl-3, ...).subscribe((aspect: Aspect) => {
56+
...
57+
});
58+
```
59+
60+
Besides loading an aspect the project also supports to load and group the SAMM definitions by namespace.
61+
62+
Load all namespace and related SAMM semantic concepts:
63+
64+
```
65+
new NamespaceLoader().load(ttl-1, ttl-2, ttl-3, ...).subscribe((namespaces: Observable<Map<string, Array<BaseMetaModelElement>>>) => {
5666
...
5767
});
5868
```
5969

6070
If you are using external .ttl files you may need to parse the contents of these files to strings, to be passed to the
61-
methods params.
71+
methods params. Further all .ttl files must use the same SAMM version. Loading SAMM semantic concepts from different .ttl files
72+
having different SAMM versions is not supported yet.
6273

6374
## Helpful functions
6475

src/aspect-meta-model/base.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
import {IsNamed} from './is-named';
1515
import {IsVersioned} from './is-versioned';
1616
import {IsDescribed} from './is-described';
17-
import {AspectModelVisitor} from '../visitor/aspect-model-visitor';
17+
import {ModelVisitor} from '../visitor/model-visitor';
1818

1919
export interface BaseMetaModelElement extends IsNamed, IsVersioned, IsDescribed {
20-
accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T;
20+
accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T;
2121

2222
parents: Array<BaseMetaModelElement>;
2323
}
@@ -36,6 +36,13 @@ export abstract class Base implements BaseMetaModelElement {
3636
private _isAnonymousNode: boolean = false
3737
) {}
3838

39+
public get namespace(): string {
40+
if (this._isAnonymousNode) {
41+
return '';
42+
}
43+
return this._aspectModelUrn.split('#')[0] + '#';
44+
}
45+
3946
public get parents(): Array<BaseMetaModelElement> {
4047
return this._parents;
4148
}
@@ -124,5 +131,5 @@ export abstract class Base implements BaseMetaModelElement {
124131
return this._see;
125132
}
126133

127-
abstract accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T;
134+
abstract accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T;
128135
}

src/aspect-meta-model/characteristic/default-characteristic.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import {Type} from '../type';
1515
import {Base, BaseMetaModelElement} from '../base';
16-
import {AspectModelVisitor} from '../../visitor/aspect-model-visitor';
16+
import {ModelVisitor} from '../../visitor/model-visitor';
1717

1818
export interface Characteristic extends BaseMetaModelElement {
1919
dataType?: Type;
@@ -32,7 +32,7 @@ export class DefaultCharacteristic extends Base implements Characteristic {
3232
return this._dataType;
3333
}
3434

35-
public accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
35+
public accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
3636
return visitor.visitCharacteristic(this, context);
3737
}
3838

src/aspect-meta-model/characteristic/default-trait.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import {Characteristic, DefaultCharacteristic} from './default-characteristic';
1515
import {Constraint} from '../constraint/default-constraint';
16-
import {AspectModelVisitor} from '../../visitor/aspect-model-visitor';
16+
import {ModelVisitor} from '../../visitor/model-visitor';
1717

1818
export interface Trait extends Characteristic {
1919
baseCharacteristic?: Characteristic;
@@ -43,7 +43,7 @@ export class DefaultTrait extends DefaultCharacteristic implements Trait {
4343
return this._constraints;
4444
}
4545

46-
accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
46+
accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
4747
return visitor.visitCharacteristic(this, context);
4848
}
4949
}

src/aspect-meta-model/constraint/default-constraint.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*/
1313

1414
import {Base, BaseMetaModelElement} from '../base';
15-
import {AspectModelVisitor} from '../../visitor/aspect-model-visitor';
15+
import {ModelVisitor} from '../../visitor/model-visitor';
1616

1717
export type Constraint = BaseMetaModelElement;
1818

@@ -21,7 +21,7 @@ export class DefaultConstraint extends Base implements Constraint {
2121
super(metaModelVersion, aspectModelUrn, name);
2222
}
2323

24-
accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
24+
accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
2525
return visitor.visitConstraint(this, context);
2626
}
2727
}

src/aspect-meta-model/default-aspect.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
*/
1313

1414
import {Base, DefaultCollection, Event, Operation, Property} from './index';
15-
import {AspectModelVisitor} from '../visitor/aspect-model-visitor';
1615
import {BaseMetaModelElement} from './base';
1716
import {HasProperties} from './has-properties';
17+
import {ModelVisitor} from '../visitor/model-visitor';
1818

1919
export interface Aspect extends BaseMetaModelElement, HasProperties {
2020
operations: Array<Operation>;
@@ -66,7 +66,7 @@ export class DefaultAspect extends Base implements Aspect {
6666
this._events = value;
6767
}
6868

69-
public accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
69+
public accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
7070
return visitor.visitAspect(this, context);
7171
}
7272
}

src/aspect-meta-model/default-entity.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {Base, BaseMetaModelElement} from './base';
1515
import {HasProperties} from './has-properties';
1616
import {Property} from './default-property';
1717
import {Type} from './type';
18-
import {AspectModelVisitor} from '../visitor/aspect-model-visitor';
18+
import {ModelVisitor} from '../visitor/model-visitor';
1919

2020
export interface Entity extends BaseMetaModelElement, HasProperties, Type {
2121
/**
@@ -126,7 +126,7 @@ export class DefaultEntity extends Base implements Entity {
126126
this._extends = entity;
127127
}
128128

129-
public accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
129+
public accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
130130
return visitor.visitEntity(this, context);
131131
}
132132
}

src/aspect-meta-model/default-event.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import {Base, BaseMetaModelElement} from './base';
1515
import {Property} from './default-property';
16-
import {AspectModelVisitor} from '../visitor/aspect-model-visitor';
16+
import {ModelVisitor} from '../visitor/model-visitor';
1717

1818
export interface Event extends BaseMetaModelElement {
1919
parameters: Array<Property>;
@@ -32,7 +32,7 @@ export class DefaultEvent extends Base implements Event {
3232
this._parameters = parameters;
3333
}
3434

35-
public accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
35+
public accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
3636
return visitor.visitEvent(this, context);
3737
}
3838
}

src/aspect-meta-model/default-operation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
import {Property} from './default-property';
1515
import {Base, BaseMetaModelElement} from './base';
16-
import {AspectModelVisitor} from '../visitor/aspect-model-visitor';
16+
import {ModelVisitor} from '../visitor/model-visitor';
1717

1818
export interface Operation extends BaseMetaModelElement {
1919
input: Array<Property>;
@@ -62,7 +62,7 @@ export class DefaultOperation extends Base implements Operation {
6262
return this._output;
6363
}
6464

65-
public accept<T, U>(visitor: AspectModelVisitor<T, U>, context: U): T {
65+
public accept<T, U>(visitor: ModelVisitor<T, U>, context: U): T {
6666
return visitor.visitOperation(this, context);
6767
}
6868
}

0 commit comments

Comments
 (0)