Skip to main content

REXS Spezifikation

JSON als alternatives Dateiformat für REXS

Alternativ zum bisher verwendeten xml-Dateiformat für REXS-Modelle ist es zukünftig auch möglich das JSON Format zu nutzen. Im folgenden wird für die einzelnen Elemente eines REXS-Modells dargestellt, wie diese in JSON abgebildet werden. Zum besseren Vergleich ist auch die xml-Darstellung angegeben.

Anmerkung

Die nachfolgende Spezifikation zum REXS-JSON-Dateiformat ist noch nicht Teil der offiziellen REXS 1.4 Version. Sie wurde aber vom REXS CCB freigegeben und wird ab REXS Version 1.5 Teil der Spezifikation werden.

Dateiendungen

Als Dateiendung für eine REXS-JSON Datei soll *.rexsj verwendet werden. Folgende Dateiendungen sind alternativ zulässig:

  • xml: *.rexs.xml

  • zip: *.rexs.zip

  • json: *.rexs.json

Modell-Objekt

Das REXS Modell ist in einem JSON-Objekt namens "model" enthalten. Dieses beinhaltet eine Reihe von Namen-Wert-Paaren. Neben den Metadaten ("version", "applicationId", "applicationVersion", "date", "applicationLanguage") enthält das "model"-Objekt die "relations" und "components" Arrays, sowie ggfs. ein "load_spectrum" Objekt.

Tabelle 2. Überblick der Metadaten (siehe auch )

Merkmal

Beschreibung

Teil der REXS-Datei

version

Version der REXS Schnittstelle.

Format: Hauptversionsnummer.Unterversionsnummer

Beispiel: version="1.2"

applicationId

Name der Applikation, die die XML-Datei erzeugt hat, z.B. „FVA-Workbench“.

applicationVersion

Version der Applikation.

date

Zeitpunkt zu dem die Datei erstellt wurde.

Datums- und Zeitangabe nach ISO 8601 im Format

„yyyy-mm-ddThh:mm:ss+<offset to UTC>“

Beispiel: 2016-06-03T11:35:17+01:00

applicationLanguage

Optional: Angabe der Sprache die in der Anwendung verwendet wurde.

Sprachcode nach 639-1

Beispiel: applicationLanguage="en"



Beispiel Metadaten REXS-Datei | XML-Syntax

<model version="1.4" applicationId="FVA-Workbench" applicationVersion="7.0.0" date="2021-11-03T11:35:17+01:00" applicationLanguage="en">
	<relations>...</relations>
	<components>...</components>
	<load_spectrum>...</load_spectrum> (optional)
</model>

Beispiel Metadaten REXS-Datei | JSON-Syntax

{"model": { "version": "1.4",  "applicationId":"FVA-Workbench", "applicationVersion":"7.0.0", "date":"2021-11-03T11:35:17+01:00", "applicationLanguage":"en",
				"relations": [...],
				"components": [...],
				"load_spectrum": {...} (optional)
	   } }

"relations" Array

Das "relations" Array enthält eine Liste von JSON Objekten. Jedes dieser Objekte enthält die Namen-Wert-Paare "id" (Id der Relation), "type" (Relationstyp), "order" (bei entsprechenden Relations-typen) und das "refs" Array. Dieses enthält eine Liste von Objekten mit den Namen-Wert-Paaren "role" (Rolle der Komponente in der Relation) "id" (Id der Komponente in der Relation), "hint" (optionale Ergänzung zur besseren Lesbarkeit).

Klarstellung: In dem "refs" Array einer Relation dürfen nicht mehrere Objekte mit der gleichen Rolle vorkommen. Es ist also z.B. nicht erlaubt mehrere "part" Elemente in der gleichen assembly Relation zu verwenden. Für jedes "part" muss eine eigene Relation erstellt werden.

Tabelle 3. Überblick über die Namen-Wert-Paare der Relationen (siehe auch )

Nr.

Merkmal

Beschreibung

Details

Teil der REXS-Datei

1

id

Eindeutiger Bezeichner der Relation in der konkrete Modellinstanz

Datentyp: Integer

2

type

Typ der Relation, z.B. „assembly“

Folgt der Namenskonvention

Datentyp: String

Namenskonvention

Relationstypen

3

order

Manche Relationen (z.B. "ordered_assembly_relation") zwischen zwei Komponenten verfügen zusätzlich über eine Reihenfolge. Diese wird durch die "order" festgelegt. Dadurch ist es z.B. möglich die einzelnen Lagerreihen eines Wälzlagers eindeutig zuzuordnen. Datentyp: Integer

Die kleinste "order" ist immer =1 und wird in 1er-Schritten inkrementiert.



Tabelle 4. Namen-Wert-Paare der „refs“ Objekte:

Nr.

Merkmal

Beschreibung

Teil der REXS-Datei

1

id

ID einer Komponente in der Relation. Datentyp: Integer

2

role

Rolle der Komponente in der Relation (z.B. Stufe). Datentyp: String

Optional in REXS-Datei

3

hint

Hinweis zur besseren Lesbarkeit der Relation, z.B. Typ der referenzierten Komponente, max. 40 Zeichen



Beispiel Relationen REXS-Datei | XML-Syntax

<relations>
	<relation id="15" type="ordered_assembly" order="1">
		<ref id="8" role="assembly" hint="bearing"/>
		<ref id="16" role="part" hint="bearing_row"/>
	</relation>
	<relation id="23" type="stage">
		<ref id="3" role="stage" hint="cylindrical_stage"/>
		<ref id="7" role="gear_1" hint="cylindrical_gear"/>
		<ref id="9" role="gear_2" hint="cylindrical_gear"/>
	</relation>
</relations>

Beispiel Relationen REXS-Datei | JSON-Syntax

"relations": [
	{"id":15, "type":"ordered_assembly", "order":1,
	"refs": [
		{"id":8, "role":"assembly", "hint":"bearing"},
		{"id":16, "role":"part", "hint":"bearing_row"}
		]
	},
	{"id":23, "type":"stage",
	"refs": [
		{"id":3, "role":"stage", "hint":"cylindrical_stage"},
		{"id":7, "role":"gear_1", "hint":"cylindrical_gear"},
		{"id":9, "role":"gear_2", "hint":"cylindrical_gear"}
		]
	},
]

"components" Array

Das "components" Array enthält eine Liste von JSON Objekten. Jedes dieser Objekte enthält die Namen-Wert-Paare "id" (Id der Komponente), "name" (Bezeichnung der Komponente), "type" (Komponententyp), sowie das "attributes" Array.

Überblick über die Namen-Wert-Paare der Komponenten:

"attributes" Array

Dass "attributes" Array enthält eine Liste von Objekten mit den folgenden Namen-Wert-Paaren: "id" (Attribut-Id), "unit" (Einheit, bei bestimmten Datentypen notwendig), sowie dem Attributwert. Um eine JSON-Validierung zu ermöglichen wird dabei je nach Datentyp ein unterschiedlicher Kenner verwendet. Die verfügbaren Kenner werden im folgenden aufgelistet. Für Details zu binärcodierten Arrays und Matrizen siehe auch Arraywerte und Matrixwerte.

Datentyp

Details

JSON-Kenner

JSON Beispielwert

scalar

Skalare Werte

boolean

true, false

boolean

false

string

string

"NU 206"

integer

integer

3

floating_point

Das Gleitkomma-Zeichen ist „ . “ (Punkt).

maximale Anzahl signifikanter Stellen: 15

floating_point

2.0

enum

haben einen vorgegebenen Wertebereich

enum

"both_directions"

reference_component

Id der Referenzkomponente für die Pose-Angabe

reference_component

1

file_reference

Verweis auf Datei oder Ordner (relativ oder absolut)

file_reference

"example.gde"

array

Eindimensionales Array aus Werten

floating_point_array

Das Gleitkomma-Zeichen ist „ . “ (Punkt).

maximale Anzahl signifikanter Stellen: 15

floating_point_array

[1.0,0.0,0.0]

floating_point_array

in Binärform

floating_point_array_coded

{"code": "float32", "value": "62wRNhgQS0AAAAAAAAAAANgPsyG1MXDA"}}

integer_array

integer_array

[1,2,3]

boolean_array

boolean_array

[true,false,true]

string_array

string_array

["example 1","example 2"]

enum_array

Der Datentyp enum_array ist neu. Array von enum-Werten

enum_array

["quad4","triangle3","quad4"]

matrix

Zweidimensionales Array aus Werten bei dem jede Zeile die gleiche Länge hat

floating_point_matrix

Das Gleitkomma-Zeichen ist „ . “ (Punkt).

maximale Anzahl signifikanter Stellen: 15

floating_point_matrix

[[1.0,0.0,0.0],[0.0,1.0,0.0],[0.0,0.0,1.0]]

floating_point_matrix

In Binärform

floating_point_matrix_coded

{"code": "float64", "rows":100, "columns":200 "value": "MveeQZ6hM0I"}}

integer_matrix

integer_matrix

[[1,0,0],[0,1,0],[0,0,1]]

boolean_matrix

boolean_matrix

[[true,false,true],[false,false,true],[true,false,false]]

string_matrix

string_matrix

[["example 1","example 2"],["example 3","example 4"]]

array_of_arrays

Zweidimensionales Array bei dem die Zeilen unterschiedliche Länge haben können

array_of_integer_arrays

array_of_integer_arrays

[[1,2,3,4],[1,3,4,5,6],[7,9,11]]

Beispiel Attributliste | JSON-Syntax

"attributes":[
	{"id": "name", "string": "30203-A"},
	{"id": "normal_module", "unit": "mm", "floating_point": 2.0},
	{"id": "addendum_modification_coefficient", "unit": "none", "floating_point": 0.1},
	{"id": "number_of_gears", "integer": 3},
	{"id": "is_driving_gear", "boolean": false},
	{"id": "axial_force_absorption", "enum": "both_directions" },
	{"id": "u_axis_vector", "unit": "mm","floating_point_array": [1.0,0.0,0.0]},
	{"id": "matrix_correction", "unit": "mm", "floating_point_matrix": [[1.0,0.0,0.0],[0.0,1.0,0.0],[0.0,0.0,1.0]] },
	{"id": "example_attribute_id", "unit": "mm", "floating_point_array_coded": {"code": "float32", "value": "MveeQZ6hM0I"}},
	{"id": "element_structure", "array_of_integer_arrays": [[108,2,1,107,7],[0,1,0],[0,7,0,1]]},
]

"load_spectrum" Objekt

Das "load_spectrum" Objekt enthält die Namen-Wert-Paare "id" (Id des Lastkollektivs), "accumulation" (Submodell für akkumulierte Werte des Kollektivs), sowie das "load_cases" Array. Das "accumulation" Objekt enthält ein "components" Array. Das "load_cases" Array enthält eine Liste von JSON Objekten die jeweils eine "id" sowie ein "components" Array beinhalten.

Für Details zur Modellierungssystematik siehe auch Lastkollektive.

Beispiel Lastkollektiv | JSON-Syntax

"load_spectrum": {
		"id": 1,
		"load_cases": [
			{
				"id": 1,
				"components": [
					{ "id": 1, "attributes": [...]},
					{ ... },
					...
				]
			},
			{
				"id": 2,
				"components": [
					{ "id": 2, "attributes": [...]},
					{ ... },
					...
				]
			},
			...
		]
		"accumulation": {
			"components": [
				{ "id": 2, "attributes": [...]},
				{ ... },
				...
			]
		}
}

Beispiel Modell - JSON-Syntax

Beispiel Modell | JSON-Syntax

{
 "model": {
	"applicationId": "Bearinx",
	"applicationVersion": "12.0.8823",
	"date": "2021-07-01T12:18:38+01:00",
	"version": "1.3",
	"relations": [
	 {
		"id": 48,
		"type": "assembly",
		"refs": [
			{"hint": "gear_unit","id": 1,"role": "assembly"},
			{"hint": "gear_casing","id": 2,"role": "part"}
		]
	 },
	 {
		"id": 49,
		"type": "side",
		"refs": [
			{"hint": "concept_bearing","id": 40,"role": "assembly"},
			{"hint": "shaft","id": 13,"role": "inner_part"},
			{"hint": "gear_casing","id": 2,"role": "outer_part"}
		]
	 }
	 ...
	 ]
	"components": [
	 {
		"id": 1,
		"name": "Transmission unit",
		"type": "gear_unit",
		"attributes": [
		     {"id": "example_string", "string": "30203-A"},
		     {"id": "example_floating_point_unit", "unit": "mm", "floating_point": 2.0},
		     {"id": "example_floating_point_without_unit", "unit": "none", "floating_point": 0.1},
		     {"id": "example_integer", "integer": 3},
		     {"id": "example_boolean", "boolean": false},
		     {"id": "example_enum", "enum": "both_directions" },
		     {"id": "example_floating_point_array", "unit": "mm","floating_point_array": [1.0,0.0,0.0]},
		     {"id": "example_floating_point_matrix", "unit": "mm", "floating_point_matrix":
                        [[1.0,0.0,0.0],
                         [0.0,1.0,0.0],
                         [0.0,0.0,1.0]] },
		     {"id": "example_array_coded", "unit": "mm", "floating_point_array_coded":
                        {"code": "float64", "value": "62wRNhgQS0AAAAAAAAAAANgPsyG1MXDA"}},
		     {"id": "example_array_of_arrays", "array_of_integer_arrays":
                        [[108,2,1,107,7],[0,1,0],[0,7,0,1]]},
                    ]
	 }
	 {
		"id": 2,
		"name": "Input shaft",
		"type": "shaft",
		"attributes": [
			...
		]
	 }
	 ...
	]
	"load_spectrum": {
		"id": 1,
		"load_cases": [
		 {
		 	"id": 2,
		 	"components": [
				{
					"id": 2,
					"attributes": [
						...
					]
				},
				{	...	},
				...
			 ]
		 },
		 {	...	}
		]
		"accumulation": {
			"components": [
				{
					"id": 2,
					"attributes": [	...	]
				},
				{ ... },
				...
			]
		}
	 }
 }
}