gbizinfo-lod/gbizinfo_lod/mappers/hojin.py

292 lines
12 KiB
Python

from rdflib import URIRef
from ..namespace import *
from . import CSV2RDFMapper, Literal, _TripleMapType, bpo
class GbizInfoHojinMapper(CSV2RDFMapper):
"""法人情報・法人基本情報"""
@property
def graph(self) -> URIRef:
return URIRef("http://hojin-info.go.jp/graph/hojin")
@staticmethod
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
s = HJ_DATA[row["ID-識別値"]]
ss = HJ_BASIC[row["ID-識別値"]]
triples = [
(s, HJ.法人基本情報, ss),
(s, RDF.type, HJ.法人情報型),
(ss, RDF.type, HJ.法人基本情報型),
# 1
(
ss,
IC.ID,
bpo(
[
(RDF.type, IC.ID型),
(IC.体系, IC_ID.corporateNumber),
(IC.識別値, row["ID-識別値"]),
]
),
),
# 2, 3
(
ss,
IC.名称,
bpo(
[
(RDF.type, IC.名称型),
(IC.種別, row["名称[日本語表記]-種別"]),
(IC.表記, row["名称[日本語表記]-表記"]),
(IC.カナ表記, row["名称[日本語表記]-カナ表記"]),
]
),
),
# 2, 3
(
ss,
IC.名称,
bpo(
[
(RDF.type, IC.名称型),
(IC.種別, row["名称[英語表記]-種別"]),
(IC.表記, row["名称[英語表記]-表記"]),
(IC.カナ表記, row["名称[英語表記]-カナ表記"]),
]
),
),
# 4, 5
(
ss,
IC.活動状況,
bpo(
[
(RDF.type, IC.状況型),
(
IC.発生日,
bpo(
[
(RDF.type, IC.日時型),
(
IC.標準型日時,
Literal(
row["活動状況-発生日"],
datatype=XSD.dateTime,
),
),
]
),
),
(IC.説明, row["活動状況-説明"]),
]
),
),
# 6, 7, 8, 9, 10, 11, 12, 13
(
ss,
IC.住所,
bpo(
[
(RDF.type, HJ.住所型),
(IC.種別, row["住所[日本語表記]-種別"]),
(IC.表記, row["住所[日本語表記]-表記"]),
(IC.郵便番号, row["住所[日本語表記]-郵便番号"]),
(IC.都道府県, row["住所[日本語表記]-都道府県"]),
(
IC.都道府県コード,
URIRef(
f"http://imi.go.jp/ns/code_id/code/jisx0401#{row['住所[日本語表記]-都道府県コード']}"
),
),
(IC.市区町村, row["住所[日本語表記]-市区町村"]),
(
IC.市区町村コード,
URIRef(
f"http://imi.go.jp/ns/code_id/code/jisx0402#{row['住所[日本語表記]-市区町村コード']}"
),
),
(HJ.町名番地等, row["住所[日本語表記]-町名番地等"]),
]
),
),
# 6, 7, 8, 9, 10, 11, 12, 13, 14
(
ss,
IC.住所,
bpo(
[
(RDF.type, HJ.住所型),
(IC.種別, row["住所[英語表記]-種別"]),
(IC.表記, row["住所[英語表記]-表記"]),
(IC.郵便番号, row["住所[英語表記]-郵便番号"]),
(IC.都道府県, row["住所[英語表記]-都道府県"]),
(
IC.都道府県コード,
URIRef(
f"http://imi.go.jp/ns/code_id/code/jisx0401#{row['住所[英語表記]-都道府県コード']}"
),
),
(IC.市区町村, row["住所[英語表記]-市区町村"]),
(
IC.市区町村コード,
URIRef(
f"http://imi.go.jp/ns/code_id/code/jisx0402#{row['住所[英語表記]-市区町村コード']}"
),
),
(HJ.町名番地等, row["住所[英語表記]-町名番地等"]),
(
HJ.市区町村町名番地等,
row["住所[英語表記]-市区町村町名番地以下"],
),
]
),
),
# 15
(
ss,
IC.組織種別,
URIRef(f"http://imi.go.jp/ns/code_id/code/kind#{row['組織種別']}"),
),
# 16
(
ss,
HJ.更新日時,
bpo(
[
(RDF.type, IC.日時型),
(
IC.標準型日時,
Literal(
(
f"{row["更新日時"]}T00:00:00"
if row["更新日時"]
else None
),
datatype=XSD.dateTime,
),
),
]
),
),
# 17, 18, 19, 20
(
ss,
HJ.公表組織,
bpo(
[
(RDF.type, IC.組織型),
(
IC.ID,
bpo(
[
(RDF.type, IC.ID型),
(
IC.体系,
bpo(
[
(RDF.type, IC.ID体系型),
(
IC.名称,
bpo(
[
(RDF.type, IC.名称型),
(
IC.表記,
row["公表組織-ID名称"],
),
]
),
),
(
IC.発行者,
bpo(
[
(RDF.type, IC.実体型),
(
IC.名称,
bpo(
[
(
RDF.type,
IC.名称型,
),
(
IC.表記,
row[
"公表組織-ID発行者"
],
),
]
),
),
]
),
),
]
),
),
(IC.識別値, row["公表組織-ID識別値"]),
]
),
),
(
IC.名称,
bpo(
[(RDF.type, IC.名称型), (IC.表記, row["公表組織-名称"])]
),
),
]
),
),
# 21, 22
(
ss,
HJ.区分,
bpo(
[
(IC.種別, row["区分-処理種別"]),
(IC.表記, row["区分-処理表記"]),
]
),
),
# 21, 22
(
ss,
HJ.区分,
bpo(
[
(IC.種別, row["区分-訂正種別"]),
(IC.表記, row["区分-訂正表記"]),
]
),
),
# 21, 22
(
ss,
HJ.区分,
bpo(
[
(IC.種別, row["区分-最新種別"]),
(IC.表記, row["区分-最新表記"]),
]
),
),
# 21, 22
(
ss,
HJ.区分,
bpo(
[
(IC.種別, row["区分-過去種別"]),
(IC.表記, row["区分-過去表記"]),
]
),
),
]
return triples
__all__ = ["GbizInfoHojinMapper"]