> Source: https://www.ymotongpoo.com/works/oteps/otep-0038/


# OTEP-0038: バージョンセマンティック属性

標準的な `version` セマンティック属性を追加します。

## 動機 {#motivation}

トレースデータやメトリクスを作成するとき、参照しているスパンや測定値のイオタを送出した特定のバージョンを知ることは非常に有用です。
しかし、バージョンはシステムやユーザーによって異なる意味を持つことがあります。
さらに、下流の分析システムは、バージョンの種類に関連する機能（バージョンの新旧を検出するなど）を公開したい場合があります。
これをサポートするために、バージョンの種類を示すオプションのヒントを備えた `version` 属性を標準化するべきです。

## 解説 {#explanation}

`version` は、`Service`、`Component`、`Library`、`Device`、`Platform` などの他のリソースに適用できるセマンティック属性です。
`version` 属性はオプションですが、推奨されます。
`version` の定義は `string` から `string` へのキーバリュー属性ペアであり、次のようにバージョンの種類を示すために利用できる命名スキーマを備えています。

`version=semver:1.2.3`（セマンティックバージョン）
`version=git:8ae73a`（Gitのshaハッシュ）
`version=0.0.4.2.20190921`（型を持たないバージョン）

## 内部の詳細 {#internal-details}

これは単なる属性ペアにすぎないため、特別な処理は必要ありませんが、SDKはスキーマに適した値を構築するためのヘルパーメソッドを提供してもよいでしょう。

## 先行技術と代替技術 {#prior-art-and-alternatives}

サービスリソースにそのバージョンでタグ付けすることは、分析ツールによって一般的に提案されています。例として[JAEGER_TAGS](https://www.jaegertracing.io/docs/1.8/client-libraries/client-features/)を参照してください。しかし、標準化はされていません。

