SPDX3.0
3.0.1
ドメイン
ドメイン知識とかのドメイン
例: cyber security, software, bills of material, licensing, software security
クラス
特定の概念を示すもの
例: File, Person, ExternalReference
ドメインクラス
クラスのうちドメインの主要な焦点となるもの
DDDでいうコアドメインみたいなもんかsta.icon
非ドメインクラス
ドメインクラスじゃないけど、ドメインクラスの次くらいに出てくるクラス
---
概念、用語、カテゴリ、関係などの明示的な仕様
scoped domain(特定のドメイン)内でのコミュニケーションと分析のための語彙を提供する
SPDX3.0は部品表というドメインのサポートを目指したオントロジーと言える
---
プロパティ
クラスが持つ、そのクラスの何らかの特徴を示したもの
要は属性sta.icon
datatype(数字や文字列などを持つもの)とobject(他のクラスとの関係を記したもの)がある
---
Constraint
クラス図でいうカーディナリティみたいなやつsta.icon
Shape
クラスやプロパティに対する制約を規定する
たぶん「256文字以内の文字数」みたいなアレsta.icon
Validation
SPDX3.0の文法に則っているかを検証する
syntax checkersta.icon
---
名前空間
ある概念クラスとプロパティを包含した単位
SPDX3.0ではCore名前空間があって、これを継承した名前空間が色々ある
例: Software, Licensing, Security, Build, Usage, AI, Dataset, Service
Profile
ある名前空間に意味とか使い方とかを与えた単位
Namespace + メタデータと思えばいいと思うsta.icon
---
Serialization
データとして送れるように変換すること
逆にシリアライズしたデータを受け取って元の形式に戻すのはDeserialization
Canonicalization
シリアライズして送ってそれ戻すだけだと決定論的にはならないので、もうちょっと工夫が要る
フォーマット何使うのとか、パケットみたいにn個送ったけどそれ受け取った側でどうやって組み立てるのとか
その辺の処理をCanonicalization、平準化という
sbomの中身どんな感じ?
.elements[] の中に Element が詰まっている
この Element が色んなタイプになる
たとえば構成情報表す場合は @type="Package"
2.x では .packages[] みたいなのがあったけど、そういうのは無い
.elements[] の中に Element があるだけで、この Element が type で分かれている
sta.icon
多様なユースケースに対応できる能力を持たせてきた
2.xとの互換性無いンゴ
SPDX Liteどうするの?
使えるフォーマットは事実上 json-ld だけ?
namaspaceの概念を表現できるのがjson-ldしかない
yamlとかxmlとかtag:valueでは無理
構成情報表すのに使うのはこの辺か?
製品名が package にないんだけど、element の name を使うってことなのかな?
yes。External properties restrictionsって書いてる
packageVersion
downloadLocation
packageUrl
homePage
sourceInfo