Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Python에서 온톨로지 객체 사용

Python 함수는 생성한 온톨로지 SDK(OSDK)로 객체를 입력받고 검색합니다. 저장소가 사용할 유형과 링크를 선택한 뒤 SDK를 생성하여 설치해야 합니다.

SDK 생성과 설치

  1. Resource imports에서 Add > Ontology를 선택하고 온톨로지 및 사용할 객체와 링크를 가져와 저장합니다.
  2. 대응 SDK가 없다는 배너가 나오면 SDK Generation 탭을 엽니다.
  3. 처음에는 패키지 이름을 입력합니다. 첫 버전을 생성한 이후 이 이름은 바꿀 수 없습니다.

cannot import name 'Equipment2' from 'ontology_sdk.ontology.objects' 같은 오류가 생기면 아래쪽 파란 막대에서 온톨로지를 선택했는지 확인합니다. 객체 유형을 가져온 것만으로 SDK 생성에 필요한 온톨로지가 선택되지는 않습니다.

  1. Create new version을 선택하고 생성 진행 상태를 확인합니다.

  1. 생성이 끝나면 Install 버튼을 선택합니다.

Task Runner의 대화형 설치가 성공하여 BUILD SUCCESSFUL 상태가 되면 코드 완성이 준비됩니다. meta.yml에도 생성 패키지 참조를 추가합니다.

meta.yml을 직접 바꿀 수도 있지만 이 경우 Code Assist 세션을 다시 빌드해야 변경을 인식합니다. 리소스를 추가로 가져오거나 기존 유형에 속성을 추가했다면 SDK 새 버전을 생성하고 설치해야 합니다.

구조체 속성의 생성 클래스는 객체별 모듈에서 가져옵니다. 예를 들어 MyObjectType의 클래스는 ontology_sdk.ontology.objects.my_object_type에 있으며 구조체 편집에서 실제 사용 조건을 설명합니다.

객체를 함수 입력으로 사용

가상의 Aircraft에 String brand와 Integer capacity가 있다고 가정합니다.

from functions.api import UserFacingError, function
from ontology_sdk.ontology.objects import Aircraft


@function
def aircraft_input_example(aircraft: Aircraft) -> str:
    if aircraft.brand is None or aircraft.capacity is None:
        raise UserFacingError("항공기의 brand와 capacity가 필요합니다.")
    return f"{aircraft.brand} aircraft, holds {aircraft.capacity} passengers"

객체 집합 검색

다음 함수는 capacity가 100보다 큰 Aircraft의 집합 정의를 반환합니다. 전체 객체를 즉시 메모리에 로드하는 반환이 아닙니다.

from functions.api import function
from ontology_sdk import FoundryClient
from ontology_sdk.ontology.objects import Aircraft
from ontology_sdk.ontology.object_sets import AircraftObjectSet


@function
def aircraft_search_example() -> AircraftObjectSet:
    client = FoundryClient()
    return client.ontology.objects.Aircraft.where(Aircraft.object_type.capacity > 100)

pandas DataFrame, Beta

지원 SDK에서 to_dataframe으로 객체 집합을 DataFrame으로 변환할 수 있습니다. 변환은 객체 데이터를 메모리에 로드하므로 단순 합계만 필요하면 서버 집계를 사용하는 편이 적절합니다.

아래 예제는 Beta 기능을 켜고 capacity 열의 합을 Python 정수로 반환합니다. pandas sum의 기본 처리에 따라 누락 값은 제외하며 빈 열의 합계는 0입니다. 반환 합계는 Integer 범위 안에 있어야 합니다.

from functions.api import Integer, function
from ontology_sdk.ontology.object_sets import AircraftObjectSet


@function(beta=True)
def aircraft_dataframe_example(aircrafts: AircraftObjectSet) -> Integer:
    frame = aircrafts.to_dataframe()
    return int(frame["capacity"].sum())

사용자 지정 집계는 서버에서 집계한 결과를 가공하는 방법을 설명합니다. 게시 후 Workshop, Pipeline Builder에서 사용할 수 있으나 Pipeline Builder의 UDF에는 직접 온톨로지 접근 제한이 있습니다. 로컬 개발은 개발 환경과 게시 경계를 설명합니다.