注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
このガイドは、Python オントロジー SDK 1.x を使用するアプリケーションを Python オントロジー SDK 2.x に移行するためのものです。以下のセクションでは、2つのバージョンの違いを説明し、構文や構造に関する変更点を取り上げます。
Python オントロジー SDK のドキュメントは、プラットフォーム内の /workspace/developer-console/ にある Developer Console でも利用できます。Python オントロジー SDK 2.x のドキュメントを表示するには、バージョンピッカーで 2.x を選択します。
Python オントロジー SDK 1.x から 2.x にアップグレードする主な理由は4つあります。
オントロジー SDK とプラットフォーム SDK の両方を使って開発する際に、2つの別々のクライアントを管理する必要がなくなりました。両方の SDK に単一のクライアントからアクセスできるようになりました。

Optional[Objects] を返します。
Optional[Objects] を返すようになりました。.get を使用する必要がなくなりました。リンク自体がオブジェクトになります。.page、.where、.group_by など)が、これらのリンクでも利用可能になりました。Python オントロジー SDK V1 では、.iterate と .get メソッドのみが利用可能でした。AggregateObjectsResponse を返します。
dict[str, Any] で、そのキーは除外された項目、精度、データなどのフィールドでした。Python オントロジー SDK V2 では、集計は AggregateObjectsResponse のインスタンスを返すようになりました。そのフィールドは V1 の dict 型と同じですが、型安全性が向上しています。Python オントロジー SDK V2 の AggregateObjectsResponse には、V1 と同じレスポンスを返す .to_dict メソッドがあります。Attachment を返します。
client.ontology.attachments.upload(...) は AttachmentMetadata を返していました。V2 では、添付ファイルをアップロードすると Attachment が返されます。Python オントロジー SDK V1 では、リクエスト送信時にクライアント設定を簡単に編集する方法がありませんでした。たとえば、リクエストの user-agent を編集するには、クライアントの予約済みメソッド ._session にアクセスする必要がありました。この問題を回避するため、Python オントロジー SDK V2 では、インポートしてクライアントに渡すことができる Config クラスが提供されています。
この新しい Config クラスの構造は次のとおりです。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22class Config: # HTTP セッションの設定。 default_headers: Optional[Dict[str, str]] = ... # すべてのリクエストに含める HTTP ヘッダー。 proxies: Optional[Dict[Literal["http", "https"], str]] = None # HTTP および HTTPS リクエストに使用するプロキシ。 timeout: Optional[Union[int, float]] = None # すべてのリクエストのデフォルトのタイムアウト(秒単位)。 verify: Optional[Union[bool, str]] = True # SSL 検証。ブール値または CA バンドルへのパスを指定できます。 default_params: Optional[Dict[str, Any]] = None # すべてのリクエストに含める URL クエリパラメーター。 scheme: Literal["http", "https"] = "https" # 使用する URL スキーム('http' または 'https')。デフォルトは 'https' です。
Copied!1 2 3 4from ontology_sdk import FoundryClient client = FoundryClient() client._session._user_agent += "something_new"
Copied!1 2 3 4from ontology_sdk import FoundryClient, Config config = Config(default_headers={"Content-Type": "application/json"}) client = FoundryClient(config=config)
ベータ機能は変更される可能性があり、その構文、安定性、存在は保証されません。Python オントロジー SDK V2 の安定リリースにはベータ機能が含まれており、試してフィードバックを提供できます。ベータ機能を使用するには、foundry_sdk_runtime から AllowBetaFeatures をインポートし、そのコンテキスト内にコードを記述するか、@AllowBetaFeatures() でコードをデコレートする必要があります。Foundry の Python 関数を使用する場合、@function デコレーターには beta ブール値が含まれています。
AllowBetaFeatures でベータ機能を使用するCopied!1 2 3 4from foundry_sdk_runtime.decorators import AllowBetaFeatures with AllowBetaFeatures(): <your code>
AllowBetaFeatures でメソッドをデコレートしてベータ機能を使用するCopied!1 2 3 4 5from foundry_sdk_runtime.decorators import AllowBetaFeatures @AllowBetaFeatures() my_func(): <your code>
Python 関数でベータ版のプロパティを持つオントロジーオブジェクトを受け入れるには、次のコードが必要です。
Copied!1 2 3 4 5from functions.api import function @function(beta=True) def my_function(): <your code>
Python オントロジー SDK V2 のベータ機能には、次のものが含まれます。
派生プロパティは、オブジェクトのほかのプロパティやリンクの値に基づいて実行時に計算されるプロパティです。オントロジー SDK V2 では、オブジェクトセットに派生プロパティを作成できます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16from foundry_sdk_runtime import AllowBetaFeatures from ontology_sdk.ontology.objects import Object with AllowBetaFeatures(): derived_object_type = Object.object_type.derived my_object_set = client.ontology.object.with_properties( my_new_property=derived_object_type.linked_object.id.count() ) result = my_object_set.take(1) print(result) # 出力例: # Object(id=1, my_new_property=3.0)
オントロジー SDK V2 では、nearest_neighbors を使ってオブジェクトセットを絞り込み、指定したベクトルプロパティが、指定されたクエリベクトルまたはテキストに最も近いオブジェクトのセットを見つけることができます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20from foundry_sdk_runtime import AllowBetaFeatures from ontology_sdk.ontology.objects import Object my_object_set = client.ontology.objects.Object with AllowBetaFeatures(): closest_objects = my_object_set.nearest_neighbors( query="my query", num_neighbors=3, vector_property=Object.object_type.vector_property ) print(list(closest_objects)) # 出力例: # [ # Object(rid=None, _score=None, id=1, embedding=None), # Object(rid=None, _score=None, id=2, embedding=None), # Object(rid=None, _score=None, id=3, embedding=None) # ]
Python オントロジー SDK 2.x では、オブジェクトのマーキング、メディア、ベクトルプロパティが追加されます。マーキングとベクトルプロパティはベータ機能のため、AllowBetaFeatures コンテキスト内で読み取ります。メディアプロパティは直接読み取ります。それぞれの読み取り方法については、Python オントロジー SDK リファレンスのオブジェクトのプロパティタイプを参照してください。
Developer Console の既存のアプリケーションで、SDK バージョンタブの新しいバージョンを生成するオプションから Python オントロジー SDK 2.x ジェネレーターにアクセスして、新しい SDK バージョンを生成できます。

既存のアプリケーションには、新しく生成された SDK を使用するために必要な依存関係も必要です。Developer Console で作成された新しいアプリケーションは、デフォルトで Python オントロジー SDK 2.x ジェネレーターを使って SDK を生成します。開発を始めるタブの手順に沿って進めることで、すぐにはじめられます。
このセクションでは、Python オントロジー SDK 1.x と 2.x の対応付けを示す簡単な例を紹介します。
where 式に .object_type を含める必要があります。.is_member_of は .in_ に名前が変更されました。.contains_any_term(...).contains_all_terms(...).contains_all_terms_in_order(...)starts_with メソッドは Python オントロジー SDK 2.75.0 で削除されました。接頭辞による一致には、prefix_last_term=True を指定して contains_all_terms_in_order を使用します。Copied!1client.ontology.object.where(Object.id.is_member_of([1, 2, 3])).take(1)
Copied!1client.ontology.object.where(Object.object_type.id.in_([1, 2, 3])).take(1)
| リンクタイプ | V1 のレスポンス | V2 のレスポンス |
|---|---|---|
| 一対一 / 多対一 | ObjectLinkClass のインスタンス | Optional[Object] |
| 一対多 / 多対多 | ObjectLinkClass のインスタンス | ObjectSet のインスタンス |
Python オントロジー SDK V1 では、.get を使用してリンクされたオブジェクトを取得します。
Copied!1linked_obj: Optional[LinkedObject] = client.ontology.object.linked_object.get()
Python オントロジー SDK V2 では、オブジェクトを読み込んでから、そのオブジェクトのリンクメソッドを呼び出します。メソッド名はリンクのAPI名をスネークケースにしたもので、リンクされたオブジェクトを返します。リンクされたオブジェクトがない場合は None を返します。
Copied!1 2 3obj = client.ontology.objects.Object.get("primaryKey") linked_obj: Optional[LinkedObject] = obj.linked_object()
Python オントロジー SDK V1 で利用可能なメソッドは、.iterate と .get のみです。
Copied!1 2 3 4linked_obj: ObjectLinkType = client.ontology.object.linked_object linked_obj.iterate() → Iterable[LinkedObject] linked_obj.get(1) → Optional[LinkedObject]
Python オントロジー SDK V2 では、.take、.where、.group_by を含め、オブジェクトセットで利用可能なすべてのメソッドを一対多または多対多のリンクでも利用できます。これにより、リンクの絞り込み、集計、反復処理が容易になります。V2 では、オブジェクトセットからリンクをたどるための search_around_<link_name>() メソッドも生成されます。
Copied!1 2 3 4 5 6 7 8 9 10from ontology_sdk.ontology.objects import LinkedObject obj = client.ontology.objects.Object.get("primaryKey") linked_obj_set: LinkedObjectSet = obj.linked_objects() for linked_obj in linked_obj_set.iterate(): ... result: float = linked_obj_set.where(LinkedObject.object_type.id > 5).count().compute()
リンクをたどる例については、Python オントロジー SDK リファレンスのリンクを参照してください。
オントロジー SDK V2 のクエリでは戻り値の型が変更されており、V2 のクエリの引数はすべてキーワード引数です。
| 戻り値の型 | V1 のレスポンス | V2 のレスポンス |
|---|---|---|
| オブジェクト | オブジェクトの主キー(Float、文字列) | オブジェクトのインスタンス |
| ObjectSet | ObjectSet の RID(文字列) | ObjectSet のインスタンス |
| 添付ファイル | 添付ファイルの RID(文字列) | 添付ファイルのインスタンス |
Copied!1 2 3 4 5result: float = client.ontology.queries.query_object_output(1) print(result) # 出力例: # 1.0
Copied!1 2 3 4 5result: Object = client.ontology.queries.query_object_output(object_id = 1) print(result) # 出力例: # Object(id = 1)
Copied!1 2 3 4 5result: str = client.ontology.queries.query_object_set_output(1) print(result) # 出力例: # "ri.object-set.main.object-set.e5c05475-8766-4804-9be0-66cf7854de5c"
Copied!1 2 3 4 5result: ObjectSet = client.ontology.queries.query_object_set_output(object_id = 1) print(result) # 出力例: # ObjectSet(object_set_definition=...)
Copied!1 2 3 4 5result: str = client.ontology.queries.query_attachment_output(1) print(result) # 出力例: # "ri.attachments.main.attachment.2c1432f8-0378-45f2-8280-55d858cb71fc"
Copied!1 2 3 4 5result: Attachment = client.ontology.queries.query_attachment_output(object_id = 1) print(result) # 出力例: # Attachment(rid="ri.attachments.main.attachment.2c1432f8-0378-45f2-8280-55d858cb71fc")
Python オントロジー SDK 2.x は、1.x では対応していなかった2次元集計、3次元集計、およびマップのクエリ戻り値の型にも対応しています。これらの追加の戻り値の型の例については、Python オントロジー SDK リファレンスのクエリを参照してください。
単一の値ではなく複数の値を返す集計(つまり、.group_by と .aggregate による集計)は、Dict[str, Any] ではなく AggregateObjectsResponse を返します。Python オントロジー SDK V1 のレスポンスを返したい場合は、AggregateObjectsResponse の .to_dict メソッドを使用できます。このメソッドはレスポンスを辞書形式で返します。
| V1 のレスポンス | V2 のレスポンス |
|---|---|
| Dict[str, Any] | AggregateObjectsResponse |
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19result: dict[str, Any] = client.ontology.objects.Object.aggregate({ "min_id": Object.object_type.id.min(), "max_id": Object.object_type.id.max() }).compute() print(result) # 出力例: # { # 'accuracy': 'ACCURATE', # 'data': [ # { # 'group': {}, # 'metrics': [ # {'name': 'min_id', 'value': 1.0}, # {'name': 'max_id', 'value': 99.0} # ] # } # ] # }
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20result: AggregateObjectsResponse = client.ontology.objects.Object.aggregate({ "min_id": Object.object_type.id.min(), "max_id": Object.object_type.id.max() }).compute() print(result) # 出力例: # AggregateObjectsResponse( # excluded_items=None, # accuracy='ACCURATE', # data=[ # AggregateObjectsResponseItem( # group={}, # metrics=[ # AggregationMetricResult(name='min_id', value=1.0), # AggregationMetricResult(name='max_id', value=99.0) # ] # ) # ] # )
オントロジー SDK V1 では、添付ファイルをアップロードしたときの戻り値の型は AttachmentMetadata です。V2 では、戻り値の型は Attachment です。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13result: AttachmentMetadata = client.ontology.attachments.upload( file_path="file.json", attachment_name="myFile" ) print(result) # 出力例: # AttachmentMetadata( # rid='ri.attachments.main.attachment.00000000-0000-0000-0000-000000000000', # filename='myFile', # size_bytes=20, # media_type='*/*', # type='single' # )
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21result: Attachment = client.ontology.attachments.upload( file_path="file.json", attachment_name="myFile" ) print(result) # Example output: # Attachment(rid=ri.attachments.main.attachment.00000000-0000-0000-0000-000000000000) print(result.get_metadata()) # Example output: # AttachmentMetadata( # rid='ri.attachments.main.attachment.00000000-0000-0000-0000-000000000000', # filename='myFile', # size_bytes=20, # media_type='*/*', # type='single' # ) print(result.read().getvalue()) # Example output: # b'My example file.\n'
アップロードした添付ファイルは、適用したアクションによってオブジェクトのプロパティに書き込まれない限り、1時間後に削除されます。このルールと Attachment のすべての機能については、Python オントロジー SDK リファレンスの添付ファイルを参照してください。
オントロジー SDK V1 では、範囲でグループ化する場合、入力として辞書のリストを受け取ります。各辞書のキーは start_value と end_value で、その値は各範囲の開始値と終了値です。V2 では、新しい入力のデータ型はタプルのセットです。タプルの最初の要素は各範囲の start_value、2番目の要素は end_value です。
Copied!1 2 3 4 5 6 7from ontology_sdk.ontology.objects import Object client.ontology.objects.Object.group_by( Object.object_type.int_property.ranges( [{"start_value": 1, "end_value": 2}, {"start_value": 3, "end_value": 4}] ) )
Copied!1 2 3 4 5from ontology_sdk.ontology.objects import Object client.ontology.objects.Object.group_by( Object.object_type.int_property.ranges({(1, 2), (3, 4)}) )
Point は GeoPoint に名前が変更されました。リクエストの例外は、foundry_sdk_runtime.errors ではなく foundry_sdk から直接インポートするようになりました。これには、次の例外が含まれます。
Copied!1from foundry_sdk_runtime.errors import PalantirRPCException
Copied!1from foundry_sdk import PalantirRPCException
ActionResponse は SyncApplyActionResponse に変更されました。BatchActionResponse は BatchApplyActionResponse に変更されました。ValidationResult は enum としては削除されました。Literal として存在し、foundry_sdk.v2.ontologies.models からインポートできます。Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41from ontology_sdk.types import ( ActionConfig, ActionMode, ReturnEditsMode, ValidationResult ) from foundry_sdk_runtime.types import ActionResponse response: ActionResponse = client.ontology.actions.action_example( action_config=ActionConfig( mode=ActionMode.VALIDATE_AND_EXECUTE, return_edits=ReturnEditsMode.ALL), parameter_example="value" ) if response.validation.validation_result == ValidationResult.VALID: ... print(response) # 出力例: # ActionResponse( # validation=ValidateActionResponse( # result='VALID', # submission_criteria=[], # parameters={} # ), # edits=EditsActionResponse( # type='edits', # edits=[ # EditObjectResponse( # type='addObject', # primary_key='value', # object_type='ExampleObjectType' # ) # ], # added_objects_count=1, # modified_objects_count=0, # deleted_objects_count=0, # added_links_count=0, # deleted_links_count=0 # ) # )
アクションの設定の型を foundry_sdk_runtime.types からインポートします。response.validation.result は、ValidationResult 列挙型ではなく文字列 "VALID" と比較します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40from foundry_sdk_runtime.types import ( ActionConfig, ActionMode, ReturnEditsMode, SyncApplyActionResponse ) response: SyncApplyActionResponse = client.ontology.actions.action_example( action_config=ActionConfig( mode=ActionMode.VALIDATE_AND_EXECUTE, return_edits=ReturnEditsMode.ALL), parameter_example="value" ) if response.validation.result == "VALID": ... print(response) # 出力例: # SyncApplyActionResponse( # validation=ValidateActionResponse( # result='VALID', # submission_criteria=[], # parameters={} # ), # edits=ObjectEdits( # type='edits', # edits=[ # AddObject( # primary_key='value', # object_type='ExampleObjectType', # type='addObject' # ) # ], # added_object_count=1, # modified_objects_count=0, # deleted_objects_count=0, # added_links_count=0, # deleted_links_count=0 # ) # )
詳細については、Python オントロジー SDK リファレンスのオントロジーに対するアクションを参照してください。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40from ontology_sdk.types import BatchActionConfig, ReturnEditsMode from ontology_sdk.ontology.action_types import ActionExampleBatchRequest from foundry_sdk_runtime.types import BatchActionResponse response: BatchActionResponse = client.ontology.batch_actions.action_example( batch_action_config=BatchActionConfig(return_edits=ReturnEditsMode.ALL), requests=[ ActionExampleBatchRequest( parameter_example="value_1" ), ActionExampleBatchRequest( parameter_example="value_2" ) ] ) print(response) # 出力例: # BatchActionResponse( # edits=EditsActionResponse( # type='edits', # edits=[ # EditObjectResponse( # type='addObject', # primary_key='value_1', # object_type='ExampleObjectType' # ), # EditObjectResponse( # type='addObject', # primary_key='value_2', # object_type='ExampleObjectType' # ) # ], # added_objects_count=2, # modified_objects_count=0, # deleted_objects_count=0, # added_links_count=0, # deleted_links_count=0 # ) # )
BatchActionConfig と ReturnEditsMode を foundry_sdk_runtime.types からインポートします。レスポンスは BatchApplyActionResponse になりました。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39from foundry_sdk_runtime.types import BatchActionConfig, BatchApplyActionResponse, ReturnEditsMode from ontology_sdk.ontology.action_types import ActionExampleBatchRequest response: BatchApplyActionResponse = client.ontology.batch_actions.action_example( batch_action_config=BatchActionConfig(return_edits=ReturnEditsMode.ALL), requests=[ ActionExampleBatchRequest( parameter_example="value_1" ), ActionExampleBatchRequest( parameter_example="value_2" ) ] ) print(response) # 出力例: # BatchApplyActionResponse( # edits=BatchActionObjectEdits( # type='edits', # edits=[ # AddObject( # primary_key='value_1', # object_type='ExampleObjectType', # type='addObject' # ), # AddObject( # primary_key='value_2', # object_type='ExampleObjectType', # type='addObject' # ) # ], # added_object_count=2, # modified_objects_count=0, # deleted_objects_count=0, # added_links_count=0, # deleted_links_count=0 # ) # )
詳細については、Python オントロジー SDK リファレンスのバッチアクションを適用するを参照してください。