👏

openBIMのミッシングリンクを埋めるコンポーネントである辞書配信サービス”bSDD”とは?

2023/10/22に公開

openBIMワークフローの紹介

"bSDDとは"の前に、前提としてopenBIMワークフローを紹介いたします。このワークフローを知らなければ、bSDDや他の技術標準(IDSやBCFなど)を知ったとしても全体像が見えてこないと考えています。
まず、以下にopenBIMワークフローの解説図を準備しました。


openBIMワークフロー解説図

openBIMを実現する上では、様々な技術標準を交互に上手く使い分けながら、Deliveryを目指します。bSDDの役割はワークフローの最も初めに位置します。
BIMを実施する上で、IRの定義(要件/要求)がしっかり詰まれていないことは生産性の低下を引き起こすなど、様々なリスクを生み出す元凶となりえます。
IRの定義を具現化するためのアプローチとして、bSDDが存在します。
bSDDから実際の設計もしくは施工、維持管理などの各プロジェクトごとの要件サブセットを取り出し、IDSを作成します。まるでMVD(Model View Definition)ですね。
なお、IDSについては以下リンクで解説しています。
https://zenn.dev/miyamiyaumya/articles/6714ef2c6e2c6c

bSDDとは 概説

さて、いよいよbSDDについて紹介いたします。
bSDDとは、buildingSMART Data Dictionaryの略で、建設分野で使用されるデータに関する情報(意味、他のデータとの関係、プロパティ、使用法、形式など)一式まとめて辞書と呼ばれるデータベースの配布を容易にするためのWeb検索サービスです。データベースの設計方法論やコンセプトはISO12006-3やISO23386に準拠しています。
https://www.buildingsmart.org/users/services/buildingsmart-data-dictionary/
bSDDのコンテンツは、さまざまな組織によって公開された辞書で構成されており、各辞書は、Classification、Property、Materialという3つのフィールドで主に構成され、これらは互いに、または他の組織によって公開された辞書と関連する可能性があります。
bSDDを配信することの出来る組織は以下のList organizationsに記載されており、日本企業では2023/10/1時点で、唯一ONESTRUCTION株式会社(以下、弊社)が登録されており、今のところ日本語の辞書は弊社が自由に辞書データベースを配信出来ます。
https://search.bsdd.buildingsmart.org/uri

bSDDでは、組織で必要となるBIMへの要件定義や要求定義を設計したライブラリを配信出来ることから、以下の役割が期待されています。

  • あらゆる標準にアクセスし、openBIMモデルを充実させる
  • プロジェクトもしくは組織におけるIRが過不足無く充足しているかチェックする
  • IDSを補完し、IRのSingle Source of Truthを実現する
  • BIMを実施する際の専門用語を用いたコミュニケーションにおいて、分野や立場が違えども、正しく文言を変換し、IFCへマッピングが出来る
  • 顧客や協同先に合わせて言葉の言い回しや命名規則を変えていたが、bSDD により顧客ごとへの個別対応が必要なくなる

例えば日本国内においては、建設物価等の建設部材に関するオブジェクト分類が公開されれば、結構使えると思います。
また、言葉一つとっても語句の意味が違うことから、bSDDを参照することで正確に物事の意味を共有出来ます。
例えばAppleという英語辞書があるとして、日本語でどうAppleは表現されるのかを考えるとリンゴですよね。ここで語句変換の為、リンゴという日本語辞書も存在することになります。
では、リンゴの品種でいくと、Appleという辞書に例えばGranny Smithという品種が下位クラスとして登録されているとします。すると、リンゴという日本語辞書には、リンゴの下位クラスにグラニースミスとカタカナで日本人が解釈出来るように登録されています。
あくまで簡単な例で紹介しましたが、そういうリンクされた情報をbSDDの中では自由に検索し、例え組織が違っても、用いる言語が違っても、各語句やその属性それぞれの繋がりを知ることが出来、bSDDの情報から読み解き、関係者間でメール等でやり取りすることなく、変換することが出来ます。
以下は、弊社が登録しました日本語のリンゴに関する辞書です。現在、日本語で登録されている公開辞書は弊社の登録している情報しかありません。
https://search.bsdd.buildingsmart.org/uri/onest/fruveg/1.1/class/New_class_913a1275

bSDDのデータモデル 解説

bSDDに登録する辞書データベースを設計する上で必要な情報を解説します。データモデルの概念図は以下となっています。

データモデル図

フィールドの設計について

bSDDで配信可能な辞書データベースは以下の8つのフィールドで構成され、オブジェクト定義を行います。

  • Domain
  • Classification
  • ClassificationRelation
  • Property
  • ClassificationProperty
  • Material
  • PropertyRelation
  • AllowedValue

各フィールドの説明は以下の表で説明します。

フィールド 説明
Domain 組織によって公開された辞書
Classification (抽象的な)物体(例:「壁」)、抽象的概念(例:「時間」)、プロセス(例:「設置」)のいずれかを指します。ツリーのような階層構造で設計することができます。
ClassificationRelation Classification同士をリンクします。関係によって、他のドメインとの親子リンクを定義することもできます。
Property ある概念が元から持っている、または後天的に獲得した特徴(例: 熱効率、ヒートフロー、色など)。子クラスは親クラスのプロパティを継承しないが、関連付けは出来る。必ずしも、特定のオブジェクトに専属のプロパティとは限らず、他のオブジェクトにも使い回される可能性もある。
ClassificationProperty 特定のクラスに対する一般的な Property のインスタンス化を行う。ClassificationPropertyの値は、元のPropertyに影響を与えることなく変更できます。(例えば、Heightの上限は100cmです。Appleクラスに適用すると、Apple-Heightの下限は25cmになります)
Material 材質。ツリーのような階層構造で整理することができる。※ClassificationとMaterialは似ているが、IFCに対するマッピングルールが違う。
PropertyRelation Property同士をリンクします。
AllowedValue ClassificationPropertyの制約値、値の制約条件。Propertyに定義されている値をオーバーライドする。

bSDDで配信する辞書データベースの設計の考え方として、IFCはソフトウェア間の情報交換に使用されるトップレベルのスキーマ(基礎クラス)として採用されます。その為、bSDDでは、各組織で提供するClassificationがIFCどのEntityやPropertyに関連付けられるかを検索しその関係性を知ることが必要な為、これらのマッピング設計が重要です。

リレーションの設計について

もちろんこれらの関係性を設計することが出来、関係性の定義は以下の7つ準備されています。

  • HasMaterial
  • HasReference
  • IsEqualTo
  • IsSynonymOf
  • IsChildOf
  • IsParentOf
  • HasPart

各リレーションの説明は以下の表で説明します。

リレーション 説明
HasMaterial 特定の素材に関連付けられるクラス。例えば 例えば、“Steel Beam ”は材料 “Steel ”に関連付けられる。このタイプはクラスに対してのみ有効で、プロパティには使用できない。
HasReference 概念間に別の種類の関係がある場合、例えば、"ウォールライト"(または "燭台")はIfcWallを参照している
IsEqualTo 2つの概念が明確であり、同じ名前を持つ場合
IsSynonymOf 2つの概念が明確であるが、名前が異なる場合
IsChildOf ISO 120061F.3.1 の "subtype "関係に相当する。例えば 「電気モーター "と "燃焼モーター "は、一般概念 "モーター "の子(サブタイプ)である
IsParentOf IsChildOf の反対の関係
HasPart 例えば、電気モーターは、ステーター、ローターなどの要素で構成される e.g.)1F.3.2

bSDDに登録されたデータベース情報をIFCやIDSにマッピング設計を行う時のルール

Domain

IDSは、bSDDの内容をコピーするのではなく、URIを使ってbSDDを参照する。そのおかげで、URIをたどって情報にアクセスでき、Single Source of Truthを実現します。
Domainは、IFCにおいてIfcClassificationでマッピングします。

bSDD IFC 4.3 IFC 4 IFC 2X3 IDS
Domain name Domain name IfcClassification.Name IfcClassification.Name IfcClassification.Name uri
Domain source namespaceUri of the domain IfcClassification.Specification IfcClassification.Location X(IfcClassification.Sourceを回避策として使用可能) uri
Domain version DomainVersion IfcClassification.Edition IfcClassification.Edition IfcClassification.Edition uri
Domain owner OrganizationCode IfcClassification.Source IfcClassification.Source IfcClassification.Source uri
Domain date ReleaseDate IfcClassification.EditionDate IfcClassification.EditionDate IfcClassification.EditionDate uri

Classifications (objects)

Classificationsは、IFCにおいてIfcClassificationReferenceでマッピングします。

bSDD IFC 4.3 IFC 4 IFC 2X3 IDS
Classification name name of the classification IfcClassificationReference.Name IfcClassificationReference.Name IfcClassificationReference.Name uri
Classification code code of the classification IfcClassificationReference.Identification IfcClassificationReference.Identification IfcClassificationReference.ItemReference uri
Classification source namespaceUri of the classification IfcClassificationReference.Location IfcClassificationReference.Location IfcClassificationReference.Location uri

Properties

Propertiesは、IFCにおいてIfcPropertyとIfcPropertySetでマッピングします。

bSDD IFC 4.3 IFC 4 IFC 2X3 IDS
Property name Name (of property) IfcProperty.Name IfcProperty.Name IfcProperty.Name uri
Property source namespaceUri of the property IfcProperty.Specification IfcProperty.Description IfcProperty.Description uri
Property predefined value (single value) PredefinedValue IfcPropertySingleValue.NominalValue IfcPropertySingleValue.NominalValue IfcPropertySingleValue.NominalValue uri
Property allowed values (from enumeration) AllowedValues IfcPropertyEnumeratedValue.EnumerationValues IfcPropertyEnumeratedValue.EnumerationValues IfcPropertyEnumeratedValue.EnumerationValues uri
PropertySet name PropertySet (of ClassificationProperty) IfcPropertySet.Name IfcPropertySet.Name IfcPropertySet.Name uri

Material

Materialは、IFCにおいてIfcMaterialでマッピングします。

bSDD IFC 4.3 IFC 4 IFC 2X3 IDS
Material identification (option 1: Code) Code (of material) (E.g., MM34) IfcMaterial.Name IfcMaterial.Name IfcMaterial.Name uri
Material identification (option 2: Code_Name) Concatenate "Code";"_";"Name" (of material) (E.g., MM34_Steel) IfcMaterial.Name IfcMaterial.Name IfcMaterial.Name uri
Material source namespaceUri of the material IfcMaterial.Description IfcMaterial.Description IfcMaterial.Description uri

bSDDのClassifications (objects)は、分類するIfcObjectにリンクされている。
bSDDのMaterialは、IFC EntityのIfcMaterialにリンクされ、そのIfcMaterialはIfcObjectにリンクされる(例えばIfcWallのIfcMaterial)。

bSDDを作成する方法

LESSON1

bSDDで登録したい辞書のトップレベルのスキーマをIFCのどのバージョンにするか決める
オブジェクトに関する階層や関係性に関するモデルを設計する(modeling)。これは、IFCエンティティと辞書のオブジェクトとの紐づけ、必要とするPropertyのリストアップ、辞書内でのオブジェクト間の関係性の設計を行います。
bSDDでは、サンプルとして英語でfruit and vegetablesという辞書が公開されています。
https://search.bsdd.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/class/fruit

この辞書の中には、Appleというクラスがあります。では例えば、これに対応する日本語の辞書を設計していきましょう。
https://search.bsdd.buildingsmart.org/uri/onest/fruveg/1.1/class/New_class_913a1275

以下の点を設計内容に盛り込みました。

  • 「fruit and vegetables」という英語辞書に、「Apple」というClassがある。
  • 日本語辞書で、「フルーツと野菜」があり、「リンゴ」というClassがある。
  • Appleとリンゴは名前は違うが、概念は同じということで、IsSynonymOfを関係性として割り当て、Classification Relationを形成する。
  • AppleのChild Classとして、Granny Smithがある。リンゴのChild Classには、グラニースミスがあるので、これもIsSynonymOfで結ぶ。
  • 「Fruit and vegetables」の「Apple」には、「Height」というPropertyがあるため、それに対応する「高さ」というPropertyを作成する。
  • 「Height」と「高さ」をIsSynonymOfで結び、PropertyRelationを形成する。
  • 「高さ」というPropertyは、「リンゴ」というClassに紐づけて、Classification Propertyとして「高さ」を「リンゴ」専用の情報を付与する。
  • 「Fruit and vegetables」と「フルーツと野菜」に含まれるProperty(Not Classification Property)は同じカスタムProperty名で設計する。
  • Classification Propertyの中身は、Propertyの中身とは別立てで存在出来、 Classificationに特化したPropertyとして、AllowedValueを追加設計する。
  • トップレベルのスキーマであるIFCの辞書のClassとPropertyは、HasReferenceで結ぶ。

最終的に、以下のような設計図を作成しました。

リンゴ辞書設計図サンプル

実際に、bSDDにアップロードしてあります。リンゴに関する情報は下記から参照可能です。
https://search.bsdd.buildingsmart.org/uri/onest/fruveg/1.3

LESSON2

buildingSMART InternationalのbSDDに関するgithubでは、bSDDに関するテンプレートが配布されています。
https://github.com/buildingSMART/bSDD/blob/master/Model/Import Model/spreadsheet-import/bSDD_Excel_template.xlsx
Excel2bSDDのPythonコンバータープログラムも配布されているので、それを使えば簡単に変換できます。
基本はこれを使えばOKですが、他には弊社のOpenAECでも作成できます。弊社はたくさんのbSDDを設計してきたので、実設計者のフィードバックが反映されています。ぜひご使用ください。
https://openaec.jp/

Excelだけでなく、RDF(いわゆるturtle)で書くことも出来ますので、好きなソリューションを選択し、記載してください。

bSDDの完成形(サンプル)

以下のようなJSONファイルとして、最終的にbSDDへアップロードします。

bSDD_JP_fruitAndVegetables
{
    "OrganizationCode": "onest",
    "DomainCode": "fruveg",
    "DomainVersion": "1.1",
    "DomainName": "フルーツと野菜",
    "ReleaseDate": "2023-10-01T10:43:32.000Z",
    "Status": "Active",
    "LanguageIsoCode": "ja-JP",
    "License": "No license",
    "QualityAssuranceProcedure": "使用は自己責任です。これはデモ目的のみです。",
    "Classifications": [
        {
            "Code": "New_class_913a1275",
            "Name": "リンゴ",
            "ActivationDateUtc": "2023-10-01T10:54:52.000Z",
            "RevisionDateUtc": "2023-10-01T10:55:16.000Z",
            "VersionDateUtc": "2023-10-01T10:54:37.000Z",
            "VersionNumber": "1",
            "RevisionNumber": "0",
            "CreatorLanguageIsoCode": "ja-JP",
            "ClassificationRelations": [
                {
                    "RelatedClassificationUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/class/IfcCommunicationsAppliance",
                    "RelationType": "HasReference",
                    "Fraction": ""
                },
                {
                    "RelatedClassificationUri": "https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/class/apple",
                    "RelationType": "IsSynonymOf",
                    "Fraction": ""
                }
            ],
            "ClassificationProperties": [
                {
                    "Code": "New_class_prop_8cc85282",
                    "Description": "New classification property description",
                    "IsRequired": true,
                    "IsWritable": true,
                    "PredefinedValue": "1.0",
                    "PropertyCode": "New_prop_169f2528",
                    "PropertySet": "SizeSet",
                    "Unit": "cm"
                },
                {
                    "Code": "New_class_prop_d38be327",
                    "Description": "New classification property description",
                    "IsRequired": true,
                    "IsWritable": true,
                    "PredefinedValue": "15",
                    "PropertyCode": "New_prop_63741143",
                    "PropertySet": "SizeSet"
                }
            ],
            "ClassificationType": "Class",
            "Synonyms": [
                "Apple"
            ],
            "CountriesOfUse": "",
            "RelatedIfcEntityNamesList": [
                "IfcCommunicationsAppliance"
            ],
            "Uid": ""
        },
        {
            "Code": "New_class_28d4c57d",
            "Name": "つがる",
            "CreatorLanguageIsoCode": "ja-JP",
            "ClassificationProperties": [
                {
                    "Code": "New_class_prop_155d20ba",
                    "Description": "New classification property description",
                    "PropertyCode": "New_prop_169f2528",
                    "PropertySet": "SizeSet"
                },
                {
                    "Code": "New_class_prop_18b4572b",
                    "Description": "New classification property description",
                    "PropertyCode": "New_prop_63741143",
                    "PropertySet": "SizeSet"
                }
            ],
            "ParentClassificationCode": "New_class_913a1275",
            "CountryOfOrigin": "JP",
            "CountriesOfUse": "",
            "Uid": ""
        },
        {
            "Code": "New_class_70bd811e",
            "Name": "グラニースミス",
            "ActivationDateUtc": "2023-10-01T11:17:27.000Z",
            "RevisionDateUtc": "2023-10-01T11:17:49.000Z",
            "VersionDateUtc": "2023-10-01T11:17:32.000Z",
            "DeActivationDateUtc": "2023-10-01T11:17:46.000Z",
            "VersionNumber": "1",
            "RevisionNumber": "0",
            "CreatorLanguageIsoCode": "ja-JP",
            "ClassificationRelations": [
                {
                    "RelatedClassificationUri": "https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/class/grannysmith",
                    "RelationType": "IsSynonymOf",
                    "Fraction": ""
                }
            ],
            "ClassificationProperties": [
                {
                    "Code": "New_class_prop_910d7a2d",
                    "Description": "New classification property description",
                    "PropertyCode": "New_prop_169f2528",
                    "PropertySet": "SizeSet"
                },
                {
                    "Code": "New_class_prop_96bd36ee",
                    "Description": "New classification property description",
                    "PropertyCode": "New_prop_63741143",
                    "PropertySet": "SizeSet"
                }
            ],
            "ClassificationType": "Class",
            "ParentClassificationCode": "New_class_913a1275",
            "Synonyms": [
                "Granny Smith"
            ],
            "CountryOfOrigin": "JP",
            "CountriesOfUse": [
                "JP"
            ],
            "Uid": ""
        }
    ],
    "Materials": [],
    "Properties": [
        {
            "Code": "New_prop_169f2528",
            "Name": "高さ",
            "Description": "New property description 825d2e7b",
            "CountryOfOrigin": "JP",
            "CountriesOfUse": [
                "JP"
            ],
            "PropertyRelations": [
                {
                    "RelatedPropertyUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/Height",
                    "RelationType": "HasReference"
                },
                {
                    "RelatedPropertyUri": "https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/prop/height",
                    "RelationType": "IsSynonymOf"
                }
            ],
            "Uid": ""
        },
        {
            "Code": "New_prop_63741143",
            "Name": "体積",
            "Description": "New property description ac9a4e11",
            "CountryOfOrigin": "JP",
            "CountriesOfUse": [
                "JP"
            ],
            "PropertyRelations": [
                {
                    "RelatedPropertyUri": "https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/Volume",
                    "RelationType": "HasReference"
                },
                {
                    "RelatedPropertyUri": "https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/prop/volume",
                    "RelationType": "IsSynonymOf"
                }
            ],
            "Uid": ""
        }
    ]
}

bSDD 今後の可能性

発注者もしくはその支援コンサルタントが、bSDDに関する辞書データベースを定義し、公開していくことで、情報の一元化を図ることが出来ます。辞書データベースからはサブセットとして、各プロジェクトごとにIDSファイルを作成出来ることから、そのあたりも非常に可能性を感じます。
ただし、IDSと同様にIFCの中身を十分知っていたり、その設計能力が必要であることは言うまでもありません。
私はbuildingSMART Japanで、IFC利用支援の小委員会を運営していますので、そのあたりも今後は設計勉強会をやっていきたいなあと思いつつ、まずはIFCの拡大を日本で図っていかなければ・・・

IFCの運用やルール規定などに関してお困りの方

プロジェクトや企業内でどのようにIFCを管理・運用し、データ活用の基盤情報としていくか知見を持ったIFCに関するプロフェッショナルが弊社に所属しています。
今回ご紹介したようなbSDDの構築、設計も可能です。
IFCなどopenBIMソリューションに関してお困りの方は是非弊社までご連絡ください。

※英語版はsubstackで配信しています。気になる人は下記から購読登録しておいてください。
https://yoshiyukimiyauchi.substack.com/

Discussion