mirror of
https://github.com/Babibubebon/gbizinfo-lod.git
synced 2024-09-22 14:50:52 +09:00
Initial commit
This commit is contained in:
commit
e0b21ac806
21 changed files with 15122 additions and 0 deletions
18
.github/workflows/publish.yml
vendored
Normal file
18
.github/workflows/publish.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
name: Publish Python Package
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Build and publish to pypi
|
||||
uses: JRubics/poetry-publish@v2.0
|
||||
with:
|
||||
pypi_token: ${{ secrets.PYPI_TOKEN }}
|
||||
poetry_version: "==1.7.1"
|
||||
ignore_dev_requirements: "yes"
|
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
.venv
|
||||
.idea
|
||||
data/
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2024 Babibubebon
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
97
README.md
Normal file
97
README.md
Normal file
|
@ -0,0 +1,97 @@
|
|||
# gBizINFO-LOD
|
||||
|
||||
[gBizINFO](https://info.gbiz.go.jp/)が提供する[CSV形式のデータ](https://info.gbiz.go.jp/hojin/DownloadTop)からLinked Open Data(LOD)データセットを生成するためのツール
|
||||
|
||||
## 使い方
|
||||
|
||||
変換元となる法人活動情報語彙対応版CSVファイル群のダウンロード
|
||||
(注: 法人基本情報は全件の一括ダウンロードが不可のため時間がかかる)
|
||||
|
||||
```shell
|
||||
gbilod download ./work_dir/
|
||||
```
|
||||
|
||||
CSVファイル群をRDF(N-Triples形式)に変換
|
||||
|
||||
```shell
|
||||
gbilod convert ./work_dir/ -o ./output_dir/
|
||||
```
|
||||
|
||||
[Graph URI](#graph-rui)毎にファイルが出力される
|
||||
|
||||
## 変換仕様
|
||||
|
||||
基本的には以下の仕様書に基づく。
|
||||
|
||||
- gBizINFO SPARQL API仕様書: https://web.archive.org/web/2/https://info.gbiz.go.jp/api/document/API.pdf
|
||||
- リソース定義書 (CSV, XMLスキーマ仕様書): https://info.gbiz.go.jp/common/data/resourceinfo.pdf
|
||||
|
||||
### 仕様書との差異
|
||||
|
||||
仕様書上の定義と異なる、または未定義である箇所を以下にまとめる。
|
||||
|
||||
- 法人番号を表す `ic:ID/ic:体系` の目的語は `<http://imi.go.jp/ns/code_id/id/corporateNumber>`
|
||||
|
||||
```
|
||||
ex:Hojin <http://imi.go.jp/ns/core/rdf#ID> [
|
||||
<http://imi.go.jp/ns/core/rdf#体系> <http://imi.go.jp/ns/code_id/id/corporateNumber> ;
|
||||
<http://imi.go.jp/ns/core/rdf#識別値> "0123456789123" ;
|
||||
a <http://imi.go.jp/ns/core/rdf#ID型>
|
||||
] ;
|
||||
```
|
||||
|
||||
- 職場情報および財務情報における `hj:数量コレクション/hj:数量/hj:指標` の目的語はic:コード型の型付リテラル
|
||||
- 提供されていたRDFデータがこのようになっており、互換性確保のためこの仕様を踏襲する。
|
||||
- 本来はリテラルではなく、 `http://hojin-info.go.jp/graph/commonCode` グラフ内で定義されているリソースへのURI参照を期待したものと思われる。
|
||||
|
||||
```
|
||||
ex:HojinShokuba <http://hojin-info.go.jp/ns/domain/biz/1#数量コレクション> [
|
||||
<http://hojin-info.go.jp/ns/domain/biz/1#数量> [
|
||||
<http://hojin-info.go.jp/ns/domain/biz/1#指標> "http://hojin-info.go.jp/code/職場情報/企業規模"^^<http://imi.go.jp/ns/core/rdf#コード型> ;
|
||||
<http://imi.go.jp/ns/core/rdf#単位表記> "人" ;
|
||||
<http://imi.go.jp/ns/core/rdf#数値> 100.0 ;
|
||||
a <http://hojin-info.go.jp/ns/domain/biz/1#数量型>
|
||||
]
|
||||
]
|
||||
```
|
||||
|
||||
## Graph URI
|
||||
|
||||
- 法人基本情報: `http://hojin-info.go.jp/graph/hojin`
|
||||
- 補助金情報: `http://hojin-info.go.jp/graph/hojyokin`
|
||||
- 調達情報: `http://hojin-info.go.jp/graph/chotatsu`
|
||||
- 表彰情報: `http://hojin-info.go.jp/graph/hyosho`
|
||||
- 届出認定情報: `http://hojin-info.go.jp/graph/todokede`
|
||||
- 特許情報: `http://hojin-info.go.jp/graph/tokkyo`
|
||||
- 職場情報: `http://hojin-info.go.jp/graph/shokuba`
|
||||
- 財務情報: `http://hojin-info.go.jp/graph/zaimu`
|
||||
- 共通コード: `http://hojin-info.go.jp/graph/commonCode`
|
||||
|
||||
## 背景
|
||||
|
||||
かつてgBizINFOではSPARQL APIが提供されており、APIを利用することでRDF形式のデータにアクセスすることができた。
|
||||
また、RDFストアとしてAmazon Neptuneを採用し[^1]、実践的な運用ノウハウが公開されるなど[^2]、システム面でも有用な事例であった。
|
||||
|
||||
一方で、野村総合研究所が落札した「令和4年度経済産業省デジタルプラットフォーム構築事業(
|
||||
Gビズインフォを通じた効果的なオープンデータ利活用の促進に向けた調査)
|
||||
」の[報告書 (2023年3月17日)](https://www.meti.go.jp/meti_lib/report/2022FY/000235.pdf)
|
||||
によると、LOD形式でのデータ提供について以下のような実態を指摘しており、公共データ分野でのLODの一定のニーズは認めているものの、SPARQL APIエンドポイントの存続有無の検討が必要と結論づけている。
|
||||
|
||||
```
|
||||
現行Gビズインフォにおける、利用者の期待と現状
|
||||
機能 - SPARQL API
|
||||
実態: 法人データにおいてはLODの普及度が低いため、活用されているとは言いがたい。
|
||||
利用者からの評価: △ インタビュー先のうち多数は知らない・知っているが使いにくいので使わないといった評価であった。
|
||||
```
|
||||
|
||||
2023年10月31日にはgBizINFOサイト上でRDF形式データの提供廃止が告知され、2024年4月1日に完全廃止となった[^3]。
|
||||
|
||||
[^1]: [AWS 導入事例:経済産業省](https://aws.amazon.com/jp/solutions/case-studies/meti/)
|
||||
[^2]: [経済産業省のデジタル化とgBizINFOの展開 2020年8⽉](https://pages.awscloud.com/rs/112-TZM-766/images/Session%204%20-%20gBizINFO.pdf)
|
||||
[^3]: [RDF廃止(サービス終了)のお知らせ](https://info.gbiz.go.jp/html/RdfStop.html)
|
||||
|
||||
## License
|
||||
|
||||
本リポジトリに含まれる [`commonCode.ttl`](commonCode.ttl) を除くリソースは、MIT Licenseで提供される。
|
||||
|
||||
`commonCode.ttl` は、「[gBizINFO](https://info.gbiz.go.jp/)」(経済産業省)のSPARQL APIより取得・加工して作成したもので、[経済産業省 利用規約](https://www.meti.go.jp/main/rules.html)に従い利用するものである。
|
12508
commonCode.ttl
Normal file
12508
commonCode.ttl
Normal file
File diff suppressed because it is too large
Load diff
3
gbizinfo_lod/__init__.py
Normal file
3
gbizinfo_lod/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
import importlib.metadata
|
||||
|
||||
__version__ = importlib.metadata.version("gbizinfo_lod")
|
50
gbizinfo_lod/client.py
Normal file
50
gbizinfo_lod/client.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
import csv
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
class GbizinfoClient:
|
||||
DOWNLOAD_ENDPOINT = "https://info.gbiz.go.jp/hojin/Download"
|
||||
CSV_ENDPOINT = "https://info.gbiz.go.jp/hojin/OutputCSV"
|
||||
CSV_MAX_ROWS = 1000
|
||||
|
||||
def __init__(self):
|
||||
self.session = requests.Session()
|
||||
|
||||
def download_csv(
|
||||
self, downfile: int, downtype: str = "zip", downenc: str = "UTF-8"
|
||||
) -> requests.Response:
|
||||
data = {
|
||||
"downfile": downfile,
|
||||
"downtype": downtype,
|
||||
"downenc": downenc,
|
||||
}
|
||||
res = self.session.post(self.DOWNLOAD_ENDPOINT, data=data, stream=True)
|
||||
res.raise_for_status()
|
||||
return res
|
||||
|
||||
def download_csv_to_file(
|
||||
self,
|
||||
file_path: str,
|
||||
downfile: int,
|
||||
downtype: str = "zip",
|
||||
downenc: str = "UTF-8",
|
||||
) -> None:
|
||||
res = self.download_csv(downfile, downtype, downenc)
|
||||
with open(file_path, "wb") as f:
|
||||
for c in res.iter_content(chunk_size=4 * 1024):
|
||||
f.write(c)
|
||||
|
||||
def output_csv(
|
||||
self, hojin_bango_list: list[str], csvdata: str = "00", output: str = "U"
|
||||
) -> list[dict[str, str]]:
|
||||
data = {
|
||||
"csvdata": csvdata,
|
||||
"output": output,
|
||||
"hojinBangoList": ",".join(hojin_bango_list),
|
||||
}
|
||||
res = self.session.post(self.CSV_ENDPOINT, data=data, stream=True)
|
||||
res.raise_for_status()
|
||||
lines = res.iter_lines(decode_unicode=True)
|
||||
next(lines)
|
||||
return [row for row in csv.DictReader(lines)]
|
183
gbizinfo_lod/command.py
Normal file
183
gbizinfo_lod/command.py
Normal file
|
@ -0,0 +1,183 @@
|
|||
import csv
|
||||
import os
|
||||
import shutil
|
||||
import time
|
||||
from typing import Iterator
|
||||
|
||||
import click
|
||||
|
||||
from . import __version__
|
||||
from .client import GbizinfoClient
|
||||
from .mappers import *
|
||||
from .mappers.todokede import GbizInfoTodokedeMapper
|
||||
|
||||
|
||||
@click.group()
|
||||
def cli():
|
||||
pass
|
||||
|
||||
|
||||
@cli.command()
|
||||
def version():
|
||||
click.echo(f"gbizinfo_lod/{__version__}")
|
||||
|
||||
|
||||
@cli.command(help="Download CSV files")
|
||||
@click.argument(
|
||||
"work_dir", type=click.Path(exists=True, file_okay=False, writable=True)
|
||||
)
|
||||
@click.option("--sleep", type=int, default=3, help="Sleep time in seconds")
|
||||
def download(work_dir: str, sleep: int):
|
||||
client = GbizinfoClient()
|
||||
|
||||
csv_files = {
|
||||
# CSV形式(法人活動情報語彙対応版)
|
||||
0: "TodokedeNinteijoho",
|
||||
1: "Hyoshojoho",
|
||||
2: "Hojokinjoho",
|
||||
3: "Chotatsujoho",
|
||||
4: "Tokkyojoho",
|
||||
5: "Zaimujoho",
|
||||
6: "Shokubajoho",
|
||||
# CSV形式
|
||||
7: "Kihonjoho",
|
||||
}
|
||||
|
||||
for file_id, name in csv_files.items():
|
||||
zip_file_name = f"{name}_UTF-8.zip"
|
||||
csv_file_name = f"{name}_UTF-8.csv"
|
||||
zip_file_path = os.path.join(work_dir, zip_file_name)
|
||||
csv_file_path = os.path.join(work_dir, csv_file_name)
|
||||
|
||||
click.echo(f"Downloading {zip_file_name}")
|
||||
client.download_csv_to_file(zip_file_path, file_id)
|
||||
click.echo(f"Unpacking {zip_file_name}")
|
||||
shutil.unpack_archive(zip_file_path, work_dir)
|
||||
os.remove(zip_file_path)
|
||||
|
||||
if not os.path.exists(csv_file_path):
|
||||
raise click.ClickException(f"{csv_file_path} not found")
|
||||
|
||||
kihonjoho_csv_file = os.path.join(work_dir, "Kihonjoho_UTF-8.csv")
|
||||
kihonjoho_imi_file = os.path.join(work_dir, "Kihonjoho_IMI_UTF-8.csv")
|
||||
|
||||
if not os.path.exists(kihonjoho_imi_file):
|
||||
click.echo("Retrieving Kihonjoho (IMI version)")
|
||||
with open(kihonjoho_imi_file, "w", encoding="utf-8") as f:
|
||||
writer = None
|
||||
for row in get_kihonjoho_imi(kihonjoho_csv_file, client):
|
||||
if writer is None:
|
||||
writer = csv.DictWriter(f, fieldnames=row.keys())
|
||||
writer.writeheader()
|
||||
writer.writerow(row)
|
||||
|
||||
|
||||
def get_kihonjoho_imi(
|
||||
csv_file: str, client: GbizinfoClient, sleep: int = 3
|
||||
) -> Iterator[dict]:
|
||||
with open(csv_file, "r", encoding="utf-8-sig") as f:
|
||||
reader = csv.DictReader(f)
|
||||
|
||||
count = 0
|
||||
chunk = []
|
||||
for row in reader:
|
||||
if not row["法人名"]:
|
||||
click.echo(f"skip: {row['法人番号']}", err=True)
|
||||
continue
|
||||
|
||||
chunk.append(row["法人番号"])
|
||||
if len(chunk) == client.CSV_MAX_ROWS:
|
||||
count += len(chunk)
|
||||
click.echo(f"{count} ...")
|
||||
|
||||
for r in client.output_csv(chunk):
|
||||
yield r
|
||||
chunk.clear()
|
||||
time.sleep(sleep)
|
||||
|
||||
if len(chunk) > 0:
|
||||
for r in client.output_csv(chunk):
|
||||
yield r
|
||||
|
||||
count += len(chunk)
|
||||
click.echo(f"{count}")
|
||||
|
||||
|
||||
MAPPER_TYPES = [
|
||||
"hojin",
|
||||
"hojyokin",
|
||||
"chotatsu",
|
||||
"hyosho",
|
||||
"todokede",
|
||||
"tokkyo",
|
||||
"shokuba",
|
||||
"zaimu",
|
||||
]
|
||||
|
||||
|
||||
@cli.command(help="Convert CSV files to RDF")
|
||||
@click.argument("work_dir")
|
||||
@click.option(
|
||||
"--mapper", "-m", "mappers", multiple=True, type=click.Choice(MAPPER_TYPES)
|
||||
)
|
||||
@click.option("--processes", "-p", type=int, default=-1)
|
||||
@click.option(
|
||||
"--output-dir", "-o", type=click.Path(exists=True, file_okay=False, writable=True)
|
||||
)
|
||||
def convert(work_dir: str, mappers: list[str], processes: int, output_dir: str):
|
||||
if not mappers:
|
||||
mappers = MAPPER_TYPES
|
||||
if not output_dir:
|
||||
output_dir = work_dir
|
||||
|
||||
for m in mappers:
|
||||
match m:
|
||||
case "hojin":
|
||||
mapper = GbizInfoHojinMapper(
|
||||
os.path.join(work_dir, "Kihonjoho_IMI_UTF-8.csv")
|
||||
)
|
||||
case "hojyokin":
|
||||
mapper = GbizInfoHojyokinMapper(
|
||||
os.path.join(work_dir, "Hojokinjoho_UTF-8.csv")
|
||||
)
|
||||
case "chotatsu":
|
||||
mapper = GbizInfoChotatsuMapper(
|
||||
os.path.join(work_dir, "Chotatsujoho_UTF-8.csv")
|
||||
)
|
||||
case "hyosho":
|
||||
mapper = GbizInfoHyoshoMapper(
|
||||
os.path.join(work_dir, "Hyoshojoho_UTF-8.csv")
|
||||
)
|
||||
case "todokede":
|
||||
mapper = GbizInfoTodokedeMapper(
|
||||
os.path.join(work_dir, "TodokedeNinteijoho_UTF-8.csv")
|
||||
)
|
||||
case "tokkyo":
|
||||
mapper = GbizInfoTokkyoMapper(
|
||||
os.path.join(work_dir, "Tokkyojoho_UTF-8.csv")
|
||||
)
|
||||
case "shokuba":
|
||||
mapper = GbizInfoShokubaMapper(
|
||||
os.path.join(work_dir, "Shokubajoho_UTF-8.csv")
|
||||
)
|
||||
case "zaimu":
|
||||
mapper = GbizInfoZaimuMapper(
|
||||
os.path.join(work_dir, "Zaimujoho_UTF-8.csv")
|
||||
)
|
||||
case _:
|
||||
raise NotImplementedError
|
||||
|
||||
output_file = os.path.join(output_dir, f"{m}.nt")
|
||||
click.echo(f"output: {output_file}")
|
||||
click.echo(f"Running {m} mapper ...")
|
||||
with open(output_file, "w") as f:
|
||||
mapper.run(n_jobs=processes, output=f)
|
||||
|
||||
|
||||
@cli.command(help="Fetch CSV data from OutputCSV endpoint")
|
||||
@click.argument("hojin_bango")
|
||||
def output_csv(hojin_bango: str):
|
||||
client = GbizinfoClient()
|
||||
res = client.output_csv([hojin_bango])
|
||||
for row in res:
|
||||
click.echo(row)
|
132
gbizinfo_lod/mappers/__init__.py
Normal file
132
gbizinfo_lod/mappers/__init__.py
Normal file
|
@ -0,0 +1,132 @@
|
|||
import csv
|
||||
import sys
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import IO, Iterator, Tuple, Union
|
||||
|
||||
from joblib import Parallel, delayed
|
||||
from rdflib import BNode
|
||||
from rdflib import Literal as LiteralRdflib
|
||||
from rdflib.graph import _ObjectType, _PredicateType, _SubjectType, _TripleType
|
||||
from rdflib.namespace import RDF
|
||||
from rdflib.plugins.serializers.nt import _nt_row
|
||||
|
||||
_TripleMapType = Tuple[
|
||||
_SubjectType, _PredicateType, Union[str, _ObjectType, "BlankPredicateObjectMap"]
|
||||
]
|
||||
_PredicateObjectType = Tuple[
|
||||
_PredicateType, Union[str, _ObjectType, "BlankPredicateObjectMap"]
|
||||
]
|
||||
|
||||
|
||||
class Literal:
|
||||
def __new__(cls, value, *args, **kwargs) -> LiteralRdflib | None:
|
||||
if value is None:
|
||||
return None
|
||||
return LiteralRdflib(value, *args, **kwargs)
|
||||
|
||||
|
||||
class BlankPredicateObjectMap:
|
||||
def __init__(self, predicate_objects: list[_PredicateObjectType]):
|
||||
self.subject = BNode()
|
||||
self.predicate_objects = predicate_objects
|
||||
|
||||
|
||||
def bpo(predicate_objects: list[_PredicateObjectType]) -> BlankPredicateObjectMap:
|
||||
return BlankPredicateObjectMap(predicate_objects)
|
||||
|
||||
|
||||
def normalize_triple(triple: _TripleType) -> _TripleMapType | None:
|
||||
if triple[2] is None:
|
||||
return None
|
||||
if isinstance(triple[2], Literal) and triple[2] is None:
|
||||
return None
|
||||
if type(triple[2]) is str:
|
||||
triple = (triple[0], triple[1], Literal(triple[2]))
|
||||
return triple
|
||||
|
||||
|
||||
def flatten_triple_map(triple_map: _TripleMapType) -> list[_TripleType]:
|
||||
triples = []
|
||||
|
||||
if isinstance(triple_map[2], BlankPredicateObjectMap):
|
||||
bnode = triple_map[2].subject
|
||||
b_triples = []
|
||||
for po in triple_map[2].predicate_objects:
|
||||
b_triples.extend(flatten_triple_map((bnode, po[0], po[1])))
|
||||
|
||||
# Ignore statements if rdf:type only
|
||||
if len([t for t in b_triples if t[1] != RDF.type]) > 0:
|
||||
triples.append((triple_map[0], triple_map[1], bnode))
|
||||
triples.extend(b_triples)
|
||||
else:
|
||||
t = normalize_triple(triple_map)
|
||||
if t:
|
||||
triples.append(t)
|
||||
|
||||
return triples
|
||||
|
||||
|
||||
def serialize_triple(triple: _TripleMapType) -> str:
|
||||
return _nt_row(triple)
|
||||
|
||||
|
||||
class CSV2RDFMapper(ABC):
|
||||
def __init__(self, csv_file: str):
|
||||
self.file = csv_file
|
||||
|
||||
def iterator(self) -> Iterator[dict[str, str]]:
|
||||
with open(self.file, encoding="utf_8_sig") as f:
|
||||
reader = csv.DictReader(f)
|
||||
for row in reader:
|
||||
yield row
|
||||
|
||||
def run(self, n_jobs: int = -1, output: IO[str] = sys.stdout):
|
||||
if n_jobs == 1:
|
||||
for row in self.iterator():
|
||||
for triple_map in self.map_to_triples(self.preprocess(row)):
|
||||
for triple in flatten_triple_map(triple_map):
|
||||
output.write(serialize_triple(triple))
|
||||
else:
|
||||
|
||||
def job(row: dict[str, str]) -> str:
|
||||
return "".join(
|
||||
[
|
||||
serialize_triple(triple)
|
||||
for triple_map in self.map_to_triples(self.preprocess(row))
|
||||
for triple in flatten_triple_map(triple_map)
|
||||
]
|
||||
)
|
||||
|
||||
res = Parallel(n_jobs=n_jobs, return_as="generator_unordered", verbose=1)(
|
||||
delayed(job)(row) for row in self.iterator()
|
||||
)
|
||||
for lines in res:
|
||||
output.write(lines)
|
||||
|
||||
@staticmethod
|
||||
def preprocess(row: dict[str, str]) -> dict[str, str | None]:
|
||||
return {key: val if val != "" else None for key, val in row.items()}
|
||||
|
||||
@staticmethod
|
||||
@abstractmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
from .chotatsu import GbizInfoChotatsuMapper
|
||||
from .hojin import GbizInfoHojinMapper
|
||||
from .hojyokin import GbizInfoHojyokinMapper
|
||||
from .hyosho import GbizInfoHyoshoMapper
|
||||
from .shokuba import GbizInfoShokubaMapper
|
||||
from .tokkyo import GbizInfoTokkyoMapper
|
||||
from .zaimu import GbizInfoZaimuMapper
|
||||
|
||||
__all__ = [
|
||||
"GbizInfoHojinMapper",
|
||||
"GbizInfoHojyokinMapper",
|
||||
"GbizInfoChotatsuMapper",
|
||||
"GbizInfoHyoshoMapper",
|
||||
"GbizInfoTokkyoMapper",
|
||||
"GbizInfoShokubaMapper",
|
||||
"GbizInfoZaimuMapper",
|
||||
]
|
434
gbizinfo_lod/mappers/_katsudo.py
Normal file
434
gbizinfo_lod/mappers/_katsudo.py
Normal file
|
@ -0,0 +1,434 @@
|
|||
from ..namespace import *
|
||||
from . import CSV2RDFMapper, Literal, _TripleMapType, bpo
|
||||
|
||||
|
||||
class GbizInfoKatsudoMapper(CSV2RDFMapper):
|
||||
"""法人活動情報 共通"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
s = HJ_DATA[row["ID-識別値"]]
|
||||
ss = HJ_EXT[f"{row['ID-識別値']}_{row['キー情報']}"]
|
||||
|
||||
triples = [
|
||||
(s, HJ.法人活動情報, ss),
|
||||
# 1
|
||||
(
|
||||
ss,
|
||||
IC.ID,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.ID型),
|
||||
(IC.体系, IC_ID.corporateNumber),
|
||||
(IC.識別値, row["ID-識別値"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 2, 3, 4
|
||||
(
|
||||
ss,
|
||||
IC.名称,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.名称型),
|
||||
(IC.種別, row["名称-種別"]),
|
||||
(IC.表記, row["名称-表記"]),
|
||||
(IC.カナ表記, row["名称-カナ表記"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 5, 6, 7
|
||||
(
|
||||
ss,
|
||||
IC.連絡先,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.連絡先型),
|
||||
(IC.種別, row["連絡先-種別"]),
|
||||
(IC.電話番号, row["連絡先-電話番号"]),
|
||||
(IC.FAX番号, row["連絡先-FAX番号"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 8, 9
|
||||
(
|
||||
ss,
|
||||
IC.関連組織,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.組織関連型),
|
||||
(IC.役割, row["関連組織-役割"]),
|
||||
(
|
||||
IC.組織,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.組織型),
|
||||
(
|
||||
IC.名称,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.名称型),
|
||||
(IC.表記, row["関連組織-名称"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 10, 11, 12, 13, 14, 15
|
||||
(
|
||||
ss,
|
||||
IC.住所,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.住所型),
|
||||
(IC.種別, row["住所-種別"]),
|
||||
(IC.表記, row["住所-表記"]),
|
||||
(IC.郵便番号, row["住所-郵便番号"]),
|
||||
(IC.都道府県, row["住所-都道府県"]),
|
||||
(IC.市区町村, row["住所-市区町村"]),
|
||||
(HJ.町名番地等, row["住所-町名番地等"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 16, 17, 18
|
||||
(
|
||||
ss,
|
||||
IC.代表者,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.構成員型),
|
||||
(IC.役割, row["代表者-役割"]),
|
||||
(
|
||||
IC.構成員,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.構成員型),
|
||||
(
|
||||
IC.氏名,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.氏名型),
|
||||
(IC.種別, row["代表者-表示用種別"]),
|
||||
(IC.姓名, row["代表者-表示用氏名"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.氏名,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.氏名型),
|
||||
(IC.種別, row["代表者-検索用種別"]),
|
||||
(IC.姓名, row["代表者-検索用氏名"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 19
|
||||
(
|
||||
ss,
|
||||
IC.設立日,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日付型),
|
||||
(IC.標準型日付, Literal(row["設立日"], datatype=XSD.date)),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 20, 21, 22
|
||||
(
|
||||
ss,
|
||||
IC.資本金,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.金額型),
|
||||
(IC.数値, Literal(row["資本金-数値"], datatype=XSD.decimal)),
|
||||
(IC.通貨, row["資本金-通貨"]),
|
||||
(
|
||||
IC.通貨コード,
|
||||
Literal(
|
||||
row["資本金-通貨コード"],
|
||||
datatype=ISO4217.ISO3AlphaCurrencyCodeContentType,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 23
|
||||
(
|
||||
ss,
|
||||
IC.関連人員,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.人数型),
|
||||
(
|
||||
IC.人数,
|
||||
Literal(
|
||||
row["関連人員-人数"], datatype=XSD.nonNegativeInteger
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 24
|
||||
(
|
||||
ss,
|
||||
HJ.更新日時,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日時型),
|
||||
(
|
||||
IC.標準型日時,
|
||||
Literal(
|
||||
row["更新日時"],
|
||||
datatype=XSD.dateTime,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 25, 26, 27, 28
|
||||
(
|
||||
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["公表組織-名称表記"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 29
|
||||
(
|
||||
ss,
|
||||
HJ.システム名,
|
||||
bpo([(RDF.type, IC.名称型), (IC.表記, row["システム名"])]),
|
||||
),
|
||||
# 30
|
||||
(ss, HJ.キー情報, row["キー情報"]),
|
||||
# 31
|
||||
(ss, HJ.業種コード, row["業種コード"]),
|
||||
# 32
|
||||
(ss, HJ.事業内容, row["事業内容"]),
|
||||
# 33
|
||||
(
|
||||
ss,
|
||||
HJ.営業エリア,
|
||||
bpo(
|
||||
[
|
||||
(
|
||||
IC.名称,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.名称型),
|
||||
(IC.表記, row["営業エリア-表記"]),
|
||||
]
|
||||
),
|
||||
)
|
||||
]
|
||||
),
|
||||
),
|
||||
# 34, 35, 36
|
||||
(
|
||||
ss,
|
||||
HJ.決算情報,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.金額型),
|
||||
(IC.数値, Literal(row["決算情報-金額"], datatype=XSD.decimal)),
|
||||
(IC.通貨, row["決算情報-通貨"]),
|
||||
(
|
||||
IC.通貨コード,
|
||||
Literal(
|
||||
row["決算情報-通貨コード"],
|
||||
datatype=ISO4217.ISO3AlphaCurrencyCodeContentType,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 37
|
||||
(
|
||||
ss,
|
||||
HJ.認定日,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日付型),
|
||||
(
|
||||
IC.標準型日付,
|
||||
Literal(row["法人活動-認定日"], datatype=XSD.date),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 38
|
||||
(
|
||||
ss,
|
||||
HJ.活動名称,
|
||||
bpo([(RDF.type, IC.名称型), (IC.表記, row["法人活動-活動名称"])]),
|
||||
),
|
||||
# 39
|
||||
(ss, HJ.部門, row["法人活動-部門"]),
|
||||
# 40, 41
|
||||
(
|
||||
ss,
|
||||
HJ.区分,
|
||||
bpo(
|
||||
[
|
||||
(IC.種別, row["法人活動-区分-種別"]),
|
||||
(IC.表記, row["法人活動-区分-内容"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 42
|
||||
(ss, HJ.対象, row["法人活動-対象"]),
|
||||
# 43
|
||||
(
|
||||
ss,
|
||||
IC.金額,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.金額型),
|
||||
(IC.数値, Literal(row["法人活動-金額"], datatype=XSD.decimal)),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 44
|
||||
(
|
||||
ss,
|
||||
HJ.状況,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.状況型),
|
||||
(
|
||||
IC.名称,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.名称型),
|
||||
(IC.表記, row["法人活動-状況名称"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 45, 46
|
||||
(
|
||||
ss,
|
||||
IC.期間,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.期間型),
|
||||
(
|
||||
IC.開始日時,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日時型),
|
||||
(
|
||||
IC.標準型日付,
|
||||
Literal(
|
||||
row["法人活動-期間開始日時"],
|
||||
datatype=XSD.dateTime,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.終了日時,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日時型),
|
||||
(
|
||||
IC.標準型日付,
|
||||
Literal(
|
||||
row["法人活動-期間終了日時"],
|
||||
datatype=XSD.dateTime,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 47
|
||||
(ss, HJ.備考, bpo([(IC.種別, row["備考-種別"])])),
|
||||
# 48
|
||||
(ss, HJ.資格, bpo([(IC.種別, row["資格-表記"])])),
|
||||
]
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoKatsudoMapper"]
|
24
gbizinfo_lod/mappers/chotatsu.py
Normal file
24
gbizinfo_lod/mappers/chotatsu.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from rdflib import Literal, URIRef
|
||||
|
||||
from ..namespace import *
|
||||
from . import _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoChotatsuMapper(GbizInfoKatsudoMapper):
|
||||
"""調達情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
ss = HJ_EXT[f"{row['ID-識別値']}_{row['キー情報']}"]
|
||||
|
||||
triples = GbizInfoKatsudoMapper.map_to_triples(row)
|
||||
triples.extend(
|
||||
[
|
||||
(ss, RDF.type, HJ.調達型),
|
||||
]
|
||||
)
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoChotatsuMapper"]
|
288
gbizinfo_lod/mappers/hojin.py
Normal file
288
gbizinfo_lod/mappers/hojin.py
Normal file
|
@ -0,0 +1,288 @@
|
|||
from rdflib import Literal, URIRef
|
||||
|
||||
from ..namespace import *
|
||||
from . import CSV2RDFMapper, _TripleMapType, bpo
|
||||
|
||||
|
||||
class GbizInfoHojinMapper(CSV2RDFMapper):
|
||||
"""法人情報・法人基本情報"""
|
||||
|
||||
@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"]
|
54
gbizinfo_lod/mappers/hojyokin.py
Normal file
54
gbizinfo_lod/mappers/hojyokin.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
from rdflib import Literal, URIRef
|
||||
|
||||
from ..namespace import *
|
||||
from . import _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoHojyokinMapper(GbizInfoKatsudoMapper):
|
||||
"""補助金情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
ss = HJ_EXT[f"{row['ID-識別値']}_{row['キー情報']}"]
|
||||
|
||||
triples = GbizInfoKatsudoMapper.map_to_triples(row)
|
||||
triples.extend(
|
||||
[
|
||||
(ss, RDF.type, HJ.補助金型),
|
||||
# 49
|
||||
(
|
||||
ss,
|
||||
HJ.採択日,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日付型),
|
||||
(
|
||||
IC.標準型日付,
|
||||
Literal(row["補助金-採択日"], datatype=XSD.date),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 50
|
||||
(
|
||||
ss,
|
||||
HJ.交付決定日,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日付型),
|
||||
(
|
||||
IC.標準型日付,
|
||||
Literal(row["補助金-交付決定日"], datatype=XSD.date),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 51
|
||||
(ss, HJ.補助金財源, row["補助金-財源"]),
|
||||
]
|
||||
)
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoHojyokinMapper"]
|
24
gbizinfo_lod/mappers/hyosho.py
Normal file
24
gbizinfo_lod/mappers/hyosho.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from rdflib import Literal, URIRef
|
||||
|
||||
from ..namespace import *
|
||||
from . import _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoHyoshoMapper(GbizInfoKatsudoMapper):
|
||||
"""表彰情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
ss = HJ_EXT[f"{row['ID-識別値']}_{row['キー情報']}"]
|
||||
|
||||
triples = GbizInfoKatsudoMapper.map_to_triples(row)
|
||||
triples.extend(
|
||||
[
|
||||
(ss, RDF.type, HJ.表彰型),
|
||||
]
|
||||
)
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoHyoshoMapper"]
|
364
gbizinfo_lod/mappers/shokuba.py
Normal file
364
gbizinfo_lod/mappers/shokuba.py
Normal file
|
@ -0,0 +1,364 @@
|
|||
from ..namespace import *
|
||||
from . import Literal, _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoShokubaMapper(GbizInfoKatsudoMapper):
|
||||
"""職場情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
s = HJ_DATA[row["ID-識別値"]]
|
||||
ss = HJ_EXT[row["キー情報"]]
|
||||
|
||||
# 数量コレクション
|
||||
suryo_keys = [
|
||||
# 数値, 単位表記, 指標, 種別
|
||||
(
|
||||
"職場情報-企業規模",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/企業規模",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-企業規模詳細(男性)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/企業規模詳細(男性)",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-企業規模詳細(女性)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/企業規模詳細(女性)",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-平均継続勤務年数-男性",
|
||||
"年",
|
||||
"http://hojin-info.go.jp/code/職場情報/男性平均継続勤務年数",
|
||||
"職場情報-平均継続勤務年数-範囲",
|
||||
),
|
||||
(
|
||||
"職場情報-平均継続勤務年数-女性",
|
||||
"年",
|
||||
"http://hojin-info.go.jp/code/職場情報/女性平均継続勤務年数",
|
||||
"職場情報-平均継続勤務年数-範囲",
|
||||
),
|
||||
(
|
||||
"職場情報-正社員の平均継続勤務年数",
|
||||
"年",
|
||||
"http://hojin-info.go.jp/code/職場情報/正社員平均継続勤務年数",
|
||||
"職場情報-平均継続勤務年数-範囲",
|
||||
),
|
||||
(
|
||||
"職場情報-従業員の平均年齢",
|
||||
"歳",
|
||||
"http://hojin-info.go.jp/code/職場情報/従業員平均年齢",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-月平均所定外労働時間",
|
||||
"時間",
|
||||
"http://hojin-info.go.jp/code/職場情報/月平均所定外労働時間",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-労働者に占める女性労働者の割合",
|
||||
"%",
|
||||
"http://hojin-info.go.jp/code/職場情報/女性労働者割合",
|
||||
"職場情報-労働者に占める女性労働者の割合-範囲",
|
||||
),
|
||||
(
|
||||
"職場情報-女性管理職人数",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/女性管理職人数",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-管理職全体人数(男女計)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/管理職人数",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-女性役員人数",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/女性役員人数",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-役員全体人数(男女計)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/役員人数",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-育児休業対象者数(男性)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/育児休業対象者数(男性)",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-育児休業対象者数(女性)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/育児休業対象者数(女性)",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-育児休業取得者数(男性)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/育児休業取得者数(男性)",
|
||||
None,
|
||||
),
|
||||
(
|
||||
"職場情報-育児休業取得者数(女性)",
|
||||
"人",
|
||||
"http://hojin-info.go.jp/code/職場情報/育児休業取得者数(女性)",
|
||||
None,
|
||||
),
|
||||
]
|
||||
|
||||
triples = [
|
||||
(s, HJ.法人活動情報, ss),
|
||||
(ss, RDF.type, HJ.職場情報型),
|
||||
# 1
|
||||
(
|
||||
ss,
|
||||
IC.ID,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.ID型),
|
||||
(IC.体系, IC_ID.corporateNumber),
|
||||
(IC.識別値, row["ID-識別値"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 2
|
||||
(
|
||||
ss,
|
||||
IC.連絡先,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.連絡先型),
|
||||
(IC.Webサイト, row["連絡先-Webサイト"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 3
|
||||
(
|
||||
ss,
|
||||
IC.代表者,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.構成員型),
|
||||
(
|
||||
IC.構成員,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.人型),
|
||||
(
|
||||
IC.氏名,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.氏名型),
|
||||
(IC.姓名, row["代表者-表示用氏名"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.氏名,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.氏名型),
|
||||
(IC.姓名, row["代表者-検索用氏名"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 4
|
||||
(
|
||||
ss,
|
||||
HJ.更新日時,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日時型),
|
||||
(
|
||||
IC.標準型日時,
|
||||
Literal(
|
||||
row["更新日時"],
|
||||
datatype=XSD.dateTime,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 5, 6, 7, 8
|
||||
(
|
||||
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["公表組織-名称表記"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 9
|
||||
(
|
||||
ss,
|
||||
HJ.システム名,
|
||||
bpo([(RDF.type, IC.名称型), (IC.表記, row["システム名"])]),
|
||||
),
|
||||
# 10
|
||||
(ss, HJ.キー情報, row["キー情報"]),
|
||||
# 11
|
||||
(
|
||||
ss,
|
||||
HJ.創業日,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日付型),
|
||||
(
|
||||
IC.年,
|
||||
Literal(row["職場情報-創業年"], datatype=XSD.integer),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 12
|
||||
(ss, HJ.事業内容, row["職場情報-事業概要"]),
|
||||
# 13
|
||||
(
|
||||
ss,
|
||||
IC.関連人員,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.人数型),
|
||||
(
|
||||
IC.人数,
|
||||
Literal(
|
||||
row["関連人員-人数"], datatype=XSD.nonNegativeInteger
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 14, 15, 16, 17
|
||||
*[
|
||||
(
|
||||
ss,
|
||||
HJ.数量コレクション,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.数量コレクション型),
|
||||
(
|
||||
HJ.数量,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.数量型),
|
||||
(
|
||||
IC.数値,
|
||||
Literal(
|
||||
row[value],
|
||||
datatype=XSD.decimal,
|
||||
),
|
||||
),
|
||||
(
|
||||
HJ.指標,
|
||||
(
|
||||
Literal(
|
||||
"http://hojin-info.go.jp/code/職場情報/企業規模",
|
||||
datatype=IC.コード型,
|
||||
)
|
||||
if row[value]
|
||||
else None
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.単位表記,
|
||||
unit if row[value] else None,
|
||||
),
|
||||
(
|
||||
IC.種別,
|
||||
row[category] if category else None,
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
for value, unit, indicator, category in suryo_keys
|
||||
],
|
||||
]
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoShokubaMapper"]
|
24
gbizinfo_lod/mappers/todokede.py
Normal file
24
gbizinfo_lod/mappers/todokede.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from rdflib import Literal, URIRef
|
||||
|
||||
from ..namespace import *
|
||||
from . import _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoTodokedeMapper(GbizInfoKatsudoMapper):
|
||||
"""届出認定情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
ss = HJ_EXT[f"{row['ID-識別値']}_{row['キー情報']}"]
|
||||
|
||||
triples = GbizInfoKatsudoMapper.map_to_triples(row)
|
||||
triples.extend(
|
||||
[
|
||||
(ss, RDF.type, HJ.届出認定型),
|
||||
]
|
||||
)
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoTodokedeMapper"]
|
62
gbizinfo_lod/mappers/tokkyo.py
Normal file
62
gbizinfo_lod/mappers/tokkyo.py
Normal file
|
@ -0,0 +1,62 @@
|
|||
from rdflib import Literal, URIRef
|
||||
|
||||
from ..namespace import *
|
||||
from . import _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoTokkyoMapper(GbizInfoKatsudoMapper):
|
||||
"""特許情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
ss = HJ_EXT[f"{row['ID-識別値']}_{row['キー情報']}"]
|
||||
|
||||
triples = GbizInfoKatsudoMapper.map_to_triples(row)
|
||||
triples.extend(
|
||||
[
|
||||
(ss, RDF.type, HJ.特許型),
|
||||
# 40
|
||||
(
|
||||
ss,
|
||||
HJ.認定番号,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.ID型),
|
||||
(IC.識別値, row["法人活動-認定番号-識別値"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 41
|
||||
(
|
||||
ss,
|
||||
HJ.分類,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.表記),
|
||||
(
|
||||
IC.表記,
|
||||
row["特許-分類1-表記"],
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
ss,
|
||||
HJ.分類,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.表記),
|
||||
(
|
||||
IC.表記,
|
||||
row["特許-分類2-表記"],
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
)
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoTokkyoMapper"]
|
413
gbizinfo_lod/mappers/zaimu.py
Normal file
413
gbizinfo_lod/mappers/zaimu.py
Normal file
|
@ -0,0 +1,413 @@
|
|||
from ..namespace import *
|
||||
from . import Literal, _TripleMapType, bpo
|
||||
from ._katsudo import GbizInfoKatsudoMapper
|
||||
|
||||
|
||||
class GbizInfoZaimuMapper(GbizInfoKatsudoMapper):
|
||||
"""財務情報"""
|
||||
|
||||
@staticmethod
|
||||
def map_to_triples(row: dict[str, str]) -> list[_TripleMapType]:
|
||||
s = HJ_DATA[row["ID-識別値"]]
|
||||
ss = HJ_EXT[row["キー情報"]]
|
||||
|
||||
# 数量コレクション
|
||||
suryo_keys = [
|
||||
# 数値, 単位表記, 指標
|
||||
(
|
||||
"財務情報-売上高",
|
||||
"財務情報-売上高ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/売上高",
|
||||
),
|
||||
(
|
||||
"財務情報-営業収益",
|
||||
"財務情報-営業収益ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/営業収益",
|
||||
),
|
||||
(
|
||||
"財務情報-営業収入",
|
||||
"財務情報-営業収入ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/営業収入",
|
||||
),
|
||||
(
|
||||
"財務情報-営業総収入",
|
||||
"財務情報-営業総収入ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/営業総収入",
|
||||
),
|
||||
(
|
||||
"財務情報-経常収益",
|
||||
"財務情報-経常収益ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/経常収益",
|
||||
),
|
||||
(
|
||||
"財務情報-正味収入保険料",
|
||||
"財務情報-正味収入保険料ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/正味収入保険料",
|
||||
),
|
||||
(
|
||||
"財務情報-経常利益又は経常損失(△)",
|
||||
"財務情報-経常利益又は経常損失(△)ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/経常利益又は経常損失",
|
||||
),
|
||||
(
|
||||
"財務情報-当期純利益又は当期純損失(△)",
|
||||
"財務情報-当期純利益又は当期純損失(△)ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/当期純利益又は当期純損失",
|
||||
),
|
||||
(
|
||||
"資本金-数値",
|
||||
"財務情報-資本金ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/資本金",
|
||||
),
|
||||
(
|
||||
"財務情報-純資産額",
|
||||
"財務情報-純資産額ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/純資産額",
|
||||
),
|
||||
(
|
||||
"財務情報-総資産額",
|
||||
"財務情報-総資産額ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/総資産額",
|
||||
),
|
||||
(
|
||||
"関連人員-人数",
|
||||
"財務情報-従業員数ユニット参照",
|
||||
"http://hojin-info.go.jp/code/財務情報/従業員数",
|
||||
),
|
||||
]
|
||||
|
||||
triples = [
|
||||
(s, HJ.法人活動情報, ss),
|
||||
(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["名称-表記"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 4, 5
|
||||
(
|
||||
ss,
|
||||
IC.住所,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.住所型),
|
||||
(IC.種別, row["住所-種別"]),
|
||||
(IC.表記, row["住所-表記"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 6, 7, 8
|
||||
(
|
||||
ss,
|
||||
IC.代表者,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.構成員型),
|
||||
(IC.役割, row["代表者-役割"]),
|
||||
(
|
||||
IC.構成員,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.人型),
|
||||
(
|
||||
IC.氏名,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.氏名型),
|
||||
(IC.種別, row["代表者-表示用種別"]),
|
||||
(IC.姓名, row["代表者-表示用氏名"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.氏名,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.氏名型),
|
||||
(IC.種別, row["代表者-検索用種別"]),
|
||||
(IC.姓名, row["代表者-検索用氏名"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 9, 10, 11
|
||||
(
|
||||
ss,
|
||||
IC.資本金,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.金額型),
|
||||
(IC.数値, Literal(row["資本金-数値"], datatype=XSD.decimal)),
|
||||
(IC.通貨, row["資本金-通貨"]),
|
||||
(
|
||||
IC.通貨コード,
|
||||
Literal(
|
||||
row["資本金-通貨コード"],
|
||||
datatype=ISO4217.ISO3AlphaCurrencyCodeContentType,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 12
|
||||
(
|
||||
ss,
|
||||
IC.関連人員,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.人数型),
|
||||
(
|
||||
IC.人数,
|
||||
Literal(
|
||||
row["関連人員-人数"], datatype=XSD.nonNegativeInteger
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 13
|
||||
(
|
||||
ss,
|
||||
HJ.更新日時,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日時型),
|
||||
(
|
||||
IC.標準型日時,
|
||||
Literal(
|
||||
row["更新日時"],
|
||||
datatype=XSD.dateTime,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 14, 15, 16, 17
|
||||
(
|
||||
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["公表組織-名称表記"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
# 18
|
||||
(
|
||||
ss,
|
||||
HJ.システム名,
|
||||
bpo([(RDF.type, IC.名称型), (IC.表記, row["システム名"])]),
|
||||
),
|
||||
# 19
|
||||
(ss, HJ.キー情報, row["キー情報"]),
|
||||
# 20
|
||||
(ss, HJ.回次, row["財務情報-回次"]),
|
||||
# 21, 22, 23
|
||||
*[
|
||||
(
|
||||
ss,
|
||||
HJ.株主情報,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.株主情報型),
|
||||
(
|
||||
HJ.順位,
|
||||
Literal(row[f"株主情報{i}-順位"], datatype=XSD.decimal),
|
||||
),
|
||||
(IC.表記, row[f"株主情報{i}-氏名又は名称"]),
|
||||
(
|
||||
HJ.所有比率,
|
||||
Literal(
|
||||
row[
|
||||
f"株主情報{i}-発行済株式総数に対する所有株式数の割合"
|
||||
],
|
||||
datatype=XSD.decimal,
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
for i in range(1, 16)
|
||||
],
|
||||
# 24, 25, 26
|
||||
*[
|
||||
(
|
||||
ss,
|
||||
HJ.数量コレクション,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.数量コレクション型),
|
||||
(
|
||||
HJ.数量,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, HJ.数量型),
|
||||
(
|
||||
IC.数値,
|
||||
Literal(
|
||||
row[value],
|
||||
datatype=XSD.decimal,
|
||||
),
|
||||
),
|
||||
(
|
||||
HJ.指標,
|
||||
(
|
||||
Literal(
|
||||
indicator,
|
||||
datatype=IC.コード型,
|
||||
)
|
||||
if row[value]
|
||||
else None
|
||||
),
|
||||
),
|
||||
(IC.単位表記, row[unit]),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
for value, unit, indicator in suryo_keys
|
||||
],
|
||||
# 27, 28, 29, 30, 31, 32
|
||||
(
|
||||
ss,
|
||||
HJ.書類情報,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.文書型),
|
||||
(IC.ID, row["書類情報-書類管理番号"]),
|
||||
(
|
||||
IC.種別コード,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.コード型),
|
||||
(IC.識別値, row["書類情報-書類種別コード"]),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.日付,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.日付型),
|
||||
(IC.標準型日付, row["書類情報-提出日"]),
|
||||
(
|
||||
IC.種別,
|
||||
"提出日" if row["書類情報-提出日"] else None,
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
IC.記述,
|
||||
bpo(
|
||||
[
|
||||
(RDF.type, IC.記述型),
|
||||
(IC.説明, row["書類情報-事業年度"]),
|
||||
(
|
||||
IC.種別,
|
||||
(
|
||||
"事業年度"
|
||||
if row["書類情報-事業年度"]
|
||||
else None
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
),
|
||||
),
|
||||
]
|
||||
return triples
|
||||
|
||||
|
||||
__all__ = ["GbizInfoZaimuMapper"]
|
24
gbizinfo_lod/namespace.py
Normal file
24
gbizinfo_lod/namespace.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from rdflib import Namespace
|
||||
from rdflib.namespace import RDF, XSD
|
||||
|
||||
IC = Namespace("http://imi.go.jp/ns/core/rdf#")
|
||||
IC_ID = Namespace("http://imi.go.jp/ns/code_id/id/")
|
||||
HJ = Namespace("http://hojin-info.go.jp/ns/domain/biz/1#")
|
||||
HJ_DATA = Namespace("http://hojin-info.go.jp/data/")
|
||||
HJ_BASIC = Namespace("http://hojin-info.go.jp/data/basic/")
|
||||
HJ_EXT = Namespace("http://hojin-info.go.jp/data/ext/")
|
||||
ISO4217 = Namespace(
|
||||
"urn:un:unece:uncefact:codelist:standard:ISO:ISO3AlphaCurrencyCode:2012-08-31#"
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"RDF",
|
||||
"XSD",
|
||||
"IC",
|
||||
"IC_ID",
|
||||
"HJ",
|
||||
"HJ_DATA",
|
||||
"HJ_BASIC",
|
||||
"HJ_EXT",
|
||||
"ISO4217",
|
||||
]
|
368
poetry.lock
generated
Normal file
368
poetry.lock
generated
Normal file
|
@ -0,0 +1,368 @@
|
|||
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "black"
|
||||
version = "24.4.2"
|
||||
description = "The uncompromising code formatter."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"},
|
||||
{file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"},
|
||||
{file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"},
|
||||
{file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"},
|
||||
{file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"},
|
||||
{file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"},
|
||||
{file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"},
|
||||
{file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"},
|
||||
{file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"},
|
||||
{file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"},
|
||||
{file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"},
|
||||
{file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"},
|
||||
{file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"},
|
||||
{file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"},
|
||||
{file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"},
|
||||
{file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"},
|
||||
{file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"},
|
||||
{file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"},
|
||||
{file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"},
|
||||
{file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"},
|
||||
{file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"},
|
||||
{file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
click = ">=8.0.0"
|
||||
mypy-extensions = ">=0.4.3"
|
||||
packaging = ">=22.0"
|
||||
pathspec = ">=0.9.0"
|
||||
platformdirs = ">=2"
|
||||
|
||||
[package.extras]
|
||||
colorama = ["colorama (>=0.4.3)"]
|
||||
d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"]
|
||||
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
|
||||
uvloop = ["uvloop (>=0.15.2)"]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2024.6.2"
|
||||
description = "Python package for providing Mozilla's CA Bundle."
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
files = [
|
||||
{file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"},
|
||||
{file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "charset-normalizer"
|
||||
version = "3.3.2"
|
||||
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
|
||||
optional = false
|
||||
python-versions = ">=3.7.0"
|
||||
files = [
|
||||
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
|
||||
{file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
|
||||
{file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
|
||||
{file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
|
||||
{file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
|
||||
{file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
|
||||
{file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
|
||||
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "click"
|
||||
version = "8.1.7"
|
||||
description = "Composable command line interface toolkit"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
|
||||
{file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
version = "0.4.6"
|
||||
description = "Cross-platform colored terminal text."
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
||||
files = [
|
||||
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.7"
|
||||
description = "Internationalized Domain Names in Applications (IDNA)"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
files = [
|
||||
{file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
|
||||
{file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "isodate"
|
||||
version = "0.6.1"
|
||||
description = "An ISO 8601 date/time/duration parser and formatter"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
files = [
|
||||
{file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"},
|
||||
{file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
six = "*"
|
||||
|
||||
[[package]]
|
||||
name = "isort"
|
||||
version = "5.13.2"
|
||||
description = "A Python utility / library to sort Python imports."
|
||||
optional = false
|
||||
python-versions = ">=3.8.0"
|
||||
files = [
|
||||
{file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"},
|
||||
{file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
colors = ["colorama (>=0.4.6)"]
|
||||
|
||||
[[package]]
|
||||
name = "joblib"
|
||||
version = "1.4.2"
|
||||
description = "Lightweight pipelining with Python functions"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"},
|
||||
{file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mypy-extensions"
|
||||
version = "1.0.0"
|
||||
description = "Type system extensions for programs checked with the mypy type checker."
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
files = [
|
||||
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
|
||||
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "24.1"
|
||||
description = "Core utilities for Python packages"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
|
||||
{file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pathspec"
|
||||
version = "0.12.1"
|
||||
description = "Utility library for gitignore style pattern matching of file paths."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"},
|
||||
{file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "4.2.2"
|
||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
|
||||
{file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
|
||||
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
|
||||
type = ["mypy (>=1.8)"]
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "3.1.2"
|
||||
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
|
||||
optional = false
|
||||
python-versions = ">=3.6.8"
|
||||
files = [
|
||||
{file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"},
|
||||
{file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
diagrams = ["jinja2", "railroad-diagrams"]
|
||||
|
||||
[[package]]
|
||||
name = "rdflib"
|
||||
version = "7.0.0"
|
||||
description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information."
|
||||
optional = false
|
||||
python-versions = ">=3.8.1,<4.0.0"
|
||||
files = [
|
||||
{file = "rdflib-7.0.0-py3-none-any.whl", hash = "sha256:0438920912a642c866a513de6fe8a0001bd86ef975057d6962c79ce4771687cd"},
|
||||
{file = "rdflib-7.0.0.tar.gz", hash = "sha256:9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
isodate = ">=0.6.0,<0.7.0"
|
||||
pyparsing = ">=2.1.0,<4"
|
||||
|
||||
[package.extras]
|
||||
berkeleydb = ["berkeleydb (>=18.1.0,<19.0.0)"]
|
||||
html = ["html5lib (>=1.0,<2.0)"]
|
||||
lxml = ["lxml (>=4.3.0,<5.0.0)"]
|
||||
networkx = ["networkx (>=2.0.0,<3.0.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "requests"
|
||||
version = "2.32.3"
|
||||
description = "Python HTTP for Humans."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"},
|
||||
{file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
certifi = ">=2017.4.17"
|
||||
charset-normalizer = ">=2,<4"
|
||||
idna = ">=2.5,<4"
|
||||
urllib3 = ">=1.21.1,<3"
|
||||
|
||||
[package.extras]
|
||||
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
|
||||
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
version = "1.16.0"
|
||||
description = "Python 2 and 3 compatibility utilities"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
files = [
|
||||
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "2.2.1"
|
||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
|
||||
{file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
|
||||
h2 = ["h2 (>=4,<5)"]
|
||||
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
zstd = ["zstandard (>=0.18.0)"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.12"
|
||||
content-hash = "4c0bebaca0aced4b18e0dd6ccaaa573a0f7269a72f236e0896848598c5da1268"
|
25
pyproject.toml
Normal file
25
pyproject.toml
Normal file
|
@ -0,0 +1,25 @@
|
|||
[tool.poetry]
|
||||
name = "gbizinfo-lod"
|
||||
version = "0.1.0"
|
||||
description = "A tool to generate LOD datasets for gBizINFO"
|
||||
authors = ["Babibubebon <babibubebon@babibubebo.org>"]
|
||||
license = "MIT"
|
||||
readme = "README.md"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.12"
|
||||
requests = "^2.32.2"
|
||||
click = "^8.1.7"
|
||||
rdflib = "^7.0.0"
|
||||
joblib = "^1.4.2"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
black = "^24.4.2"
|
||||
isort = "^5.13.2"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
gbilod = "gbizinfo_lod.command:cli"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
Loading…
Reference in a new issue