@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/business-code-design-check-digit/#article>
    schema:about <https://comcomponent.com/knowledge/business-code/>, <https://comcomponent.com/knowledge/check-digit/> ;
    schema:mentions <https://comcomponent.com/knowledge/significant-code/>, <https://comcomponent.com/knowledge/sequential-code/>, <https://comcomponent.com/knowledge/jan-code/>, <https://comcomponent.com/knowledge/gs1-standard/>, <https://comcomponent.com/knowledge/luhn-algorithm/>, <https://comcomponent.com/knowledge/modulus-11-check/>, <https://comcomponent.com/knowledge/mynumber/>, <https://comcomponent.com/knowledge/corporate-number/>, <https://comcomponent.com/knowledge/modulus-9-check/>, <https://comcomponent.com/knowledge/verhoeff-algorithm/>, <https://comcomponent.com/knowledge/damm-algorithm/>, <https://comcomponent.com/knowledge/crockford-base32/>, <https://comcomponent.com/knowledge/excel-numeric-coercion/>, <https://comcomponent.com/knowledge/single-digit-input-error/>, <https://comcomponent.com/knowledge/adjacent-transposition-error/> .

<https://comcomponent.com/knowledge/business-code/> a skos:Concept ;
    skos:prefLabel "業務コード(商品コード・顧客コードなど)"@ja ;
    skos:definition "業務システムで対象を一意に識別するために付与する商品コード・顧客コード・伝票番号などの記号。"@ja ;
    skos:altLabel "コード体系"@ja ;
    skos:altLabel "商品コード"@ja ;
    skos:altLabel "顧客コード"@ja .

<https://comcomponent.com/knowledge/check-digit/> a skos:Concept ;
    skos:prefLabel "チェックディジット(検査用数字)"@ja ;
    skos:definition "コードの末尾(または先頭)に、他の桁から計算で導けるよう付ける1桁で、入力されたコードの誤りをその場で検出する仕組み。"@ja ;
    skos:altLabel "検査用数字"@ja ;
    skos:altLabel "チェックデジット"@ja .

<https://comcomponent.com/knowledge/significant-code/> a skos:Concept ;
    skos:prefLabel "有意コード"@ja ;
    skos:definition "部門・分類・年度など対象の属性の意味を桁に埋め込むコード体系。読めば属性が分かる一方、組織改編や分類変更で振り直しが必要になりやすい。"@ja ;
    skos:altLabel "完全有意コード"@ja .

<https://comcomponent.com/knowledge/sequential-code/> a skos:Concept ;
    skos:prefLabel "無意味連番"@ja ;
    skos:definition "属性の意味を持たせず、対象を一意に指すためだけに振る連番のコード体系。何が変わっても壊れにくい。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/business-code/> .

<https://comcomponent.com/knowledge/excel-numeric-coercion/> a skos:Concept ;
    skos:prefLabel "Excelの数値変換による0落ち・15桁丸め"@ja ;
    skos:definition "Excelがセルの内容を数値と解釈すると先頭ゼロを削除し、数値の有効精度が15桁のため16桁以降を0に置き換えてしまう現象。"@ja ;
    skos:altLabel "0落ち"@ja ;
    skos:altLabel "15桁丸め"@ja ;
    skos:altLabel "先頭ゼロ消失"@ja .

<https://comcomponent.com/knowledge/mynumber/> a skos:Concept ;
    skos:prefLabel "マイナンバー(個人番号)"@ja ;
    skos:definition "住民票コードを作為が加わらない方法で変換して生成される、意味を持たない11桁の番号と、その後に付された1桁の検査用数字からなる番号。"@ja ;
    skos:altLabel "個人番号"@ja ;
    ks:uses <https://comcomponent.com/knowledge/sequential-code/> ;
    ks:uses <https://comcomponent.com/knowledge/modulus-11-check/> .

<https://comcomponent.com/knowledge/modulus-11-check/> a skos:Concept ;
    skos:prefLabel "モジュラス11のチェックディジット"@ja ;
    skos:definition "各桁に重みを掛けた合計を11で割った余りから検査用数字を導く方式。マイナンバーで使われ、余りが0または1のときは検査用数字を一律0とする畳み込みを持つ。"@ja ;
    skos:altLabel "モジュラス11"@ja ;
    skos:altLabel "重み付けモジュラス11"@ja ;
    ks:implements <https://comcomponent.com/knowledge/check-digit/> .

<https://comcomponent.com/knowledge/corporate-number/> a skos:Concept ;
    skos:prefLabel "法人番号"@ja ;
    skos:definition "12桁の基礎番号とその前に付された1桁の検査用数字で構成される、法人に指定される番号。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/modulus-9-check/> .

<https://comcomponent.com/knowledge/modulus-9-check/> a skos:Concept ;
    skos:prefLabel "モジュラス9のチェックディジット"@ja ;
    skos:definition "基礎番号の各桁に奇数桁×1・偶数桁×2の重みを掛けた合計を9で割った余りから検査用数字を導く方式。法人番号で使われ、9で割る都合上0と9を区別できない。"@ja ;
    skos:altLabel "モジュラス9"@ja ;
    ks:implements <https://comcomponent.com/knowledge/check-digit/> .

<https://comcomponent.com/knowledge/jan-code/> a skos:Concept ;
    skos:prefLabel "JANコード(GTIN)"@ja ;
    skos:definition "商品にバーコードとして印字して社外(小売・EC・物流)に流通させるための、GS1標準に基づく商品識別コード。"@ja ;
    skos:altLabel "GTIN-13" ;
    skos:altLabel "バーコード"@ja ;
    ks:requires <https://comcomponent.com/knowledge/gs1-standard/> ;
    ks:uses <https://comcomponent.com/knowledge/check-digit/> .

<https://comcomponent.com/knowledge/gs1-standard/> a skos:Concept ;
    skos:prefLabel "GS1標準(モジュラス10 ウェイト3-1)"@ja ;
    skos:definition "GTIN・GS1アプリケーション識別子(AI)・SSCC・GLNなどの識別コード体系や、バーコードのシンボル品質・配置要件を定めるGS1の標準規格群。JANコードやISBN-13のチェックディジットは、右端の桁から3倍・1倍を交互に掛けた合計から「10から合計を10で割った余りを引く」方式(モジュラス10 ウェイト3-1)で算出する。"@ja ;
    skos:altLabel "GS1" ;
    skos:altLabel "ISBN-13" ;
    ks:implements <https://comcomponent.com/knowledge/check-digit/> ;
    ks:prevents <https://comcomponent.com/knowledge/single-digit-input-error/> .

<https://comcomponent.com/knowledge/luhn-algorithm/> a skos:Concept ;
    skos:prefLabel "Luhnアルゴリズム(モジュラス10)"@ja ;
    skos:definition "1954年にIBMのH. P. Luhnが特許出願した、1つおきの桁を2倍し9を超えたら9を引いて合計するチェックディジット方式。クレジットカード番号で使われる。"@ja ;
    skos:altLabel "Luhn" ;
    skos:altLabel "Luhnアルゴリズム"@ja ;
    ks:implements <https://comcomponent.com/knowledge/check-digit/> ;
    ks:prevents <https://comcomponent.com/knowledge/single-digit-input-error/> .

<https://comcomponent.com/knowledge/verhoeff-algorithm/> a skos:Concept ;
    skos:prefLabel "Verhoeff法"@ja ;
    skos:definition "群演算による表引きで、すべての1桁誤りとすべての隣接転置を検出する十進コードを初めて構成したチェックディジット方式。"@ja ;
    skos:altLabel "Verhoeffアルゴリズム"@ja ;
    ks:implements <https://comcomponent.com/knowledge/check-digit/> ;
    ks:prevents <https://comcomponent.com/knowledge/adjacent-transposition-error/> .

<https://comcomponent.com/knowledge/damm-algorithm/> a skos:Concept ;
    skos:prefLabel "Damm法"@ja ;
    skos:definition "準群(quasigroup)の演算表を1枚引くだけで、すべての1桁誤りとすべての隣接転置を検出できるチェックディジット方式。"@ja ;
    skos:altLabel "Dammアルゴリズム"@ja ;
    ks:implements <https://comcomponent.com/knowledge/check-digit/> ;
    ks:prevents <https://comcomponent.com/knowledge/adjacent-transposition-error/> .

<https://comcomponent.com/knowledge/single-digit-input-error/> a skos:Concept ;
    skos:prefLabel "1桁誤り(打ち間違い)"@ja ;
    skos:definition "コードの1桁だけを別の数字に打ち間違える入力ミスの類型。実測では誤りの60〜95%を占める最大の類型とされる。"@ja ;
    skos:altLabel "single error" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/check-digit/> .

<https://comcomponent.com/knowledge/adjacent-transposition-error/> a skos:Concept ;
    skos:prefLabel "隣接転置の誤り"@ja ;
    skos:definition "隣り合う2桁を入れ替えてしまう入力ミスの類型。2桁誤り全体(10〜20%)の大部分を占める。"@ja ;
    skos:altLabel "ab→ba型の入れ替え"@ja ;
    skos:altLabel "隣接桁の入れ替え"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/check-digit/> .

<https://comcomponent.com/knowledge/crockford-base32/> a skos:Concept ;
    skos:prefLabel "Crockford Base32"@ja ;
    skos:definition "1と紛らわしいI・L、0と紛らわしいOなどを除いた32文字のアルファベットを使い、桁数を圧縮しつつ誤読対策を施した符号化方式。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/significant-code/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/business-code/> ;
    schema:description "部門・分類・年度をコードの桁に埋め込む有意コードは、組織改編・分類変更・部分的な桁枯渇で振り直しが必要になるため、業務コードの設計として推奨されない"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426CO0000000155> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/sequential-code/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/business-code/> ;
    schema:description "属性を持たせない無意味連番は何が変わっても壊れにくく、業務コードの設計として本記事が推奨する選択肢である"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426CO0000000155> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/check-digit/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/business-code/> ;
    schema:description "紙の帳票からの入力や電話での伝達など人の手と目を通る業務コードには、入力誤りをその場で検出できるチェックディジットを付けることが推奨される"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426CO0000000155> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/business-code/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/excel-numeric-coercion/> ;
    schema:description "先頭ゼロの保持や16桁以上の桁を必要とする業務コードは、Excelがセルを数値として解釈する挙動と両立せず、全経路で文字列として扱う必要がある"@ja ;
    ks:evidence <https://support.microsoft.com/topic/1bf7b935-36e1-4985-842f-5dfa51f85fe7> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mynumber/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/sequential-code/> ;
    schema:description "マイナンバーは住民票コードを作為が加わらない方法で変換して生成される、意味を持たない番号として設計されている"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426CO0000000155> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mynumber/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/modulus-11-check/> ;
    schema:description "マイナンバーの検査用数字はモジュラス11の算式(重みを掛けた合計を11で除し、余りが1以下なら0とする)で算出される"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426M60000008085> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/corporate-number/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/modulus-9-check/> ;
    schema:description "法人番号の検査用数字は基礎番号に奇数桁×1・偶数桁×2の重みを掛けた合計を9で除した余りから算出される"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426M60000040070> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jan-code/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/gs1-standard/> ;
    schema:description "JANコードの利用にはGS1事業者コードの貸与を受ける登録手続きが必要で、自社で勝手に決めることはできない"@ja ;
    ks:evidence <https://www.gs1jp.org/code/jan/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/jan-code/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "JANコード(GTIN-13)のチェックデジットの計算方法もGS1標準で定められている"@ja ;
    ks:evidence <https://www.gs1jp.org/code/jan/check_digit.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/luhn-algorithm/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "Luhnアルゴリズムは1つおきの桁を2倍し9を超えたら9を引いて合計する計算でチェックディジットを実装する"@ja ;
    ks:evidence <https://patents.google.com/patent/US2950048A/en> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/modulus-11-check/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "モジュラス11のチェックディジットは重みを掛けた合計を11で割った余りからマイナンバーの検査用数字を実装する"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426M60000008085> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/modulus-9-check/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "モジュラス9のチェックディジットは重みを掛けた合計を9で割った余りから法人番号の検査用数字を実装する"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426M60000040070> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gs1-standard/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "GS1標準はモジュラス10ウェイト3-1の計算でJANコード・ISBN-13のチェックディジットを実装する"@ja ;
    ks:evidence <https://www.gs1jp.org/code/jan/check_digit.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/verhoeff-algorithm/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "Verhoeff法は群演算の表引きでチェックディジットを実装する"@ja ;
    ks:evidence <https://ir.cwi.nl/pub/13046> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/damm-algorithm/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "Damm法は準群の演算表を1枚引くだけでチェックディジットを実装する"@ja ;
    ks:evidence <https://doi.org/10.1016/j.disc.2006.05.033> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/single-digit-input-error/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "コードの1桁だけの打ち間違いは、正しく設計されたチェックディジットで確認できる"@ja ;
    ks:evidence <https://ir.cwi.nl/pub/13046> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/adjacent-transposition-error/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/check-digit/> ;
    schema:description "隣接する2桁の入れ替えは、正しく設計されたチェックディジットで確認できる"@ja ;
    ks:evidence <https://ir.cwi.nl/pub/13046> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/luhn-algorithm/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/single-digit-input-error/> ;
    schema:description "Luhnアルゴリズムはすべての1桁誤りを検出できる"@ja ;
    ks:evidence <https://patents.google.com/patent/US2950048A/en> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/luhn-algorithm/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/adjacent-transposition-error/> ;
    schema:description "Luhnアルゴリズムは隣接転置のうち09↔90の1組だけを見逃し、それ以外は検出できる"@ja ;
    ks:evidence <https://patents.google.com/patent/US2950048A/en> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gs1-standard/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/single-digit-input-error/> ;
    schema:description "GS1標準(モジュラス10ウェイト3-1)はすべての1桁誤りを検出できる"@ja ;
    ks:evidence <https://www.gs1jp.org/code/jan/check_digit.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/gs1-standard/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/adjacent-transposition-error/> ;
    schema:description "GS1標準は隣接転置のうち差が5の組(05↔50など)だけを見逃し、それ以外は検出できる"@ja ;
    ks:evidence <https://www.gs1jp.org/code/jan/check_digit.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/modulus-11-check/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/adjacent-transposition-error/> ;
    schema:description "モジュラス11のチェックディジットは隣接転置をほぼすべて検出できるが、余りが0または1に畳み込まれる2クラス間の誤りは検出できない"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426M60000008085> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/modulus-9-check/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/single-digit-input-error/> ;
    schema:description "モジュラス9のチェックディジットは9で割った余りを使うため0と9が合同になり、この2つの打ち間違いだけは検出できない"@ja ;
    ks:evidence <https://laws.e-gov.go.jp/law/426M60000040070> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/verhoeff-algorithm/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/adjacent-transposition-error/> ;
    schema:description "Verhoeff法はすべての1桁誤りとすべての隣接転置を検出する"@ja ;
    ks:evidence <https://ir.cwi.nl/pub/13046> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/damm-algorithm/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/adjacent-transposition-error/> ;
    schema:description "Damm法はすべての1桁誤りとすべての隣接転置を検出する"@ja ;
    ks:evidence <https://doi.org/10.1016/j.disc.2006.05.033> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/crockford-base32/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/business-code/> ;
    schema:description "電話や手書きでの伝達がなく桁数を圧縮したい業務コードには、誤読対策済みのCrockford Base32のような設計済みアルファベットの採用が推奨される"@ja ;
    ks:evidence <https://www.crockford.com/base32.html> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
