eclipse-aas4j / aas4j Goto Github PK
View Code? Open in Web Editor NEWEclipse AAS Model for Java
License: Apache License 2.0
Eclipse AAS Model for Java
License: Apache License 2.0
The Metamodel Version 3.0.RC02 led to a number of changes for the AAS Constraints. They need to be reviewed and adopted where necessary.
Part 1 states that HasKind/kind
has the default value Instance
:
However, the current behaviour is that, for instance, a Submodel with no kind element returns null
if executing getKind()
.
Proposal for discussion (alternative#1):
Let's change the functionality for getKind()
to something like if (this.kind != null) { return this.kind } else { return ModelingKind.Intance }
pro:
null
value returned as the actual value is not null
con:
HasKind
necessaryAlternative#2:
Initialise with ModelingKind.Intance
con:
HasKind
necessaryhasKind
attributeAlternative#3:
leave it for the business logic to handle kind = null
pro:
con:
Follow-up ticket from admin-shell-io/java-serializer#61
We need to clarify how the development & release process works, w.r.t. branch-naming, tagging, and release.
Previously (under admin-shell.io), a push on main
branch triggered a maven release. Current pipeline seems to trigger a maven release when a Github release is made.
I propose changing the pipeline to trigger upon creating of a tag following the format vX.Y.Z
and don't release on Github at all (maybe SNAPSHOTs but they can also be released via maven).
We should also define additional things like
The concept of supplemental semanticIds was introduced with V3RC02. It's not yet present in the test files and should be added to the Full-Examples in at least json, xml and Java.
aas4j/dataformat-json/src/test/resources
/Example-Full.json
seems to be invalid JSON.
https://jsongrid.com/json-parser shows invalid duplicate keys for "category" e.g. in line 558
from java-serializer#63:
"There was a problem during Enum deserialization. The identifier type value "Irdi" or "Iri" or "IRI" was always converted to "I_R_I" but the enum value in IdentifierType is IRI or IRDI."
Most likely the EnumSerializer is not called (anymore?) but plain Jackson behaviour applies.
from admin-shell-io/java-serializer#66:
"
Using the AASX XML generator with jackson-dataformat-xml versions 2.13.* results in invalid XML.
The deepest child elements are not prefixed.
Here is the generated XML with version jackson-dataformat-xml 2.13.3
<?xml version='1.0' encoding='UTF-8'?>
<aas:aasenv xmlns:aas="http://www.admin-shell.io/aas/3/0" xmlns:IEC61360="http://www.admin-shell.io/IEC61360/3/0" xmlns:abac="http://www.admin-shell.io/aas/abac/3/0" xmlns:aas_common="http://www.admin-shell.io/aas_common/3/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.admin-shell.io/aas/3/0 AAS.xsd http://www.admin-shell.io/IEC61360/3/0 IEC61360.xsd http://www.admin-shell.io/aas/abac/3/0 AAS_ABAC.xsd">
<aas:assetAdministrationShells>
<aas:assetAdministrationShell>
<idShort>defaultAdminShell</idShort> <!-- missing prefix is here! -->
</aas:assetAdministrationShell>
</aas:assetAdministrationShells>
<aas:assets>
<aas:asset>
<idShort>defaultAsset</idShort> <!-- missing prefix is here! -->
</aas:asset>
</aas:assets>
......
Here is the generated XML with version jackson-dataformat-xml 2.12.7:
<?xml version='1.0' encoding='UTF-8'?>
<aas:aasenv xmlns:aas="http://www.admin-shell.io/aas/3/0" xmlns:IEC61360="http://www.admin-shell.io/IEC61360/3/0" xmlns:abac="http://www.admin-shell.io/aas/abac/3/0" xmlns:aas_common="http://www.admin-shell.io/aas_common/3/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.admin-shell.io/aas/3/0 AAS.xsd http://www.admin-shell.io/IEC61360/3/0 IEC61360.xsd http://www.admin-shell.io/aas/abac/3/0 AAS_ABAC.xsd">
<aas:assetAdministrationShells>
<aas:assetAdministrationShell>
<aas:idShort>defaultAdminShell</aas:idShort> <!-- prefixes are set correctly -->
</aas:assetAdministrationShell>
</aas:assetAdministrationShells>
<aas:assets>
<aas:asset>
<aas:idShort>defaultAsset</aas:idShort> <!-- prefixes are set correctly -->
</aas:asset>
</aas:assets>
We detected this issue after an upgrade of Spring Boot that depends on Jackson 2.13.3.
"
Check with Eclipse Foundation about Jenkins / Maven Central...
The AssetAdministrationShellEnvironmentSerializer
has an side effect on the Environment
that is being serialized and thus it is broken afterwards.
It's not possible to serialize it a second time, e.g. to write both XML and AASX files.
The problematic part of the code is the following (line 125ff):
private void writeWrappedArray(ToXmlGenerator xgen, QName wrapper, QName wrapped, List<?> list)
throws IOException {
// overwrite all empty list with null, as the schema does not allow empty XML lists
for (Object obj : list) ReflectionHelper.setEmptyListsToNull(obj);
The comment explains the measure, however the serializer should handle this issue differently. If this is not possible it probably would be best to keep track of which fields have been replaced with null
and revert the change afterwards.
The dataformat-aml
module of the initial version (PR #2) currently only builds because https://github.com/sebbader/aas4j/blob/c5964e81e87258e08a1c83b01edc1df30e60d2d2/dataformat-aml/pom.xml#L111 deactivates all tests. They fail due to the upgrade of the model
to version 3.0.RC02. The code needs to be reviewed and the compared AAS AML files in the test/resources folder updated.
Where is this Discriminator defined? Seems like AAS4j and Admin-Shell.io make use of the same discriminator "modelType" and I guess it would be important for interoperability to have the same discriminator for all JSON-Representations of the Metamodel? Shouldn't this be part of the Specification of the Metamodel?
Pretty self-explanatory. We keep having issues with CVEs and API-changes in dependencies. We can streamline the process if there is a default-PR when a dependency is updated.
AAS XML Schema is not validating due to
org.xml.sax.SAXParseException; lineNumber: 74; columnNumber: 50; cvc-enumeration-valid: Wert 'xs:gyear' ist nicht Facet-gültig in Bezug auf Enumeration '[xs:anyURI, xs:base64Binary, xs:boolean, xs:date, xs:dateTime, xs:dateTimeStamp, xs:decimal, xs:double, xs:duration, xs:float, xs:gDay, xs:gMonth, xs:gMonthDay, xs:gYear, xs:gYearMonth, xs:hexBinary, xs:string, xs:time, xs:dayTimeDuration, xs:yearMonthDuration, xs:integer, xs:long, xs:int, xs:short, xs:byte, xs:nonNegativeInteger, xs:positiveInteger, xs:unsignedLong, xs:unsignedInt, xs:unsignedShort, xs:unsignedByte, xs:nonPositiveInteger, xs:negativeInteger]'. Er muss ein Wert aus der Enumeration sein.
Relevant part of the generated AAS XML file is below.
The problematic lines are
74 with <aas:valueType>xs:gyear</aas:valueType>
90 with <aas:valueType>xs:gmonth</aas:valueType>
122 with <aas:valueType>xs:gyearMonth</aas:valueType>
138 with <aas:valueType>xs:gmonthDay</aas:valueType>
It seems names of the time types is not properly generated.
The input values I have checked and are ok and look like
bamm:dataType xsd:gYear ;
bamm:dataType xsd:gMonth ;
bamm:dataType xsd:gYearMonth ;
bamm:dataType xsd:gMonthDay ;
<?xml version='1.0' encoding='UTF-8'?>
<aas:environment xmlns:aas="https://admin-shell.io/aas/3/0/RC02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://admin-shell.io/aas/3/0/RC02 AAS.xsd">
<aas:assetAdministrationShells>
<aas:assetAdministrationShell>
<aas:idShort>defaultAdminShell</aas:idShort>
<aas:description>
<aas:langString>
<aas:language>en</aas:language>
<aas:text>defaultAdminShell</aas:text>
</aas:langString>
</aas:description>
<aas:checksum>a checksum</aas:checksum>
<aas:administration/>
<aas:id>defaultAdminShell</aas:id>
<aas:embeddedDataSpecifications>
<aas:embeddedDataSpecification>
<aas:dataSpecification>
<aas:type>GlobalReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>GlobalReference</aas:type>
<aas:value>Optional[urn:bamm:io.openmanufacturing.test:1.0.0#AspectWithGTypeForRangeConstraints]</aas:value>
</aas:key>
</aas:keys>
</aas:dataSpecification>
<aas:dataSpecificationContent>
<aas:dataSpecificationIec61360>
<aas:preferredName>
<aas:langString>
<aas:language>EN</aas:language>
<aas:text>AspectWithGTypeForRangeConstraints</aas:text>
</aas:langString>
</aas:preferredName>
<aas:value>AspectWithGTypeForRangeConstraints</aas:value>
</aas:dataSpecificationIec61360>
</aas:dataSpecificationContent>
</aas:embeddedDataSpecification>
</aas:embeddedDataSpecifications>
<aas:assetInformation>
<aas:assetKind>Instance</aas:assetKind>
</aas:assetInformation>
</aas:assetAdministrationShell>
</aas:assetAdministrationShells>
<aas:submodels>
<aas:submodel>
<aas:idShort>AspectWithGTypeForRangeConstraints</aas:idShort>
<aas:checksum>-1451635856</aas:checksum>
<aas:administration/>
<aas:id>Optional[urn:bamm:io.openmanufacturing.test:1.0.0#AspectWithGTypeForRangeConstraints]/submodel</aas:id>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#AspectWithGTypeForRangeConstraints</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:submodelElements>
<aas:property>
<aas:category>VARIABLE</aas:category>
<aas:idShort>testPropertyWithGYear</aas:idShort>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#testPropertyWithGYear</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:valueType>xs:gyear</aas:valueType>
<aas:value>Unknown</aas:value>
</aas:property>
<aas:property>
<aas:category>VARIABLE</aas:category>
<aas:idShort>testPropertyWithGMonth</aas:idShort>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#testPropertyWithGMonth</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:valueType>xs:gmonth</aas:valueType>
<aas:value>Unknown</aas:value>
</aas:property>
<aas:property>
<aas:category>VARIABLE</aas:category>
<aas:idShort>testPropertyWithGDay</aas:idShort>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#testPropertyWithGDay</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:valueType>xs:string</aas:valueType>
<aas:value>Unknown</aas:value>
</aas:property>
<aas:property>
<aas:category>VARIABLE</aas:category>
<aas:idShort>testPropertyWithGYearMonth</aas:idShort>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#testPropertyWithGYearMonth</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:valueType>xs:gyearMonth</aas:valueType>
<aas:value>Unknown</aas:value>
</aas:property>
<aas:property>
<aas:category>VARIABLE</aas:category>
<aas:idShort>testPropertyWithGMonthYear</aas:idShort>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#testPropertyWithGMonthYear</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:valueType>xs:gmonthDay</aas:valueType>
<aas:value>Unknown</aas:value>
</aas:property>
</aas:submodelElements>
</aas:submodel>
</aas:submodels>
´``
The RDF Serialiser misses a test using the comprehensive AAS Full example.
Currently, there's no proper way to copy a meta-model-instance. The classes don't implement Cloneable or offer a copy constructor. Especially when creating multiple instances of an object (like multiple Properties in a SubmodelElementList) from a template (single Property in a SubmodelElementList) this would come in quite handy.
The dataformat-xml
module of the initial version (PR #2) currently only builds because https://github.com/sebbader/aas4j/blob/c5964e81e87258e08a1c83b01edc1df30e60d2d2/dataformat-xml/pom.xml#L62 deactivates all tests. They fail due to the upgrade of the model
to version 3.0.RC02. The code needs to be reviewed and the compared AAS XML files in the test/resources folder updated.
The model
currently contains only the classes of the AAS metamodel (aka. Part 1) but the API (aka. Part 2) also introduces further classes. One example are the Descriptors
for the registry endpoints. I think it's reasonable to also include the Part 2 classes in this repo, maybe as another module (model-api-classes
?) or directly in the current model
project.
Tasks:
Tasks related to Eclipse Foundation's intellectual property policy and due diligence process:
Please,
The change from SubmodelElementStruct back to SubmodelElementCollection resulted in a replacement of all SubmodelElementLists and SubmodelElementStructs to SubmodelElementCollections due to the conducted copy-replace activity.
This leads to the current situation that the ordered nature of SubmodelElementLists is not tested in the UnitTests.
This issue is a reminder for us to add such tests as soon as the functional features of v3.0.RC02 have been implemented.
The LICENSE should be updated:
Change old license of Plattform Industrie 4.0 documents -from CC BY-ND 3.0 DE to CC BY-3.0 (see [here for more details](reative Commons CC BY-ND 3.0 DE))
Do we need the header with the copyright? This is stopping that GitHub automatic identifies the Open Source License used in this project
Following the Eclipse Foundation processes, the Eclipse Dash License Tool could not map the following components
These components need to be reviewed by EMO IP team via CQ
Hi,
I am trying to convert an .aasx (xml) file to json. However, there isn't any packages published in this new repository. Packages exist in the old repo https://github.com/orgs/admin-shell-io/packages?repo_name=java-serializer
.
Also there is env.GITHUB_REPOSITORY
parameter in pom.xml which is not filled properly and not documented.
89694e9 has a fixed version of the JSON-LD unit tests. However, I have only fixed the mixins and the main test file. I assume the other rdf files under src/test/resources need to be upgraded, too.
from admin-shell-io/java-serializer#67:
The org.apache.poi:poi dependency has a CVE. Please check the below screenshot for details:
For some collection-like AAS type classes the equals
method does not work as expected, e.g.
Property property1 = new DefaultProperty.Builder()
.idShort("property1")
.build();
Property property2 = new DefaultProperty.Builder()
.idShort("property2")
.build();
SubmodelElementCollection smc1 = new DefaultSubmodelElementCollection.Builder()
.value(List.of(property1, property2))
.build();
SubmodelElementCollection smc2 = new DefaultSubmodelElementCollection.Builder()
.value(List.of(property2, property1))
.build();
// expected: true, actual: false
boolean equals = Objects.equals(smc1, smc2);
returns false although SubmodelElementCollection
is defined to not be ordered. Same goes for Submodel
class.
For SubmodelElementList
this issue is more complex as it has the ordered
property.
Property property1 = new DefaultProperty.Builder()
.idShort("property1")
.build();
Property property2 = new DefaultProperty.Builder()
.idShort("property2")
.build();
SubmodelElementList smc1 = new DefaultSubmodelElementList.Builder()
.value(List.of(property1, property2))
.build();
SubmodelElementList smc2 = new DefaultSubmodelElementList.Builder()
.value(List.of(property2, property1))
.build();
smc1.setOrderRelevant(false);
smc2.setOrderRelevant(false);
// expected: true, actual: false
boolean equalsWithoutOrder = Objects.equals(smc1, smc2);
smc1.setOrderRelevant(true);
// expected: false, actual: false
boolean equalsWithOrderOneElement = Objects.equals(smc1, smc2);
smc2.setOrderRelevant(true);
// expected: false, actual: false
boolean equalsWithOrder = Objects.equals(smc1, smc2);
All .equals
calls return false in this example, whereas equalsWithoutOrder
should be true as order should be ignored.
This behavior is not compliant with the current specification.
However, there is a discussion if the specification should be updated to ensure order in such collections (admin-shell-io/aas-specs#248).
Before any release we should make sure that we are compliant to the specification.
Currently the XmlSerializer and XmlDeserializer rely on the standard behavior of Jackson and in the end of the JRE to create instances for XMLInputFactory and XMLOutputFactory.
In some environments - for example within an OSGi container - it may be necessary to provide custom instances for XMLInputFactory and XMLOutputFactory because the JRE is not able to load them from an OSGi bundle.
To use custom instances it is currently required to create subclasses and overwrite the buildMapper methods and replicate the contained code.
I would suggest to extend the constructors for passing an instance of com.fasterxml.jackson.dataformat.xml.XmlFactory
.
Also AASXSerializer and AASXDeserializer allow to pass custom instances of the XML (de)serializers but additionaly create a default instance as can be seen here:
I'll prepare a PR for this issue.
In the current implementation, serializing an empty list of referable returns null (cf.
However, a correct serialization of an empty list of referables should be "[]".
When serializing a property with a displayName, the <displayName> foobar <\displayName>
tag is missing. Example:
<aas:property>
<category>VARIABLE</category>
<idShort>capacityGroupId</idShort>
<aas:description>
<aas:langString>
<aas:language>en</aas:language>
<aas:text>The Capacity Group ID identifies the capacity group on a global level.</aas:text>
</aas:langString>
</aas:description>
<kind>Template</kind>
<semanticId>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.catenax.capacity_group:1.0.0#capacityGroupId</aas:value>
</aas:key>
</aas:keys>
</semanticId>
<valueType>xs:string</valueType>
<value>0157ba42-d2a8-4e28-8565-7b07830c1110</value>
<aas:langString> <!-- Error starts here-->
<aas:language>en</aas:language>
<aas:text>Capacity Group ID</aas:text>
</aas:langString> <!-- Error ends here-->
</aas:property>
As it should, this does not validate against the xsd indicating an error in the last section of the example. The whole environment as AAS-XML can be provided at request (Github doesn't allow to attach XML to tickets for whatever reason)
Please, migrate issues from old repositories (aas-model, aas-serializer, ...)
As stated e.g. in admin-shell-io/java-model#13, the creation process of AAS entities is still pretty cumbersome. We may can add more convenience functions into dataformat-core
. Please make proposals.
From #3:
Would it be possible to go for a package name only containing the target version (v3) and not also including the current working version (in this case rc02)? I don't see a benefit having the sub-package.
Only the additional effort on the consumer side - when fetching a new version - to update all imports. Also when we come to v3 final, the rc-package will be removed and the build within consumer projects will fail.
Originally posted by @Smudo99 in #3 (comment)
CI seems to be unsuccessful due to some issues during XML tests.
See log: https://github.com/eclipse-aas4j/aas4j/actions/runs/4104140616/jobs/7079228073
c116cf7 contains a working version for DataSpecificationIEC61360. However, were is already one other mentioned DataSpecificationTemplate in the specifications, namely DataSpecificationPhysicalUnit.
There are two options how to tackle this:
modelType
in the schemassee https://gitlab.eclipse.org/eclipsefdn/emo-team/emo/-/issues/134 and e-mail sent by PMC.
Our project will have an own Github organization. The question is the timing, when should we trigger this? In my opinion asap.
It's possible that the meta model upgrade (see #2) to the new version might also effect the data format-uanodeset
module. We need to check that and fix potential issues.
AAS XML Schema is not validating. One reason might be
the entry
<xs:enumeration value="xs:NonNegativeInteger"/>
in AAS.xsd:994
XML Schema validation gives the following error (sorry error is generated in German)
lineNumber: 202; columnNumber: 63; cvc-enumeration-valid: Wert 'xs:NonNegativeInteger' ist nicht Facet-gültig in Bezug auf Enumeration '[xs:anyURI, xs:base64Binary, xs:boolean, xs:date, xs:dateTime, xs:dateTimeStamp, xs:decimal, xs:double, xs:duration, xs:float, xs:gDay, xs:gMonth, xs:gMonthDay, xs:gYear, xs:gYearMonth, xs:hexBinary, xs:string, xs:time, xs:dayTimeDuration, xs:yearMonthDuration, xs:integer, xs:long, xs:int, xs:short, xs:byte, xs:nonNegativeInteger, xs:positiveInteger, xs:unsignedLong, xs:unsignedInt, xs:unsignedShort, xs:unsignedByte, xs:nonPositiveInteger, xs:negativeInteger]'. Er muss ein Wert aus der Enumeration sein.
The generated output looks like this
<aas:property>
<aas:category>VARIABLE</aas:category>
<aas:idShort>testPropertyWithMinLengthConstraint</aas:idShort>
<aas:kind>Template</aas:kind>
<aas:semanticId>
<aas:type>ModelReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>ConceptDescription</aas:type>
<aas:value>urn:bamm:io.openmanufacturing.test:1.0.0#testPropertyWithMinLengthConstraint</aas:value>
</aas:key>
</aas:keys>
</aas:semanticId>
<aas:valueType>xs:NonNegativeInteger</aas:valueType>
<aas:value>Unknown</aas:value>
</aas:property>
It appears to have more like this
<aas:valueType> xs:nonNegativeInteger </aas:valueType>
It seems a mistake in the AAS.xsd was not properly migrated from
https://github.com/admin-shell-io/aas-specs/blob/ee3cdf493601f0f7f4b8c258285d324701a8c0eb/schemas/xml/AAS.xsd#L994
@arnoweiss thanks for the hint.
AAS4J should provide a client for the AAS HTTP APIs according to Asset Administration Shell Specification - Part 2: API (pp. 118 ff.):
https://industrialdigitaltwin.org/en/wp-content/uploads/sites/2/2023/04/IDTA-01002-3-0_SpecificationAssetAdministrationShell_Part2_API.pdf
We can integrate Eclipse Dash License Tool into our pom.xml with the goal to automate the IP Diligence Process
The dataformat-json
module of the initial version (PR #2) currently passes only one of the created tests. The others fail due to the upgrade of the model
to version 3.0.RC02. The code needs to be reviewed and the compared AAS JSON files in the test/resources folder updated.
In the XML serialization of an AAS it seems the Reference to a suplementalSemanticId is not properly serialized.
instead of providing a tag keys to the supplementalSemanticIds are directly added below the tg.
The code I use to generate supplementalSemanticIds can be found here: io.openmanufacturing.sds.aspectmodel.aas.AspectModelAASVisitor#buildReferenceForSeeElement:389
and looks like this:
final Key key =
new DefaultKey.Builder()
.type( KeyTypes.GLOBAL_REFERENCE )
.value( seeReference )
.build();
return new DefaultReference.Builder().type( ReferenceTypes.GLOBAL_REFERENCE ).keys( key ).build();
It generates the following output:
<aas:supplementalSemanticIds>
<aas:type>GlobalReference</aas:type>
<aas:keys>
<aas:key>
<aas:type>GlobalReference</aas:type>
<aas:value>[http://example.com/me</aas:value](http://example.com/me%3c/aas:value)>
</aas:key>
</aas:keys>
But the output should look like this according to the XML Schema:
´´`
aas:supplementalSemanticIds
aas:reference
aas:type</aas:type>
aas:keys
aas:key
aas:type</aas:type>
aas:value</aas:value>
</aas:key>
</aas:keys>
</aas:reference>
As requested by some adopters within the Open Source community, are we ready to provide a release candidate?
See also: https://www.eclipse.org/projects/handbook/#release-milestones
The dataformat-aasx
module of the initial version (PR #2) currently only builds because https://github.com/sebbader/aas4j/blob/c5964e81e87258e08a1c83b01edc1df30e60d2d2/dataformat-aasx/pom.xml#L45 deactivates all tests. They fail due to the upgrade of the model
to version 3.0.RC02. The code needs to be reviewed and the compared AAS JSON file in the test/resources folder updated.
o ACTION (Thiago) - Look for existing OSS project guidelines ( https://github.com/eclipse/rdf4j/blob/main/.github/CONTRIBUTING.md) and select one that fits our needs
o DECISION - Work with forks
o DECISION GitHub – Main (maintained current release) & Branch (development of new features), Releases (Maven Central)
• Release Review / Eclipse Foundation with IP Review
o ACTION (See roadmap, Frank) CI: use GitHub Actions and Eclipse infrastructure (Maven Central Account, Jenkin) (TO DO)
o OPEN / TO BE DISCUSSED ASAP - Versioning and how to deal with V3 RC02 and V3 (final, stable)
• Issue / requirements: some companies require v.1.x.y so that it can be used in production
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.