-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Definition of submodelDescriptor to support parquet files #942
Comments
This might work similarly to the PCF use-case where the
I'm interested in contributing here. |
@BirgitBoss : Thanks for your input.
|
Is there an explicit requirement
I'm inclined to reuse as much of the |
Hi @arnoweiss ,
I added a md file in the description (Possible solutions) which includes two solutions on how to define the SubModelDescriptors. |
See also md file: Solution 1: File transfer via AAX FileIf the file size is less than 100 GB, it can be transferred via HTTPS in AAX format. Therefore, the Parquet file must be included within an AAX file. The submodelDescriptor for this case can be defined as follows: {
...
"submodelDescriptors": [
{
"idShort": "quality-data",
"id": "<uuid>",
"endpoints": [
{
"interface": "AASX-FILE-3.0",
"protocolInformation": {
"href": "https://<provider-edc-dataplane-url>/<path>/package/<base64url-encoded unique ID of submodel>",
"endpointProtocol": "HTTP",
"endpointProtocolVersion": [
"1.1"
],
"subprotocol": "",
"subprotocolBody": "id=<edc-asset-id>;dspEndpoint=<controlplane-url>",
"subprotocolBodyEncoding": "application/octet-stream",
"securityAttributes": [
{
"type": "NONE",
"key": "NONE",
"value": "NONE"
}
]
}
}
],
"semanticId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
//TBD: New Model which map flatten hirarchy to model (like with "_" or ".")
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#FlattenedProductDescription"
}
]
},
"description": [
{
"language": "en",
"text": "submodel-descriptor for quality data which will be transferred via AAX File."
}
]
}
]
} AASX File exampleExample AASX File structure can looks like:
The reference inside 'boschqualitydata.xml' can look like: <?xml version="1.0"?>
<aas:aasenv xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:IEC61360="http://www.admin-shell.io/IEC61360/1/0" xsi:schemaLocation="http://www.admin-shell.io/aas/1/0 AAS.xsd http://www.admin-shell.io/IEC61360/1/0 IEC61360.xsd" xmlns:aas="http://www.admin-shell.io/aas/1/0">
<aas:assetAdministrationShells>
</aas:assetAdministrationShells>
<aas:assets>
<aas:asset>
<aas:idShort>quailty-data</aas:idShort>
<aas:identification idType="URI">http://example.de</aas:identification>
<aas:kind>Instance</aas:kind>
</aas:asset>
</aas:assets>
<aas:submodels>
<aas:submodel>
<aas:idShort>Document</aas:idShort>
<aas:identification idType="URI">http://bosch-quality-data.com/shells/R055732577/1012160102010001/submodels/document/</aas:identification>
<aas:semanticId>
<aas:keys>
<aas:key type="GlobalReference" local="false" idType="value">urn:samm:io.catenax.vehicle.product_description:3.0.0#MetaInformation</aas:key>
</aas:keys>
</aas:semanticId>
<aas:kind>Instance</aas:kind>
<aas:qualifier />
<aas:submodelElements>
<aas:submodelElement>
<aas:submodelElementCollection>
<aas:idShort>Quality_data</aas:idShort>
<aas:category>PARAMETER</aas:category>
<aas:semanticId>
<aas:keys>
<aas:key type="GlobalReference" local="false" idType="value">urn:samm:io.catenax.vehicle.product_description:3.0.0#MetaInformation</aas:key>
</aas:keys>
</aas:semanticId>
<aas:kind>Instance</aas:kind>
<aas:qualifier />
<aas:value>
<aas:submodelElement>
<aas:file>
<aas:idShort>File</aas:idShort>
<aas:category>PARAMETER</aas:category>
<aas:semanticId>
<aas:keys>
<aas:key type="ConceptDescription" local="true" idType="IRDI">0173-1#02-AAD005#008</aas:key>
</aas:keys>
</aas:semanticId>
<aas:kind>Instance</aas:kind>
<aas:qualifier />
<aas:mimeType>application/parquet</aas:mimeType>
<aas:value>/aasx/Document/CX_release3_qax_testdata_qualitytask_v1.1.parquet</aas:value>
</aas:file>
</aas:submodelElement>
</aas:value>
<aas:ordered>false</aas:ordered>
<aas:allowDuplicates>false</aas:allowDuplicates>
</aas:submodelElementCollection>
</aas:submodelElement>
</aas:submodelElements>
</aas:submodel>
</aas:submodels>
</aas:aasenv> Solution 2: File transfer via async. API AAX FileIssue is created: admin-shell-io/aas-specs-api#347 Solution 3: File transfer via HTTPSIf the file size is not too large, the file can be transferred via HTTPS in the usual way. The submodelDescriptor for this case can be defined like: {
...
"submodelDescriptors": [
{
"idShort": "quality-data",
"id": "<uuid>",
"endpoints": [
{
"interface": "SUBMODEL-ATTACHMENT-3.0",
"protocolInformation": {
"href": "<provider-edc-dataplane-url>/<path-to-download-file>",
"endpointProtocol": "HTTP",
"endpointProtocolVersion": [
"1.1"
],
"subprotocol": "",
"subprotocolBody": "id=<edc-asset-id>;dspEndpoint=<controlplane-url>",
"subprotocolBodyEncoding": "application/octet-stream",
"securityAttributes": [
{
"type": "NONE",
"key": "NONE",
"value": "NONE"
}
]
}
}
],
"semanticId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
//TBD: New Model which map flatten hirarchy to model (like with "_" or ".")
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#FlattenedProductDescription"
}
]
},
"description": [
{
"language": "en",
"text": "submodel-descriptor for quality data which will be transferred via HTTPS."
}
]
}
]
} Solution 4: File transfer via S3 bucket with EDC AWS extensionIntroduction to File Transfer process in EDC
SubmodelDescriptor for Parquet Data (via File Transfer)For the file transfer via S3 bucket the submodelDescriptor can be defined like: {
...
"submodelDescriptors": [
{
"idShort": "quality-data",
"id": "<uuid>",
"endpoints": [
{
// TODO: Check which interface can be used here. See :https://github.com/admin-shell-io/questions-and-answers?tab=readme-ov-file#id47
"interface": "TBD", // SUBMODEL-3.0 cam not used because in EDC AWS S3 the consumer only triggers the event. It is a asyn call. No other type which can be used here (from IDTA Standards)
"protocolInformation": {
//TODO: href is required. Check if insert NONE is possible.
"href": "not used for transfer via s3 bucket",
"endpointProtocol": "HTTP",
"endpointProtocolVersion": [
"1.1"
],
"subprotocol": "",
"subprotocolBody": "id=<edc-asset-id>;dspEndpoint=<controlplane-url>",
// Since the action only triggers an asyn event, the encoding is not relevant.
"subprotocolBodyEncoding": "TBD",
"securityAttributes": [
{
"type": "NONE",
"key": "NONE",
"value": "NONE"
}
]
}
}
],
"semanticId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#ProductDescription"
},
{
"type": "GlobalReference",
//TBD: New Model which map flatten hirarchy to model (like with "_" or "."). Outcome of the issue: https://github.com/eclipse-tractusx/sldt-semantic-models/issues/762
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#FlattenedProductDescription"
}
]
},
"description": [
{
"language": "en",
"text": "submodel-descriptor for quality data which will be transferred via S3 bucket."
}
]
}
]
}
Solution 5: File transfer via S3 bucket without EDC AWS extensionIntroduction to File Transfer process in EDC
SubmodelDescriptor for Parquet Data (via File Transfer)For the file transfer via S3 bucket the submodelDescriptor can be defined like: {
...
"submodelDescriptors": [
{
"idShort": "quality-data",
"id": "<uuid>",
"endpoints": [
{
// TODO: Check which interface can be used here. See :https://github.com/admin-shell-io/questions-and-answers?tab=readme-ov-file#id47
"interface": "SUBMODEL-ATTACHMENT-3.0",
"protocolInformation": {
//Link to Provider AWS S3 Bucket (S3 URI)
"href": "https://example-bucket.s3.us-east-2.amazonaws.com/productDescription.parquet",
"endpointProtocol": "HTTP",
"endpointProtocolVersion": [
"1.1"
],
"subprotocol": "",
"subprotocolBody": "id=<edc-asset-id>;dspEndpoint=<controlplane-url>",
"subprotocolBodyEncoding": "application/octet-stream",
// TODO: Check credentials for S3 bucket can be used here
"securityAttributes": [
{
// TODO: Clarify which enum can be used
"type": "NONE",
// S3 securityKey
"key": "SecurityKey",
// S3 accessKey
"value": "AccessKey"
}
]
}
}
],
"semanticId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#ProductDescription"
},
{
"type": "GlobalReference",
//TBD: New Model which map flatten hirarchy to model (like with "_" or "."). Outcome of the issue: https://github.com/eclipse-tractusx/sldt-semantic-models/issues/762
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#FlattenedProductDescription"
}
]
},
"description": [
{
"language": "en",
"text": "submodel-descriptor for quality data which will be transferred via S3 bucket."
}
]
}
]
} Solution 6: File transfer via two-step process
{
"edc:dataAddress": {
"edc-type": "AmazonS3",
"edc:bucket": "<provider-bucket>",
"edc:keyName": "<file-name>"
}
}
{
"fileType":"parquet",
"semanticModel":"urn:samm:io.catenax.vehicle.product_description:3.0.0#FlattenedProductDescription",
"transferObject":{
"transferType":"EDC AWS S3 Bucket",
"href":"NONE",
"subprotocolBody":"id=edc-asset-1;dspEndpoint:controplaneUrl",
"description":"File will be uploaded via EDC AWS Extention to consumer S3 Bucket."
}
}
{
...
"submodelDescriptors": [
{
"idShort": "quality-data",
"id": "<uuid>",
"endpoints": [
{
"interface": "SUBMODEL-3.0",
"protocolInformation": {
"href": "<provider-edc-dataplane-url>/<path-to-submodel-service/$value",
"endpointProtocol": "HTTP",
"endpointProtocolVersion": [
"1.1"
],
"subprotocol": "",
"subprotocolBody": "id=<edc-asset-id>;dspEndpoint=<controlplane-url>",
"subprotocolBodyEncoding": "application/json; charset=UTF-8",
"securityAttributes": [
{
"type": "NONE",
"key": "NONE",
"value": "NONE"
}
]
}
}
],
"semanticId": {
"type": "ExternalReference",
"keys": [
{
"type": "GlobalReference",
// Semantic model for metainformation of parquet file (location of parquet file, etc.)
"value": "urn:samm:io.catenax.vehicle.product_description:3.0.0#MetaInformation"
}
]
},
"description": [
{
"language": "en",
"text": "submodel-descriptor for quality data MetaInformation. This submodel will return the location of the parquet file."
}
]
}
]
}
|
As discussed with Birgit, the submodel interface value 'productDescription' is not according to IDTA standards. We need to use interface value as 'SUBMODEL-3.0'. Need to check the mechanism that is used currently through EDC to exchange the consumer Bucket credentials. Through this new defined submodel, consumer won't be able to provide the bucket credentials. So need to find out a way to make async call to provider and get the response for Parquet file location. Example of submodel is attached.ProductDesriptionAsParquetFile.txt |
Issue for asynch. call was created: |
Description
The description of a submodel descriptior in an Asset Administration Shell should be given, with respect to
"interface" (https://admin-shell-io.github.io/aas-specs-antora/IDTA-01002/v3.1/specification/interfaces-payload.html#_endpoint),
"semanticId"
for the use of parquet files.
Acceptance Criteria
Additional Information
Child of Feature: eclipse-tractusx/sig-release#721
linked to: eclipse-tractusx/sldt-semantic-models#762
Possible solutions:definition_submodeldescriptors_parquet.md
The text was updated successfully, but these errors were encountered: