KR100650434B1 - 외부화 가능 추론 구성 요소들을 위한 시스템 및 방법 - Google Patents

외부화 가능 추론 구성 요소들을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR100650434B1
KR100650434B1 KR20057009108A KR20057009108A KR100650434B1 KR 100650434 B1 KR100650434 B1 KR 100650434B1 KR 20057009108 A KR20057009108 A KR 20057009108A KR 20057009108 A KR20057009108 A KR 20057009108A KR 100650434 B1 KR100650434 B1 KR 100650434B1
Authority
KR
South Korea
Prior art keywords
inference
components
data
algorithm
component
Prior art date
Application number
KR20057009108A
Other languages
English (en)
Other versions
KR20050098834A (ko
Inventor
호이 앵 찬
루이스 알 데제나로
이사벨 엠 루벨로우
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Priority to KR20057009108A priority Critical patent/KR100650434B1/ko
Publication of KR20050098834A publication Critical patent/KR20050098834A/ko
Application granted granted Critical
Publication of KR100650434B1 publication Critical patent/KR100650434B1/ko

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Software Systems (AREA)

Abstract

외부화 가능 추론 구성 요소를 관리(1210)하는 기술이 제공된다. 이 기술은 개별적인 구성 요소들로부터 추론의 동적인 구성, 동적으로 구성 가능한 추론들을 제어하기 위한 데이터의 외부화를 가능하게 한다. 이에 의해 실현되는 하나의 주요한 이점은 새로운 추론들을 형성하기 위해 다양한 외부화된 구성 요소들을 혼합하고 매칭하는 능력, 즉 다른 방식으로 기술하면 새로운 방식으로 다양한 구성 요소들을 조합(재사용)하고 실행함으로써 새로운 지식을 추론하는 능력이다. 상이한 애플리케이션들의 대한 요구를 충족시키기 위해 다수의 상이한 방식으로 결합될 수 있는 추론 구성 요소들이 제공된다. 이것은 추론 구성 요소들이 독립적으로 개발되며 휴대 가능하게 할 수 있다.
추론 구성 요소, 비즈니스 논리, 추론 특징

Description

외부화 가능 추론 구성 요소들을 위한 시스템 및 방법{SYSTEM AND METHOD FOR EXTERNALIZABLE INFERENCING COMPONENTS}
본 발명은 일반적으로 소프트웨어 공학에 관한 것이며, 보다 구체적으로는 외부화 가능 추론 구성 요소(externalizable inferencing component)들을 특정하고 적용하고 관리하는 것을 포함하는 외부화 가능 추론 구성 요소를 사용하는 기술에 관한 것이다.
추론 데이터를 외부화(externalize)하는 다양한 기술들이 개발되어 왔다. 랜더스(Landers)에 의한 미국특허 5,136,523호, 제목: "System for Automatically and Transparently Mapping Rules and Objects from a Stable Storage Database Management System Within a Forward Chaining or Backward Chaining Inference Cycle"은 데이터베이스에 영구적으로 저장되는 오브젝트 및 룰 데이터를 기술하고 있다. 무어(Moore) 등에 의한 미국특허 5,446,885호, 제목: "Event Driven Management Information System With Rule-Based Applications Structure Stored in a Relational Database"에서도 또한 추론 정보가 영구히 저장된다. 그러나, 종래 기술은 외부화 가능 추론 구성 요소들의 사용에 대해서는 개시하고 있지 않다.
본원의 일 양상에 따르면, 복수의 외부화 가능 추론 구성 요소들을 관리하는 방법이 제공된다. 본 방법은 프로그램에 대한 추론 특징을 식별하고, 그 식별된 추론 특징들을 추론 구성 요소들로서 제공하는 것을 포함한다. 외부화된 알고리즘 및 데이터(이는 영구히 저장될 수 있음)는 추론 구성 요소들과 연관될 수 있다.
식별된 추론 특징들은 트리거 포인트들, 쇼트 텀 팩트들(short term facts), 추론 룰들, 추론 엔진들, 정적 변수 매핑들(static variable mappings), 센서들, 작동기(effector)들, 롱 텀 팩트들(long term facts), 및 결론들을 포함할 수 있다. 추론 구성 요소들은 트리거 포인트 구성 요소들, 쇼트 텀 팩트 구성 요소들, 추론 룰 세트 구성 요소들, 추론 엔진 구성 요소들, 정적 매핑 구성 요소들, 센서 구성 요소들, 작동기 구성 요소들, 롱 텀 팩트 구성 요소들, 및 결론 구성 요소들을 포함할 수 있다.
추론 구성 요소들은 추론 구성 요소에 의해 제공된 데이터의 소비자, 추론 구성 요소에 의해 제공된 데이터의 제공자, 또는 양쪽일 수 있다.
그 방법은 적어도 하나의 애플리케이션과 적어도 하나의 트리거 포인트 추론 구성 요소를 연관시키는 것을 포함한다.
추론 구성 요소들은 적어도 하나의 다른 추론 구성 요소를 사용하는 마스터 추론 구성 요소들일 수 있다. 추론 구성 요소들은 추론 엔진을 사용할 수 있다. 또한, 추론 구성 요소들은 적어도 하나의 추론 하위 구성 요소들(subcomponent)로 조직화될 수 있다. 추론 구성 요소들은 또한 기준(reference)으로서 적어도 하나의 다른 추론 구성 요소와 공유될 수 있다.
추론 구성 요소들의 조직/구성은 어레이, 집합(collection), 해시테이블(hashtable), 반복자(iterator), 리스트, 파티션, 세트, 스택, 트리, 백터, 및 이들의 조합일 수 있다.
추론 구성 요소들은 유일한 식별자, 의도(intention), 성명, 위치, 폴더, 개시 시간, 종료 시간, 우선 순위(priority), 분류, 기준(reference), 설명(description), 파이어링 위치(firing location), 파이어링 파라미터, 초기화 파라미터, 구현기(implementor), 준비 플래그(ready flag), 자유 형식(free form) 데이터, 및 이들의 조합을 포함할 수 있다.
알고리즘들은 추론 구성 요소의 생성, 추론 구성 요소의 검색, 추론 검색 요소의 갱신, 및 추론 구성 요소의 삭제를 수행할 수 있다. 또한, 그 알고리즘들은 적어도 두 개의 추론 구성 요소들에 의해 공유될 수 있다.
알고리즘은 실행 트리거 포인트 알고리즘, 리턴 데이터 알고리즘, 결합 데이터(join data) 알고리즘, 필터 데이터 알고리즘, 변환 데이터(translate data) 알고리즘, 분류에 의한 선택 알고리즘, 랜덤 선택 알고리즘, 라운드 로빈(round robin) 선택 알고리즘, 추론 엔진 선처리기(inference engine pre-processor), 추론 엔진 후처리기, 추론 엔진 론처(launcher), 데이터 수신 알고리즘, 데이터 전송 알고리즘, 데이터 저장 알고리즘, 데이터 패치(fetch) 알고리즘, 및 이들의 조합일 수 있다.
추론 구성 요소들은 새로운 추론 앤터티(entity)를 형성하는 적어도 두개의 추론 하위 구성 요소들로 구성될 수 있다. 그 구성은 정적 또는 동적(또는 이들의 조합)으로 발생할 수 있다.
추론 구성 요소들의 생성, 검색, 갱신 및 삭제를 용이하게 하기 위해, 추론 구성 요소 관리 장치가 사용될 수 있다.
본 발명의 다른 양상에 따르면, 비즈니스 논리를 제공하기 위한 시스템이 제공된다. 그 시스템은 식별 구성 요소, 외부화 구성 요소를 포함한다. 식별 구성 요소는 애플리케이션 프로그램 내의 적어도 하나의 가변 포인트를 식별하도록 구성되고, 외부화 구성 요소는 그 식별된 적어도 하나의 가변 포인트에 외부화된 비즈니스 논리를 제공하도록 구성된다. 외부화된 비즈니스 논리는 추론 구성 요소를 포함한다. 추론 구성 요소는 외부화된 알고리즘 및 데이터를 포함할 수 있다.
시스템은 또한 적어도 하나의 가상 머신(예를 들면, JVM(JAVA Virtual Machine))을 사용하는 외부화된 알고리즘을 구성하기 위한 실행 구성 요소를 포함한다.
본 발명의 이러한 양상 및 다른 양상, 특징, 및 장점들은 첨부 도면들과 관련하여 기재된 양호한 실시예들에 관한 다음의 상세한 설명으로부터 명백해질 것이다.
도 1은 본 발명의 실시예에 따라 본 발명이 적용될 수 있는 컴퓨터 처리 시스템의 블록도이다.
도 2는 본 발명의 양호한 실시예에 따른 추론 구성 요소들을 이용하는 트리거 포인트들에 대한 예시적인 애플리케이션에 대한 블록도이다.
도 3은 본 발명의 양호한 실시예에 따른 추론 구성 요소의 아키텍처를 설명하는 블록도이다.
도 4는 본 발명의 양호한 실시예에 따른 예시적인 추론 구성 요소들의 상호작용을 도시하는 블록도이다.
도 5는 본 발명의 양호한 실시예에 따른 예시적인 추론 룰 세트의 구성 요소들의 상호 작용을 도시하는 블록도이다.
도 6은 본 발명의 양호한 실시예에 따른 예시적인 추론 정적 매핑 구성 요소들의 상호 작용들을 도시하는 블록도이다.
도 7은 본 발명의 양호한 실시예에 따른 예시적인 추론 룰 세트 구성 요소들 및 정적 매핑 구성 요소들의 조합을 도시하는 블록도이다.
도 8은 본 발명의 양호한 실시예에 따른 예시적인 추론 룰 세트 구성 요소들 및 동적 매핑 구성 요소들(센서들 및 실행기들)을 도시하는 블록도이다.
도 9는 본 발명의 양호한 실시예에 따른 예시적인 추론 롱 텀 팩트 구성 요소들의 상호 작용을 나타내는 블록도이다.
도 10은 본 발명의 양호한 실시예에 따른 쇼트 텀 팩트 구성 요소들의 상호 작용을 나타내는 블록도이다.
도 11은 본 발명의 양호한 실시예에 따른 예시적인 추론 결론 구성 요소들을 도시한 도면이다.
도 12는 본 발명의 양호한 실시예에 따른 예시적인 추론 구성 요소 관리 장치의 상호 작용을 나타내는 블록도이다.
비즈니스 룰들의 외부화 및 트리거 포인트들의 외부화는 애플리케이션 동작들을 조정하기 위한 공지된 기술들이다. 예를 들어, 2001년 9월 20일에 출원된 데제나로(Degenaro) 등에 의한 제목 "System and Method for Employing Externalized, Dynamically Configurable, Cacheable Trigger Points"인 미국특허출원 09/956,644호(전체가 참조 문헌으로서 통합되어 있음)는 논리 흐름에서 트리거 포인트를 사용하는 기술을 기재하고 있다. 일반적인 개념은 원하는 프로세싱을 수행하기 위해 애플리케이션들 내에 정상적으로 삽입된 논리를 외부 기관에 호소(appeal)하는 트리거 포인트들로 교체하는 것이다. 그렇게 구성된 애플리케이션의 다양성은 룰에 의한 애플리케이션들 자체들을 변경시키지 않고 용이하고 동적으로 조정될 수 있다. 애플리케이션의 다양한 계층들에서 트리거 포인트들의 위치는 룰 추출(abstraction)의 대응 레벨들을 인에이블한다. 외부화 가능한 논리 및 데이터의 집중화는 사업에 걸친 룰들 및 트리거 포인트들을 사용하는 다양한 애플리케이션들의 유지 비용을 동시에 감소시키면서 이해력, 일관성, 재사용성, 및 관리 능력에 가능성을 향상시킨다.
외부화의 콘텍스트(context)에서, "룰들(rules)"은 통상적으로 인위적인 지적(intelligence) 커뮤너티에 연관된 것들이 아니라 오히려 일상적인 "비즈니스" 결정을 행하는데 사용되는 것이다. 사용된 기술은 선언적이라기 보다는 구조 지향적이고, 사용된 룰들은 종종 직접적이다. 일반적으로, 새로운 지식이 발견되는 것은 아니지만, 그 대신에 시간 및 상황에 따른 다양성이 용이하게 관리된다.
예를 들면, 비행기에 대한 애플리케이션은 일년 동안 비행된 마일(mile)의 수에 기초하여 자주 이용하는 승객을 동, 은, 금으로 간주할 수 있다. 시간이 경과함에 따라 보다 많은 마일이 축적되면, 그 승객의 지위가 동에서 은으로, 은에서 금으로 변화할 수 있다. 또한, 동, 은, 또는 금으로서 분류될 필요가 있는 마일들의 수는 10000, 20000, 30000에서 15000, 25000, 50000으로 각각 시간에 따라 변화할 수 있다. 또는 플레티늄이라는 새로운 분류가 일년에 적어도 75000 마일을 여행하는 사람들을 위해 부가될 수 있다.
외부화 기술 이전에, 고객을 카테고리로 분류하는 것은 그 때마다 처리되어 코딩될 수 있다. 그러나, 외부화 가능 트리거 포인트들 및 룰들을 사용함에 있어서, 분류를 실행하기 위한 논리 및 데이터는 적절한 애플리케이션 외부에 존재한다. 그러한 결정을 하는 알고리즘들 및 그들을 파라미터화하는 데이터 모두를 외부화함으로써, 동작의 다양성에 대한 향상된 관리 능력이 달성될 수 있는 것이다.
대안으로, 추리 시스템(reasoning system)은 흔히 새로운 지식을 유도하기 위해 Rete 네트워크와 순방향 추론(forward chaining) 및 역방향 추론과 같은 추론 기술들을 사용한다. 그러한 시스템들은 통상적으로 3개의 주요 요소들, 즉 지식(통상적으로 if/then 룰들 및 팩트들의 형태), 유도된 팩트들로 구성된 워킹 메모리, 지식 및 워킹 메모리를 처리하는 추론 엔진으로 구성된다.
순방향 추론 동안, 추론 엔진은 어떠한 추론 룰들이 파이어(fire)되어야 하는 지를 결정하는 추론 룰들 및 팩트들을 검사한다. 충돌 해결 기술을 사용하여 선택된 하나의 추론 룰이 파이어된다. 이것은 동작을 발생시키거나 새로운 팩트들이 생성되도록 할 수 있다. 적법한 추론 룰들이 더 이상 존재하지 않을 때까지 추론 룰 선택 및 파이어링(firing)이 반복된다. 완료된 경우, 영 또는 그 이상의 결론들에 도달된다.
역방향 추론 동안, 추론 엔진은 목표가 달성되었는지 여부를 결정하기 위해 팩트들 및 데이터를 검사한다. 원래의 목표가 사실 또는 거짓으로 판명될 수 있을 때까지 중간 목표들이 부가 또는 제거된다. 각각의 목표는 적절한 데이터로 평가되는 경우 거짓으로 판명되거나 처음에 진실 또는 거짓으로 판명되어야 하는 하나 이상의 다른 추론 룰들을 칭하는 추론 룰이다.
Rete 알고리즘은 추론의 최적화된 방법이다. 노드들의 네트워크는 새로운 팩트들이 임의의 추론 룰에 대해 테스트되는 것을 보장하기 위해 사용된다.
통상적으로, 추리 또는 지식 기반 시스템은 새로운 팩트들을 학습하는데 사용될 수 있다. 예를 들면, 중국 사람들이 카메라를 구매하는 경우 그들은 또한 운반 케이스를 구매할 것이며, 반면에 프랑스 사람들은 카메라에 부가하여 배터리를 구매할 수 있다는 것이 학습될 수 있다.
이러한 2개의 상이한 룰 지향 프로그래밍 모델들, 외부화 및 추리 각각은 그들의 장점 및 약점을 갖는다. 이들 각각은 통상적으로 상황에 따른 주요 양상들에서 다른 것들에 비해 장점을 유지하면서, 동일한 문제점들에 대해 적용될 수 있다. 예를 들면, 추리는 사용된 룰들이 자주 변하는 경우, 또는 어떻게 결과가 획득되었는가를 정확하게 결정하는 것이 중요하지 않은 경우, 또는 룰 충돌이 동작 시에 전송될 수 있는 경우, 또는 관련 룰들의 수가 매우 큰 경우, 또는 고 성능이 요구되 지 않는 경우에 매우 유리할 수 있다. 외부화(externalization)는 반대의 상황들, 예를 들면 룰 세트의 크기가 작은 경우, 룰 변화가 자주 발생하지 않는 경우, 고성능이 중요하지 않은 경우 등에 보다 유리할 수 있다.
하나의 중요한 문제는 각각의 단점을 피하면서 그들의 결합된 장점을 향유하기 위해 외부화 및 추리 모두를 어떻게 유리하게 이용하는 것인가에 관한 것이다. 일정한 경우에는 외부화 기술들만이 요구 조건을 충족하고, 다른 경우에는 추론 기술들만으로 충분하나, 또 다른 경우에는 이러한 2개의 상이하지만 상보적인 접근법들이 최상 결과를 제공한다.
다른 주요한 문제로는 추리 시스템들 및 그들의 관련 데이터를 어떻게 조직화하느냐에 관한 것이다. 약간 상이한 추론의 버전들이 애플리케이션에 의해 소망될 수 있다는 것이 예상될 수 있다. 예를 들면, 추론 룰 세트는 본질적으로는 보편적일 수 있으나, 그것의 변수들의 일부 또는 전부는 애플리케이션의 위치와 관련된 콘텍스트 또는 시간의 콘텍스트에 따라 매핑된다. 혹은, 2개의 상이한 애플리케이션들은 그들의 소망하는 공통된 추론 룰들의 세트의 일부를 갖는다. 혹은, 2개 이상의 상이한 간섭들의 결론들이 하나 이상의 다른 추론들에 대한 입력으로서 조합될 필요가 있다.
본 발명은 하드웨어, 소프트웨어, 펌웨어, 특정 목적의 프로세스들, 또는 이들의 조합의 다양한 형태로 구현될 수 있다. 양호하게는, 본 발명은 소프트웨어로 구현되며, 이 소프트웨어는 프로그램 저장 장치 상에 실체적으로 삽입되는 애플리케이션이다. 이 애플리케이션 프로그램은 임의의 적절한 아키텍처를 포함하는 머신 으로 업로드되고 이에 의해 실행될 수 있다. 양호하게는, 그 머신은 하나 이상의 CPU, RAM, I/O 인터페이스(들)와 같은 하드웨어를 구비한 컴퓨터 플랫폼 상에서 구현될 수 있다. 컴퓨터 플랫폼은 또한 오퍼레이팅 시스템 및 마이크로명령 코드를 포함한다. 여기 명세서에 기재된 다양한 프로세스들 및 기능들은 오퍼레이팅 시스템을 통해 실행되는 마이크로명령 코드의 일부 또는 애플리케이션 프로그램의 일부(또는 이들의 조합)일 수 있다. 또한 다양한 다른 주변 장치들이 부가적인 데이터 저장 장치와 같은 컴퓨터 플랫폼에 접속될 수 있다.
또한, 첨부 도면에 기재된 일부 시스템 구성 요소들은 소프트웨어로 구현되기 때문에, 시스템 구성 요소들 간의 실제의 접속들은 본 발명이 프로그래밍되는 방식에 따라 상이해질 수 있다는 것을 이해해야 한다. 여기에 주어진 가르침에 의해, 관련 분야의 당업자는 본 발명의 이러한 구성 및 유사한 구성을 생각해 낼 수 있을 것이다.
도 1은 예시적인 실시예에 따라 본 발명이 적용될 수 있는 컴퓨터 처리 시스템(100)의 블록도이다. 컴퓨터 처리 시스템(100)은 시스템 버스(110)를 통해 다른 구성 요소들에 동작적으로 결합된 적어도 하나의 처리기(CPU)(120)를 포함한다. ROM(130), RAM(140), I/O 어뎁터(150), 사용자 인터페이스 어뎁터(160), 디스플레이 어뎁터(170), 및 네트워크 어뎁터(180)는 동작적으로 시스템 버스(110)에 결합된다.
디스크 저장 장치(예를 들면, 자기 또는 광학 디스크 저장 장치)(151)는 I/O 어뎁터(150)에 의해 시스템 버스(110)에 동작적으로 결합된다.
마우스(161)는 사용자 인터페이스 어뎁터(160)에 의해 시스템 버스(110)에 동작적으로 결합된다. 마우스(161) 및 키보드(162)는 컴퓨터 처리 시스템(100)에 정보를 입력하거나 이로부터 정보를 출력하기 위해 사용될 수 있다.
디스플레이 장치(171)는 디스플레이 어뎁터(170)에 의해 시스템 버스(110)에 동작적으로 결합된다. 네트워크(181)는 네트워크 인터페이스 어뎁터(180)에 의해 시스템 버스(100)에 동작적으로 결합된다.
컴퓨터 처리 시스템(100)이 상술한 요소들과 관련하여 여기 명세서에 기재되었지만, 요소들에 대한 부가, 삭제, 및 대체가 행해질 수 있음을 이해해야 한다. 다시 말하면, 여기에 제공된 본 발명의 가르침은 당업자가 본 발명의 사상 및 범위를 유지하면서 컴퓨터 처리 시스템(100)의 요소의 이러한 구성 및 다양한 다른 구성을 고안할 수 있을 것이다.
본 발명은 데이터 처리 애플리케이션에서 외부화 가능 추론 구성 요소들을 특정하고, 적용하고, 관리하는 방법 및 시스템을 제공한다. 특히, 본 발명은 외부화 및 추리 각각의 단점을 회피하면서 그들의 모든 결합된 장점들을 향유하기 위해 어떻게 외부화 및 추리를 유리하게 이용할 것인가, 그리고 추리 시스템들 및 그들의 연관 데이터를 어떻게 조직화할 것인가에 대한 주요 문제를 다룬다.
본 발명은 EIC(externalizable inference components)를 사용하는 애플리케이션 내의 트리거 포인트들의 배치를 허용한다. 통상적으로 애플리케이션들은 콘텍스트(context) 및 파라미터 정보를 트리거 포인트들에 전달하며, 이 트리거 포인트들은 EIC들을 동적으로 식별하고 사용한다. 통상적으로, EIC들은 입력을 고려하여, 추론 관련 테스크들을 수행하고, 그 결과들을 트리거 포인트들에 리턴한다. 대안으로, 트리거 포인트는 비동기적으로 동작할 수 있고, 이에 의해 애플리케이션은 콘텍스트 및 파라미터 입력을 제공하고, 그 대신에 일정 시간 이후에 결과를 체크하기 위해 사용될 수 있는 키를 수신하는 트리거 포인트를 호출하거나; 또는 애플리케이션은 부가적으로 비동기 추론 처리가 완료되면 임의의 결과를 수반한 제어를 수신하는 스레드(thread)를 위한 키를 트리거 포인트에 제공할 수 있다.
비록 모든 외부화 가능 데이터 및 알고리즘들이 단일 EIC 내에 포함될 수 있지만, 흔히 EIC는 하나 이상의 다른 EIC들와 연관된 주요 구성 요소로 구성된다. 통상적으로, 주요 구성 요소는 원하는 추론을 조정한다. 그것은 팩트들 및 룰들을 수집하여 전처리(pre-process)하고, 변수들을 매핑하고, 추론 엔진을 트리거하고, 임의의 결과들을 후처리하여 분배한다. 하위 구성 요소들은 특별한 태스크들(예컨대 추론 엔진에 의해 사용되는 룰 세트의 제공)을 다루며; 변수들을 정적인 값들 또는 변수 함수들로서 매핑하고; 애플리케이션에 리턴되는 결론들의 필터링 등을 수행한다.
도 2는 예시적인 애플리케이션들(210)이 본 발명의 실시예에 따른 외부화 가능 추론 구성 요소(230)를 사용하는 트리거 포인트들(220)을 포함하는 시스템 구성 요소들을 도시한다. 동작 기간 동안, 애플리케이션(210)은 EIC(230)들을 사용하는 트리거 포인트들(220)에 콘텍스트 및 파라미터 정보를 제공한다. EIC들(230)은 일정한 추론 계산을 행하고, 그 결과들을 트리거 포인트들(220)에 리턴하며, 트리거 포인트(220)는 그 결과를 애플리케이션(210)에 전달한다. 예를 들면, 애플리케이션 (210)은 "디스카운트 계산(calculate discount)"의 콘텍스트 및 "쇼핑 카트"의 파라미터를 트리거 포인트(220)에 공급할 수 있고, 이 트리거 포인트(220)는 소정의 쇼핑 카트 정보로 디스카운트 추론 계산을 행하는 적절한 EIC(230)를 사용하며, 쇼핑 카드 정보는 애플리케이션(210)에 의한 고려를 위해 트리거 포인트(220)에 리턴된다.
당업자는 트리거 포인트들(220) 및 EIC들(230)의 많은 조합을 고려할 수 있다. 예를 들면, 단일 애플리케이션(210)은 여러 개의 트리거 포인트들(220)을 사용할 수 있고, 단일 트리거 포인트(220)는 여러 개의 EIC들(230)을 사용할 수 있고; 다수의 애플리케이션들(210)은 하나 이상의 트리거 포인트들(220)의 사용을 공유할 수 있고, 다수의 트리거 포인트들(220)은 하나 이상의 EIC들(230)의 사용을 공유할 수 있다.
도 3은 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능 추론 구성 요소의 아키텍처를 도시한다. EIC들(310)은 단독으로 동작하거나(도시 안됨), 개별적인 태스크들을 수행하는 다른 EIC들에 함께 동작할 수 있다. 후자의 경우에, 마스터 EIC가 통상적으로 하나 이상의 서번트 EIC들의 동작을 조정하기 위해 트리거 포인트에 의해 사용된다. 이러한 양상은 아래의 도 4를 참조하여 설명된다. 각각의 EIC(310)는 알고리즘(320) 및 데이터(330)로 구성된다. 데이터(330)는 저장 장치(350)에 영구적으로 유지된다. 알고리즘은 가상 머신(340)에 의해 실행된다. 가상 머신(340)은 영구 저장 장치(350)로부터 알고리즘(320)을 로드할 수 있다.
예를 들면, EIC 알고리즘(320)은 JVM(Java Virtual Machine)에 의해 처리되 는 Rete 추론 엔진일 수 있으며, 데이터(330)는 "디스카운트 계산" 추론을 수행하기 위해 트리거 포인트에 의해 전달된 파라미터들이 존재하는 경우 Rete 추론 엔진에 의해 해석되는 룰들의 세트일 수 있다. 외부화된 알고리즘(320) 및 데이터(330)를 구비함으로써 특히 유연성, 이해 능력, 및 관리 능력을 제공할 수 있는 장점이 있다. 주요 장점으로는 데이터(330) 또는 알고리즘(320)에 대한 변화가 추론 서비스들을 소망하는 애플리케이션들 외부에 존재한다는 것이며, 그러한 변화들로부터 애플리케이션을 버퍼링한다는 것이다. 상술한 예를 계속하여 설명하면, 새로운 룰이 알고리즘(320)에 의해 해석되는 데이터(330)를 포함하는 룰들의 세트에 부가될 수 있고, 또한(또는 대신에) 순방향 추론 엔진이 알고리즘(320)으로서 Rete 추론 엔진을 대체할 수 있다. 다양하게 변화되는 환경하에서, 관련 애플리케이션 변경은 불필요하기 때문에 애플리케이션 안정화를 촉진한다.
마스터 EIC(310)는 데이터 집합, 데이터 전달, 데이터 변환, 병렬 논리 계산 등과 같은 특정 태스크들을 수행하기 위해 다른 EIC들(310)을 사용할 수 있다. 주요한 외부화 가능 추론 구성 요소들은 이하에서 보다 상세하게 기술된다. 동작 시간 동안, 데이터 및/또는 제어가 EIC들 사이를 양방향으로 흐를 수 있다. EIC는 영개 이상의 다른 EIC들을 사용할 수 있다.
EIC들은 트리거 포인트를 실행하고, 데이터를 결합시키고, 데이터를 필터링하고, 데이터를 변환하고, 분류에 의해 선택하고, 랜덤하게 선택하고, 라운드 로빈을 선택하고, 날짜에 의해 선택하고, 추론 엔진 선처리기를 실행하고, 추론 엔진 후처리기를 실행하고, 추론 엔진 론처(launcher)를 실행하고, 데이터를 수신하고, 데이터를 송신하고, 데이터를 패치(fetch)하고, 기타 다른 동작들을 수행하는 재사용 가능한 알고리즘들을 사용할 수 있다.
EIC는 유일한 식별자, 의도, 성명, 위치, 폴더, 개시 시간, 종료 시간, 스케쥴, 주기, 지속 시간, 우선 순위, 분류, 기준, 설명, 파이어링(firing) 위치, 파이어링 파라미터, 초기화 파라미터들, 구현기, 준비(ready) 플래그, 자유 형식 데이터 등을 포함하는 외부화 데이터를 사용할 수 있다. 예를 들면, 구현기는 순방향 추론 엔진일 수 있고, 초기화 파라미터들은 해석되는 룰들의 세트일 수 있다.
도 4는 본 발명의 양호한 실시예에 따라 예시적인 외부화가능 추론 구성 요소들을 나타내는 다이어그램이다. 외부화 가능 추론 구성 요소 엔진(410)은 특정 태스크들을 수행하기 위해 다른 외부화 가능 추론 구성 요소들을 사용하는 마스터 구성 요소일 수 있다. 대안으로, 마스터 구성 요소는 다른 EIC들(도시 안됨)에 의해 지원되지 않는 모든 태스크들을 수행할 수 있다. EIC 엔진(410)에 의해 자주 사용되는 주요 서번트 EIC들은 쇼트 텀 팩트들(420), 룰 세트(430), 정적(static) 맵(440), 롱 텀 팩트들(450), 결론들(460), 센서들(470), 및 실행기들(480)이다. 이들의 각각은 도 5 내지 11을 참조하여 아래에 보다 상세하게 기술된다. 서번트 EIC는 지원되지 않는 상태로 동작하거나 또는 그 자신이 서번트 EIC들을 사용하는 마스터 구성 요소일 수 있다. 마스터 구성 요소는 0개 이상의 형태의 서번트 EIC들 및 0개 이상의 각각의 형태의 EIC를 사용할 수 있다.
EIC들은 다양한 방법으로 조직화 또는 구성될 수 있다. 예를 들면, 마스터 EIC는 어레이로서 하나 이상의 서번트 EIC들, 집합, 해시테이블, 반복기, 파티션, 세트, 스택, 트리, 백터 등; 또는 이들의 일부 조합으로 구성될 수 있다. 이러한 조직화는 알고리즘 및 관련 데이터의 조합을 위한 설계에 따른다.
보다 구체적으로는, 마스터 EIC는 쇼트 텀 팩트 구성 요소들의 어레이, 룰 세트 구성 요소들의 트리, 결론 구성 요소와 함께 롱 텀 팩트 구성 요소들의 벡터로 구성될 수 있다.
EIC 엔진(410)의 주요 태스크는 새로운 팩트들을 유도하기 위해 팩트들 및 룰들에 대한 추론을 수행하는 것이다. EIC 패러다임의 주요 장점은 팩트들 및 룰들이 재사용 및 공유를 매우 용이하게 하는 정규화된 방식으로 외부화되고 구성 요소화되어 있다는 것이다. 예를 들면, "디스카운트 계산"에 사용된 룰 세트는 입력 데이터로부터 룰 세트 변수들로 매칭하는 것이 일부의 경우에 상이할 수 있지만 다수의 EIC 엔진들(410)에 의해 사용될 수 있다. 혹은 다수의 EIC 엔진들(410)이 동일한 룰 세트를 사용하지만 상이한 결론을 발생할 수 있다. 혹은 다수의 EIC 엔진들(410)이 상이한 룰 세트들을 사용하지만, 입력 데이터로부터 룰 세트 변수로의 동일한 매핑을 사용할 수 있다. 당업자는 다른 EIC들(400)을 공유하는 EIC 엔진들(410)을 구성할 수 있는 무수한 가능성을 예측할 수 있을 것이다.
모든 EIC들과 같이 EIC 엔진(410)은 도 3을 참조하여 상술한 바와 같이 데이터 및 알고리즘 구성부들로 구성된다. 알고리즘은 선 추론(pre-inferencing) 동작들을 수행하고, 추론 엔진을 호출하고, 후 추론(post-inferencing) 동작을 실행한다. 전 추론 동작 및 후 추론 동작은 관련 외부화 데이터 및 알고리즘에 따른다. 서번트 EIC들을 갖지 않는 단독 EIC 엔진(410)의 경우에, 추론 엔진에 필요한 데이 터는 공급된 입력 또는 관련 EIC 엔진 데이터 또는 이들의 유도체로부터 선 추론 단계에 의해 수집되고, 추론 엔진에 의해 생성된 데이터는 잠재적으로 새로이 유도된 팩트들의 기록, 다른 처리들의 실행 등과 같은 다양한 목적들을 위한 후 추론 단계에서 이용된다.
통상적으로 EIC 엔진은 특정 태스크들을 수행하기 위해 다른 EIC들을 사용한다. 예를 들면, 선 추론 단계의 일부로서, EIC 엔진(410)은 추론 엔진에 의해 소비될 공급 입력 데이터를 확인하고 필터링하기 위해 EIC 쇼트 텀 팩트들(420)을 사용할 수 있고, 그것의 추론 엔진에 의해 소비될 룰들을 획득하기 위해 EIC 룰 세트(430)를 사용할 수 있고, 추론 엔진 소비를 위한 룰 변수들로 팩트들을 매핑하기 위해 EIC 정적 맵들(440)을 사용할 수 있고, 팩트 게터(getter) 및 세터(setter)를 추론 엔진 소비를 위한 룰 변수들로 매핑하기 위해 EIC 센서들(470) 및 실행기들(480)을 사용할 수 있고, 추론 엔진 소비를 위해 이전에 유도된 팩트들을 수집하기 위해 EIC 롱 텀 팩트들(450)을 사용할 수 있다. 후 추론 단계의 일부로서, EIC 엔진(410)은 그 추론 엔진에 의해 새로이 생성된 팩트들을 기록하기 위해 EIC 롱 텀 팩트들(450)을 사용할 수 있고, 요구하는 애플리케이션에 리턴되는 추론 엔진 생성 팩트들을 필터링, 리캐스트(recast)하거나 윤색(embellish)하기 위해 EIC 결론(450)을 사용할 수 있다.
추론 구성 요소들(400)의 흥미로운 특징은 그들은 서로 검사, 갱신, 생성 및 제거할 수 있다는 것이다. 예를 들면, 특정 EIC 엔진(410)의 목적은 데이터 부가, 삭제, 또는 변경에 의해 EIC 룰 세트(430)를 갱신하여, 수정된 EIC 룰 세트(430)를 사용하는 EIC 엔진들(410)의 동작을 실행시키는 것이다. 당업자는 추론 구성 요소의 관계들에 대한 다수의 조합을 생각해낼 수 있을 것이다.
도 5는 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능한 룰 세트 추론 구성 요소들을 도시하고 있다. RSC(Rule Set Component)(510)는 2개의 추론 룰들, 즉 "룰:1" 및 "룰:2"를 가지며, 이들의 각각은 각각 단일 변수, "a" 및 "b" 에 관해 동작한다. RSC(510)에 대한 알고리즘은 "리턴"이다. 요구된 경우, RSC(510)는 응답시 그것의 2개의 추론 룰들을 제공한다. RSC(510,520,530)은 모두 동일한 알고리즘을 사용하고, 모두는 (동시에) 2개의 추론 룰들을 데이터로서 갖는다. 이 예에서, RSC(520)는 RSC(510)과 공통적인 하나의 추론 룰, 즉 "룰:2", 및 RSC(530)과 공통적인 하나의 추론 룰, 즉 "룰:3"을 갖는다는 것을 주목하라.
RSC(540)은 "결합(join)" 알고리즘이다. 그것의 데이터는 도시된 4개의 추론 룰들이 아니라 오히려 RSC(510) 및 RSC(520)에 대한 참조 번호(reference)이다. 호출된 경우, RSC(540)의 알고리즘은 그 자신의 추론 룰 세트를 공식화하기 위해 RSC(510) 및 RSC(520)으로부터 추론 룰들을 요구한다. 결합 알고리즘은 단순히 내용에 관한 것이 아니라 그것이 참조하는 RSC들에 의해 제공된 데이터를 축적한다. 이 예에서 이것은 추론 룰 세트에서 "룰:1" 및 "룰:2"이 한번만 나타나고 "룰:3"은 두번 나타나는 RSC(540)을 발생시킨다.
RSC(550)은 "비복제(no duplicate)" 알고리즘을 갖는다. 그것의 데이터는 도시된 4개의 추론 룰들이 아니라, 오히려 RSC(530) 내지 RSC(540)에 대한 참조 번호들이다. 호출된 경우, RSC(540)의 알고리즘은 그 자신의 추론 룰 세트를 공식화하 기 위해 RSC(530) 및 RSC(540)으로부터 추론 룰들을 요구한다. 비복제 알고리즘은 단순히 그것이 참조하는 RSC들에 의해 제공된 데이터를 축적하고 복제본들을 제거한다. 이 예에서, 이것은 "룰:1", "룰:2", "룰:3", "룰:4"의 각각을 갖는 RSC(550)을 발생시킨다. "룰:2"는 RSC(540)에 의해 두번 제공되지만, RSC(550)의 추론 룰들에서는 한번만 나타난다는 것을 주목하라. 유사하게, "룰:3"은 RSC(530) 및 RSC(540)의 각각으로부터 한번씩 두번 제공되지만, 결과로 나타내는 추론 룰 세트에서는 한번만 나타난다.
룰 세트 구성 요소 패러다임은 큰 룰들의 세트를 보다 작고, 관리 가능하며 재사용가능한 단편들로 분할함으로써 큰 룰들을 관리하는 주요 수단이다. 당업자는 궁극적으로는 추론 엔진에 의해 소비되는, 추론 룰 세트 데이터에 직접 또는 참조적으로 동작하는 관련 알고리즘들, 및 추론 룰 세트들의 다수의 유용한 조합들을 데이터로서 예상할 수 있을 것이다.
추론 룰들은 통상적으로 "만약 조건이 '조건 x'이면 결과는 '결과 x'이다"라는 형식의 문장이다. "룰:1(a)"는 "만약 조건이 '조건 a'이면 결과는 '결과 a'이다"라는 것을 나타낸다. 유사하게, 룰:2(b)"는 "만약 조건이 '조건 b'이면 결과는 '결과 b'이다"라는 것을 나타낸다.
도 6은 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능 정적 매핑 추론 구성 요소들을 도시한다. SMC들(Static Mapping Components)(610 및 640)은 데이터로서 각각 하나의 매핑, 즉 "a->a1" 및 "a->a2"을 갖는다. SMC(620)은 데이터로서 2개의 매핑, 즉 "b->b1", "c->c1"을 갖는다. SMC(630)은 데이터로서 2개의 매 핑, 즉 "c->c1", "d->d1"을 갖는데, SMC(610,620,630,640)은 모두 동일한 알고리즘, "리턴"을 공유한다. 각각이 호출된 경우, SMC들(610-640)은 포함된 매핑 데이터를 단순히 리턴할 것이다.
SMC(650)은 "결합(join)" 알고리즘이다. 그것의 데이터는 도시된 5개의 정적 매핑이 아니라, SMC(610,620 및 630)에 대한 참조 번호들이다. 호출된 경우, SMC(650)의 알고리즘은 자신의 정적 매핑의 세트를 공식화하기 위해 그것이 참조번호 610, 620, 630을 매기는 SMC들로부터 정적 매핑들을 요청한다. 이 예에서, 이는 정적 매핑에서 "a->a1", "b->b1", "d->d1"이 각각 한번 나타나고 "c->c1"이 두번 나타나는 SMC(650)을 발생시킨다.
SMC(660)은 "비복제(no-duplicates) 알고리즘"을 갖는다. 그것의 데이터는 도시된 4개의 정적인 매핑이 아니라 SMC(620,630,640)에 대한 참조 번호들이다. 호출된 경우, SMC(660)의 알고리즘은 정적 매핑의 자신의 세트를 공식화하기 위해 SMC(620-640)로부터 정적 매핑들을 요청한다. 이 예에서, 이것은 a->a2", "b->b1", "c->c1", "d->d1"이 각각 한번 나타나는 SMC(660)을 발생시킨다. "c->c1"은 SMC(660)에 SMC(620) 및 SMC(630) 각각으로부터 한번, 즉 두번 제공되었지만, 결과적인 SMC(660)의 정적 매핑에는 한번만이 나타난다.
룰 세트 구성 요소들에 의해 즐겨 사용되는 알고리즘은 정적 매핑 구성 요소들 및/또는 임의의 다른 구성 요소들과 공유될 수 있으며, 그 반대가 될 수도 있다. 코드 및 데이터 재사용은 본 발명의 주요한 장점이다. 따라서, 도 5 및 6에 제공된 예에서, 알고리즘 "리턴"은 "결합" 알고리즘 및 "비복제" 알고리즘과 같이, RSC들 및 SMC들에 공통된다.
정적 매핑 구성 요소 패러다임은 큰 매핑 세트들을 보다 작고, 관리 가능하며, 재사용가능한 단편들로 분할함으로써 큰 매핑 세트들을 관리하기 위한 주요 수단이다. 당업자는 추론 엔진에 의해 궁극적으로 소비되는, 정적 매핑 데이터에 관해 직접 또는 참조하여 동작하는 관련 알고리즘들 및 정적 매핑들의 다수의 유용한 조합을 데이터로서 가정할 수 있다.
추론 정적 매핑들은 통상적으로 "'변수'를 '값'으로 대체하라"는 형식의 문장이다. 매핑 "a->a1"은 '변수 a'를 '값 a1'으로 대체하라 "는 것을 나타낸다. 유사하게, "a->a2"는 "'변수 a'를 '값 a2'로 대체하라"는 것을 나타낸다.
도 7은 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능 룰 세트 및 정적 매핑 추론 구성 요소들을 도시한다. 2개의 상이한 형태의 공급자 EIC들, 즉 RSC(710), SMC(720,730)이 도시되어 있다. 두개의 구성된 EIC들(740,750)은 공급자 RSC 및 SMC들의 조합을 포함한다. 이 예는 구성 요소들이 추론 엔진에 의해 사용가능한 새로운 엔터티들을 구성하기 위해 함께 이용되는 본 발명의 주요 장점을 도시한다. EIC(740)은 정적 매핑 및 룰 세트의 조합이다. EIC(750)은 동일한 룰 세트와 상이한 정적 매핑의 조합이다. 각각은 본 발명의 다른 주요 장점, 즉 구성 요소 재사용을 나타낸다. 이 예에서, 공급자 구성 요소들과 연관된 알고리즘들은 단순히 "리턴"하고, 구성된 구성 요소들과 연관된 알고리즘들은 단순히 "결합"한다.
마스터 EIC 엔진(예를 들면, 도 4의 410)은 요구시 a1-d1으로 각각 대체되는 변수들 a-d를 구비한 룰들 1-4를 생성하는 기준으로서 EIC(750)과 같은 서번트 EIC 를 사용할 수 있다. EIC(710)는 변수들 "a" 및 "c"를 갖는 새로운 룰 5를 포함하도록 변경된다. 이러한 변경으로 마스터 EIC 엔진은 EIC(750)을 사용할 경우 a1-d1으로 대체되는 변수들 a-d를 갖는 룰 1-5를 수신한다. 본 발명의 이 예에서 설명된 구성 요소의 구성의 주요 장점을 주목하라. EIC(740 및 750)는 양쪽 모두 EIC(710)의 소비자들이므로 부가된 룰 5를 포함한다. EIC(730)은 변화하지 않은 상태로 유지되지만, 여전히 결과적인 EIC(750)에 기여한다.
EIC(740)와 같은 구성은 정적(동작 기간 이전) 또는 동적(동작시)으로 발생할 수 있다. "룰:3(c0)"는 "조건이 '조건 c0'이면 결과는 '결과 c0'이다"라는 것을 나타낸다. 유사하게, "룰:4(d1)"는 "조건이 '조건 d1'이면 결과는 '결과 d1'이다"라는 것을 나타낸다.
보다 구체적으로는, "룰:3(c)"는 "고객 상태가 'c'라면 고객에게 디스카운트 'c'를 제공하라"라는 것을 나타낼 수 있고, "c->c0"은 'c' 대신에 '조건:동, 결과:10 퍼센트'로 대체하라"를 나타낼 수 있고, 그 조합은 "고객 상태가 '동'이라면 고객에게 '10 퍼센트' 디스카운트를 제공하라" 를 나타낸다.
도 8은 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능 룰 세트 및 동적 (센서 및 실행기) 매핑 추론 구성 요소들(DMCs)을 도시하는 도면이다. 2개의 상이한 형태의 EIC들, RSC(810) 및 DMC들(820,830)이 도시되어 있다. 2개의 구성된 EIC들(840,850)은 공급자 RSC 및 DMC들의 조합으로 구성된다. 이 예는 추론 엔진에 의해 사용가능한 새로운 엔터티들을 구성하기 위해 함께 사용되는 본 발명의 주요 장점을 도시한다. EIC(840)은 룰 세트 및 동적 매핑의 조합이다. EIC(850)은 상이 한 동적 매핑을 갖는 동일한 룰 세트의 조합이다. 각각은 본 발명의 다른 주요 장점, 즉 구성 요소의 재사용을 나타낸다. 이 예에서, 공급자 구성 요소들과 관련된 알고리즘들은 단순히 "리턴"하고, 구성된 구성 요소들과 연관된 알고리즘들은 단순히 "결합"한다.
마스터 EIC 엔진(예를 들면, 도 4의 410)은 요구 시에 함수 p(x0), q(x0), r(y0), 및 s(y0)로서 각각 대체되는 변수들 a-d을 구비한 룰 1 내지 4를 생성하는 기준으로서 EIC(840)과 같은 서번트 EIC를 사용할 수 있다. 이러한 변화로 인해, 마스터 EIC 엔진은 EIC(840)을 사용하는 경우 함수 p(x0), q(x0), r(y0), 및 t(y3)으로 대체되는 변수 a-d를 구비한 룰 1-4를 수신한다. 본 발명의 이러한 예에 의해 설명되는 구성 요소의 구성에 대한 주요 장점을 주목하라. EIC(840)만이 EIC(820)의 소비자이기 때문에 EIC(840)만이 변화된 룰 4를 포함한다. EIC(810)은 변화되지 않은 상태로 유지되지만, 결과적인 EIC(840)에 여전히 기여한다.
EIC(840)과 같은 구성은 정적(동작 이전) 또는 동적(동작시)으로 발생할 수 있다. "룰:1(p(x0))"는 "조건이 '조건 함수 p(x0)'이면 결과는 '결과 xo'이다"를 나타낸다. 유사하게, "룰:2(q(x0))"는 "조건이 '조건 함수 (q(x0))'이면 결과는 '결과 x0'이다"를 나타낸다.
보다 구체적으로는, "룰:3(c)"은 "고객이 상태 'c'라면 고객에 디스카운트 'c'를 제공하라"를 나타낼 수 있고; "c->r(y0)"는 "'c'를 '조건:동, 결과:룩업 퍼센트(동)'로 대체하라"는 것을 나타낼 수 있고, 그 조합은 "고객이 상태 '동'이라면 고객에게 '동에 대한 룩업 퍼센트'의 디스카운트를 제공하라"는 것을 나타낼 수 있다.
도 9는 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능 롱 텀 팩트들의 추론 구성 요소들(LFCs)를 나타낸다. 두개의 상이한 형태의 EIC들, 즉 EIC 엔진(910) 및 LFC들(920,921,922)이 도시되어 있다. LFC들은 2개의 모드, 즉 수신/저장 및 패치/전송으로 동작하는 알고리즘을 사용한다. 예를 들면, LFC(921)는 EIC 엔진(910)으로부터 데이터를 수신하고, 그것을 준비(ready) 세트 1.0으로서 영구적으로 저장하고, 또한 그것은 영구 저장 장치로부터 준비 세트 1.0을 패치하고 EIC 엔진에 그 데이터를 제공한다. 수신 및 전송되는 LFC 데이터는 (모든 EIC들과 마찬가지로) 푸시(push) 또는 풀(pull) 방식으로 동작할 수 있다. 이러한 예는 구성 요소들이 분할된 데이터를 추론 엔진에 의해 사용가능한 관리 가능한 단편들로 분할하는데 사용되는 본 발명의 주요 장점을 나타낸다.
다수의 LFC들은 단일의 EIC를 제공할 수 있다. 다수의 EIC들은 단일의 LFC(도시 안됨)을 공급할 수 있다. LFC(또는 일반적으로는 임의의 EIC)는 특히 하나 또는 다수의 EIC들로부터 수신만 할 수 있거나, 이들로 전송만 할 수 있거나, 또는 이들로 전송하고 이들로부터 수신할 수 있다. 당업자는 영구 데이터 수신/저장 및 패치/전송과 관련하여 LFC들 및 EIC들의 다수의 조합들을 예상할 수 있을 것이다.
말하자면, 준비 세트 1.0, 2.0 및 3.0은 금, 은, 및 동 상태의 고객들 각각에 대한 롱 텀 팩트들일 수 있다.
도 10은 본 발명의 양호한 실시예에 따른 예시적인 외부화가능 쇼트 텀 팩트들의 추론 구성 요소들(SFCs)을 나타낸다. 트리거 포인트들(1010) 및 2개의 다른 상이한 형태의 EIC들, 즉 EIC 엔진들(1020) 및 SFC들(1030)이 도시되어 있다. 통상적으로, 트리거 포인트들(1010)은 동작시에 데이터를 EIC 엔진들(1020)에 공급한다. 통상적으로, EIC 엔진들(1020)은 트리거 포인트들에 의해 제공된 데이터를 추론 엔진들에 의한 소비를 위한 쇼트 텀 팩트들로 변환하기 위해 하나 이상의 SFC들(1030)을 사용한다. 다른 EIC들과 같이, SFC들은 외부화된 데이터에 의해 파라미터화된 외부화 알고리즘을 사용한다. 통상적으로, SFC의 경우, 알고리즘의 목적은 트리거 포인트에 의해 공급된 데이터를 소비하고 추론 엔진에 의해 소비가능한 데이터로 변환하는 것이다. 통상적으로, LFC들와는 대조적으로, SFC들은 쇼트 텀 팩트들 자신을 영구적으로 유지하지 않는다. 변환 데이터뿐만 아니라 변환 알고리즘은 SFC들 간에 공통되거나 또는 상이할 수 있다.
말하자면 준비(Prepare) 1.0 및 2.0은 추론 엔진들에 의해 소비가능한 "구매 리스트"와 같은 쇼트 텀 팩트들로 SFC들(1030)에 의해 변환되는 애플리케이션들 내의 트리거 포인트들에 의해 공급된 "쇼핑 카트들(shopping carts)"과 같은 데이터 세트들일 수 있다.
도 11은 본 발명의 양호한 실시예에 따른 예시적인 외부화 가능 결론 추론 구성 요소들(CCs)을 도시한 것이다. 트리거 포인트들(1110) 및 2개의 다른 상이한 형태의 EIC들, 즉 EIC 엔진들(1120) 및 CC들(1130)이 도시되어 있다. 통상적으로, 트리거 포인트들(1110)은 동작시에 EIC 엔진들(1120)로부터의 결론들을 소비한다. 통상적으로, EIC 엔진들(1120)은 추론 엔진들에 의해 결정된 결과들을 트리거 포인트들에 의한 사용을 위한 데이터로 변환하기 위해 하나 이상의 CC들(1130)을 사용 한다. 다른 EIC들과 같이, CC들은 외부화된 데이터에 의해 파라미터화되는 외부화 알고리즘을 사용한다. 통상적으로 SFC들의 경우에, 알고리즘의 목적은 트리거 포인트 공급 데이터를 소비하고 추론 엔진이 소비가능한 데이터로 변환하는 것이다. 통상적으로 LFC들과는 대조적으로, CC들은 그 자신들이 결론들을 영구적으로 유지하지 않는다. 변환 데이터뿐만 아니라 변환 알고리즘은 CC들 사이에 공통되거나 상이할 수 있다.
말하자면, 배열 1.0 및 2.0은 쇼트 텀 팩트들, 룰들, 롱 텀 팩트들, 및 추론 엔진들에 의해 처리되는 다른 EIC 이용가능 자원들로부터 CC들(1130)에 의해 변환된 애플리케이션들 내의 트리거 포인트들에 의해 소비되는 "결과 디스카운트"와 같은 데이터 세트들일 수 있다.
도 12는 본 발명의 양호한 실시예에 따른 ICMF(inference component management facility)을 도시한다. ICMF(1210) 및 3개의 EIC들(1220)이 도시되어 있다. ICMF는 API(application program interface)를 통해 EIC들을 생성, 검색, 갱신, 및 삭제하는데 사용된다. 예를 들면, API를 사용하여 새로운 EIC 엔진 구성 요소가 생성될 수 있고, 혹은 존재하는 LFC 구성 요소가 삭제될 수 있고, 혹은 존재하는 RSC 구성 요소가 그 내용을 발견하기 위해 검색될 수 있고, 혹은 존재하는 RSC가 추가적인 룰들을 포함하도록 변형될 수 있다.
상술한 실시예들은 첨부 도면들을 참조하여 기술되었지만, 본 발명의 시스템 및 방법은 여기에 기술된 실시예들에 제한된 것이 아니며, 다양한 다른 변화 및 변형들이 본 발명의 사상 및 범위를 벗어나지 않고 행해질 수 있다는 것이 이해되어 야 한다. 그러한 모든 변화 및 변형들은 첨부된 청구범위에 의해 정의된 발명의 범위 내에 포함되는 것으로 의도된다.
외부화 가능 추론 구성 요소(externalizable inferencing component)들을 특정하고 적용하고 관리하는 것을 포함하는 외부화 가능 추론 구성 요소를 사용하는 기술을 제공할 수 있다.

Claims (33)

  1. 컴퓨터 기반 구조를 개발하기 위한 방법에 있어서,
    컴퓨터 판독 가능 코드를 컴퓨팅 시스템에 통합시키는 단계를 포함하며,
    상기 컴퓨팅 시스템과 결합된 상기 코드는,
    프로그램에 대한 추론 특징들을 식별하는 단계와,
    상기 식별된 추론 특징들을 외부화 가능한 추론 구성 요소들로서 제공하는 단계를 실행할 수 있는 것인,
    컴퓨터 기반 구조 개발 방법.
  2. 제1항에 있어서, 상기 제공 단계는 외부화된 알고리즘 및 데이터를 상기 추론 구성 요소들의 각각과 연관시키는 단계를 포함하는, 컴퓨터 기반 구조 개발 방법.
  3. 제2항에 있어서, 상기 데이터는 영구 메모리에 저장되는 것인, 컴퓨터 기반 구조 개발 방법.
  4. 제1항에 있어서,
    상기 식별된 추론 특징들은 트리거 포인트, 쇼트 텀 팩트(short term fact), 추론 룰, 추론 엔진, 정적 변수 매핑, 센서, 실행기(effector), 롱 텀 팩트, 및 결 론 중 적어도 하나를 포함하는, 컴퓨터 기반 구조 개발 방법.
  5. 제1항에 있어서,
    상기 추론 구성 요소들은 트리거 포인트 구성 요소, 쇼트 텀 팩트 구성 요소, 추론 룰 세트 구성 요소, 추론 엔진 구성 요소, 정적 매핑 구성 요소, 센서 구성 요소, 실행기 구성 요소, 롱 텀 팩트 구성 요소, 결론 구성 요소 중 적어도 하나를 포함하는, 컴퓨터 기반 구조 개발 방법.
  6. 제2항에 있어서,
    상기 추론 구성 요소들의 각각은 추론 구성 요소에 의해 제공된 데이터의 소비자, 추론 구성 요소에 의해 제공된 데이터의 제공자, 및 이들의 조합 중 하나인 것인, 컴퓨터 기반 구조 개발 방법.
  7. 제1항에 있어서, 적어도 하나의 트리거 포인트 추론 구성 요소를 적어도 하나의 애플리케이션과 연관시키는 단계를 더 포함하는 컴퓨터 기반 구조 개발 방법.
  8. 제4항에 있어서, 상기 트리거 포인트들은 동기적으로 또는 비동기적으로 동작하는 컴퓨터 기반 구조 개발 방법.
  9. 제1항에 있어서, 상기 추론 구성 요소들의 적어도 하나는 적어도 하나의 다 른 추론 구성 요소를 사용하는 마스터 추론 구성 요소인 것인, 컴퓨터 기반 구조 개발 방법.
  10. 제1항에 있어서, 상기 추론 구성 요소들 중 적어도 하나는 추론 엔진을 사용하는 것인, 컴퓨터 기반 구조 개발 방법.
  11. 제1항에 있어서, 상기 추론 구성 요소들 중 적어도 하나는 적어도 하나의 추론 하위 구성 요소들로 조직화되는 것인, 컴퓨터 기반 구조 개발 방법.
  12. 제11항에 있어서, 상기 조직화는 어레이, 집합(collection), 해시테이블, 반복기(iterator), 리스트, 파티션, 세트, 스택, 트리, 백터, 및 이들의 조합 중 하나인 것인, 컴퓨터 기반 구조 개발 방법.
  13. 제1항에 있어서, 상기 추론 구성 요소들 중 적어도 하나는 적어도 하나의 추론 하위 구성 요소들로 구성되는 것인, 컴퓨터 기반 구조 개발 방법.
  14. 제13항에 있어서, 상기 구성은 어레이, 집합, 해시테이블, 반복기, 리스트, 파티션, 세트, 스택, 트리, 벡터, 및 이들의 조합 중 하나인 것인, 컴퓨터 기반 구조 개발 방법.
  15. 제2항에 있어서,
    상기 추론 구성 요소들의 각각은 유일자 식별자, 의도, 성명, 위치, 폴더, 개시 시간, 종료 시간, 우선 순위, 분류, 기준(reference), 설명, 파이어링(firing) 위치, 파이어링 파라미터, 초기화 파라미터, 구현기(implementor), 준비(ready) 플래그, 및 자유 형식 데이터 중 적어도 하나를 구비하는 것인, 컴퓨터 기반 구조 개발 방법.
  16. 제1항에 있어서, 상기 추론 구성 요소들 중 적어도 하나는 적어도 하나의 다른 추론 구성 요소와 기준(reference)으로 공유되는 것인, 컴퓨터 기반 구조 개발 방법.
  17. 제2항에 있어서,
    상기 알고리즘들 중 적어도 하나는 추론 구성 요소의 생성, 추론 구성 요소의 검색, 추론 구성 요소의 갱신, 및 추론 구성 요소의 삭제 중 적어도 하나를 수행하는 것인, 컴퓨터 기반 구조 개발 방법.
  18. 제2항에 있어서, 상기 알고리즘들 중 적어도 하나는 복수의 추론 구성 요소들에 의해 공유되는 것인, 컴퓨터 기반 구조 개발 방법.
  19. 제2항에 있어서, 상기 알고리즘들의 각각은 트리거 포인트 실행 알고리즘, 데이터 리턴 알고리즘, 데이터 결합 알고리즘, 데이터 필터링 알고리즘, 데이터 변환 알고리즘, 분류에 의한 선택 알고리즘, 랜덤 선택 알고리즘, 라운드 로빈(round robin) 선택 알고리즘, 추론 엔진 전처리기, 추론 엔진 후처리기, 추론 엔진 론처(launcher), 데이터 수신 알고리즘, 데이터 전송 알고리즘, 데이터 저장 알고리즘, 및 데이터 패치 알고리즘 중 하나인 것인, 컴퓨터 기반 구조 개발 방법.
  20. 제1항에 있어서, 상기 제공 단계는 추론 구성 요소들을 관리하기 위해 추론 구성 요소 관리 장치를 사용하고, 상기 관리는 생성, 검색, 갱신 및 삭제하는 동작들을 포함하는 것인, 컴퓨터 기반 구조 개발 방법.
  21. 제1항에 있어서, 상기 추론 구성 요소들 중 적어도 하나는 복수의 추론 하위 구성 요소들로 구성되는 것인, 컴퓨터 기반 구조 개발 방법.
  22. 제21항에 있어서, 상기 구성은 정적, 동적 및 이들의 조합 중 하나로 발생되는 것인, 컴퓨터 기반 구조 개발 방법.
  23. 제21항에 있어서, 상기 구성은 추론 구성 요소 관리 장치를 사용하여 발생되는 것인 컴퓨터 기반 구조 개발 방법.
  24. 외부화된 비즈니스 논리를 제공하는 시스템으로서,
    애플리케이션 프로그램 내에 적어도 하나의 가변 포인트를 식별하도록 구성된 식별 구성 요소와,
    상기 식별된 적어도 하나의 가변 포인트에 추론 구성 요소를 포함하는 외부화된 비즈니스 논리를 제공하는 외부화 구성 요소를 포함하는, 외부화된 비즈니스 논리 제공 시스템.
  25. 제24항에 있어서, 상기 추론 구성 요소는 외부화된 알고리즘 및 데이터를 포함하는 것인, 외부화된 비즈니스 논리 제공 시스템.
  26. 제25항에 있어서, 상기 데이터를 영구적으로 저장하도록 구성된 영구 메모리 구성 요소를 더 포함하는 외부화된 비즈니스 논리 제공 시스템.
  27. 제24항에 있어서, 적어도 하나의 가상 머신을 사용하여 상기 외부화된 알고리즘을 실행하는 실행 구성 요소를 더 포함하는 외부화된 비즈니스 논리 제공 시스템.
  28. 제24항에 있어서, 상기 추론 구성 요소는 복수의 추론 하위 구성 요소들로 구성되는 것인 외부화된 비즈니스 논리 제공 시스템.
  29. 제28항에 있어서, 상기 구성은 동적으로 발생하는 것인 외부화된 비즈니스 논리 제공 시스템.
  30. 제28항에 있어서, 상기 구성은 정적으로 발생하는 것인 외부화된 비즈니스 논리 제공 시스템.
  31. 제28항에 있어서, 상기 구성은 부분적으로는 동적으로 발생하고 나머지는 정적으로 발생하는 것인, 외부화된 비즈니스 논리 제공 시스템.
  32. 제24항에 있어서, 상기 식별된 적어도 하나의 가변 포인트는 트리거 포인트, 쇼트 텀 팩트, 추론 룰, 추론 엔진, 정적 변수 매핑, 센서, 실행기, 롱 텀 팩트, 및 결론 중 적어도 하나를 포함하는 것인 외부화된 비즈니스 논리 제공 시스템.
  33. 복수의 추론 구성 요소들을 관리하는 방법적 단계들을 실행하기 위해 머신 상에서 실행가능한 명령들로 구성된 프로그램을 실체적으로 구현하는 것인 머신에 의해 판독 가능한 프로그램 저장 매체로서,
    상기 방법적 단계들은,
    프로그램에 대한 추론 특징들을 식별하는 단계와,
    상기 식별된 추론 특징을 외부화 가능한 추론 구성 요소들로서 제공하는 단계를 포함하는, 머신에 의해 판독 가능한 프로그램 저장 매체.
KR20057009108A 2005-05-19 2002-12-21 외부화 가능 추론 구성 요소들을 위한 시스템 및 방법 KR100650434B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20057009108A KR100650434B1 (ko) 2005-05-19 2002-12-21 외부화 가능 추론 구성 요소들을 위한 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20057009108A KR100650434B1 (ko) 2005-05-19 2002-12-21 외부화 가능 추론 구성 요소들을 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20050098834A KR20050098834A (ko) 2005-10-12
KR100650434B1 true KR100650434B1 (ko) 2006-11-30

Family

ID=37278202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20057009108A KR100650434B1 (ko) 2005-05-19 2002-12-21 외부화 가능 추론 구성 요소들을 위한 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR100650434B1 (ko)

Also Published As

Publication number Publication date
KR20050098834A (ko) 2005-10-12

Similar Documents

Publication Publication Date Title
Graham et al. Decaf-a flexible multi agent system architecture
CN100426239C (zh) 依赖关系图参数范围的划分
US20010042123A1 (en) Apparatus and method for resource negotiations among autonomous agents
Decker et al. A multi-agent system for automated genomic annotation
Janssen et al. Cloud based centralized task control for human domain multi-robot operations
D’Aniello et al. Designing a multi-agent system architecture for managing distributed operations within cloud manufacturing
US20060143143A1 (en) System and method for externalized inferencing components
Ben Mahfoudh et al. Learning-based coordination model for spontaneous self-composition of reliable services in a distributed system
Paul et al. Efficient planning of multi-robot collective transport using graph reinforcement learning with higher order topological abstraction
Kwiatkowska et al. Symbolic verification and strategy synthesis for turn-based stochastic games
CN105849703B (zh) 通过上下文分区的经分类的事件监视
Volpe et al. An architecture for digital processes in manufacturing with blockchain, docker and cloud storage
KR100650434B1 (ko) 외부화 가능 추론 구성 요소들을 위한 시스템 및 방법
Lechner et al. Logic for media. The computational media metaphor
Alexey et al. Hierarchical reinforcement learning with clustering abstract machines
Graham et al. Tools for developing and monitoring agents in distributed multi-agent systems
Ghanadbashi et al. An Ontology-Based Augmented Observation for Decision-Making in Partially Observable Environments.
Sapaty Spatial grasp language for distributed management and control
Pereira Mobile Reactive Systems over Bigraphical Machines-A Programming Model and its Implementation
Schulze et al. Contracting and moving agents in distributed applications based on a service-oriented architecture
Sormaz et al. Distributed integration of design and planning activities in manufacturing using intelligent agents
Wagner et al. Integrating agent actions and workflow operations
da Silva et al. An Object-Oriented Framework for Implementing Agent Societies
Bella et al. Towards a semantic blockchain: A behaviouristic approach to modelling Ethereum
Frincu et al. Dynamic and adaptive rule-based workflow engine for scientific problems in distributed environments

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101102

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee