Skip to content
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

[New Model]: SpecialCharacteristicMeasurement v.1.0.0 #784

Open
wants to merge 33 commits into
base: main
Choose a base branch
from
Open
Changes from 14 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
cbcb1ab
chore: add measurementfile
LuisRickert Oct 1, 2024
89732f0
chore: remove spatial measurement
LuisRickert Oct 1, 2024
e21b4c1
chore: remove functional measurement
LuisRickert Oct 1, 2024
d5e9574
chore: remove resistance measurement
LuisRickert Oct 1, 2024
9e3e51b
chore :remove measurement timestamp
LuisRickert Oct 1, 2024
eb6b4d9
chore: remove measurement type
LuisRickert Oct 1, 2024
aa19040
chore: redefine measurements
LuisRickert Oct 7, 2024
daddf2f
chore: remove measurement Type
LuisRickert Oct 7, 2024
9fa3b7f
chore: add free text measurementType
LuisRickert Oct 9, 2024
4795b56
chore: add optional flag to measurementtyp
LuisRickert Oct 9, 2024
6d31852
chore: add missing attribute revision index
LuisRickert Oct 11, 2024
ae75d33
chore: update characteristic Name
LuisRickert Oct 11, 2024
53b3d63
chore: change type of "revision index" to string
LuisRickert Oct 15, 2024
11b34b3
fix: all attributes should be in lower camelcase
LuisRickert Oct 15, 2024
29aab23
chore: add license information
LuisRickert Oct 23, 2024
8db4d79
chore: do not use camel case for file path
LuisRickert Oct 24, 2024
d11275d
chore: use specific name for aspect model
LuisRickert Oct 24, 2024
f612405
chore: use external customerPartId definition of SerialPart
LuisRickert Oct 24, 2024
0979711
Merge branch 'eclipse-tractusx:main' into feat/issue-781-fixed
LuisRickert Nov 15, 2024
4faade0
chore: add basic measurment object
LuisRickert Nov 18, 2024
661ae04
chore: add valid example value
LuisRickert Nov 18, 2024
90b0788
fix: add manufacturerId, use bpn-Trait for manufacturer Id
LuisRickert Nov 22, 2024
f23f848
fix: use correct example
LuisRickert Nov 22, 2024
2e3bc56
fix: do not use lorem ipsum
LuisRickert Nov 22, 2024
ad48d07
fix: use specifc name for timestamp
LuisRickert Nov 22, 2024
aa868f4
fix: typo
LuisRickert Nov 26, 2024
170842f
fix: aspect model file name and model name must be identical
LuisRickert Dec 9, 2024
fe10551
fix: add metadata file
LuisRickert Dec 9, 2024
02d2ffc
chore: add empty Release Notes file
LuisRickert Dec 9, 2024
c354640
chore: add release Notes
LuisRickert Dec 9, 2024
473f5bb
chore: add License Header
LuisRickert Dec 16, 2024
4447625
chore: use correct example value
LuisRickert Dec 16, 2024
aff521d
fix: set release date to MS3 Approval date
LuisRickert Dec 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@

Copy link
Contributor

@johannsvarela johannsvarela Oct 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add the license information.

Suggested change
#######################################################################
# Copyright(c) 2024 BASF SE
# Copyright(c) 2024 Bayerische Motoren Werke Aktiengesellschaft(BMW AG)
# Copyright(c) 2024 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V.(represented by Fraunhofer ISST & Fraunhofer IML)
# Copyright(c) 2024 German Edge Cloud GmbH & Co. KG
# Copyright(c) 2024 Henkel AG & Co. KGaA
# Copyright(c) 2024 Mercedes Benz AG
# Copyright(c) 2024 Robert Bosch Manufacturing Solutions GmbH
# Copyright(c) 2024 SAP SE
# Copyright(c) 2024 Siemens AG
# Copyright(c) 2024 T-Systems International GmbH
# Copyright(c) 2024 ZF Friedrichshafen AG
# Copyright(c) 2024 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership.
#
# This work is made available under the terms of the Creative Commons Attribution 4.0 International(CC-BY-4.0) license, which is available at https://creativecommons.org/licenses/by/4.0/legalcode.
#
# SPDX-License-Identifier: CC-BY-4.0
#######################################################################

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


@prefix samm: <urn:samm:org.eclipse.esmf.samm:meta-model:2.1.0#> .
@prefix samm-c: <urn:samm:org.eclipse.esmf.samm:characteristic:2.1.0#> .
@prefix samm-e: <urn:samm:org.eclipse.esmf.samm:entity:2.1.0#> .
@prefix unit: <urn:samm:org.eclipse.esmf.samm:unit:2.1.0#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <urn:samm:io.catenax.specialCharacteristics.measurement:1.0.0#> .
Copy link
Contributor

@johannsvarela johannsvarela Oct 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LuisRickert for folder/path naming we don't use camel case but underscores. Therefore please change your new created folder io.catenax.specialCharacteristics.measurement/1.0.0/Measurement.ttl to io.catenax.special_characteristics.measurement/1.0.0/Measurement.ttl.

Same here... please replace the camel case with an underscore. 😄

Suggested change
@prefix : <urn:samm:io.catenax.specialCharacteristics.measurement:1.0.0#> .
@prefix : <urn:samm:io.catenax.special_characteristics.measurement:1.0.0#> .

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@prefix bpn: <urn:samm:io.catenax.shared.business_partner_number:2.0.0#> .
@prefix samm-u: <urn:samm:org.eclipse.esmf.samm:unit:2.1.0#> .
@prefix serialPart: <urn:samm:io.catenax.serial_part:3.0.0#> .

:Measurement a samm:Aspect ;
Copy link
Contributor

@johannsvarela johannsvarela Oct 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason why you name the aspect model Measurement? If you want to create an aspect model for special characteristics does it not make more sense to name the aspect SpecialCharacteristic or SpecialCharacteristicMeasurment?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, the idea was to show that it is related to specialCharacteristics through the path in the name.

io.catenax.specialCharacteristics.measurements/1.0.0/

I guess this should not be a serious problem in renaming the model

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

renamed it to specialCharacteristicMeasurement

samm:preferredName "SpecialCharacteristicMeasurment"@en ;
samm:description "Contains the Measurment for a special characteristic"@en ;
samm:properties ( serialPart:localIdentifiers bpn:bpnlProperty :customerPartId :characteristicId :results [ samm:property :measurementType; samm:optional true ] :revisionIndex ) ;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the bpnlProperty really needed? The same information is stored in the manufacturerID of the LocalIdentifier? This information would therefore be redundant.

Unless you don't mean the manufactuererId with the bpnlProperty? If that is the case, then I would still suggest using a unique name for this property to know exactly what is meant.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good point, will discuss this with Jochen and Sebastian. If we move the attribute into local identifier then we should explicitly reference them in the KIT

same here

Copy link
Contributor Author

@LuisRickert LuisRickert Oct 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes the bpnlProerty is the manufacturerID. We put it here because it is necessary to identify the related specification of the characteristic. Yes, the local identfier may contain the manufacturerId but it is not enforced by the data model. If we should use the localIdentifier for the manufacturerId this should be mentioned in the KIT and noted that this information is neccessary

samm:operations ( ) ;
samm:events ( ) .

:customerPartId a samm:Property ;
Copy link
Contributor

@johannsvarela johannsvarela Oct 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the localIdentifier was referenced from the SerialPart i would also suggest to use the reference customerPartId from the SerialPart instead of define a new property with the name customerPartId.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good point, will discuss this with Jochen and Sebastian. If we move the attribute into local identifier then we should explicitly reference them in the KIT

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LuisRickert the customerPartId is not part of the localIdentifier, therefore don't move this attribute into the localIdentifier array. What i mean is to integrate the existing customerPartId attribute from the SerialPart into this aspect model.

You've already done this with the localIdentifier:
image

Suggestion

You should do the same with the customerPartId doing this steps:

  1. Remove the ":customerPartId" property
    image

  2. Change the defined property entry ":customerPartId" at the Measurement aspect
    image

  3. to "serialPart:customerPartId"
    image

  4. Then the integration of the customerPartId from SerialPart is done! 😄

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahh got it, i just had a missunderstanding :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

samm:preferredName "customerPartId"@en ;
samm:description "This number is the identification of the Part"@en ;
samm:characteristic :CharacteristicCustomerPartID ;
samm:exampleValue "BPN0000000" .

:characteristicId a samm:Property ;
samm:preferredName "characteristicId"@en ;
samm:description "Identification of the special characteristic in in relation of the specified part"@en ;
samm:characteristic :CharacteristicCustomerPartID ;
samm:exampleValue "S1" .

:results a samm:Property ;
Copy link
Contributor

@johannsvarela johannsvarela Oct 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The property results is currently defined as a list of objects. However, the objects contained therein are not further defined.

I'm against the definition of an “open” list of objects. Otherwise, there are no rules which objects are stored here, so that everything possible can be implemented and therefore the purpose of standardization becomes obsolete.

My recommendation: Define all objects that are possible for the measurements (I guess there are several?) and make these objects optional so that only the objects that are actually needed are used during implementation.

Example:

 "results": [
    {
      "functionalMeasurement": {
        "expectationSatisfied": true,
        "measurementTimestamp": "2022-02-04T14:48:54"
      },
      "simpleMeasurement": {
        "quantityValue": 20,
        "itemUnit": "unit:piece",
        "measurementTimestamp": "2022-02-04T14:48:54"
      },
      "qualitativeMeasurement": {
        "extractedValue": "eOMtThyhVNLWUZNRcBaQKxI",
        "readQuality": "5",
        "measurementTimestamp": "2022-02-04T14:48:54"
      }
    }
  ]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was a explicit decision to keep it "open" because the set of characteristic is such a heterogenous set that one would have to create almost everytime a new object to fully capture the requirements for the measurement. I`ll raise to and discuss this with Jochen and Sebastian .

Copy link
Contributor

@johannsvarela johannsvarela Oct 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LuisRickert I got your point of view and agree. But from a semantic perspective, it is not recommended to define an aspect model with an open object list. If we publish the model in this form, there won't be rules which data in which form are exchanged between business partners, as the data list is not further defined and therefore not standardized. This is in contrary to the Catena-X approach!

Suggestion

As mentioned above, I recommend defining all known and possible properties/attributes for the object list for this first version and expanding the aspect model with new data in the future as needed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@johannsvarela after discussing this with Jochen and Sebastian we decided to keep the model as it is, since there is no sane way to provide a structure that could support a wide variety of measurements. We are aware that this can result in the rejection of the model.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @johannsvarela, @LuisRickert ,
there is one more important reason why we created the result as a set. The result is product specfic and not general usable for all product. Therefore no general aspect model for products in general possible. There is also no traceability through multiple tiers possible, because every special characteristic is linked to one specific product.

samm:preferredName "measurement_results"@en ;
samm:description "List of measurementObjects"@en ;
samm:characteristic :ResultList .

:measurementType a samm:Property ;
samm:preferredName "Measurement Type"@en ;
samm:description "This optional attribute hints the type of the measurement"@en ;
samm:characteristic samm-c:Text .
Copy link
Contributor

@johannsvarela johannsvarela Oct 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it make sense to define the measurementType as enumeration with the three types, that will be described in the KIT instead of a text type?

Example:

  • Simple (Measurement)
  • Qualitative (Measurement)
  • Functional (Measurement)


:revisionIndex a samm:Property ;
samm:preferredName "Revision Index"@en ;
samm:description "This attribute contains the revision index of the special characteristic, it is necessary to identify a special characteristic"@en ;
samm:characteristic samm-c:Text ;
samm:exampleValue "01" .

:CharacteristicCustomerPartID a samm:Characteristic ;
samm:preferredName "customerPartID_characteristic"@en ;
samm:dataType xsd:string .

:ResultList a samm-c:List ;
samm:preferredName "ResultList"@en ;
samm:description "List of result objects"@en ;
samm:dataType :MeasurmentObject .

:MeasurmentObject a samm:Entity ;
samm:preferredName "Measurmentobject"@en ;
samm:description "This Entity represents a generic Measurment Object"@en ;
samm:properties ( ) .

Loading