Thanks for summarizing this David, if you have a chance could you show what a unit of transfer file would look like (JSON, YAML, ... any is fine). I've put a few comments in below.
Sent from Outlook<http://aka.ms/weboutlook> ________________________________ From: [email protected] <[email protected]> on behalf of David Kemp via lists.spdx.org <[email protected]> Sent: Thursday, March 10, 2022 5:41 PM To: SPDX-list <[email protected]> Subject: [EXTERNAL] [spdx-tech] Serialization, Integrity and the logical model For the punch list and signature/hash discussions: * Elements are metadata about "things". * A unit of transfer is a thing like a file or package * A unit of transfer contains serialized data used to transfer one or more Elements * A Document Element is metadata about a unit of transfer, not the UoT itself. * Like a file or package, a unit of transfer exists independently of whether metadata has ever been created to describe it. [William] Would this be valid though? If I sent you a "unit of transfer" that does not have a Document element I wouldn't consider that to be valid. An analogy would be a JPEG file, it contains the serialized image data, but it also had a header, without that header it is no longer a JPEG file. Yes, you may be able to still interpret the remaining data, but you can't claim it's a JPEG. * Integrity check values (ICVs) can be computed over any sequence of bytes including a UoT. [William] Since a Unit of Transfer contains elements but is not an element how do you attach the ICV to the Unit of Transfer? * Serializing multiple elements into a UoT allows a single ICV to provide integrity over that collection of elements. * Serializing a single element into a UoT allows an ICV to provide integrity over that element independently of all other elements. [William] I'm struggling to imagine what this looks like so a physical example would really help. My specific struggle is with what the Document, UnitOfTransfer, and associated ICV look like when serialized. As a reminder, the attached diagram (and my serialized versions of William's Relationship examples that Nisha graphed) illustrate that a logical model does not define serialization -- multiple serializations exist for the same logical model. ExternalMap and NamespaceMap exist to support Element serialization; they do not exist in logical / deserialized Elements. [William] One specific requirement was that we can retain the ExternalMap and NamespaceMap when deserializing and serializing, even across different formats. I think this requirement then requires that information to be in the logical model so that it isn't lost. The logical model<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fspdx%2Fmeetings%2Fblob%2Fmain%2Ftech%2FModel.png&data=04%7C01%7Cwillbar%40microsoft.com%7Cf6d5be04b4e34d3a4c2e08da03003cd9%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637825596808207995%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=kqAhq1uIt%2FS3UYTX1gv3vv3JhNrGx7JI4HBBAF5pWSA%3D&reserved=0> has a question "should namespace map be on collection or doc?" Because Collection, Document, BOM, and SBOM are logical elements, namespace map doesn't apply to any of them. Only when Document, BOM, or SBOM elements are serialized into a UoT does namespace map data exist. Proof: when a UoT is created the namespaces and prefix for each namespace are assigned. Two different UoTs could be created with different prefixes and namespaces; but after deserialization the Elements from each UoT are identical. [William] I want to separate this into two parts. Yes, once deserialized the elements are identical. However, the NamespaceMap is kept in the logical model so that when you serialize back out you can repeat the original map process. Dave -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#4394): https://lists.spdx.org/g/Spdx-tech/message/4394 Mute This Topic: https://lists.spdx.org/mt/89702111/21656 Group Owner: [email protected] Unsubscribe: https://lists.spdx.org/g/Spdx-tech/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
