KR20150145231A - 지식 포착 및 발견 시스템 - Google Patents

지식 포착 및 발견 시스템 Download PDF

Info

Publication number
KR20150145231A
KR20150145231A KR1020157029632A KR20157029632A KR20150145231A KR 20150145231 A KR20150145231 A KR 20150145231A KR 1020157029632 A KR1020157029632 A KR 1020157029632A KR 20157029632 A KR20157029632 A KR 20157029632A KR 20150145231 A KR20150145231 A KR 20150145231A
Authority
KR
South Korea
Prior art keywords
data
database
input data
discovery system
knowledge
Prior art date
Application number
KR1020157029632A
Other languages
English (en)
Other versions
KR101782704B1 (ko
Inventor
사이트 구오
로버트 이 3세 존슨
블레인 로버트 힐튼
데이비드 앨런 네빌
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 뷰라 웍스, 엘엘씨
Publication of KR20150145231A publication Critical patent/KR20150145231A/ko
Application granted granted Critical
Publication of KR101782704B1 publication Critical patent/KR101782704B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • G06F17/30589
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • G06F17/30595

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Stored Programmes (AREA)

Abstract

지식 포착 및 발견을 위한 시스템은 모든 입력 데이터가 객체 및 객체 간의 관계로서 저장되고, 입력 데이터가 하나 초과의 저장 포맷에 따라서 저장될 수 있는 지식 보관소를 포함한다. 적어도 두 개의 계층적 사용자 인터페이스는 입력 데이터, 입력 데이터에 관련하는 객체 정보 및 입력 데이터에 관련하는 관계 정보를 취득하는 입력 메커니즘을 제공하며, 그럼으로써 최종 사용자 애플리케이션이 개발될 수 있게 한다. 컨트롤러는 적어도 두 개의 계층적 사용자 인터페이스부터 입력 데이터, 객체 정보 및 관계 정보를 수신하고 입력 데이터가 객체 정보 및 관계 정보에 기초하여 객체로서 지식 보관소에 저장되게 한다.

Description

지식 포착 및 발견 시스템{KNOWLEDGE CAPTURE AND DISCOVERY SYSTEM}
관련 출원의 상호참조
본 출원은 "Enterprise Level Application Software Development System (기업 수준의 애플리케이션 소프트웨어 개발 시스템)"이라는 명칭으로 2013년 3월 15일 출원된 미국 특허 가출원 제61/787,177호의 이득을 주장하며, 가출원의 개시 내용은 본 출원에서 참조문헌으로 인용된다.
분야
본 개시는 일반적으로 기업 정보 관리에 관한 것으로, 특히 기업 정보 관리의 일부로서 또는 기업 정보 관리의 보완으로서 지식의 포착 및 발견을 위한 시스템에 관한 것이다.
본 출원에서 일괄하여 기업이라 지칭되는 사업체 또는 기타 조직체와 같은 다양한 형태의 기관은 전형적으로 특정한 목표를 성취하기 위해, 예를 들어 상품 및/또는 서비스를 관련 소비자에게 제공하기 위해 전형적으로 만들어지고, 조직되고 운영된다. 이러한 목표를 성취하기 위해, 다양한 크기의 많은 기업은 수많은 프로세스에 참여하는 특징을 함께 하고 있으며, 그러한 프로세스를 실행할 때, 그에 관련된 상당량의 데이터를 획득한다. 기업이 점차 커지고/커지거나 더 힘들고 복잡한 목표를 성취하려 함에 따라서, 프로세스는 물론이고 그 프로세스를 구현하는데 필요로 하는 자원을 적절하게 관리하기 위해 수반되는 그러한 프로세스를 진정으로 이해하는 데 도달하는 능력은 종종 아주 다루기 힘든 문제가 되고 있다. 그러한 통찰력을 개발하는데 사용될 수도 있는 실질적인 데이터 량이 존재할 수 있지만, 그러한 데이터의 방대한 양, 복잡도 및 변화성은 이러한 잠재적인 자원을 활용하기 어렵게 만든다.
현재 이러한 문제의 부분을 해결하려는 다양한 기술이 존재한다. 예를 들면, 데이터를 효과적으로 저장하고 데이터에 액세스하기 위해, 지난 40년에 걸쳐 수 많은 데이터베이스 기술이 개발되었으며, 각각의 기술은 특별한 장점과 단점을 가질 수 있다. 또한, 그러한 기술을 갖고 있을지라도, 의사 결정자가 이 데이터에 접근하려면 소프트웨어 개발 및/또는 데이트 관리 전문가와 같은 특별히 훈련 받은 기술자의 지원이 필요하다. 이로 인하여 상당한 비용을 초래하며 데이터 소비자의 요구가 충족되지 않는 가능성이 매우 사실적인 일이 되어 버린다. 또한, 비록 그렇게 저장된 데이터로부터 만든 보고서를 전달하는 기술이 공지되어 있지만, 그러한 데이터가 표현하는 프로세스에 관한 통찰력과 이해를 발전시키는 능력이 어려운 과제로 남아 있다.
그러므로, 기업의 데이터를 포착하고 그런 다음 그 데이터에 접근하기를 용이하게 하여 성취하기가 불가능하지 않다면, 기업 데이터 관리에 거의 또는 전혀 경험이 없는 자들이 이미 엄청나게 비싼 비용을 들였던 통찰력을 발전시킬 수 있는 방식으로 사용할 수 있게 해주는 시스템을 제공하는 것이 유리할 것이다.
본 개시는 종래 기술 해법의 단점을 극복하는 지식 포착 및 발견을 위한 시스템을 기술한다. 특히, 시스템은 모든 입력 데이터가 객체로서 그리고 객체들 간의 관계로서 저장되는 지식 보관소(knowledge repository)를 포함한다. 또한, 입력 데이터는 한 가지 이상의 저장 포맷에 따라 저장될 수 있다. 시스템에서 적어도 두 개의 계층적 사용자 인터페이스는 입력 데이터와, 그 입력 데이터에 관련한 객체 정보와 그 입력 데이터에 관련한 관계 정보를 취득하는 입력 메커니즘을 제공하며, 그럼으로써 최종 사용자 애플리케이션이 개발될 수 있게 한다. 또한, 지식 보관소 및 적어도 두 개의 계층적 사용자 인터페이스에 동작가능하게 연결된 컨트롤러는 적어도 두 계층적 사용자 인터페이스로부터 입력 데이터, 객체 정보 및 관계 정보를 수신하고 객체 정보 및 관계 정보에 기초하여 입력 데이터를 객체로서 지식 보관소에 저장되게 한다.
본 개시에서 기술되는 특징은 첨부의 청구범위에서 자세하게 기술된다. 이러한 특징은 첨부 도면과 함께 설명되는 다음의 상세한 설명을 고려함으로써 자명해질 것이다. 이제 유사한 참조 부호가 유사한 요소를 나타내는 첨부 도면을 참조하여 하나 이상의 실시예가 오로지 예를 들어서 기술된다.
도 1은 본 개시의 다양한 양태를 구현하는데 사용될 수 있는 예시적인 처리 디바이스의 블록도이다.
도 2는 본 개시의 특징을 구현하는데 사용될 수 있는 네트워크화된 다양한 하드웨어 컴포넌트를 예시하는 블록도이다.
도 3은 본 개시의 다양한 실시예에 따른 기능적 컴포넌트를 예시하는 블록도이다.
도 4는 RDF 및 관계 데이터를 기초로 하는 데이터 변환 처리의 예시적인 구현예의 블록도이다.
도 1은 본 개시의 개시를 구현하는데 사용될 수 있는 대표적인 처리 디바이스(100)의 블록도이다. 처리 디바이스(100)는 예를 들어, 아래에서 더 자세히 기술되는 시스템(200)의 하나 이상의 컴포넌트를 구현하는데 사용될 수 있다. 예를 들면, 처리 디바이스(100)는 워크스테이션 컴퓨터 또는 서버 컴퓨터를 포함할 수 있다. 이와 상관 없이, 디바이스(100)는 저장 컴포넌트(104)에 결합된 프로세스(102)를 포함한다. 저장 컴포넌트(104)는 저장된 실행가능한 명령어(116) 및 데이터(118)를 포함한다. 실시예에서, 프로세스(102)는 저장된 명령어(116)를 실행할 수 있으면서 저장된 데이터(118)에 의거 동작할 수 있는 마이크로프로세서, 마이크로 컨트롤러, 디지털 신호 프로세서, 코프로세서 또는 이들의 조합 등 중 한 가지 이상을 포함할 수 있다. 유사하게, 저장 컴포넌트(104)는 랜덤 액세스 메모리(random access memory, RAM), 판독 전용 메모리(read only memory, ROM) 또는 다른 비일시적 머신 판독 가능한 디바이스를 비롯한 휘발성 또는 비휘발성 메모리와 같은 하나 이상의 디바이스를 포함할 수 있지만 이것으로 한정되지는 않는다. 또한, 저장 컴포넌트(104)는 하드 드라이브, 광 디스크 드라이브, 플로피 디스크 드라이브 등과 같은 각종 형태로 구현될 수 있다. 도 1에 예시된 형태의 프로세서 및 저장 구성은 본 기술에서 통상의 지식을 가진 자에게 널리 공지되어 있다. 일 실시예에서, 본 출원에서 기술되는 처리 기술은 하나 이상의 처리 디바이스(100)의 저장 컴포넌트(104) 내부의 실행 가능한 명령어 및 데이터의 조합으로서 구현된다.
도시된 바와 같이, 디바이스(100)는 프로세스(102)와 통신하는 하나 이상의 사용자 입력 디바이스(106), 디스플레이(108), 주변기기 인터페이스(110), 기타 출력 디바이스(112) 및 네트워크 인터페이스(114)를 포함할 수 있다. 프로세스(102)와 각종 다른 디바이스/디스플레이/인터페이스(106-114) 간의 연결은 개개가 직접 연결된 것으로 예시되지만, 본 기술에서 통상의 지식을 가진 자라면 사실상 처리 디바이스(100)의 각종 컴포넌트가 의도한 대로 서로 통신하게 해주는 메커니즘으로서 하나 이상의 서브시스템(도시되지 않음)이 사용될 수 있다는 것을 인식할 것이다. 사용자 입력 디바이스(106)는 사용자 입력을 프로세스(102)에 제공하는 임의의 메커니즘을 포함할 수 있다. 예를 들면, 사용자 입력 디바이스(106)는 키보드, 마우스, 터치 스크린, 마이크로폰 및 적합한 음성 인식 애플리케이션 또는 임의의 다른 수단을 포함할 수 있으며, 그것에 의해 디바이스(100)의 사용자가 입력 데이터를 프로세스(102)에 제공할 수 있다. 디스플레이(108)는 임의의 통상적인 디스플레이 메커니즘, 예를 들어, 본 기술에서 통상의 지식을 가진 자에게 공지된 음극선관(cathode ray tube, CRT), 평판 디스플레이, 또는 임의의 다른 디스플레이 메커니즘을 포함할 수 있다. 실시예에서, 디스플레이(108)는 프로세스(102)에 의해 실행되는 저장된 적합한 명령어(116)와 함께 아래에서 기술되는 바와 같은 그래픽 유저 인터페이스를 구현하는데 사용될 수 있다. 이러한 방식으로 그래픽 사용자 인터페이스의 구현은 본 기술에서 통상의 지식을 가진 자에게 공지되어 있다. 주변기기 인터페이스(110)는 다양한 주변 디바이스, 이를 테면 미디어 드라이브(예를 들면, 자기 디스크 또는 광디스크 드라이브), 기타 처리 디바이스 또는 본 기술과 함께 사용되는 임의의 다른 입력 소스와 통신하는데 필요한 하드웨어, 펌웨어 및/또는 소프트웨어를 포함할 수 있다. 유사하게, 기타 출력 디바이스(들)(112)는 선택 사양으로 스피커, LED, 프린터, 팩스 머신, 촉각 출력 등과 같은 디바이스(100)의 사용자에게 정보를 제공할 수 있는 유사 미디어 드라이브 메커니즘, 기타 처리 디바이스 또는 기타 출력 목적지를 포함할 수 있다. 마지막으로, 네트워크 인터페이스(114)는 본 기술에서 공지된 바와 같이, 지역이든 광역이든, 사설이든 대중용이든 유선 또는 무선 네트워크를 통해 프로세스(102)를 다른 디바이스와 통신하게 해주는 하드웨어, 펌웨어 및/또는 소프트웨어를 포함할 수 있다. 예를 들면, 그러한 네트워크는 본 기술에서 공지된 바와 같이, 월드 와이드 웹이나 인터넷 또는 사설 기업 네트워크를 포함할 수 있다.
디바이스(100)가 본 출원에서 설명되는 기술을 구현하기 위한 한 가지 형태로 설명되지만, 본 기술에서 통상의 지식을 가진 자라면 기능적으로 동등한 다른 기술이 채용될 수 있다는 것을 인식할 것이다. 예를 들면, 본 기술에서 공지된 바와 같이, 하나 이상의 프로세서에 의해 실행되는 실행 가능한 명령어를 통해 구현되는 일부 또는 모든 기능은 주문형 반도체(application specific integrated circuit, ASIC), 프로그래머블 로직 어레이, 상태 머신 등과 같은 펌웨어 및/또는 하드웨어 디바이스를 사용하여서도 또한 구현될 수 있다. 뿐만 아니라, 디바이스(100)의 다른 구현예는 예시된 컴포넌트보다 많거나 적은 개수의 컴포넌트를 포함할 수 있다. 다시 말해서, 본 기술에서 통상의 지식을 가진 자라면 이러한 방식으로 사용될 수 있는 많은 변경이 있다는 것을 인식할 것이다. 또한, 단일의 처리 디바이스(100)가 도 1에 도시되지만, 그러한 처리 디바이스들의 조합이 본 개시의 개시를 구현하기 위해 함께 (예를 들면, 공지된 네트워킹 기술을 사용하여) 동작하도록 구성될 수 있음은 물론이다. 처리 디바이스 및 네트워크의 특성이 상시 변하므로, 도 1에 도시된 처리 디바이스(100)는 본 기술에서 통상의 지식을 가진 자에게 공지된 처리 디바이스들의 일반적인 어레이를 대표하는 특정한 예로서만 설명하려 한다.
이제 도 2를 참조하면, 본 개시의 개시를 구현하는데 사용될 수 있는 복수의 하드웨어 컴포넌트를 예시하는 시스템(200)이 도시된다. 도시된 바와 같이, 시스템(200)은 하나 이상의 서버 컴퓨터를 포함할 수 있는 컨트롤러(202)를 포함한다. 컨트롤러(202)는 각종의 다른 컴포넌트와 직접 또는 하나 이상의 네트워크(204)를 통해 통신한다. 네트워크(204)는 지역이든 광역이든, 사설이든 대중용이든 유선 또는 무선 네트워크의 임의의 바람직한 조합을 포함할 수 있다. 앞에서 언급한 것처럼, 그러한 네트워크는 본 기술에서 공지된 바와 같이, 월드 와이드 웹이나 인터넷, 또는 사기업 네트워크를 포함할 수 있다.
데스크톱이나 랩톱 컴퓨터 또는 모바일 컴퓨팅 디바이스와 같은 처리 디바이스를 포함할 수 있는 워크스테이션(206)은 네트워크(204)를 통해 컨트롤러(202)와 통신할 수 있다. 실시예에서, 워크스테이션(206)은 본 기술에서 공지된 바와 같이 그래픽 사용자 인터페이스를 제공할 수 있는 웹 브라우저 애플리케이션 또는 다른 애플리케이션과 통신할 수 있다. 그러한 애플리케이션을 사용하여, 워크스테이션(206)은 또한 아래에서 더 상세히 기술되는 바와 같이 여러 계층적 사용자 인터페이스 중 하나를 구현될 수 있다. 또한, 워크스테이션(206)은 그러한 계층적 사용자 인터페이스에 기초하여 개발되는 하나 이상의 최종 사용자 애플리케이션을 수신하여 실행하도록 동작할 수 있다.
또한 도시된 바와 같이, 하나 이상의 계층적 사용자 인터페이스 서버(208)는 컨트롤러(202)와 통신할 수 있고 네트워크(204)를 통해 워크스테이션(206)과 통신할 수 있다. 본 기술에서 공지된 바와 같이, 하나 이상의 계층적 사용자 인터페이스 서버(208)는 애플리케이션과 웹 서버와의 조합을 포함할 수 있고, 웹 서버는 사용자로부터 요청을 서비스하여 웹 서버와 통신하는 애플리케이션 서버에 의해 제공되는 애플리케이션 자원을 사용하여 조치를 이행한다. 특히, 웹 서버는 그러한 요청을 애플리케이션 서버로 중계하고, 애플리케이션 서버는 명시된 조치를 취하여 그 조치의 결과를 웹 서버로 반환하며, 그러면 웹 서버는 그 결과를 사용자 워크스테이션(206)으로 중계한다. 그러한 웹 서버는 본 출원에서 기술된 서버 중 임의의 서버와 마찬가지로 하드웨어 컴포넌트라고 고려될 수 있지만, 그러한 웹 서버는 컴퓨터 시스템에서 동작하는 소프트웨어 모듈일 수도 있다.
이와 상관 없이, 그러한 기술에 따르면, 계층적 사용자 인터페이스 서버(208)는 아래에서 더 자세히 기술되는 바와 같이 적어도 하나의 메이저(major) 개발자 인터페이스 및/또는 마이너(minor) 개발자 인터페이스를 제공할 수 있다. 예를 들면, 계층적 사용자 인터페이스 서버(208)는 워크스테이션(206) 상에 디스플레이되는 웹 페이지 등을 구현하여 계층적 사용자 인터페이스 중 하나 이상을 구현할 수 있다. 그러면 이러한 계층적 인터페이스는 궁극적으로 애플리케이션 메타파일을 개발하는 일 실시예에서 사용될 수 있다. 본 출원에서 사용되는 것으로서, 애플리케이션 메타파일은 본 기술에서 공지되고 아래에서 기술되는 바와 같이 실행가능한 소스 코드를 생성하기에 충분한 사용자 인터페이스 마크업 또는 기능적 마크업과 같은 정보를 포함할 수 있다. 최종 사용자 어플리케이션 서버(들)(212)는 앞에서 설명한 것처럼 웹 서버 및 애플리케이션 서버를 포함할 수 있고, 코드 생성 서버(210)에 의해 생성된 최종 사용자 애플리케이션을 요청 사용자에게 제공하는 기능을 수행한다.
도 2에 더 도시된 바와 같이, 컨트롤러(202)는 데이터베이스 콤플렉스(219)를 공동으로 구축하는 복수의 데이터베이스 서버(214-218)와 통신한다. 본 출원에서 사용된 것으로서, 데이터베이스는 이것으로 한정되지 않지만, 본 출원에서 언급되는 다양한 데이터베이스 저장 포맷을 비롯한 공지의 데이터베이스 저장 포맷을 구현하는 임의의 적합한 저장 디바이스를 포함할 수 있다. 예를 들면, 하나 이상의 제 1 데이터베이스 서버(214)는 제 1 저장 포맷 또는 방식을 구현하는 것으로 제공될 수 있고, 하나 이상의 제 2 데이터베이스 서버(216)는 제 2 저장 포맷 또는 방식을 구현하는 것으로 제공될 수 있으며, 하나 이상의 제 N 데이터베이스 서버(218)는 제 N 저장 포맷 또는 방식을 구현하는 것으로 제공될 수 있다. 예를 들면, 일 실시예에서, 제 1 데이터베이스 서버(214)는 소위 트리플스토어 데이터베이스(triplestore database)를 구현할 수 있는 반면, 제 2 데이터베이스 서버(216)는 관계형 데이터베이스(relational database)를 구현할 수 있으며 제 N 데이터베이스 서버(218)는 이것으로 한정되지 않지만 주상 데이터베이스(columnar database), 그래프 데이터베이스, 키값 데이터베이스, 문서 데이터베이스 및 파일 저장 데이터베이스와 같은 또 다른 데이터베이스 저장 포맷을 구현할 수 있다. 본 기술에서 통상의 지식을 가진 자에게 인식되는 것처럼, 여전히 다른 데이터베이스 저장 포맷이 사용될 수 있으며 본 개시는 이러한 것과 관련하여 한정되지 않는다.
이러한 방식으로 구성되면, 각각의 데이터베이스 저장 포맷의 상대적인 장점이 사용 가능하며, 아래에서 더 상세히 기술되는 바와 같이 컨트롤러(202)는 효과적으로 추상 계층으로서 작용하여 최종 사용자가 복잡한 각 데이터베이스 저장 포맷을 숙달하여야 하는 것을 막아줄 수 있다. 또한 아래에서 기술되는 일 실시예에서, 컨트롤러(202)는 필요에 따라 하나의 저장 포맷에서 다른 저장 포맷으로 데이터 변환을 개시하도록 동작하여 전체적인 성능을 개선한다. 다른 실시예에서, 복수개의 데이터베이스 저장 포맷의 존재는 사용자가 데이터를 변환하게 하는 조건을 명시적으로 정의할 수 있게 해준다. 예를 들면, 소위 CAP(Consistency(일관성), Availability(가용성), Partition tolerance(파티션 수용성)) 이론 하에서, 분산 데이터베이스에 대하여, 우리는 세가지 속성, 즉 일관성(모든 노드는 최신의 동일한 정보를 갖는다), 가용성(업타임(uptime)/요청하기(taking requests)) 및 파티션 수용성(연결 해제 상태를 처리하기) 중에서 단지 두 가지만을 가질 수 있다고 단언된다. 이러한 목표에 기초하여, 사용자는 이러한 속성 또는 이 속성들의 임의의 조합을 각기 최적화하기 위해 다양한 데이터베이스들 사이에서 데이터 변환을 위한 요건을 명시할 수 있다.
또한 도시된 바와 같이, 컨트롤러(202)는 네트워크(204)를 통해 하나 이상의 자연어 처리(natural language processing, NLP) 서버(220) 및 하나 이상의 데이터 마이닝 서버(data mining server)(222)와 통신할 수 있다. 아래에서 더 상세히 기술되는 바와 같이, NLP 서버(220)는 자연어 쿼리의 사용을 용이하게 해줄 뿐만 아니라 데이터베이스 콤플렉스(219) 내 데이터에 접근할 때는 물론이고, 최종 사용자 애플리케이션을 개발할 때를 용이하게 해주도록 동작한다. NLP 서버(220)와 함께 작용할 때, 데이터 마이닝 서버(222)는 데이터베이스 콤플렉스(219)에 저장된 데이터에 기초하여 근본 원인 분석, 분류, 클러스터링, 연관 규칙 발견 및/또는 회기 분석과 같은 다양한 데이터 마이닝 작업을 실시한다.
이제 도 3을 참조하면, 본 출원에서 제공되는 다양한 기능에 따라서 시스템(300)이 예시된다. 도 3에 예시된 컴포넌트는 앞에서 각기 설명한 것처럼 하나 이상의 처리 디바이스를 사용하여 구현되어, 본 출원에서 기술되는 기능을 구현한다. 시스템(300) 내부에서, 컨트롤러(302)는 예시된 예에서 관계형 데이터베이스(304), 주상 데이터베이스(306) 및 트리플스토어 데이터베이스(308)를 포함하는 복수의 데이터베이스(304-308)와 통신한다. 본 기술에서 공지된 바와 같이, 각각의 데이터베이스(304-308)는 데이터베이스와의 상호작용을 용이하게 하는 자체의 데이터베이스 관리 시스템(database management system, DBMS)을 포함한다(통상 포함할 것이다). 도시된 바와 같이, 컨트롤러(302)는 대응하는 DBMS에 의해 구현되는 애플리케이션 프로그래밍 인터페이스(application programming interface, API)(304a-308a)를 통해 각종 데이터베이스(304-308)와 통신한다. 그러한 API는 제조사 독점 드라이버 또는 독점의 레스트(REST, representational state transfer) 인터페이스에 의해 구현될 수 있다.
실시예에서, 시스템(200, 300)에 의해 다루어지는 단편의 데이터는 모두 객체로서 취급된다. 그래서, 각 단편의 데이터는 객체를 고유하게 식별하는 객체 식별과, 객체의 현재 상태를 서술하는 상태 표시자와, 객체에 대한 개정(revision) 순번에 관련하여 현재 개정 상태를 표시하는 개정 번호와, 특정 개정이 생성되었던 시점을 표시하는 타임 스탬프를 갖고 있다. 객체는 결코 시스템에서 물리적으로 삭제될 수 없다. 객체가 사용자에 의해 개정되거나 '삭제'될 때, 시스템은 그의 현재 상태를 반영하기 위해 간단히 객체의 개정을 생성한다. 오랜 개정은 이력 레코드로서 유지된다. 객체의 예, 본 사례에서는 그래픽 사용자 인터페이스에서 찾아볼 수 있는 형태의 서밋(submit) 버튼이 아래의 테이블 1에서 다수의 이름-값 쌍에 따라서 객체를 서술하는 널리 공지된 자바 스크립트 객체 표기(Java-Script Object Notation, JSON) 포맷을 사용하여 도시된다.
[테이블 1]
Figure pct00001
이 예에서, 객체는 "위젯(widget)" 형태를 가지며 또한 "서밋(submit)"이라고 명명된 위젯의 "버튼(button)" 형태를 갖는다. 이 객체는 현재 "액티브(active)"하며 제 12번째 개정이다. 또한, 객체는 행위 정의, 특히 "한번 클릭(single click)"의 이벤트 시에 취하는 "조치(action)"가 무엇인지를 포함한다. 본 기술에서 공지된 바와 같이, JSON 표현은 인간에게 이해 가능할 뿐만 아니라 머신에 의해 분석되기도 한다. 본 기술에서 통상의 지식을 가진 자가 인식하는 바와 같이, 임의의 단편 데이터를 가상적으로 객체로서 다루기 위해 다양한 각종의 객체 타입 및 서브타입이 사용될 수 있다. 예를 들면, 시스템(200, 300)에 제공되는 자연어 쿼리는 일련의 "단어(word)" 객체로서 간주될 수 있고, 쿼리 자체는 그러한 "단어" 객체의 모음을 포함하는 객체로 취급된다. 다른 예에서, 소프트웨어 소스 코드의 세그먼트는 다수의 "스테이트먼트(statement)", "오퍼레이터(operator)", "변수(variable)", "변수명(variable name)" 등의 객체를 포함하는 제 1 객체로서 취급될 수 있다.
시스템에 있는 모든 데이터를 객체로서 취급하는 장점은, 본 개시의 맥락에서, 객체들 간의 관계에 관한 스테이트먼트가 만들어질 수 있는 "트리플(triple)" 데이터 표현 개념과 조화 가능하다는 것이다. 예를 들면, 비록 본 출원에서 사용되는 의미에서는 개념이 객체에 쉽게 적용 가능할지라도, 소위 자원 데이터 프레임워크(Resource Data Framework, RDF) 사양에서는 "자원(resource)"(예를 들면, 웹 자원)에 관련한 스테이트먼트를 만들기 위해 주제-술어-객체(subject-predicate-object) 표현(트리플)을 구축한다. 간단한 예로서, 앞에서 설명된 예에 대해 적용해보면, 버튼 위젯이 웹 형태로 사용된다는 사실은 아래의 테이블 2에서 예시되는 트리플에 따라서 기술될 수도 있다.
[테이블 2]
Figure pct00002
이 예에서, 주제(button)는 관계 술어 "is_in"에 의해 객체(form)와 관련된다. 본 기술에서 공지된 바와 같이, RDF에서, 접두사 x, y 및 z는 엔티티, 본 예에서는 "button", "is_in", 및 "form"을 고유하게 명명하는 정보를 제공하는 통합 자원 식별자(Uniform Resource Identifier, URI)의 일반적으로 단축된 표현이다. 바람직한 본 실시예에서, 이러한 트리플 형태는 상황(context)에 필요한 (접두사 c를 갖는) 추가 필드를 제공하는 소위 "엔쿼드(nquad)" 포맷으로 확장된다. 그래서, 테이블 2의 예에서, 이러한 상황 필드는 객체 데이터를 함께 링크해주는 범용 단일 식별자(universal unique identifier, UUID) 값을 갖도록 사용된다. 즉, 이러한 실시예에서, 상황 쿼드 필드는 각종 데이터를 함께 실제로 수천의 트리플/쿼드 값을 포함할 수도 있는 단일 객체로 묶는다. 이와 상관없이, 아래에서 더 상세히 기술되는 바와 같이, RDF와 같은 규약은 또한 온톨로지 정보, 즉 정보를 조직하는데 사용되는 구조적 프레임워크를 서술하고 그럼으로써 지식 표현을 제공하는 정보를 전달하는 스테이트먼트를 제공하며, 이 온톨로지 정보는 하나의 저장 포맷으로부터 다른 저장 포맷으로 데이터를 변환할 때 도움을 주도록 사용될 수 있다.
실시예에서, 모든 데이터는 컨트롤러(302)를 통해 데이터베이스(304-308)에 추가되고, 데이터베이스에서 변경되고, 데이터베이스로부터 판독되며, 컨트롤러는 앞에서 설명한 것처럼 컨트롤러(302)의 사용자가 단일의 인터페이스만을 제공받도록 모든 데이터베이스 특정 프로토콜을 완결한다. 구체적으로, 단일의 인터페이스는 임의의 한 가지 데이터베이스 저장 포맷에 종속하지 않는 포맷으로 표현되는 일반 동작을 지원할 수 있다. 예를 들면, 컨트롤러(302)는 최종 사용자에게 JSON 기반의 구조화 쿼리 언어(Structured Query Language, SQL) 유사 API를 사용하여 데이터를 관리하는 통일된 API를 제공할 수 있다. SQL 유사 API는 특히 엄격하고 경직한 관계형 데이터베이스 요건을 비교적 느슨하고 유연한 NoSQL 데이터 요건과 가교해준다는 점에서 시스템(300)의 외부 사용자와 내부 사용자 모두와의 통신을 용이하게 해주며, 그럼으로써 전통적인 개발자들이 시간과 노력을 많이 들이지 않고 NoSQL 데이터베이스 또는 다중 데이터베이스의 이득을 향유할 수 있게 해줄 수 있다. 마무리하자면, 어떤 사례에서는 (SQL 유사의 통일된 API 이외에) 최종 사용자가 각 데이터베이스(304-308)의 DBMS에 액세스하게 해주는 것이 바람직할 수 있는데, 이것은 비록 기본 데이터베이스 API로의 액세스가 그러한 API에 관해 특정한 지식이 부족한 사용자에게 바람직하지 않을 것이라고 예상된다 하여도 그러하다. 이와 상관 없이, SQL 유사의 통일된 API 방법은 모든 데이터베이스 관리 시스템에 의해 통상적으로 제공되는 생성, 판독, 갱신 및 삭제(create, read, update and delete, CRUD) 동작을 포함한다. 그러한 생성, 판독, 갱신 및 삭제 동작의 JSON 예는 아래의 테이블 3 내지 6에서 예시된다.
[테이블 3]- JSON 생성
Figure pct00003
[테이블 4]- JSON 판독
Figure pct00004
[테이블 5]- JSON 생성
Figure pct00005
[테이블 6]- JSON 삭제
Figure pct00006
본 기술에서 통상의 지식을 가진 자라면 테이블 3-6에 예시된 것은 SQL 유사의 통일된 API의 예이고 또한 같은 SQL 유사의 동일한 API는 XML과 같은 다른 포맷으로 구현될 수 있다는 것을 인식할 것이다. 그러한 동작 요청에 기초하여, 컨트롤러(302)는 앞의 예에서처럼 JSON 요청을 필요한 데이터베이스 특정 쿼리 포맷으로 변환한다. 예를 들면, 앞에서 예시된 동작을 구성해보면, 사용자는 테이블 4에서와 같은 판독 요청을 컨트롤러(302)에게 서밋할 수 있다. 트리플스토어 데이터베이스(308)에 쿼리할 때, 컨트롤러(302)는 아래의 테이블 7에 예시된 타입의 SPARQL 쿼리를 형성할 것이다.
[테이블 7]
Figure pct00007
이 예에서, 맵핑 규칙은 다음과 같다. "collection":"X" => FROM X; "select":"X" => SELECT ?x; "relation": {...} => WHERE {?x ?y ?z WHERE {?y ...} }; 등등. 이러한 타입의 또 다른 맵핑은 본 기술에서 통상의 지식을 가진 자에 의해 쉽게 도출될 것이다.
(앞에서 설명한 것처럼 객체에 관련하는) 데이터가 추가되므로, 컨트롤러(302)는 먼저 앞에서 설명한 것처럼 데이터가 트리플 형태로 추가되게 하는데, 즉 데이터가 먼저 초기에 트리플스토어 데이터베이스(308) 내에 생성되고 적어도 초기에 그러한 데이터에 대비한 쿼리가 트리플스토어 데이터베이스(308)에 적용된다. 실시예에서, 트리플스토어 데이터베이스(308)는 제 4 요소가 트리플에 추가되는 소위 엔쿼드 포맷을 고수할 수 있으며, 이 경우 제 4 요소는 앞에서 설명한 것처럼 객체화된 식별자이다.
사용자가 데이터에 쿼리할 때, 컨트롤러(302)에서 구현되는 쿼리 파서 또는 마너터리(monitory)는 쿼리 및 결과 데이터 패턴을 모니터한다. 그러한 쿼리 파서는 (http://www.manageengine.com/products/applications_manager/database-query-monitoring.html에서 구입 가능한) Zoho Corporation Pvt. Ltd.의 Applications Manager에서 제공하는 것으로서 본 기술에서 공지되어 있다. 예를 들면, 모든 쿼리는 이것으로 한정되지 않지만, 어떤 객체가 액세스되고 있는지, 데이터가 기록되는지 아니면 판독되는지, 해당하는 데이터 크기, (로깅 데이터로부터 추정되는 것으로서) 쿼리 빈도 또는 (또한 로깅 데이터로부터 추정되는 것으로서) 어떤 특정한 타입의 레포트/SELECT 스테이트먼트가 실행되는지를 비롯한 특정 핵심 성과 지표에 대해 모니터될 수 있다. 그 결과로서, 쿼리 파서는 기존의 쿼리 패턴을 미리 정의된 데이터 변환 트리거링 규칙에 매칭할 수 있으며, 이에 관한 예는 아래에서 제공된다. 이러한 규칙은 데이터 패턴이 주어진 규칙의 조건, 즉 부분적으로 아니면 전체적으로 데이터를 하나의 저장 포맷에서 다른 저장 포맷으로 변환할 필요를 만족할 때, 그렇게 디자인된다. 즉, 미리 정의된 변환 규칙은 컨트롤러(302)가 소정 데이터가 변환될 수 있는지를 결정하게 해주며, 만일 데이터가 변환될 수 있으면, 컨트롤러(302)는 원래 데이터(즉, 제 1 데이터 저장 포맷으로 저장되어 있음)를 전체적으로 반복하는 변환 프로세스를 개시하여 목표로 하는 또는 제 2의 데이터 저장 포맷을 가진 새로운 데이터를 생성한다. 동시에, 원래 데이터는 변환 동안 사용자가 데이터에 대하여 쿼리할 수 있도록 본래 그대로 남겨진다. 일단 데이터가 변환되면, 쿼리 파서는 쿼리 파서가 이러한 데이터 부분에 대해 나중에 쿼리하는 방식을 바꿀 수 있도록 변환 프로세스를 통보 받는다. 예를 들면, 실시예에서, 쿼리 파서는 나중의 쿼리가 정확하게 다루어지고 정확한 응답이 반환되도록 SQL 유사의 통일된 API 동작을 특정한 기반 데이터 API에 맵핑하는 방식을 수정한다.
주어진 데이터 부분에 대해 어느 데이터베이스 저장 포맷이 가장 최선인지를 알지 못하는 상황이 있을 수 있다. 이러한 사례에서, 객체를 각각의 사용 가능한 데이터베이스 저장 포맷으로 변환하고 부하 테스트의 시뮬레이션을 수행하는 것이 바람직할 수 있다. 그러한 부하 테스트는 수집된 로그 데이터에 기초하여 실 세계 사용자 액션을 모방할 수 있다. 그러한 부하 테스트를 수행할 때, 각종 활동의 수행이 모니터되며 임의의 바람직한 기준에 의해 평가될 때 각종 데이터베이스 저장 포맷 중에서 가장 좋은 성능을 보여주는 저장 포맷에 따라서 "최선의" 데이트 저장 포맷이 선택될 수 있다. 예를 들면, 만일 그 결과가 상당한 성능 향상을 나타내면, 추가 규칙이 생성될 수 있고 그래서 이 규칙이 해당 타입의 데이터에 연루된 데이터 쿼리에 의해 트리거되도록 한다. 대안의 실시예에서, 그러한 새로운 규칙을 추론하는 공지된 머신 학습 기술이 채용될 수 있다. 예를 들면, 머신 학습 알고리즘은 공지된 규칙을 사용하여 통계 모델을 훈련시킬 수 있고, 그러면 이 통계 모델은 이전에 알려지지 않은 새로운 규칙을 추론하는데 사용될 수 있다. 그렇지 않고 알려지지 않은 데이터에 대한 (시간 소비 프로세스가 될 수도 있는) 이러한 방식의 성능 테스트는 회피될 수 있으며, 그 대신 즉시 추론된 규칙에 기초하여 직접 변환될 수 있다. 이후, 원하면 그리고 자원이 사용 가능하다고 상정하면, 추론된 규칙은 더 정확히 시뮬레이션된 부하 테스트에 의해 추가 검증될 수 있다.
앞에서 언급한 바와 같이, 규칙은 컨트롤러(302)가 데이터 변환을 개시할 때를 결정하기 위해 채용될 수 있다. 실시예에서, 다양한 인자가 그러한 규칙을 수립하는데 고려될 수 있고, 일반적으로 인자는 데이터 인자 또는 특징 및 사용 인자 또는 특징으로 그룹화될 수 있다. 데이터 특징은 최적한 데이터베이스 저장 포맷의 결정에 영향을 미칠 수 있는 기본 데이터의 특정 속성에 관련되며, 이것으로 한정되지 않지만 데이터 크기, 요구된 데이터 신선도(required data freshness) 또는 요구된 데이터 보존성(required data retention)을 포함할 수 있다. 사용 특징은 데이터가 어떻게 사용되는지의 속성에 관련되며 이것으로 한정되지 않지만 데이터 기록 빈도, 데이터 갱신 빈도, 데이터 판독 빈도, 데이터 판독 요청 타입 및 사용자의 동시성(concurrency of users)을 포함할 수 있다.
다양한 데이터 특징에 대하여, 데이터는 그저 바이트 길이의 비교적 짧고, 간단한 텍스트 값, 기가바이트 길이의 그래픽, 또는 기가바이트 크기의 비디오일 수 있다. 본 기술에서 공지된 바와 같이, 각 그래픽의 크기는 어느 타입의 데이터베이스가 그래픽을 저장하는데 가장 어울릴지를 결정할 수 있다. 다른 관련 데이터 특징은 데이터의 요구된 "신선도"이다. 예를 들면, 본 기술에서 공지된 바와 같이, 데이터베이스(304-308)는 각기 몇 가지 형태의 데이터 캐싱을 구현할 수 있다. 보고서 데이터의 일시적인 캐싱은 데이터를 크게 향상시킬 수 있지만, 이것은 보고서 내 데이터가 액세스될 때마다 그 데이터가 바뀌지 않을 때의 가시적인 옵션일 뿐이다. 또 다른 관련 데이터 특징은 요구된 데이터 보존성이다. 이러한 사례에서, 데이터는 보통 소정의 기간 동안 직접 사용될 뿐이다. 예를 들면, 매초 단위의 생성 라인 데이터는 통상적으로 직접적으로 유용한 미래의 주 또는 월이 되지 않을 것이다. 이와 같이, 비싸지만 빠른 데이터베이스 저장 메커니즘으로부터, 비교적 사용 빈도가 낮다면 느리더라도 저가의 저장 메커니즘으로 데이터가 자동 보관될 수 있는 최적한 선택을 하는 것이 바람직할 수 있다.
다양한 사용 특징에 대하여, 데이터 판독, 기록 및/또는 갱신 빈도가 채용될 수 있다. 예면, 소정 데이터는 그의 타입에 따라서, (데이터가 연례 보고서를 생성할 때 연루되는 것과 같이) 년 단위로 한번씩 기록될 수 있거나, 또는 생산 라인의 사례에서는 초당 여러 번일 수 있다. 관련적으로, 일부 데이터는 한 번 기록되고 절대 변경되지 않을 것인 반면, 다른 데이터는 자주 변경될 수 있다. 만일 낮은 빈도의 데이터가 복수 영역에서 되풀이되면, 그 데이터의 갱신은 라인을 따라서 연쇄시키는데 점점 더 시간이 걸릴 것이다. 뿐만 아니라, 많은 시스템은 데이터 판독 대 데이터 기록 간의 상쇄 관계를 갖는데, 즉 하나의 동작이 다른 동작보다 더 자원 소비적이다. 또한, 본 기술에서 공지된 바와 같이, 높은 빈도의 데이터 판독일지라도, 주어진 보고서가 동일한 집합의 인덱스 기준을 사용하는 것이면 주요한 차이를 만든다. 예를 들면, 만일 당신이 경쟁 토너먼트에 대해 고득점의 리스트를 살펴보는 것이면, 이것은 매초마다 판독될 수 있다. 그러나, 토너먼트식 고득점으로부터 특정한 분할식 고득점으로의 변경은 결코 바뀌지 않거나, 극히 드물게 바뀔 수 있다. 또 다른 보고서 시나리오에 대하여, 사용자 동시성은 최선의 저장 포맷을 결정하는데 상당한 영향을 줄 수 있다. 예를 들면, 한 사용자가 보고서를 운영하고 있으면, 보고서를 캐싱하여 이를 메모리 내에 상주하게 해주는 것은 상당한 성능 개선을 제공하지 않을 것이다. 그러나, 100 사람이 동일 보고서를 매초마다 요청한다면, 기본 데이터를 캐싱하는 것은 상당한 성능 개선으로 이를 것이다.
각종의 규칙은 이러한 특징에 기초하여 개발될 수 있다. 데이터에 기반한 성능은 데이터베이스들 사이에서 변환함으로써 또는 데이터를 동일한 데이터베이스 내에서 관리함으로써 향상될 수 있다. 예를 들면, 기록(갱신) 데이터의 빈도가 높으면, 소위 빅 데이터 와이드 컬럼 데이터베이스(big data wide column database)를 사용하는 것이 유리할 수 있다. 이러한 목적을 위해, 컬럼 기반 데이터에 대한 쿼리가 모니터될 수 있다. 색인 없는 컬럼에서 쿼리가 반복하여 실행되면, 이차 색인이 생성될 필요가 있다. 대안으로, 소정 기간 이후, 쿼리가 더 이상 특정 색인을 사용하지 않으면, 그 색인은 제거될 수 있다.
다른 예에서, 기본 데이터 모델이 키-값 쌍의 집합에 기초하면, 문서 저장 엔진이 사용되어야 한다. 그러므로, 예를 들어 어레이 내부의 어레이로 보이는 데이터 구조체를 찾는 규칙이 생성될 수 있다. 관련적으로, 사진 또는 비디오와 같은 소정의 이진 데이터는 파일 기반 데이터베이스 시스템에 저장되는 것이 최선일 것이다. 키 값 저장의 사용 시나리오와 마찬가지로, 컨트롤러(302)는 별개의 인터페이스에 저장된 관계 데이터에도 또한 링크되는 원시(native) 이진 데이터 인터페이스를 노출시킬 수 있게 한다. 예를 들면, 비디오에 대한 객체 타입이 있을 수 있다. 앞의 객체의 예에서처럼, 각각의 그러한 비디오는 파일 기반 데이터베이스에 저장된 이진 객체 파일에 링크하는 고유의 키 식별자를 갖지만, 다른 메타데이터는 관계형 데이터베이스에 저장된다.
데이터가 소위 ACID(Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(영속성)) 속성을 많이 고수하는 것이 필요하면, 제약을 가진 관계형 데이터베이스가 가장 잘 어울릴 것이다. 그러나, 이러한 시나리오에서조차도, 최선의 어울리는 것을 결정하기 위해서는 소정의 상쇄 관계가 분석되어야 한다. 예를 들면, 높은 동시성 및 많은 트랜잭션 용량 때문에, 은행의 현금 자동지급기(automated teller machine, ATM)로부터의 데이터는 ACID 대신 와이드 컬럼 데이터베이스(wide column database)를 사용하여 더 양호하게 구현될 수 있는 BASE (Basically Available, Soft state, Eventual consistency) 모델을 기초로 하고 있다.
기본 데이터 모델이 임의의 형태의 네트워크, 그래프, 객체들 간의 연결 등을 기술하는 데이터인 경우, 그러한 데이터는 그래프 데이터베이스에 저장되는 것이 가장 양호할 것이다. 이러한 사례에서, 많은 관계, 예를 들면, 본 기술에서 공지된 바와 같은 시간적으로 많은 희생되는 관계형 데이터베이스에서 다중 조인 동작을 수반하는 외래 키 관계성(foreign key relationship)을 암시하는 쿼리 패턴을 탐색하는 규칙이 수립될 수도 있다.
또 다른 예에서, 예를 들어 주어진 보고서 쿼리의 반복이 많으면, (기본 데이터베이스 저장 포맷에 무관하게) 캐싱을 사용하는 것이 유리할 것이다. 본 기술에서 공지된 바와 같이, 캐싱 규칙은 캐시 내의 데이터가 얼마나 자주 바뀌는지를 결정하며 캐시 무효는 시간 기반이며/시간 기반이거나 소스 데이터에 대해 변경이 발생할 때 무효화 기능을 갖는다. 이러한 사례에서, 캐싱된 데이터는 그 자체의 개별 객체로서 저장될 수 있다. 예를 들면, 캐시 객체의 소스 데이터는 와이드 컬럼 데이터베이스 저장 포맷(wide column database storage format)으로 존재할 수 있지만, 실제 캐싱된 데이터는 변환 후 캐시 메모리 내에서 키 값 저장 포맷(key-value storage format )으로 저장될 수 있다.
앞에서 설명한 것처럼, 모든 데이터는 초기에 트리플스토어 데이터베이스(308)에 저장될 수 있으며 컨트롤러(302)는 트리플스토어 포맷에서 다른 포맷으로의 변환 또는 그 반대로의 변환이 필요할 때를 결정한다. 실시예에서, 데이터를 제 1 데이터베이스 저장 포맷에서 제 2 데이터베이스 저장 포맷으로 변환하는 실제 프로세스는 적어도 초기에 모든 데이터가 트리플스토어 데이터베이스 포맷으로 저장되는 한 트리플스토어 데이터베이스(308)의 기능에 포함될 수 있다. 그러므로, 포맷 변환은 다른 데이터베이스 저장 포맷으로부터 트리플스토어 데이터베이스 저장 포맷으로 변환 그리고 트리플스토어 데이터베이스 저장 포맷으로부터 다른 데이터베이스 저장 포맷으로 변환의 두 가지를 필요로 할 것이다. 필연적으로, 주어진 변환을 위해 채용되는 특정 기술은 소스 또는 제 1 데이터베이스 저장 포맷 및 타겟 또는 제 2 데이터베이스 저장 포맷의 특성에 달려 있을 것이다.
일반적으로, 트리플스토어 데이터베이스 저장 포맷으로의 변환은 소스 데이터베이스 저장 포맷으로 된 가장 기본적이고 근본적인 데이터 구조체를 식별하고 그러한 데이터 구조체를 트리플에 맵핑하는 것을 기초로 한다. 예를 들면, 키 값 저장 포맷에서 트리플스토어 저장 포맷으로 변환할 때, (아래의 또 다른 예에서 기술되는 바와 같이, 정연한 RDF와 같이) 변환 프로세스는 각 키 값을 처음부터 끝까지 반복할 수 있고 대응하는 트리플을 만들 수 있다. 와이드 컬럼 저장 포맷에서 트리플스토어 저장 포맷으로 변환할 때, 변환 프로세스는 각 키스페이스, 컬럼 패밀리, 컬럼 및 로우 형성 트리플을 처음부터 끝까지 반복할 수 있다. 문서 저장 포맷에서 트리플스토어 저장 포맷으로 변환할 때, 변환 프로세스는 각 수집(collection), 문서 및 키 값 형성 트리플을 처음부터 끝까지 반복할 수 있다. 그래프 데이터베이스 저장 포맷으로부터 변환할 때, 변환 프로세스는 데이터 내 노드 간의 연결을 좇아가고 그 방향을 따라 트리플을 형성함으로써 데이터 내 모든 노드를 처음부터 끝까지 반복할 수 있다. 관계형 데이터베이스 저장 포맷으로부터 변환할 때, 변환 프로세스는 초기에 각 테이블을 처음부터 끝까지 반복하고, 각 테이블마다 술어(predicate)가 "is a table of"로 고정되는 트리플을 구축한다. 또한, 임의의 외래 키 관계 또는 다른 인덱스 또는 속성은 각 테이블에서 식별되고 트리플 형태, 예를 들면, "x:tablel.columnl y:is_foreign_key_to z:table2.column2" 형태로 포함된다. 각 테이블 내에서, 변환 프로세스는 또한 각 컬럼을 처음부터 끝까지 그대로 반복한다. 먼저 각 컬럼이 컬럼명이 되는 트리플 주제 및 주어진 셀 내에 포함되는 실제 데이터 값이 되는 트리플 객체를 가진 "is a column of"이라는 고정된 트리플 술어에 기초한 트리플 포맷으로 정의된다. 유사하게, 변환 프로세스는 각 로우를 처음부터 끝까지 반복하며, 이 때 각 로우는 로우 내에서 그 자체의 트리플이 되는 각 셀을 갖는다.
유사한 방식으로 트리플스토어 저장 포맷에서 다른 데이터베이스 저장 포맷으로 변환은 기본적으로 트리플에 기초한다. 앞에서 설명한 것처럼, 트리플스토어 저장 포맷이 엔쿼드 형태로 되어 있고 그래서 객체 식별을 포함하는 제 4 요소를 포함하는 경우, 그 객체 식별은 변환될 트리플 데이터의 상황을 수립하는데 사용된다. 그래서, 트리플스토어 저장 포맷에서 키 값 저장 포맷으로 변환할 때, 각각의 트리플은 키 값으로 변환된다. 트리플스토어 저장 포맷에서 와이드 컬럼 저장 포맷으로 변환할 때, 변환 프로세스는 먼저 트리플 데이터에서 뚜렷이 구별되는 모든 술어를 식별하고 각각마다 컬럼 패밀리를 형성한다. 이후, 변환 프로세스는 각각의 트리플을 처음부터 끝까지 반복하고 각각마다 로우를 형성한다. (예를 들면, 컨트롤러(302) 내 쿼리 파서에 의해 제공되는 것으로서) 이전의 쿼리 정보에 기초하여, 변환되는 데이터의 인덱스 방식은 그의 이전의 사용에 기초하여 도출될 수 있다. 그러한 인덱스 방식을 도출하는 기술은 예를 들면, "오라클 데이터베이스 성능 조율 가이드(Oracle Database Performance Tuning Guide (llg 릴리즈 1(11.1): Automatic SQL Tuning" (http://docs.oracle.com/cd/B28359_01/server.111/b28274/sql_tune.htm#PFGRF028에서 이용 가능함)에서 교시된 바와 같은 기술에서 공지되어 있다. 이후, 변환 프로세스는 필요하다면 도출된 인덱스 방식에 기초하여 이차 인덱스가 생성될 수 있다. 트리플스토어 저장 포맷에서 문서 저장 포맷으로 변환할 때, 변환되는 트리플 데이터 내 모든 트리플은 먼저 분석되어 문서에 대응하는 술어(예를 들면, "is contained in")를 식별한다. 이후, 변환 프로세스는 각 트리플을 처음부터 끝까지 반복하고 각 트리플에 기초하여 키 값 엔트리를 생성하며, 그런 다음 키 값 엔트리는 대응하는 문서에 링크된다. 트리플스토어 저장 포맷에서 그래프 데이터베이스 저장 포맷으로 변환할 때, 변환 프로세스는 트리플을 처음부터 끝까지 반복하고 정점(vertex)과 간선(edge)를 구축한다.
앞에서 기술된 컨트롤러 개시되는 변환 이외에, 상당량의 데이터가 기존의 RDF 데이터베이스에 저장되어 있다는 것이 인식된다. 이러한 기존의 데이터베이스를 사용하기 위하여, 트리플스토어 데이터베이스(308)에는 그러한 기존의 RDF 데이터를 관계형 데이터로 변환하는 기능이 제공된다. 이러한 설명을 위하여, 다른 트리플 포맷이 또한 사용될지라도, 트리플 데이터는 RDF 포맷을 고수한다고 가정한다. 특히, 외부의 RDF 데이터의 변환은 두 개의 디폴트 컬럼을 가진 테이블, 즉 테이블에 대한 기본 키로서 작용하고 1로 시작하는 연쇄 정수(serial integer)를 포함하는 식별 컬럼과, 리소스의 이름(이 용어는 대체로 RDF 용어로 사용됨)을 지정하는 스트링을 포함하는 resourceName 컬럼을 생성함으로써 시작한다. 이러한 기본 테이블로부터, 트리플 데이터 내 대부분의 모든 속성(술어)이 식별되고 테이블 내부의 컬럼으로 변환된다. RDF 속성이 모두 그러한 방식으로 사용되는 것은 아닌데, 이것은 일부 속성(본 출원에서는 메타 속성이라 지칭됨)이 시맨틱 데이터 자체 대신에, 데이터의 기본적인 온톨로지 구조체에 관한 정보를 제공하기 때문인 것으로, 이러한 온톨로지 정보는 변환되는 트리플 데이터의 관계형 데이터베이스 표현을 더 개발하는데 사용될 수 있다. RDF 속성을 테이블을 확장하는데 사용하는 것은 간단한 예를 통해 추가 설명될 수 있다.
아래의 테이블 7은 다수의 RDF 스테이트먼트를 설명한다.
[테이블 7]
Figure pct00008
추가 테이블 컬럼을 식별하기 위해 속성을 사용하는 것과 관련하여 앞에서 언급한 변환 원리에 따르면, 테이블 7의 RDF 스테이트먼트는 아래의 테이블 8에 도시된 관계형 표현으로 변환될 수 있다.
[테이블 8]
Figure pct00009
이러한 예가 실증되므로, RDF를 관계형 데이터로 변환하는 것은 데이터 자체가 아니라 데이터 구조체 또는 메타데이터의 변환이다. 변한 프로세스를 더 전개하기 위해, RDF 메타 속성에서 발견되는 메타 속성을 이용하는 것이 유리할 것이다.
RDF 및 관계형 저장 포맷은 이들 포맷이 각기 클래스 및 인스턴스 뷰에 의존한다는 점에서 유사한 데이터의 뷰를 공유한다. 한편, RDF에서, 클래스 및 인스턴스는 rdf:class, rdf:type, rdfs:domain, rdfs:range 등과 같은 예약된 메타 속성에 의해 명백하게 정의되고 지원된다. 다른 한편, 관계형 포맷에서, 비록 클래스/인스턴스 뷰가 명시적으로 정의되지 않지만, 이것은 소위 "테이블 및 튜플"이라는 다른 형태로 효과적으로 구현된다. 테이블은 클래스처럼 보일 수 있지만, 컬럼은 클래스 속성처럼 보일 수 있고 튜블(로우/레코드)는 인스턴스처럼 보일 수 있다. 그러므로, 실시예에서, RDF 포맷의 데이터를 관계형 포맷의 데이터로 변환하는 접근 방법은 RDF 클래스를 관계형 테이블로 변환하고 RDF 인스턴스를 관계형 튜플로 변환하는 것에 달려 있다. 이러한 목적을 위해, RDF 내 각 자원의 클래스를 결정하는 것이 필요하며, 이 작업은 RDF 내 사용 가능한 메타 속성을 사용하여 가능해질 수 있다.
그러므로, 외부 RDF 데이터가 제공될 때, 변환 프로세스(이 프로세스의 예는 아래에서 도 4에 대해 상세히 기술됨)는 먼저 자원을 스캔함으로써 내부의 자원을 분류하도록 시도하여 그러한 분류를 표시하는 메타 속성의 발생을 식별한다. 이러한 공지의 메타 속성은 아래에서 개별적으로 논의된다.
제 1 RDF 메타 속성은 rdf:type이고, 이 속성은 공식적으로 다음과 같이 정의된다.
" rdf:type은 자원이 클래스의 인스턴스인 상태로 사용되는 rdf:Property의 인스턴스이다.
R rdf:type C라는
형태의 트리플은 ,
C가 rdfs의 인스턴스이고 : 클래스 및 R이 C의 인스턴스이라는 것을 서술한다".
그러므로, 일단 변환 프로세스가 주어진 자원의 이러한 메타 속성을 발견하면, 변환 프로세스는 그 자원의 클래스를 명시적으로 알게 된다.
제 2 RDF 메타 속성은 rdfs:domain이고, 이 속성은 공식적으로 아래와 같이 정의된다.
" rdfs:domain은 주어진 속성을 가진 임의의 자원이 하나 이상의 클래스의 인스턴스라고 서술하는데 사용되는 rdf:Property의 인스턴스이다 .
P rdfs:domain C라는
형태의 트리플은 ,
P가 클래스 rdf:Property의 클래스의 인스턴스이고 , C가 클래스 rdfs:Class의 인스턴스이며 , 술어가 P인 트리플의 주제로 표시된 자원이 클래스 C의 인스턴스이라는 것을 서술한다.
속성 P가 하나보다 많은 rdfs:domain 속성을 갖는 경우, 술어 P를 가진 트리플의 주제로 표시되는 자원은 rdfs:domain 속성으로 언급되는 모든 클래스의 인스턴스이다 ".
환언하자면, 이러한 메타 속성은 우리에게 rdfs:domain 트리플의 주제가 객체의 속성이고, 그 속성을 주제의 술어로서 가진 임의의 다른 트리플의 주제가 반드시 그 클래스에 속한다는 것을 말해주고 있다. 그러므로, 아래의 테이블 9에서 언급되는 RDF 스테이트먼트를 생각해 보자.
[테이블 9]
Figure pct00010
이러한 스테이트먼트로부터, 우리는 "author"가 클래스 "book"의 속성이라는 것을 알게 된다. "author" 속성이 "load of the rings"라는 주제에 대한 술어로서 사용될 때, 우리는 "load of the rings"이 "book"의 클래스에 속한다고 추론할 수 있다. 본 기술에서 공지된 바와 같이, 그러한 추론은 RDFS(RDF 스키마) 추론 엔진을 사용하여 식별될 수 있다.
제 3 RDF 메타 속성은 rdfs:range이며, 이 속성은 결과의 추론이 주제가 아닌 트리플 스테이트먼트에서의 객체에 적용된다는 것을 제외하고는 rdfs:domain과 실질적으로 유사하다. 그러므로, 아래의 테이블 10에서 언급되는 RDF 스테이트먼트를 생각해 보자.
[테이블 10]
Figure pct00011
이러한 스테이트먼트로부터, 우리는 "eat"가 클래스 "food"의 속성이라는 것을 알게 된다. "eat"가 "vegetables"라는 객체에 대한 술어로서 사용될 때, 우리는 "vegetables"이 "food"의 클래스에 속한다고 추론할 수 있다. 되풀이 하자면, 본 기술에서 공지된 바와 같이, 그러한 추론은 RDFS 추론 엔진을 사용하여 식별될 수 있다.
제 4 RDF 메타 속성은 rdfs:subClassOf이다. 그래서, 우리가 <A><rdfs:subClassOf><B>라는 형태(form)의 스테이트먼트를 접하면, 우리는 "A"가 클래스이며 "A"가 클래스 "B"의 모든 속성을 공유한다는 것을 알게 된다.
그 외에, 클래스의 속성에 관한 기존의 지식이 또한 활용될 수 있다. 즉, 주어진 자원이 (아주 일반적인) 그의 클래스를 알려주는 어떠한 온톨로지 정보도 갖고 있지 않으면, 변환 프로세스는 임의의 이용 가능한 속성을 식별할 수 있고 그러한 속성을 기존의 클래스/테이블과 비교하여 가능하다면 이들을 일치시킬 수 있다.
전술한 메타 속성에 의존하는 변환 프로세스를 예시하는 예는 도 4에서 더 예시된다. 특히, 도 4는 트리플스토어 데이터베이스(308) 및 관계형 데이터베이스(304)의 컴포넌트, 특히 데이터 변환에 연루되는 그러한 컴포넌트를 더 상세하게 예시한다. 도시된 바와 같이, RDF 데이터는 RDF DBMS(402)에 의해 유지되며, 유사하게 관계형 데이터는 관계형 DBMS(404)에 의해 유지된다. 실시예에서, 외부 RDF 데이터스토어(406)로부터 오는 RDF 데이터는 본 기술에서 공지된 바와 같이, RDF 로더(408)를 통해 관계형 DBMS(404)에 임포트될 수 있다. 외부 RDF 데이터를 관계형 데이터로 변환하기 위해, 트리플스토어 데이터베이스(308)는 변환 브릿지(412) 및 추론 엔진(414)을 포함할 수 있다. 공동으로, 변환 브릿지(412) 및 추론 엔진(414)은 RDF 데이터(410)를 관계형 데이터(416)로 실제 변환을 수행하는 RDFS 변환기를 구성한다. 즉, 아래에서 상세히 기술되는 바와 같이, 변환 브릿지(412)는 RDF 데이터(410)를 확인하여 그 안의 메타 속성을 식별하며, 필요하다면 추론 엔진(414)의 도움을 받아, 관계형 데이터베이스 저장 포맷에 따라서 구성된 관계형 데이터(416)를 확장하는데 사용될 수 있는 속성을 결정한다.
특히, 변환 브릿지(412)는 RDF 데이터(410) 내 트리플을 처음부터 끝까지 반복하여 각 트리플의 주제 및 객체의 양쪽 모두에 관련하는 메타 속성을 검색한다. 그래서, 메타 속성 rdf:type가 발견되는 각 스테이트먼트에 대해, 변환 브릿지(412)는 자원의 클래스를 식별하는 객체를 먼저 추출한다. 그런 다음, 변환 브릿지(412)는 모든 테이블의 탐색을 수행하여 추출된 클래스 명과 동일한 테이블 명을 가진 테이블을 식별한다. 그러한 테이블이 발견되면, 변환 브릿지(412)는 신규 자원의 속성을 기존 테이블의 속성(즉, 컬럼 식별)과 비교한다. 만일 이들이 일치하지 않으면, 변환 브릿지(412)는 신규 자원의 속성을 테이블 컬럼 정의에 추가하는데, 즉, 변환 브릿지는 신규 자원의 속성을 포함하도록 테이블 컬럼 정의를 확장한다. 그러한 테이블이 아무것도 발견되지 않으면, 변환 브릿지(412)는 RDF 데이터 내 자원의 클래스에 관련되는 rdfs:domain 및 rdfs:range 메타 속성을 검색하여 클래스의 속성을 결정하려 시도한다. 또한, 변환 브릿지(412)는 클래스의 객체의 속성을 검색한다. 이러한 추가의 노력 후, 그러한 속성 또는 속성들이 아무것도 발견되지 않으면, 신규 자원의 이름으로부터 테이블 이름을 따온 다음 "_UNKNOWN_CLASS"라는 스트링을 붙인 신규 테이블이 생성된다.
메타 속성 rdfs:subClassOf가 발견되면, 변환 브릿지(412)는 이 자원이 클래스이며 그래서 이 자원이 테이블로서 표현되어야 한다는 것을 알게 된다. 이러한 자원 클래스 및 그의 페어런트 클래스 둘 다에 대해, 변환 브릿지(412)는 어느 클래스든 그와 연관된 임의의 속성을 여태까지 갖고 있지를 결정하기 위해 검색한다. rdf:type를 갖고 클래스 중 어느 클래스를 객체로서 갖는 자원이 발견되면, 그 자원과 연관된 모든 속성은 다른 클래스의 속성으로서 추출된다. 만일 메타 속성 rdfs:domain 또는 rdfs:range를 속성으로서 갖고 클래스 중 어느 하나를 객체로서 갖는 속성이 발견되면, 그 속성은 추론 엔진(414)을 사용하여 해당 클래스의 속성으로서 추출된다. 만일 현재 또는 페어런트 클래스 중 어느 클래스가 rdfs:subClassOf 속성을 가진 것으로 발견되면, 그러한 서브/페어런트 클래스를 기초로 하여 이러한 단계가 반복된다. 또한, 현재 클래스에 대해, 변환 브릿지(412)는 모든 테이블을 검색하여 현재 클래스의 이름과 동일한 테이블 이름을 갖는 테이블을 식별한다. 만일 그러한 테이블이 발견되면, 변환 브릿지(412)는 신규 자원의 속성을 기존 테이블의 속성(즉, 컬럼 정의)과 비교한다. 만일 이들이 일치하지 않으면, 변환 브릿지(412)는 신규 자원의 속성을 테이블의 컬럼 정의에 추가한다. 그러나, 만일 그러한 테이블이 아무것도 발견되지 않으면, 현재 클래스 이름에 기초하여 신규 테이블이 생성되며 현재 클래스에 대해 이전에 수집된 속성이 컬럼 정의로서 사용된다. 만일 rdfs:subClassOf가 더 많이 발견되면, 신규의 현재 클래스 및 페어런트 클래스에 기초하여 이전의 단계가 반복된다.
RDF 데이터(410)를 처음부터 끝까지 반복하므로, 변환 브릿지(412)는 주어진 자원이 그와 연관된 (전술한 메타 속성에 의해 제공된 것으로서) 아무런 온톨로지 정보를 갖고 있지 않다고 결정할 수 있다. 이러한 사례에서, 변환 브릿지(412)는 그 자원에 대해 임의의 공지된 속성의 비교를 통해 자원을 분류하려 시도할 것이다. 특히 변환 브릿지(412)는 c(여기서 0 <= c <= 1)라는 신뢰 수준(confidence level)을 가지고 있을 수 있다. 예를 들면, 신뢰 수준은 워크스테이션(206)의 사용자 또는 관리자 등에 의해 제공될 수 있다. 신뢰 수준의 소스와 무관하게, 변환 브릿지(412)는 현재 사용자가 액세스하는 모든 가용 테이블 전체를 검색하고, 각 테이블마다 컬럼의 개수를 카운트하고 그 컬럼 카운트 값을 속성의 미분류된 자원의 개수, 즉 속성 카운트 값과 비교한다. 컬럼 카운트 값과 속성 카운트 값 중 더 큰 것을 n이라 하고, 더 작은 것을 m이라 하면, 둘 간의 공통적인 속성의 개수인 p가 카운트된다. 만일 p >= m*c 이면, 즉 테이블의 컬럼과 자원의 속성 간의 유사도가 충분히 높다고 표시하면, 변환 브릿지(412)는 그 테이블의 이름을 리스트에다 일시 기록한다. 모든 테이블이 이렇게 처리된 후, 리스트가 검색되며, 만일 리스트가 (충분히 유사한 테이블이 아무것도 식별되지 않았다는 것을 표시하는) 공백이면, 미분류된 자원은 어떠한 공지된 정보로 분류될 수 없다. 이러한 경우, 변환 브릿지(412)는 미분류된 자원을 신규 클래스로서 취급하고 미지의 자원의 이름의 다음에 신규 테이블을 생성한 다음 그 뒤에 스트링 "_UNKNOWN_CLASS"을 붙이고 자원을 신규 테이블에다 삽입한다. 한편, 만일 리스트가 공백이 아니면, 최대치 p를 가진 테이블이 식별된다. 그런 다음 변환 브릿지(412)는 식별된 테이블이 자원의 클래스이라고 가정하고 전술한 바와 같이 속성을 비교하며 필요하다면, 테이블 컬럼 정의를 확장한다. 이후, 자원이 그 테이블에 삽입된다. 이러한 방식에서, RDF 데이터(410)가 아무런 온톨로지 정보(메타 속성)를 갖고 있지 않고 모든 자원이 완전히 상이한 속성을 공유하고 있을 때 최악 사례의 시나리오가 발생한다. 이러한 최악 사례의 시나리오에서, 변환 브릿지(412)는 각 테이블에서 오직 하나의 레코드만을 가진 잠재적으로 많은 수의 테이블을 생성할 것이다. 그 문제를 회피하기 위해, 신뢰 수준은 미분류된 모든 자원이 현재와 같은 클래스로서 취급되고, 그래서 동일한 테이블에 삽입되도록 0으로 설정될 수 있는데, 이것은 마찬가지로 원하는 결과를 낼 수 없다. 이와 같이, 신뢰 수준은 생성되는 테이블의 개수 대 분류의 정밀도를 상쇄시켜 버린다.
일단 RDF 데이터(410)의 관계형 데이터(416)로의 변환이 완료되면, RDF 데이터(410)가 관계형 DBMS(404)에 추가될 수 있다. RDF 로더(408)와 유사한 방식으로, 관계형 DBMS(404)는 본 기술에서 공지된 바와 같이 (예를 들면, 전술한 바와 같이) 관계형 데이터를 직접 RDF 데이터(420)로 익스포팅할 수 있는 RDF 익스포터(418)와 통신할 수 있다.
도 4는 RDF DBMS(402) 및 관계형 DBMS(404)와 함께 사용될 수 있는 추가 컴포넌트를 예시한다. 예를 들면, 본 기술에서 공지된 바와 같이, 관리 컴포넌트(422)는 예시된 대로 각 사용자가 가진 특정 권한(User Permission), 유효 사용자라는 식별(User) 및 특정 사용자 역할이라는 식별(Role)을 관리하도록 제공될 수 있다. 또한 도시된 바와 같이, 복수의 쿼리 인터페이스는 사용자에게 RDF 및 관계형 데이터에 액세스하는 다양한 방법을 제안하도록 제공될 수 있다. 예를 들면, 본 기술에서 공지된 바와 같이, SPARQL 엔드포인트(424)는 소위 SPARQL RDF 쿼리 프로토콜(426)을 지원한다. 이러한 방식에서, 사용자는 SPAEQL 쿼리(428)를 사용하여 관계형 DBMS(404)에 직접 액세스할 수 있다. 이와 달리, 앞에서 언급된 통일된 API(430)는 RDF DBMS(402)에 액세스하기 위한 SPAEQL 쿼리(428) 및 SQL-유사 쿼리(432)를 지원할 뿐만 아니라 RDF DBMS(402)에 액세스하기 위한 SQL 쿼리(433)의 사용을 지원하는데 사용될 수 있다.
다시 도 3을 참조하면, 전술한 유형의 객체(310)는 컨트롤러(302)에 의해 채용되는 객체 중심의 접근 방법을 강조하기 위해 컨트롤러(302) 내부의 중앙에 예시된다. 뿐만 아니라, 컨트롤러는 객체를 사용함으로써 생기는 복수의 기능을 제공한다. 테이블 1에 예시된 바와 같이, 객체는 객체의 특성에 따라서 여러 상태를 반영하는 복수의 값을 사용할 수 있는 하나 이상의 상태 표시자를 포함한다. 상태 관리 컴포넌트(312)는 시스템(300) 내 모든 객체에 관한 그러한 상태 정보를 추적한다. 예를 들면, 아래에서 더 상세하게 기술되는 바와 같이, 개개의 객체는 서로와 다양한 관계를 가질 수 있고, 이 관계는 상태 표시자(들)에서 반영될 수 있다. 예를 들면, 특정 데이터를 나타내는 객체는 (예를 들면, "단위 가격(unit price)" 데이터 객체가 "총 구매 가격(total purchase price)" 데이터 객체를 유도하는 사례에서와 같이) 객체가 또 다른 데이터 객체를 유도하는지 또는 (예를 들면, 같은 예이긴 하지만 "총 구매 가격" 데이터 객체의 관점에서 보아) 또 다른 데이터 객체에 의해 유도되는지 여부의 표시자를 포함할 수 있다. 대안으로, 본 출원에서 사용되는 바와 같이, 위젯은 이들 자체가 서로와 다양한 관계를 가진 다른 객체(또는 위젯)의 모음일 수 있는 객체를 말한다. 구성 객체(및/또는 다른 위젯) 간의 이러한 관계는 이것으로 한정되지 않지만, "포함함(contain)", "차일드 있음(has child)", ""페어런트 있음(has parent)" 등과 같은 복수의 상태 값에서 반영될 수 있다. 뿐만 아니라, 상태 데이터는 객체의 일시적 사용 상태, 예를 들면, "사용될 수 있음(can be used)", "사용됨(is used)", 또는 "사용된 적 있음(has been used)"이라는 상태 값을 반영할 수 있다. 또한, 상태 표시자는 "숨김(hidden)" 대 "보임(visible)" 상태 값 또는 "가능함(enabled)" 대 "불가함(disabled)" 상태 값의 사례에서와 같이 특성 상 이진수일 수 있다. 되풀이 하면, 전술한 예는 그저 가능한 여러 상태 표시자 및 사용될 수 있는 값의 예시이다.
이력 관리 컴포넌트(314)는 각 객체의 개정과 관련한 정보 및 어느 개정이 가장 최근의 것인지를 추적하는 정보를 유지하도록 동작한다. 전술한 상태 표시자와 유사하게, 본 기술에서 공지된 바와 같이 개정 상태는 "현재(current)", "보관(archived)", "삭제(deleted)" 또는 "이력(historic)"을 포함할 수 있고, 이들 모두 이력 관리 컴포넌트(314)에 의해 (데이터베이스(304-308) 내) 각 객체마다 추적될 수 있다.
연결해제 컴포넌트(disconnect component)(316)는 컨트롤러(302)와의 연결성이 상실되는 이벤트에서 소정 객체와 관련하여 일어날 수 있는 충돌 상황을 관리하도록 제공된다. 아래에서 상세히 기술되는 바와 같이, 컨트롤러(302)에 의해 추적되는 객체, 특히 소프트웨어 위젯 또는 기타 이산적인 기능 컴포넌트와 관련하는 객체는 최종 사용자 애플리케이션을 구축하는데 사용될 수 있다. 이러한 목적을 위해, 애플리케이션이 소정 객체에 기초하여 구축될 때, 애플리케이션의 저작자는 연결해제의 이벤트임에도 소정 객체가 사용 가능하게 지정하도록 쿼리를 받으며, 이 정보는 연결해제 컴포넌트(316)에 의해 추적된다. 그러면 애플리케이션은 최종 사용자 애플리케이션 서버를 통해 최종 사용자에게 사용 가능해진다. 최종 사용자가 최종 사용자 애플리케이션 서버를 통해 애플리케이션에 액세스할 때, 서버는 클라이언트 처리 디바이스(예를 들면, 데스크탑 컴퓨터, 랩탑 컴퓨터, 모바일 무선 디바이스 등)와 협상하여 얼마나 많은 로컬 스토리지가 연결해제 기능에 할당될 수 있는 지를 결정하는데, 여기서 원하는 양의 로컬 스토리지는 연결 해제에도 불구하고 부분적으로는 특정 객체가 사용 가능하게 해달라고 요구하는 것에 달려 있다. 이렇게 클라이언트 처리 디바이스와 협상하는 프로세스는 동일한 애플리케이션을 사용하는 복수의 다른 최종 사용자 처리 디바이스에 대해 반복되며, 그래서 각각의 클라이언트 처리 디바이스가 동일한 로컬 스토리지를 지정된 객체를 위해 포함하도록 한다. 연결 해제가 최종 사용자의 클라이언트 처리 디바이스의 각각과 관련하여 발생할 때, 컨트롤러(302)는 공지 기술을 사용하여 이러한 상황을 검출하고, 다른 최종 사용자 클라이언트 디바이스는 이러한 사실을 연결 해제 컴포넌트(316)를 통해 통지 받는다. 또한, 연결 해제된 최종 사용자 클라이언트 디바이스는 이 디바이스가 그의 로컬 스토리지를 사용하는 모드로 절환하여 지정된 객체의 동작을 유지시키도록 한다. 예를 들면, 만일 지정 객체가 구매 주문의 위치를 추적하는 위젯이면, 그 위젯, 예를 들면, "Send a P.O. from Company A to Company B for 1,000 parts"라는 위젯의 임의의 사용은 단지 로컬 스토리지에서만 (계속하여 데이터를 생성하고, 판독하고, 갱신하고, 삭제할 수 있다는 의미로) 유지된다. 한편, 다른 최종 사용자 클라이언트 디바이스는 연결 해제된 클라이언트 디바이스와 충돌할 수도 있는 식으로 동일한 지정 객체, 예를 들어, "Send a P.O. from Company A to Company B for 2,000 parts"를 사용하는 것을 비롯하여, 계속 통상적으로 동작하게 할 수 있다. 그러나, 그렇게 함으로써, 연결 해제 컴포넌트(316)는 다른 최종 사용자 클라이언트에 의해 지정된 컴포넌트의 사용을 추적한다. 연결 해제된 클라이언트 디바이스가 컨트롤러(302)와의 연결을 재개할 때, 그의 로컬 스토리지에 저장된 데이터는 컨트롤러(302)에 업로드되고 연결 해제 컴포넌트(316)는 충돌 발생을 검출할 수 있다. 실제로, 연결 해제 컴포넌트(316)는 그의 연결 해제의 기간 동안 연결 해제된 최종 사용자 클라이언트와 관련하는 어떠한 데이터라도 "격리"한다. 충돌을 검출하면, 연결 해제 컴포넌트(316)는 그 충돌을 여러 방식으로 해결할 수 있다. 그래서, 실시예에서, 연결 해제 컴포넌트(316)는 각종 최종 사용자 클라이언트 디바이스의 계층 구조에 관한 규칙을 갖고 있을 수 있다. 예를 들면, 기업 내부에서 또는 유사하게 계층적으로 조직된 기관 내부에서, 특정한 최종 사용자 클라이언트는 직함, 지위 또는 다른 우선 순위 표시자와 연관될 수 있어서 어느 최종 사용자 클라이언트가 다른 클라이언트보다 우선 순위를 가져야 하는지를 결정하고 그래서 우선 순위가 높은 최종 사용자 클라이언트에 의해 제공되는 데이터에 따라서 충돌을 자동 해결할 수 있다. 그러한 자동적인 해결이 가능하지 않은 그러한 사례에서, 컨트롤러(302)는 충돌하는 데이터를 그 충돌을 해결할 것을 요청하는 충돌하는 최종 사용자 클라이언트 디바이스에 전송할 수 있다. 이후, 충돌하는 클라이언트가 충돌을 해결할 수 있다고 전제하면, 충돌이 해결될 수 있는 방법을 표시하는, 즉 어느 데이터를 저장할지 표시하는 데이터가 연결 해제 컴포넌트(316)로 다시 제공될 수 있다.
상태 관리 컴포넌트(312)에 의해 유지되는 상태 정보에 기초하여, 각 객체마다 "소셜" 네트워크가 구축될 수 있다. 즉, 각 객체마다 유지되는 관계 정보를 사용하면, 객체의 네트워크 표현과 이들의 서로와의 관계를 생성하는 것이 가능하다. 예를 들면, "고용인 이름(employee first name)" 객체 및 "고용인 성씨(employee last name)" 객체는 각기 다른 객체와의 그 자체의 연결 등을 가질 수 있는 "고용인 성명(employee name)"과 관련하는 "에 속함(belong to)" 상태를 반영할 수 있다. 그러한 네트워크는 네트워크 컴포넌트(318)에 의해 공지의 네트워크 발견 기술을 사용하여, 예를 들면, (아래에서 기술되는 자동화된 데이터 마이닝 컴포넌트(332)를 구현하는데 사용되는) 데이터 마이닝 서버(222)에 의해 제공되는 바와 같은 공지의 데이터 마이닝 기술(예를 들면, 근본 원인 분석, 분류, 클러스터링, 연관 규칙 발견 및/또는 회귀 분석)을 사용하여 도출될 수 있다. 뿐만 아니라, 도시된 바와 같이 (네트워크 컴포넌트(318)에 의해 객체 소셜 네트워크를 생성하는데 사용되는 근본 원인 분석과 상충되지 않는) 근본 원인 분석 컴포넌트(320)가 제공될 수 있다. 일단 다시 신경망 분석 또는 회귀 분석과 같은 공지의 기술을 사용하면, (네트워크 컴포넌트(318)에 의해 제공된 것으로서) 객체 소셜 네트워크 내부의 소위 근본 원인은 소정 객체에 관련하여 식별될 수 있다. 정확히 말해서, 근본 원인은 그러한 소셜 네트워크가 항시 바로 식별될 수 없고, 그 대신에, 때로는 잠재적 인과 관계인 상관 관계가 식별된다는 것이다. 즉, 비교적 단순하고 분명한 소셜 네트워크에 대해, 근본 원인은 틀림없이 식별될 수 있다. 그러나, 복잡하고/하거나 애매한 소셜 네트워크의 상관 관계는 인간에 의한 추가 분석을 통해 식별될 수 있다. 예를 들면, "고용인 효율성(employ efficiency)"이라는 객체와 관련하는 복수의 객체는 "고용인 나이(employee age)", "고용인 숙련도(employee skill level)", "요일(day of the week)", "공장 온도(factory temperature)" 등을 포함할 수 있다. 신경망 분석의 사례에서, 이러한 객체를 기본으로 하는 데이터는 "고용인 효율" 객체의 값을 예측할 때 효과적으로 가장 중요한 인자를 밝혀주는 네트워크 기능을 알려주는 공지의 기술을 사용하여 분석될 수 있다. 그러한 근본 원인의 식별은 이전에 존재하지 않았던 객체들 간의 연관성을 생성하는데 사용되거나, 심지어 이전에 정의된 연관성을 삭제 하는데도 사용될 수 있다.
앞에서 언급한 바와 같이, 시스템(200, 300)에 저장된 데이터와 함께 사용하기 위한 애플리케이션은 복수의 계층적 사용자 인터페이스를 사용하여 개발될 수 있다. 예시된 예에서, 계층적 사용자 인터페이스는 제 1 메이저 개발자 인터페이스(322), 제 2 메이저 개발자 인터페이스(324) 및 마이너 개발자 인터페이스(326)를 포함한다. 모든 개발자 인터페이스(322-326)는 선택사양이며 이들의 임의의 조합이 제공될 수 있다는 것을 주목하여야 한다. 일반적으로, 개발자 인터페이스(322-326)는 각기 두 가지의 사용 패턴 또는 규칙, 즉 독립적인 플랫폼으로서 상이한 사용자에 의해 상이한 목적을 위해 개별적으로 사용될 수 있는 패턴 또는 규칙, 또는 하나의 통합된 시스템으로서 작용하는 것이라면, 관련 플랫폼으로서 다른 플랫폼(들)과 협업하는 패턴 또는 규칙을 갖는다. 실시예에서, 제 1 메이저 개발자 인터페이스(322), 제 2 메이저 개발자 인터페이스(324) 및 마이너 개발자 인터페이스(326)는 소프트웨어 개발 시 연속적으로 더 높은 추상 계층으로서 기능하며, 추상의 레벨이 높을수록 애플리케이션 개발 동안 점차 더 많은 프로그래밍 세부사항이 감추어지기 때문에 사용하기가 더욱 쉬워진다.
그러므로, 실시예에서, 제 1 메이저 개발자 인터페이스(322)는 본 기술에서 공지된 바와 같이 Apache Eclipse와 같은 통합 개발 환경(integrated development environment, IDE)이다. 제 1 메이저 개발자 인터페이스(322)를 사용하면, 비교적 숙련된 프로그래머는 이것을 사용하여 모든 타입의 소프트웨어를 개발할 수 있다. 제 2 메이저 개발자 인터페이스(324)는 메이저 개발자 인터페이스(322)를 구현하는데 사용되는 동일한 애플리케이션을 포함하는, 중간의 추상 레벨에서 기능적인 GUI 애플리케이션을 완전하게 구축하는데 사용될 수 있는, 복수의 GUI 애플리케이션 빌더(application builder) 중 임의의 빌더를 사용하여 구현될 수 있다. 마이너 개발자 인터페이스(326)는, 본 기술에서 공지된 바와 같이, 가상적으로 아무런 소프트웨어 개발 기술이 없는 개개인이 높은 레벨의 기능 빌딩 블록에 기초한 애플리케이션을 구성하게 해주는데 사용될 수 있는 Zoho Creator와 같은 복수의 그래픽 웹 애플리케이션 빌더 중 임의의 빌더를 포함할 수 있다. 그래서, 제 1 메이저 개발자 인터페이스(322)에 의해 제공되는 낮은 추상 레벨은 그의 사용자가 특정 프로그래밍 언어 특징을 다루는 점에서 명백하며, 반면 제 2 메이저 개발자 인터페이스(324)에서 사용되는 기능은 프로그래밍 언어 독립적이며, 마이너 개발자 인터페이스(326) 내부에는 아무런 프로그래밍 특정 용어 또는 특징이 전혀 존재하지 않는다.
동작 시, 본 기술에서 공지된 바와 같이, 제 1 메이저 개발자 인터페이스(322)는 그의 사용자가 소프트웨어 코드를 생성하고 수정하게 해주는 복수의 모드를 제공한다. 예를 들면, 일부의 IDE는 정의되고 선택 가능한 작업을 갖추고 있다. 주어진 작업을 선택하면, 코드 템플릿이 또한 선택되어 선택된 템플릿에 기초하여 IDE가 자동으로 발생될 수 있다. 대안으로, 사용자가 일련의 드롭다운 메뉴를 통해 동작을 정의할 수 있고, 이 메뉴는 사용 가능한 동작을 보여주기 위해 지속적으로 갱신된다. 사용자가 다양한 동작을 선택함에 따라, 코드가 자동으로 생성된다. 또 다른 실시예에서, 사용자에 의해 제공되는 자연어 텍스트를 분석하여 코드가 자동으로 발생되도록 분석될 수 있는 중간 커맨드 스테이트먼트를 제공할 수 있는 자연어 처리 엔진이 사용될 수 있다. 모든 사례에서, 자동 생성된 코드는 사용자에 의해 원하는 대로 수정되어 최종적으로 원하는 코드를 제공할 수 있다.
제 2 메이저 개발자 인터페이스(324)는 본 기술에서 공지된 바와 같이, 다양한 사용자 인터페이스 컨트롤이 툴박스에서 제공되는 "드래그 앤 드롭" 그래픽 사용자 인터페이스를 제공한다. 다양한 사용 가능한 컨트롤은 디자인 영역으로 드래그되어 선택된 컨트롤의 인스턴스를 생성할 수 있고, 그 인스턴스는 차후 선택되어 소정의 동작을 발휘하도록 구성될 수 있다. 유사하게, 임의의 원하는 이벤트 정의, 흐름 제어 또는 액션이 선택된 컨트롤 인스턴스에 추가될 수 있다. 그러한 컨트롤을 함께 조합함으로써, 위젯 또는 많은 완전한 애플리케이션이 제작되어 원하는 사용자 인터페이스 기능을 구현할 수 있다. 일단 전체적으로 구성되면, 결과의 위젯 또는 애플리케이션이 발행될 수 있다.
제 1 및 제 2 메이저 개발자 툴(322, 324)에 의해 생성된 임의의 코드 및/또는 위젯은 컨트롤러(302)에 의해 객체로서 저장될 수 있다는 것을 주목하여야 한다.
제 2 메이저 개발자 인터페이스(324)와 유사하게, 마이너 개발자 인터페이스(326)도 또한 "드래그 앤 드롭" GUI를 기초로 한다. 그러나, 마이너 개발자 인터페이스(326)에 제공되는 툴 박스는 디자인 영역에서 선택되고 조합될 수 있는 발행된 위젯 또는 애플리케이션을 포함할 수 있다. 일단 완전한 애플리케이션이 정의되면, 제 2 메이저 개발자 인터페이스(326)는 공지 기술을 사용하여 개개의 위젯의 동작 및 위젯 각각의 서로와의 관계를 예를 들어, (Qt 메타 언어(Qt Meta Language, QML)와 같은) 사용자 인터페이스 마크업 언어 및/또는 (동작 마크업 언어(Behavior Markup Language, BML)와 같은) 기능적 마크업 언어를 사용하여 서술하는 애플리케이션 메타파일을 생성한다. 그런 다음 결과의 애플리케이션 메타파일은 소스 및 실행 코드를 생성하는 코드 생성기(328)에 전달된다. 그러한 코드 생성기의 예는 Eclipse Foundation에서 구입 가능한 Acceleo 오픈-소스 코드 생성기이다. 결과의 소스 코드 및 실행 코드는 컨트롤러(302)에 의해 객체로서 저장될 수 있으며, 실행 코드(330)는 적합한 애플리케이션 서버 등을 통해 최종 사용자가 쓸 수 있게 만들어질 수 있다.
앞에서 언급한 바와 같이, 인터페이스(322-326)는 또한 각기 협업 방식으로 사용될 수 있다. 예를 들면, 제 1 메이저 개발자 인터페이스(322)는 호환 가능한 특정 프로그래밍 언어를 사용하는, 즉 제 2 메이저 개발자 인터페이스(324)에 의해 사용하기 위한 프로그래밍 언어 엔티티 및 로직 랩퍼(logic wrapper)를 구축하는 개발 구성체에 주력하기 위해 사용될 수 있다. 예를 들면, 제 1 메이저 개발자 인터페이스(322)를 사용하여, 개발자는 자바 GUI 컴포넌트, 즉 소위 텍스트 입력 박스를 특정 객체로 감쌀 수 있고 그 객체를 (컨트롤러(302)를 통해) 제 2 메이저 개발자 인터페이스(324)에서 사용 가능하게 만들어 줄 수 있으며, 그럼으로써 제 2 메이저 개발자 인터페이스(324)는 이 객체를 나중에 사용하기 위해 툴박스에 추가할 수 있게 된다. 이러한 방식에서, 제 1 메이저 개발자 인터페이스(322)는 제 2 메이저 개발자 인터페이스(324)를 위한 "플러그인(plugin)"처럼 비추어질 수 있고, 그럼으로써 제 2 메이저 개발자 인터페이스의 기능을 확장할 수 있게 된다.
그 결과, 제 2 메이저 개발자 인터페이스(324)는 개발할 수 있는 형태의 애플리케이션에 주력하는 점에서, 즉 마이너 개발자 인터페이스(326)에 의해 사용하기 위한 GUI 컴포넌트 및 로직 랩퍼를 구축하는 점에서 협업하여 사용될 수 있다. 예를 들면, 제 2 메이저 개발자 인터페이스(324)를 사용하여, 개발자는 "서밋(Submit)" 버튼을 그 버튼 상에서 한번 클릭할 수 있게 하는 로직을 포함하도록 감싸서 현재 스크린 상의 모든 데이터가 모여 데이터베이스(304-306)에 제출되게 할 수 있고, 이 객체가 마이너 개발자 인터페이스(326)에 공급할 수 있게 하며, 그럼으로써 마이너 개발자 인터페이스(326)가 이 객체를 나중에 사용하기 위해 그의 툴박스에 추가할 수 있게 한다. 되풀이 하자면, 이러한 방식으로, 제 2 메이저 개발자 인터페이스(324)는 마이너 개발자 인터페이스(326)를 위한 "플러그인"으로서 비추어질 수 있고, 그럼으로써 마이너 개발자 인터페이스의 기능을 확장할 수 있게 된다.
다시 한번 도 3을 참조하면, 시스템(300)은 저장된 데이터와 상호작용하는 사용자의 능력을 향상시키는 다양한 기능을 포함한다. 일 실시예에서, 자동화된 데이터 마이닝 컴포넌트(332)는 (컨트롤러(302)에 의해 중재되는 것으로서) 데이터베이스(304-306)에 저장된 데이터에 대해 적용될 수 있는 각종의 공지된 데이터 마이닝 알고리즘을 구현한다. 특정 실시예에서, 자동화된 데이터 마이닝 컴포넌트(332)는 주어진 데이터 마이닝 작업을 위해 데이터를 가장 먼저 처리하도록, 그리고 데이터 마이닝 작업을 위한 최선의 데이터 마이닝 알고리즘을 선택하도록 동작한다.
본 기술에서 공지된 바와 같이, 데이터 마이닝은 분석될 데이터에 대해 전처리가 수행될 때 최선의 결과를 발생한다. 그러나, 그러한 전처리는 분석될 데이터의 특성에 크게 종속될 수 있다. 자동화된 마이닝 인터페이스(332)는 최선의 데이터 전처리를 자동 선택하기 위해 훈련에 종사할 수 있다. 이러한 목적을 위하여, 샘플 데이터 세트가 먼저 수집되고 그의 통계적 특성이 추출된다. 그러한 통계적 특성은, 예를 들면, 평균, 모드, 중앙 값, 범위 및 표준 편차 등과 같은 수학적 특징을 포함할 수 있다. 통계적 특징은 또한 속성의 개수, 각 속성의 유형(예를 들면, 공칭 대 수치), 데이터 세트 크기 등과 같은 간단한 인자를 포함할 수 있다. 그래서 데이터 세트를 특징화하면, 복수개, 즉 N개의 공지된 데이터 전처리 알고리즘이 데이터 세트에 대해 구동되어 각 전처리 알고리즘마다 전처리된 결과 데이터가 개별적으로 저장된다. 이후, 복수개, 즉 M개의 공지된 데이터 마이닝 알고리즘이 각각의 전처리된 데이터 세트에 대해 구동되고 그럼으로써 NxM 데이터 마이닝 결과 집합이 생성될 수 있다. 그런 다음 데이터 마이닝 결과 집합은 각기 공지 기술을 사용하여 평가되어 해당 전처리 및 데이터 마이닝 알고리즘 조합의 결과적인 정밀도 및 정확도가 평가된다. 가능하다면, 각 데이터를 전처리하는 알고리즘의 파라미터가 가변될 수 있게 하여 전처리 알고리즘과 파라미터는 물론이고 데이터 마이닝 알고리즘과의 최선의 조합이 식별되도록 한다. 일단 식별되면, 전처리 알고리즘/파라미터/데이터 마이닝 알고리즘의 최선의 조합은 클래스 속성으로서 지정될 수 있고 데이터 세트의 통계적 특성은 입력 속성으로서 지정될 수 있다. 이러한 클래스/입력 속성은 이후 실질적으로 일치하는 통계적 특징을 가진 후속 데이터 세트가 동일한 방식으로 전처리될 수 있도록 전처리 선택 학습 모델을 증강시키는데 사용된다.
또한, 주어진 데이터 마이닝 작업에 소정 데이터 마이닝 알고리즘이 다른 알고리즘보다 우수한 사례가 있을 수 있다. 최선의 전처리 알고리즘을 선택하도록 훈련하기 위한 전술한 바와 유사한 방식으로, 자동화된 데이터 마이닝 컴포넌트(332)는 수행될 특정 데이터 마이닝 작업에 기초하여 최선의 데이터 마이닝 기술을 자동 선택하기 위해 훈련에 또한 종사할 수 있다. 이러한 목적을 위해, 샘플 데이터 세트가 다시 한번 수집되고 그의 통계적 특성이 추출된다. 그래서 데이터 세트를 특징화하면, 복수개, 즉 N개의 공지된 데이터 전처리 알고리즘이 데이터 세트에 대해 구동되어 각 데이터 마이닝 알고리즘마다 결과의 데이터 세트가 개별적으로 저장될 수 있다. 그런 다음 각각의 데이터 마이닝 결과 집합은 공지 기술을 사용하여 평가되어 각 데이터 마이닝 알고리즘의 결과적인 정밀도 및 정확도가 평가된다. 가능하다면, 각 데이터 마이닝 알고리즘의 파라미터가 가변될 수 있게 하여 데이터 마이닝 알고리즘과 파라미터와의 최선의 조합이 식별될 수 있게 한다. 일단 식별되면, 데이터 마이닝 알고리즘과 파라미터의 최선의 조합은 클래스 속성으로서 지정될 수 있고 데이터 세트의 통계적 특징은 입력 속성으로서 지정될 수 있다. 이러한 클래스/입력 속성은 이후 주어진 데이터 마이닝 작업을 받기 위해 사용되는 그리고 실질적으로 일치하는 통계적 특성을 갖는 후속 데이터 세트가 동일한 방식으로 처리될 수 있도록 데이터 마이닝 선택 학습 모델을 증강시키는데 사용된다.
실시예에서, 최선의 전처리 및/또는 데이터 마이닝 알고리즘의 이익은 또 다른 프로세스에 의해 취득될 수 있다. 이 프로세스에서, 전처리되는 또는 주어진 데이터 마이닝 작업을 받게 되는 데이터 세트는 전술한 바와 같이 다시 한번 통계적으로 특징화될 수 있다. 결과적인 통계적 특징에 기초하여, 전술한 바와 같이, k개의 최선의 전처리 또는 데이터 마이닝 알고리즘이 데이터 세트의 통계적 특징과 입력 속성 간의 유사도 정도에 기초하여 선택된다. 동시에, 입력 데이터 세트는 본 기술에서 공지된 바와 같이, 데이터 축소를 받을 수 있고, 그래서 모든 사용 가능한 전처리 또는 데이터 마이닝 알고리즘이 축소된 입력 데이터 세트에 대해 적용되고 n개의 최선의 전처리 또는 데이터 마이닝 알고리즘이 선택될 수 있다. 또 다른 병렬 방법에서, m개의 최선의 전처리 또는 데이터 마이닝 알고리즘을 결정하기 위해 머신 학습 모델이 채용될 수 있다. 이후, k, m 및 n개의 상이한 전처리 또는 데이터 마이닝 알고리즘의 결과가 비교되어 h개의 최선의 전처리 또는 데이터 마이닝 알고리즘이 선택된다. 그런 다음 이러한 h개의 전처리 또는 데이터 마이닝 알고리즘은 입력 데이터 세트에 대해 구동되고 결과가 함께 평균된다. 그러면 결과의 평균 출력은 전처리 또는 데이터 마이닝 알고리즘의 가능한 최선의 조합을 나타내야 한다.
다른 데이터 마이닝 실시예에서, 선택사양으로 자연어 처리(a natural language processing) 엔진(336)과 함께 동작하는 질문 유발(question-driven) 데이터 마이닝 컴포넌트(334)가 제공된다. 질문 유발 데이터 마이닝 컴포넌트(334)는 데이터 마이닝 경험이 거의 또는 전혀 없는 사용자에게 데이터 마이닝 작업을 수행하는 메커니즘을 제공한다. 최종 사용자는 데이터 마이닝 요청을 컨트롤러(302)에 제공할 수 있고, 그러면 컨트롤러(302)는 이 요청을 질문 유발 데이터 마이닝 컴포넌트(334)에게 직접 또는 이 요청이 자연어 텍스트로 표현되어 있는 경우에는 NLP 엔진(336)을 통해 서밋하여 질문 유발 데이터 마이닝 컴포넌트(334)에 의해 필요한 데이터 세트를 분석하는데 사용될 수 있는 명령어로 변환할 수 있다.
특히, 질문 유발 데이터 마이닝 컴포넌트(334)는 자연어로 표현된 사용자의 질문을 예를 들면, 그러한 특정 목적을 위한 사용자 인터페이스를 통해 수신한다. 이렇게 복잡한 질문(예를 들면, "왜(why)" 또는 "어떻게(how)" 형태로 표현되는 질문)이 수신될 때, 질문 유발 데이터 마이닝 컴포넌트(334)는 (전술한 바와 같이) NLP 엔진(336)에 의한 처리를 불러온다. NLP 엔진(336)이 복잡하게 형성된 질문을 다룰 수 없는 이벤트에서, NLP 엔진은 질문을 자동화된 데이터 마이닝 컴포넌트(332)에 의해 구현될 수 있는 데이터 마이닝 작업으로 분석한다. NLP 엔진 컴포넌트(336)는 질문 유발 데이터 마이닝 컴포넌트(334)에게 데이터 마이닝 동작이 필요하다고 알려주며, 이로 인해 질문 유발 데이터 마이닝 컴포넌트(334)는 데이터 마이닝 작업을 (예를 들면, 아래에서 기술되고 첨부의 부록에서 언급되는 API 프로토콜에 따라서 표현되는 요청의 형태로) 개시하는데 필요한 파라미터를 생성하게 된다. 그러면 이러한 파라미터는 자동화된 데이터 마이닝 컴포넌트(332)에 의해 수행되는 것처럼 데이터 마이닝 작업을 개시하는데 사용되고, 그 결과는 질문 유발 데이터 마이닝 컴포넌트(334)에 반환된다. 결과를 사용자에게 제공하기 위하여, 질문 유발 데이터 마이닝 컴포넌트(334)는 결과를 NLP 엔진 컴포넌트(336)에 전달한다.
실시예에서, 앞에서 언급한 바와 같이, 사용 가능한 데이터 마이닝 동작을 제공하기 위하여, 자동화된 데이터 마이닝 컴포넌트(332)는 API 방법을 노출하여 특정한 유형의 데이터 마이닝 동작의 실행을 요청하는 외부의 요청을 HTTP(Hypertext Transfer Protocol) POST 요청의 포맷으로 수신할 수 있다. 요청에 응답하여, API는 요청된 동작을 다른 HTTP POST 포맷으로 완료하는데 추산되는 시간을 반환할 수 있다. 본 기술에서 공지된 바와 같이 그리고 앞에서 언급한 바와 같이, 이것으로 한정되지 않지만, 근본 원인 분석, 분류, 클러스터링, 연관 룰 발견, 회귀 분석 등을 비롯한 다양한 여러 유형의 데이터 마이닝 작업 중 임의의 작업이 제공될 수 있다.
요약하면, API에 의한 처리는 다음과 같이 기술될 수 있다.
1. API 방법은 HTTP POST 요청을 수신한다.
2. API 방법은 요청 데이터를 추출하고 데이터를 분석한다.
3. API 방법은 요청 데이터를 검증한다. 만일 요청이 유효하면, 처리는 단계 5로 이어진다.
4. 만일 요청이 무효이면, API 방법은 오류 정보를 담은 HTTP POST 응답을 반환하며 처리는 끝난다.
5. 요청이 유효할 때, API 방법은 선택된 데이터에 기초하여 요청을 실행하는데 필요한 시간의 추산치를 계산하는 시간 추산 모듈을 호출한다.
6. API 방법은 추산 시간을 담은 HTTP POST 응답을 반환한다.
7. 요청에 담긴 정보에 기초하여, API 방법은 컨트롤러를 통해 관련 객체를 식별하고 그럼으로써 (전술한 바와 같이) 필요한 데이터를 식별하고, 데이터 전처리 단계를 자동으로 적용하고, 최선의 알고리즘을 선택하며, 데이터 마이닝 프로세스를 구동한다.
8. 프로세스가 완료될 때, API 방법은 결과를 요청자에게 반환한다.
바람직한 본 실시예에서, HTTP 기반의 인터페이스를 통해 전송된 메시지는 JSON 표준 포맷을 사용한다. API 방법에 관한 추가적인 세부사항은 이하의 부록에서 제공된다.
앞에서 요약한 바와 같이, 자동화된 데이터 마이닝 컴포넌트(332)에 의해 노출된 API는 각 POST 요청을 요구된 헤더 및 부록에서 정의되는 JSON 방식에 대비하여 검증하며, 임의의 결과적인 오류 메시지는 POST 응답에 실어 반환된다. 실시예에서, 자동화된 데이터 마이닝 컴포넌트(332)는 데이터 세트 업로드를 (csv 또는 arff 파일 포맷과 같은) 미리 정의된 포맷으로 받아들이고 각각의 업로드된 데이터 세트를 고유한 식별로 제공한다. 또한, 자동화된 데이터 마이닝 컴포넌트(332)는 본 기술에서 공지된 바와 같이, 최종 사용자에게 하나 이상의 데이터 세트 익스포터 헬퍼 툴(dataset exporter helper tool)을 제공하여 사용자를 도와서 사용자의 기존 데이터베이스로부터의 데이터를 허용 가능한 포맷으로 익스포트할 수 있다.
자동화된 데이터 마이닝 컴포넌트(332)와 관련하여 앞에서 기술한 바와 같이, 질문 유발 데이터 마이닝 컴포넌트(334)는 또한 최선의 데이터 전처리 및/또는 데이터 마이닝 알고리즘을 자동 선택할 수 있다. 요청된 데이터 마이닝 작업에 필요한 시간 추산치를 제공하기 위하여, 질문 유발 데이터 마이닝 컴포넌트(334)는 자동화된 데이터 마이닝 컴포넌트(332)에 의해 노출된 API를 통해 시간 추산치를 취득할 수 있다. 그러한 추산치는 크기, 선택된 데이터 준비 방법, 선택된 훈련 방식 등을 포함하는 입력 데이터의 특징 및 이 작업을 위해 현재 할당된 컴퓨팅 자원에 기초하여 계산될 수 있다. 이 계산은 먼저 일반적인 데이터 마이닝 작업 특징을 가장 잘 반영하기에 충분히 큰 크기이고 충분히 다양한 데이터 특징을 가진 학습 기반 데이터 세트에 대비하여 머신 학습 알고리즘을 사용함으로써 이루어진다. 이러한 데이터 세트를 학습한 후, 질문 유발 데이터 마이닝 컴포넌트(334)는 시간 추산을 위해 사용될 수 있는 모델을 개발할 것이다. 시간 추산치 학습 모델을 개선하는 일은 초기의 훈련 및 배치에 뒤따르는 모든 사용자 입력의 수집을 통해 제공될 수 있으며, 주기적으로 머신 학습 알고리즘을 반환함으로써 모델의 정밀도가 지속적으로 증가될 수 있다.
앞에서 언급한 바와 같이, 질문 유발 데이터 마이닝 컴포넌트(334)는 자연어로 표현된 요청을 받아들일 수 있고, 이 요청은 NLP 엔진(336)에 의해 추가 처리될 수 있고, NLP 엔진(336)은 아래에서 상세하게 기술되는 바와 같이, 데이터베이스와의 자연어 인터페이스(Natural Language Interface To Database, NLIDB) 및 자연어 애플리케이션 생성(Natural Language Application Generation, NLAG)이라는 두 가지 주요 기능을 제안한다.
NLIDB 기능은 최종 사용자가 쿼리를 자연어(즉, 인간이 이해할 수 있는 언어)로 서밋하게 한다. 예를 들면, 그러한 쿼리는 종종 "무엇(what)", "누가(who)", "어떻게(how)" 등, 예를 들면, "어느 상태가 우리 제품의 최고 매출 상태인가?(Which state has the highest sales of our products?)"와 "누가 작년에 $10,000.00 이상 벌었나?(Who earned more than $10,000.00 last year?)"와 같은 표현을 포함한다. NLP 엔진(336)의 NLIDB 모듈은 자연어 질문을 분석하고 이를 SQL 등과 같은 많은 기술적 쿼리 언어 또는 바람직하게는 앞에서 기술한 통일된 SQL 유사 API로 변환하며, 이는 결국 기본 데이터 엔진의 네이티브 쿼리 API로 변환된다.
NLIDB 모듈은 "반전" 접근 방법을 사용하여 자연어 쿼리를 분석한다. 즉, NLIDB 모듈은 그러한 기술이 대개의 경우 부정확한 결과를 가져오므로 통계적 파서를 사용하여 사용자의 입력 쿼리를 분석하지 않는다. 그 대신, NLIDB 모듈 시스템은 약간의 전처리 후 "지원되는" 모든 질문을 포함하고 이 질문의 대응하는 답변을 포함하는 미리 정의된 질문/답변 테이블(question/answer table, Q&A table)에다 사용자의 입력을 간단하게 매핑한다. 실행될 때, 이러한 Q&A 테이블에 포함된 "답변"은 연관된 질문에 답변하는 데이터를 취득하는데 사용될 수 있는 실제로 쿼리이다. Q&A 테이블은 사용 가능한 방식 및 데이터베이스에 저장된 데이터에 기초하여 만들어 진다. 자연어 문법 규칙을 적용함으로써 NLIDB 모듈은 동일 질문의 변형 형태를 비롯한 분명한 답변을 갖는 가능한 모든 질문을 발생한다. 이러한 전략은 (이러한 방대한 리스트를 저장하는데 필요한) 비교적 저렴한 저장 용량을 희생 삼아 분석 정확도 및 실시간 성능을 취득한다. 분석은 스트링을 일치시키는 것만큼 매우 간단하기 때문에, 수행이 매우 빠르고 실시간 응답이 성취된다.
만일 사용자의 입력이 지원된 질문 중 어느 것과도 일치하지 않으면, 본 기술에서 공지된 바와 같이, 통계 파싱(statistical parsing, SP) 프로세스가 최선으로 답변을 찾는데 사용된다. SP 프로세스는 먼저 질문에서 제외 단어(stop word)를 제거하고 오직 핵심 단어만을 남긴다. SP 프로세스는 핵심단어를 사용하여 데이터베이스에서 텍스트 검색을 수행하고 관련 데이터 객체를 반환한다. 그러나, 이 프로세스는 올바른 답변이 찾아질 것이라고 보장하지 않는다. 이 프로세스는 질문에 정확한 또는 관련된 답변을 구하려는 최선의 노력을 하며, 이해하기 어려운 총체적으로 관계없는 답변 또는 정형화되지 않은 데이터를 반환할 수도 있다. SP 프로세스가 수행된 후, 사용자는 잠재적인 답변의 리스트 및 요청을 제공받아 그 답변을 등급 분류, 즉 능동적 학습에 종사한다. 만일 사용자가 반환된 결과에서 올바른 답변을 발견하면, 사용자는 그 답변에 좋은 등급, 즉 동의한다는 표시처럼 간단할 수도 있는 어떤 등급을 주도록 요청한다. 그렇지 않고 사용자가 어느 답변에도 만족하지 않으면, 사용자는 형편없는 등급, 즉 불만을 표시하는 것처럼 간단할 수도 있는 어떤 등급을 주도록 요청한다. 만일 사용자가 답변을 등급 분류하지 않으면, 등급은 "중립"이라 간주된다. 한 사람도 빠짐 없이 사용자 입력이 기록된다. 지원된 질문에 일치하지 않고 그래서 SP에 의해 처리되는 질문에 대해서는 대응하는 레코드를 보관소에 저장하도록 설계된다. 전문가 팀은 이러한 레코드를 분석할 수 있으며, 가장 흔히 잘못 처리된 입력에 대해 질문을 지원된 질문에 추가하고 Q&A 테이블을 갱신할 수 있다.
전술한 바와 같이, 하나 이상의 데이터베이스에 저장된 데이터에 기초한 답변 가능한 모든 질문은 기본 데이터베이스 스키마에 관한 지식을 통해 식별될 수 있다. 그런 다음 스키마 필드는 최종 사용자에 의해 정의된다. 비록 스키마 필드가 보통 의미있는 단어로 정의될지라도, 비자연어 단어/숫자, 코드 또는 무의미한 문자와 같은 심볼이 사용되지 않을 것이라고 보장하지 않는다. 비자연어 심볼을 가진 스키마 필드에 대해, NLIDB 모듈은 먼저 데이터 타입으로부터 스키마 필드의 시맨틱 의미를 정의하려 시도한다. 만일 데이터 타입이 사용 가능하지 않거나 요구를 충족하지 않으면, NLIDB 모듈은 사용자에게 그의 시맨틱 의미를 정의하라고 요구한다. 예를 들면, 이것은 전술한 바와 같이 마이너 개발자 인터페이스(326)를 통해 이루어질 수도 있다.
해석할 수 있는 스키마 필드 이름에 대해, NLIDB 모듈은 단어를 온톨로지 정의, 즉 기본 온톨로지에서 사용되는 구조체의 디스크립션에서 찾는다. 일단 의미가 찾아지면, NLIDB 모듈은 사용자의 쿼리에 대한 대안으로서 사용될 수 있는 에일리어스(alias)의 리스트를 확장하기 시작한다. 이러한 확장은 복수의 여러 방법으로 수행될 수 있다. 하나의 방법에 따르면, 상위 레벨 온톨로지 정의가 에일리어스로서 사용된다. 예를 들면, "고용인"은 "개인(person)"과 동일한 것이다. 다른 방법에 따르면, 알고 있는 동의어를 식별하기 위해 유의어 사전이 사용될 수 있다. 반대로, 또 다른 방법에 따르면, 반의어의 사전을 사용하여 주어진 단어의 반의어가 식별될 수 있다. 이런 방법은 동사에 대해 특히 유용한데, 그 이유는 동사가 결성어(privative)와 그의 반의어의 조합으로서 사용될 수 있기 때문인데, 예를 들면, "broken"과 "non-functioning"이 동일한 의미라고 말할 수 있다. 이러한 방법들의 조합을 사용하여, NLIDB 모듈은 스키마에서 특정 단어에 대한 에일리어스 리스트를 구축할 수 있다. 뿐만 아니라, 전술한 기술을 사용하여 에일리어스를 식별하는데 사용 가능한 단어의 개수를 확장하기 위해, 약어의 의미를 설명해 놓는 것이 바람직할 수 있다. 예를 들면, "P.O."는 많은 것을 의미할 수 있지만, 구매 부서 애플리케이션에서는 "구매 주문(Purchase Order)"을 의미할 것 같고 이러한 문맥을 포함하는 약어 정의 리스트에서는 그렇게 정의될 것이다. 만일 문맥이 충분하지 않으면, 사용자에게 사용 가능한 옵션의 리스트를 제공함으로써 명확하게 해줄 수 있다.
스키마 단어 및 그의 에일리어스가 발견된 후, NLIDB 모듈은 스키마 단어 및 그의 관계에 기초하여 잠재적 질문을 조립하기 시작한다. 이러한 목적을 위해, NLIDB 모듈은 온톨로지 정보 및 자연어 신택스를 사용한다. 단어의 온톨로지 정보는 직접 질문 단어에 매핑될 수 있다. 예를 들면, 만일 "DOB"와 같은 스키마 단어가 "시간(time)"이라는 타입을 가지면, "언제??(When??)"라는 질문이 생성되어야 한다. 서로의 스키마 필드의 관계는 질문을 생성하기 위한 또 다른 중요한 토대이다. 예를 들면, 만일 고용인 데이터 객체가 "name" 필드 및 "DOB" 필드를 포함하면, 질문 "John Doe의 생일이 무슨 요일이야?(What is the date of birth of John Doe?" 또는 "언제 John Doe가 언제 태어났어?(When was John Doe born?)"가 생성될 수 있다. 또한, 필드 이름을 질문 단어에 매핑시키는 것 이외에, NLIDB 모듈은 또한 필드 이름을 "내게 보여줘(Show me)", "내가 알아야 해(I need to know)", "내게 줘(Give me)" 등과 같은 명령 단어에 매핑한다. 이러한 매핑에 따라 질문 단어로 시작하지 않는 "질문"이 생성된다.
질문이 생성된 후, 그에 따라서 질문의 대응하는 쿼리가 생성된다. 예를 들면, "What is the date of birth of John Doe"라는 질문은 대응하는 SQL 쿼리 " SELECT DOB FROM Employee WHERE Name = 'John Doe'"를 갖는다. 이러한 쿼리는 'answer'로서 제공되며 자연어 질문과 함께 Q&A 테이블에 저장된다.
사용 시, NLP 엔진(336)은 최종 사용자가 예를 들면, 텍스트 박스를 통해 질문을 입력하도록 한다. 무슨 질문이 사용 가능하지를 제안하는 자동완성 기능(autocompletion)이 사용될 수 있다. 만일 사용자가 이전에 타이핑된 단어를 포함하여 Q&A 테이블에 있는 임의의 사용 가능한 질문에 일치하지 않은 단어를 타이핑하여 입력하면, 자동완성 기능은 공백 리스트를 보여주어 사용자에게 잠재적으로 지원되지 않는 질문이 입력되었음을 사용자에게 알려줄 것이다. 사용자의 입력은 스펠 체크 서비스를 사용하여 한자 한자 체크된다. 만일 오타가 있는 단어가 식별되면, 단어는 몇 가지 방식으로, 예를 들면, 단어에 색을 입혀 보여줌으로써 하이라이트될 수 있다. 사용자는 제안된 단어 중의 단어를 사용함으로써 단어를 수정할 수 있거나 단어를 단독으로 남길 수 있다. 만일 사용자가 공식의 자연어 신택스(예를 들면, 영어 문법)를 따르지 않는 질문을 타이핑하면, 사용자는 입력하기를 완료하도록 허용될 수 있고 그런 다음 사용자 입력과 유사하되 구문론적으로 올바른 제안된 질문의 리스트를 제공받을 수 있다.
만일 사용자 입력이 사용 가능한 질문에 일치하면, NLIDB 모듈은 Q&A 테이블에서 질문을 검색하고, 데이터베이스 쿼리의 형태로 저장된 "답변"을 찾고, 데이터베이스에 대해 쿼리를 실행한 다음, 결과를 최종 사용자에게 반환한다. 만일 사용자 이력이 사용 가능한 질문에 일치하지 않으면, 전술한 바와 같은 통계 처리가 사용된다.
스키마 필드가 애플리케이션 모듈 키워드로 대체되고 질문이 기능 디스크립션 스테이트먼트로 대체된 것을 제외하고는, NLAG 기능에 관해서는 NLIDB 기능과 관련하여 전술한 것과 동일한 방법론이 사용된다. 즉, NLAG 기능은 사용자(예를 들면, 마이너 개발자 인터페이스 사용자 등)가 자연어 디스크립션에 기초하는 애플리케이션을 생성하는데 도움을 준다. 애플리케이션은 기능 모듈 - 각각의 모듈은 서브 기능을 달성함 - 또는 컴포넌트에 의해 조립된다. 애플리케이션의 디스크립션은 애플리케이션의 예상된 기능 또는 애플리케이션이 달성하여야 하는 기능을 설명하여야 한다. 그 예는 "I need a program that manages my employees(고용인을 관리하는 프로그램이 필요합니다)" 또는 "I want an application from which I can add, edit, update and delete employee information, accept P.O.s, and view assembly line status(고용인 정보를 추가하고, 편집하고, 갱신하고 삭제할 수 있으며, P.O.를 받아 들이고, 조립 라인 상태를 검토할 수 있는 애플리케이션을 원합니다)"와 같은 더 많은 특정 예를 포함한다. 이러한 디스크립션은 높은 레벨 요건 또는 계층적 기능 요건 중 어느 하나를 드러내 보여준다.
온톨로지 사전을 활용함으로써, NLP 엔진(336) 내부의 NLAG 모듈은 여러 레벨의 요건을 인식한다. 이러한 기능을 지원하기 위하여, 애플리케이션 모듈(예를 들면, 전술한 바와 같은 위젯)의 저작자는 모듈의 기능의 디스크립션을 동사-명사 패턴의 포맷으로 제공하여야 한다. 예를 들면, 고용인 관리 모듈은 "manage employees"라는 디스크립션을 가질 수 있는 반면, 조립 라인 DASH보드 모듈은 "render assembly line status"라는 디스크립션을 가질 수 있다. 이와 같은 동사-명사 쌍은 온톨로지 사전에서 검색되며, 에일리어스 확장, 질문(본 사례에서는 스테이트먼트) 생성, 및 쿼리(본 사례에서는 모듈 조립) 생성을 비롯한, NLIDB 기능에 대해 전술한 바와 동일한 프로세스가 수행된다. 질문(스테이트먼트) 분석 국면도 또한 자동완성 기능에 의한 사용자 입력 및 불일치된 입력의 통계적 처리를 제한하는 점에서 유사하다. 사용자의 입력이 성공적으로 분석되고 모듈의 리스트가 반환된 후, 적용 가능한 개발 툴(예를 들면, 마이너 개발자 인터페이스(326))은 전술한 바와 같이, 사용자가 모듈을 통일된 애플리케이션으로 조립할 수 있게 한다.
마지막으로, 레포트 엔진 컴포넌트(340)가 제공된다. 실시예에서, 레포트 엔진 컴포넌트는 마이너 개발자 인터페이스(326)의 서브 컴포넌트이다. 특히 레포트 엔진 컴포넌트는 사용자로 하여금 시스템의 모든(선택된) 데이터를 담고 있는 그랜드 테이블을 생성함으로써 레포트를 구축할 수 있게 해주는 GUI 레포트 빌더이다. 그랜드 테이블로부터, 사용자는 컬럼을 제거하거나, 집계 기능(예를 들면, 합, 평균 등)을 컬럼에 추가하거나, 또는 기존 컬럼에 관한 계산에 기초하여 신규 컬럼을 추가하여 신규 테이블을 만들어 낼 수 있다. 이러한 프로세스는 원하는 최종 테이블이 획득될 때까지 반복될 수 있다. 이러한 테이블이 구축 완료되면, 사용자는 모든 테이블을 하나의 스크린에서 볼 수 있고 레포트 엔진 컴포넌트(340)은 테이블 컬럼들 간의 관계를 시각화한다. 또한, 사용자는 레포트 엔진 컴포넌트(340)가 구성 데이터 요소가 갱신될 때마다 갱신을 수행하지 않도록 레포트 갱신 빈도를 설정할 수 있다.
바람직한 특정 실시예가 도시되고 기술되었지만, 본 기술에서 통상의 지식을 가진 자라면 본 개시를 일탈하지 않고 변경 및 수정이 이루어질 수 있음을 인식할 것이다. 그러므로 전술한 개시의 수정, 변형 또는 등가물은 어느 것이든 모두 다 앞에서 기술되고 본 출원에서 청구되는 기본적인 근본 원리의 범위 내에 속한다고 생각한다.
부록
1. 데이터 업로드 API(Data Upload API)
URL
https://www.beulahworks.com/dm/v1/data_upload
POST 요청 요구 필드
POST/dm/vl/data_upload HTTP/1.1
콘텐츠 타입(Content-Type): text/csv
콘텐츠 길이(Content-Length): 3876502
문자집합(Charset): utf-8
수용 문자집합(Accept-Charset): utf-8
호스트(Host): www.beulahworks.com: 1234 (configurable)
파일명(Filename): "abc.arf "
{Data File}
콘텐츠 타입 필드는 CSV: text/csv를 비롯하여, 지원되는 모든 데이터 파일 포맷의 MINE 타입을 가져야 한다.
ARFF: application/vnd.arff (커스톰 MIME 타입; 웹 서버에서 설정될 수 있음)
데이터 파일의 크기는 제한 없다. 이것은 웹 서버 구성 파일에서 설정될 수 있다.
POST 응답 요구 필드
HTTP/1.1 200 OK
콘텐츠 타입: application/json; charset=utf-8
{Response JSON}
응답 JSON 스키마
Figure pct00012
Figure pct00013
Figure pct00014
응답 JSON 예
Figure pct00015
여기서 "datasetID"는 다음의 API 방법에서 사용될 것이다.
2. API 훈련
A. 분류 훈련
URL
https://www.beulahworks.com/dm/v1/classification_train
POST 요청 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
요청 JSON 스키마
Figure pct00016
Figure pct00017
Figure pct00018
Figure pct00019
Request JSON 예
Figure pct00020
여기서 "classAttributeName"은 데이터 세트가 ARFF 파일로서 업로드될 때 필요하지 않고; "algorithm" 및 "preprocessor"는 자동화된 데이터 마이닝에 필요하지 않고; "algorithm" 및 "preprocessor"는 API가 다중 프리프로세서 및 알고리즘을 지원한다는 것을 의미하는 타입 어레이(type array)를 갖는다. 만일 다중 프리프로세서가 명시되면, 모든 프리프로세서는 데이터 세트에 적용되며; 만일 다중 알고리즘이 명시되면, 알고리즘은 별도로 데이터 세트에 적용되고 평균 결과가 보고될 것이다.
POST 응답 요구 필드
HTTP/1.1 200 OK
콘텐츠 타입:application/json; charset=utf-8
{Response JSON}
응답 JSON 스키마
Figure pct00021
Figure pct00022
Response JSON 예
Figure pct00023
여기서 "statusCode" 및 "statusDescription"은 미리 정의된 표준 성공/오류 메시지 집합이고; "transaction Time"은 API 방법이 응답을 발행할 때의 UTC 시간이고; transactionID 는 목적을 로깅하고 분할하는데 사용되는 UUID이고; jobId는 다른 API 방법에 의해 특정 직업의 추산 시간을 체크하는데 사용될 것이다.
B. 클러스터링 훈련
URL
https://www.beulahworks. com/ dm/v 1 /clustering_train
POST 요청 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
요청 JSON 스키마
Figure pct00024
Figure pct00025
Figure pct00026
요청 JSON 예
Figure pct00027
응답 POST 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답e JSON 스키마
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 예
좌동 https://www.beulahworks.com/dm/vl/classification_train.
C. 연관 규칙 발견 훈련(Association Rule Discovery Training)
URL
https://www.beulahworks.com/dm/v1/association_rule_train
POST 요청 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
요청 JSON 스키마
Figure pct00028
Figure pct00029
Figure pct00030
Figure pct00031
요청 JSON 예
Figure pct00032
응답 POST 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 스키마
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 예
좌동 https://www.beulahworks.com/dm/vl/classification_train.
E. 회귀(예측) 훈련(Regression (Prediction) Training)
URL
https://www.beulahworks.com/dm/v1/regression_train
POST 요청 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train..
응답 JSON 스키마
좌동 https://www.beulahworks.com/dm/vl/classification_train.
요청 JSON 예
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 POST 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 스키마
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 예
좌동 https://www.beulahworks.com/dm/vl/classification_train.
F. 추산 시간(Estimate Time)
URL
https://www.beulahworks.com/dm/v1/estimate_time
POST 요청 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 스키마
Figure pct00033
요청 JSON 예
Figure pct00034
응답 POST 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 스키마
Figure pct00035
Figure pct00036
Figure pct00037
응답 JSON 예
Figure pct00038
https://www.beulahworks.com/dm/vl/classification_train.s 내 동일 필드 이외에, "jobId"는 대비하여 추상되는 직업의 확인(confirmation); "estimatedTime"은 선택된 직업 동안 추산된 시간을 보여주고; "estimatedFinishDate"는 오류가 발생하지 않는다면, 추산 데이터 및 선택된 직업이 완료되는 시간을 나타낸다.
G. POST 콜백 (Callback POST)
URL
https://www.beulahworks.com/dm/vl/callback
POST 요청 요구 필드
POST callback url(configurable) HTTP/1.1
콘텐츠 타입: application/json
문자 집합: utf-8
수용 문자 집합: utf-8
호스트: callback_host (구성 가능함)
{Request JSON}
응답 JSON 스키마
Figure pct00039
Figure pct00040
Figure pct00041
Figure pct00042
Figure pct00043
요청 JSON 예
Figure pct00044
Figure pct00045
응답 POST 요구 필드
좌동 https://www.beulahworks.com/dm/vl/classification_train.
응답 JSON 스키마응답 JSON 스키마sponse JSON 예
Figure pct00046
3. 용법 API(Usage API)
용법 API는 아래의 것을 제외하고 훈련 API와 동일하다.
1. URL이 다르다, "train"은 "use"로 대체된다. 예를 들면, "https://www.beulahworks.com/dm/vl/classification_train" 는 "https://www.beulahworks.com/dm/vl/classification_use"으로 된다. 다른 용법 API도 마찬가지이다.
2. "model" 필드는 선택사양이다. 만일 "model"이 제공되지 않으면, 시스템은 그랜드 머신 학습 모델을 사용하여 작업을 실행한다.

Claims (16)

  1. 적어도 하나의 처리 디바이스로 구현되고, 모든 입력 데이터가 객체 및 객체 간의 관계로서 저장되며 입력 데이터가 하나 초과의 저장 포맷에 따라 저장될 수 있는 지식 보관소(knowledge repository)와,
    상기 적어도 하나의 처리 디바이스에 의해 구현되고, 상기 입력 데이터, 상기 입력 데이터에 관련한 객체 정보, 및 상기 입력 데이터에 관련한 관계 정보를 취득하는 입력 메커니즘을 제공하는 적어도 두 개의 계층적 사용자 인터페이스와,
    상기 적어도 하나의 처리 디바이스에 의해 구현되고 상기 지식 보관소 및 상기 적어도 두 개의 계층적 사용자 인터페이스에 동작가능하게 연결되며, 상기 적어도 두 개의 계층적 사용자 인터페이스로부터 상기 입력 데이터, 상기 객체 정보 및 상기 관계 정보를 수신하고 상기 입력 데이터가 상기 객체 정보 및 상기 관계 정보에 기초하여 객체로서 상기 지식 보관소에 저장되도록 동작하는 컨트롤러를 포함하는
    지식 포착 및 발견 시스템.
  2. 제 1 항에 있어서,
    상기 지식 보관소는 모든 입력 데이터를 제 1 저장 포맷을 가진 제 1 데이터베이스에 저장하고, 상기 입력 데이터의 적어도 일부분이 선택적으로 상기 제 1 저장 포맷으로부터 적어도 하나의 제 2 저장 포맷으로 변환되게 하여 상기 적어도 하나의 제 2 저장 포맷을 구현하는 적어도 하나의 제 2 데이터베이스에 저장되게 하며, 상기 제 1 데이터베이스는 트리플스토어 데이터베이스(triplestore database)를 포함하는
    지식 포착 및 발견 시스템.
  3. 제 2 항에 있어서,
    상기 제 2 데이터베이스는,
    관계형 데이터베이스, 주상 데이터베이스(columnar database), 그래프 데이터베이스, 키 값 데이터베이스, 서류 데이터베이스 및 파일 저장 데이터베이스 중 하나 이상을 포함하는
    지식 포착 및 발견 시스템.
  4. 제 2 항에 있어서,
    상기 컨트롤러는 상기 입력 데이터의 적어도 하나의 데이터 특징에 기초하여 상기 지식 보관소에게 상기 입력 데이터의 상기 일부분을 상기 제 1 저장 포맷으로부터 상기 제 2 저장 포맷으로 변환하도록 지시하는
    지식 포착 및 발견 시스템.
  5. 제 4 항에 있어서,
    상기 입력 데이터의 상기 적어도 하나의 데이터 특징은 데이터 크기 및 데이터 스키마 중 하나 이상을 포함하는
    지식 포착 및 발견 시스템.
  6. 제 4 항에 있어서,
    상기 입력 데이터의 상기 적어도 하나의 데이터 특징은 요구된 데이터 신선도(required data freshness) 및 요구된 데이터 보존성(required data retention) 중 하나 이상을 포함하는
    지식 포착 및 발견 시스템.
  7. 제 2 항에 있어서,
    상기 컨트롤러는 상기 입력 데이터의 적어도 하나의 사용 특징에 기초하여 상기 지식 보관소에게 상기 입력 데이터의 상기 일부분을 상기 제 1 저장 포맷으로부터 상기 제 2 저장 포맷으로 변환하도록 지시하는
    지식 포착 및 발견 시스템.
  8. 제 7 항에 있어서,
    상기 입력 데이터의 상기 적어도 하나의 사용 특징은 데이터 기록 빈도, 데이터 갱신 빈도, 데이터 판독 빈도, 데이터 판독 요청 유형 및 사용자의 동시성(concurrency of users) 중 하나 이상을 포함하는
    지식 포착 및 발견 시스템.
  9. 제 2 항에 있어서,
    상기 컨트롤러는 데이터베이스 비의존형 포맷으로 표현되는 공통 동작을 지원하는 통일된 인터페이스를 구현하며, 상기 커맨드 동작은 하나 이상의 데이터베이스 의존형 포맷으로 변환되는
    지식 포착 및 발견 시스템.
  10. 제 1 항에 있어서,
    상기 적어도 두 개의 계층적 사용자 인터페이스는 적어도 하나의 메이저 개발자 인터페이스와 마이너 개발자 인터페이스를 포함하는
    지식 포착 및 발견 시스템.
  11. 제 10 항에 있어서,
    상기 적어도 하나의 메이저 개발자 인터페이스는 소프트웨어 컴포넌트의 개발을 지원하는 통합된 개발 환경을 포함하는 제 1 메이저 개발자 인터페이스를 포함하는
    지식 포착 및 발견 시스템.
  12. 제 10 항에 있어서,
    상기 적어도 하나의 메이저 개발자 인터페이스는 그래픽 사용자 인터페이스(graphical user interface, GUI) 애플리케이션 및 소프트웨어 위젯 중 하나 이상의 개발을 지원하는 GUI 기반의 플랫폼을 포함하는 제 2 메이저 개발자 인터페이스를 포함하는
    지식 포착 및 발견 시스템.
  13. 제 10 항에 있어서,
    상기 마이너 개발자 인터페이스는 상기 소프트웨어 위젯에 기초하여 애플리케이션 메타파일을 구성하도록 동작하는 그래픽 사용자 인터페이스를 포함하는
    지식 포착 및 발견 시스템.
  14. 제 13 항에 있어서,
    상기 컨트롤러 및 상기 마이너 개발자 인터페이스에 동작가능하게 연결되고, 상기 애플리케이션 메타파일에 기초하여 실행 가능한 애플리케이션을 생성하도록 동작하는 코드 생성기를 더 포함하는
    지식 포착 및 발견 시스템.
  15. 제 1 항에 있어서,
    상기 컨트롤러는,
    휴먼 판독 가능한 사용자 데이터 쿼리에 기초하여 머신 판독 가능한 사용자 데이터 쿼리를 생성하고, 휴먼 판독 가능한 애플리케이션 사양에 기초하여 애플리케이션 메타데이터를 생성하도록 동작하는 자연어 처리 컴포넌트를 더 포함하는
    지식 포착 및 발견 시스템.
  16. 제 1 항에 있어서,
    상기 컨트롤러는,
    머신 판독 가능한 사용자 데이터 쿼리에 기초하여 상기 지식 보관소로부터 저장된 데이터를 검색하도록 동작하는 데이터 마이닝 컴포넌트를 더 포함하는
    지식 포착 및 발견 시스템.
KR1020157029632A 2013-03-15 2014-03-14 지식 포착 및 발견 시스템 KR101782704B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361787177P 2013-03-15 2013-03-15
US61/787,177 2013-03-15
PCT/US2014/027854 WO2014143755A1 (en) 2013-03-15 2014-03-14 Knowledge capture and discovery system

Publications (2)

Publication Number Publication Date
KR20150145231A true KR20150145231A (ko) 2015-12-29
KR101782704B1 KR101782704B1 (ko) 2017-09-27

Family

ID=51532922

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157029632A KR101782704B1 (ko) 2013-03-15 2014-03-14 지식 포착 및 발견 시스템

Country Status (10)

Country Link
US (5) US9430549B2 (ko)
EP (2) EP2973048A4 (ko)
JP (5) JP6420311B2 (ko)
KR (1) KR101782704B1 (ko)
CN (2) CN105378721B (ko)
AU (4) AU2014228252B9 (ko)
BR (1) BR112015023053A2 (ko)
CA (1) CA2906635C (ko)
MX (3) MX2021010973A (ko)
WO (1) WO2014143755A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180041356A (ko) * 2016-10-14 2018-04-24 배재대학교 산학협력단 웹 서버 기반의 분산형 기기간 협업 시스템 및 방법
KR101862779B1 (ko) * 2016-11-01 2018-05-30 광운대학교 산학협력단 컬럼 수준 비정규화를 이용한 데이터 마이그레이션 장치 및 방법

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372938B2 (en) * 2012-06-21 2016-06-21 Cray Inc. Augmenting queries when searching a semantic database
US10215434B2 (en) 2012-11-07 2019-02-26 Think Automatic, LLC Adaptive trigger sequencing for site control automation
US20150120224A1 (en) 2013-10-29 2015-04-30 C3 Energy, Inc. Systems and methods for processing data relating to energy usage
US10380253B2 (en) * 2014-03-04 2019-08-13 International Business Machines Corporation Natural language processing with dynamic pipelines
US9679125B2 (en) * 2014-04-29 2017-06-13 PEGRight, Inc. Characterizing user behavior via intelligent identity analytics
CN105095237B (zh) * 2014-04-30 2018-07-17 国际商业机器公司 用于生成非关系数据库的模式的方法和设备
US20160034852A1 (en) * 2014-07-31 2016-02-04 Linkedin Corporation Next job skills as represented in profile data
US10095736B2 (en) * 2014-11-03 2018-10-09 International Business Machines Corporation Using synthetic events to identify complex relation lookups
US10229156B2 (en) 2014-11-03 2019-03-12 International Business Machines Corporation Using priority scores for iterative precision reduction in structured lookups for questions
US11080295B2 (en) * 2014-11-11 2021-08-03 Adobe Inc. Collecting, organizing, and searching knowledge about a dataset
US9679041B2 (en) * 2014-12-22 2017-06-13 Franz, Inc. Semantic indexing engine
WO2016118979A2 (en) 2015-01-23 2016-07-28 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US10366079B1 (en) * 2015-01-26 2019-07-30 Microstrategy Incorporated Enterprise connectivity
US20160224645A1 (en) * 2015-02-03 2016-08-04 Siemens Aktiengesellschaft System and method for ontology-based data integration
US10423985B1 (en) * 2015-02-09 2019-09-24 Twitter, Inc. Method and system for identifying users across mobile and desktop devices
AU2016218970B2 (en) * 2015-02-13 2018-06-28 Thomson Reuters Enterprise Centre Gmbh Systems and methods for natural language question answering and analysis
US10430410B2 (en) * 2015-03-12 2019-10-01 International Business Machines Corporation Explain tool for optimizing SPARQL queries
US9921945B2 (en) 2015-04-06 2018-03-20 Adp, Llc Automatic verification of JSON data
US10078651B2 (en) * 2015-04-27 2018-09-18 Rovi Guides, Inc. Systems and methods for updating a knowledge graph through user input
US10824636B2 (en) * 2015-05-27 2020-11-03 Kaseya International Limited Mechanisms for querying disparate data storage systems
US20170005868A1 (en) * 2015-07-02 2017-01-05 Pearson Education, Inc. Automated network generation
US10552858B1 (en) 2015-07-10 2020-02-04 Twitter, Inc. Reconciliation of disjoint user identifer spaces
US10643181B2 (en) * 2015-08-18 2020-05-05 Satish Ayyaswami System and method for a big data analytics enterprise framework
US10102282B2 (en) * 2015-11-18 2018-10-16 University-Industry Cooperation Foundation Of Kyung Hee University Apparatus for mediation bridge ontology based on ontology alignment pattern
US10437883B2 (en) * 2015-11-24 2019-10-08 Cisco Technology, Inc. Efficient graph database traversal
US10496632B2 (en) 2015-12-09 2019-12-03 Vinyl Development LLC Query processor
US9436760B1 (en) 2016-02-05 2016-09-06 Quid, Inc. Measuring accuracy of semantic graphs with exogenous datasets
US20170262498A1 (en) * 2016-03-09 2017-09-14 Vinyl Development LLC Source independent query language
CN105959263B (zh) * 2016-04-22 2019-07-16 江苏中科西北星信息科技有限公司 基于json的机构养老数据交互方法及系统
US10713272B1 (en) 2016-06-30 2020-07-14 Amazon Technologies, Inc. Dynamic generation of data catalogs for accessing data
US10289309B2 (en) 2016-09-12 2019-05-14 Toshiba Memory Corporation Automatic detection of multiple streams
US10437564B1 (en) * 2016-09-16 2019-10-08 Software Tree, LLC Object mapping and conversion system
US11010302B2 (en) * 2016-10-05 2021-05-18 Intel Corporation General purpose input/output data capture and neural cache system for autonomous machines
JP6734538B2 (ja) * 2016-10-06 2020-08-05 富士通株式会社 評価プログラム、評価方法、および評価装置
US10339130B2 (en) * 2016-10-06 2019-07-02 Microsoft Technology Licensing, Llc Diverse addressing of graph database entities by database applications
US10534790B2 (en) * 2016-10-20 2020-01-14 International Business Machines Corporation Dynamic and predictive global temporary tables
US10649965B2 (en) * 2016-11-14 2020-05-12 International Business Machines Corporation Data migration in a networked computer environment
US10621210B2 (en) * 2016-11-27 2020-04-14 Amazon Technologies, Inc. Recognizing unknown data objects
US10387423B2 (en) * 2017-01-31 2019-08-20 Splunk Inc. Interactive development environment for iterative query visualization and exploration
US10542089B2 (en) 2017-03-10 2020-01-21 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
US10073640B1 (en) 2017-03-10 2018-09-11 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
US10970177B2 (en) * 2017-08-18 2021-04-06 Brian J. Bulkowski Methods and systems of managing consistency and availability tradeoffs in a real-time operational DBMS
US10482005B1 (en) 2017-09-26 2019-11-19 EMC IP Holding Company LLC Method and apparatus for developer code risk assessment
MX2020003447A (es) 2017-10-17 2020-07-29 Ericsson Telefon Ab L M Registro de servicios en una red de comunicaciones.
CN107918542B (zh) * 2017-11-23 2022-02-08 北京恒华伟业科技股份有限公司 一种字符串生成方法及装置
US11308128B2 (en) 2017-12-11 2022-04-19 International Business Machines Corporation Refining classification results based on glossary relationships
JP6887941B2 (ja) * 2017-12-12 2021-06-16 株式会社日立製作所 データ分析システム、及びデータ分析方法
CN108170847B (zh) * 2018-01-18 2021-08-31 国网福建省电力有限公司 一种基于Neo4j图数据库的大数据存储方法
US11182411B2 (en) * 2018-09-28 2021-11-23 Palo Alto Research Center Incorporated Combined data driven and knowledge driven analytics
US11132361B2 (en) 2018-11-20 2021-09-28 International Business Machines Corporation System for responding to complex user input queries using a natural language interface to database
US12008343B2 (en) 2018-11-21 2024-06-11 Kony, Inc. System and method for a registration system within an intelligent digital experience development platform
CN109918678B (zh) * 2019-03-22 2023-02-24 创新先进技术有限公司 一种字段含义识别方法和装置
US12008456B2 (en) * 2019-06-28 2024-06-11 Intel Corporation Methods, apparatus, systems and articles of manufacture for providing query selection systems
US11526391B2 (en) * 2019-09-09 2022-12-13 Kyndryl, Inc. Real-time cognitive root cause analysis (CRCA) computing
JP7411489B2 (ja) * 2020-04-08 2024-01-11 株式会社日立製作所 生産知識管理システム、生産知識管理方法及び生産知識管理プログラム
US11269751B2 (en) * 2020-06-11 2022-03-08 International Business Machines Corporation Hierarchical evaluation of multivariate anomaly level
CN111917872B (zh) * 2020-07-31 2023-01-31 阮兆明 一种结构化消息流的数据服务架构方法
US11874946B2 (en) * 2020-08-05 2024-01-16 International Business Machines Corporation Database map restructuring for data security
US11463446B2 (en) 2020-09-28 2022-10-04 Dropbox, Inc. Team member transfer tool
US11321285B2 (en) 2020-10-01 2022-05-03 Bank Of America Corporation Automatic database script generation for copying data between relational databases
EP4006752A1 (en) 2020-11-27 2022-06-01 Prisma Analytics GmbH Method and system arrangement for processing big data
EP4006753A1 (en) 2020-11-27 2022-06-01 Prisma Analytics GmbH Creating bias-free and self-predictive parameters
US11928699B2 (en) 2021-03-31 2024-03-12 International Business Machines Corporation Auto-discovery of reasoning knowledge graphs in supply chains
EP4141692A1 (en) * 2021-08-30 2023-03-01 Mitsubishi Electric R&D Centre Europe B.V. Database checking conversion
US20230359615A1 (en) * 2022-05-09 2023-11-09 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
CN115860436B (zh) * 2023-02-21 2023-05-26 齐鲁工业大学(山东省科学院) 一种基于知识图谱的城市热线派单方法及系统

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978811A (en) * 1992-07-29 1999-11-02 Texas Instruments Incorporated Information repository system and method for modeling data
JPH08241327A (ja) * 1995-03-06 1996-09-17 Nippon Telegr & Teleph Corp <Ntt> データベースシステムの性能チューニング装置及びデータベースシステムの性能チューニング方法
JPH1078968A (ja) * 1996-09-02 1998-03-24 Nippon Telegr & Teleph Corp <Ntt> 統計データベースシステム
JPH1115711A (ja) * 1997-06-26 1999-01-22 Hitachi Ltd データ管理装置
US6567814B1 (en) * 1998-08-26 2003-05-20 Thinkanalytics Ltd Method and apparatus for knowledge discovery in databases
AU6915400A (en) 1999-08-16 2001-03-19 Z-Force Corporation System of reusable software parts and methods of use
US6339776B2 (en) * 1999-10-04 2002-01-15 International Business Machines Corporation Dynamic semi-structured repository for mining software and software-related information
GB0006443D0 (en) 2000-03-18 2000-05-10 Pilkington Plc Fire resistant glazings
WO2001081829A1 (en) * 2000-04-27 2001-11-01 Brio Technology, Inc. Method and apparatus for processing jobs on an enterprise-wide computer system
GB0017023D0 (en) * 2000-07-12 2000-08-30 Ibm Knowledge sharing between heterogeneous devices
US7197561B1 (en) 2001-03-28 2007-03-27 Shoregroup, Inc. Method and apparatus for maintaining the status of objects in computer networks using virtual state machines
CA2358681C (en) 2001-10-12 2008-01-15 Ibm Canada Limited-Ibm Canada Limitee Resource adapter and integrated development environment
GB0127551D0 (en) 2001-11-16 2002-01-09 Abb Ab Analysing events
US20030158842A1 (en) * 2002-02-21 2003-08-21 Eliezer Levy Adaptive acceleration of retrieval queries
US20030184581A1 (en) 2002-04-02 2003-10-02 Bawa Satvinder Singh Application level integration in support of a distributed network management and service provisioning solution
US8015143B2 (en) * 2002-05-22 2011-09-06 Estes Timothy W Knowledge discovery agent system and method
EP1547009A1 (en) * 2002-09-20 2005-06-29 Board Of Regents The University Of Texas System Computer program products, systems and methods for information discovery and relational analyses
US7802234B2 (en) 2003-01-02 2010-09-21 Oracle International Corporation Integration of context-sensitive runtime metrics into integrated development environments
US7275216B2 (en) 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
EP1465069B1 (en) 2003-04-01 2017-01-25 Sap Se Method and computer system for activation of source files
US7430732B2 (en) 2003-10-23 2008-09-30 Microsoft Corporation Design of application programming interfaces (APIs)
US7676785B2 (en) 2004-02-13 2010-03-09 Microsoft Corporation Hosted application as a designer in an integrated development environment
WO2005114389A1 (en) 2004-05-21 2005-12-01 Sap Aktiengesellschaft Portal runtime framework
US7900201B1 (en) 2004-12-21 2011-03-01 Zenprise, Inc. Automated remedying of problems in software application deployments
JP2006236299A (ja) * 2005-02-26 2006-09-07 Aie Research Inc 統合的知識ベースシステム
US8812964B2 (en) 2005-03-31 2014-08-19 International Business Machines Corporation Managing evelopment of an enterprise application
EP1889233A2 (en) * 2005-05-16 2008-02-20 Nervana, Inc. The information nervous system
WO2007002412A2 (en) * 2005-06-22 2007-01-04 Affiniti, Inc. Systems and methods for retrieving data
US8666928B2 (en) * 2005-08-01 2014-03-04 Evi Technologies Limited Knowledge repository
US7873422B2 (en) 2005-09-02 2011-01-18 Sap Ag Event-based coordination of process-oriented composite applications
US20070088706A1 (en) * 2005-10-17 2007-04-19 Goff Thomas C Methods and devices for simultaneously accessing multiple databases
US7721258B2 (en) 2005-11-03 2010-05-18 Microsoft Corporation Integrated development environment with managed platform registry
US7689580B2 (en) * 2006-03-27 2010-03-30 Oracle International Corporation Search based application development framework
JP2008152739A (ja) * 2006-12-13 2008-07-03 Tokyo Institute Of Technology 文献情報からの研究分野間知識管理装置、方法、プログラム及び記録媒体
US7660831B2 (en) * 2007-01-07 2010-02-09 Apple Inc. Synchronization methods and systems
US8295542B2 (en) * 2007-01-12 2012-10-23 International Business Machines Corporation Adjusting a consumer experience based on a 3D captured image stream of a consumer response
US20080244418A1 (en) 2007-03-30 2008-10-02 Microsoft Corporation Distributed multi-party software construction for a collaborative work environment
US8566386B2 (en) * 2007-10-02 2013-10-22 Microsoft Corporation Logging of rich entertainment platform service history for use as a community building tool
US8996349B2 (en) 2007-10-11 2015-03-31 Microsoft Technology Licensing, Llc Synchronizing an abstract model and source code
US8201138B2 (en) 2008-01-18 2012-06-12 International Business Machines Corporation Solution providing navigation-independent access to elements of a software integrated development environment (IDE) using uniform resource locators(URLs)
US9218166B2 (en) 2008-02-20 2015-12-22 Embarcadero Technologies, Inc. Development system with improved methodology for creation and reuse of software assets
KR101475552B1 (ko) * 2008-04-01 2015-01-02 야후! 인크. 사용자에게 컨텐츠를 제공하기 위한 방법 및 서버
US20090276752A1 (en) 2008-04-30 2009-11-05 International Business Machines Corporation Method for communicating collaborative software development information
US8312440B2 (en) 2008-08-19 2012-11-13 International Business Machines Corporation Method, computer program product, and hardware product for providing program individuality analysis for source code programs
US8434068B2 (en) 2008-10-23 2013-04-30 XMOS Ltd. Development system
US8341593B2 (en) 2008-10-23 2012-12-25 Sap Ag Integrated development framework for composite applications
US20100293524A1 (en) 2009-05-12 2010-11-18 International Business Machines, Corporation Development environment for managing database aware software projects
US8417739B2 (en) * 2009-05-29 2013-04-09 Red Hat, Inc. Systems and methods for object-based modeling using hierarchical model objects
US8819625B2 (en) 2009-09-03 2014-08-26 International Business Machines Corporation Sharable development environment bookmarks for functional/data flow
US8655830B2 (en) 2009-10-06 2014-02-18 Johnson Controls Technology Company Systems and methods for reporting a cause of an event or equipment state using causal relationship models in a building management system
CA2720842A1 (en) 2009-11-10 2011-05-10 Hamid Hatami-Hanza System and method for value significance evaluation of ontological subjects of network and the applications thereof
US8244754B2 (en) * 2010-02-01 2012-08-14 International Business Machines Corporation System and method for object searching in virtual worlds
US8527940B2 (en) 2010-02-25 2013-09-03 Red Hat, Inc. Integrated development environment with automatic working sets
US8341099B2 (en) 2010-03-12 2012-12-25 Microsoft Corporation Semantics update and adaptive interfaces in connection with information as a service
US20110252163A1 (en) 2010-04-09 2011-10-13 Microsoft Corporation Integrated Development Environment for Rapid Device Development
WO2012017529A1 (ja) 2010-08-04 2012-02-09 株式会社日立製作所 データベース管理方法、データベース管理装置及びデータベース管理プログラム
US20120036457A1 (en) 2010-08-09 2012-02-09 REAL Software, Inc. Integrated development environment for rapid application development
US20120079451A1 (en) 2010-09-29 2012-03-29 Sap Ag Unified process to design, develop, and configure user interfaces
US9619211B2 (en) 2010-12-30 2017-04-11 International Business Machines Corporation Code suggestion in a software development tool
US8712975B2 (en) 2011-03-08 2014-04-29 Rackspace Us, Inc. Modification of an object replica
US8567814B2 (en) * 2011-05-19 2013-10-29 Faurecia Interior Systems, Inc. Patterned weakening of airbag coverings
US8572552B2 (en) 2011-06-05 2013-10-29 Fourth Medium Consulting Inc. System and method for providing expert advice on software development practices
US8667012B2 (en) * 2011-06-09 2014-03-04 Salesforce.Com, Inc. Methods and systems for using distributed memory and set operations to process social networks
US8332357B1 (en) * 2011-06-10 2012-12-11 Microsoft Corporation Identification of moved or renamed files in file synchronization
US10067747B2 (en) 2011-08-12 2018-09-04 Emmoco, Inc. Embedded device application development
US20130097135A1 (en) 2011-10-17 2013-04-18 Pie Digital, Inc. Method and system for generating domain specific in-memory database management system
KR20130112197A (ko) * 2012-04-03 2013-10-14 삼성전자주식회사 객체의 상태 변화를 수행하기 위한 방법 및 그 전자 장치
CN102855290A (zh) * 2012-08-09 2013-01-02 江苏飞象科技有限公司 一种移动互联网知识管理方法
CN102819600B (zh) * 2012-08-15 2016-08-31 国家电网公司 面向电力生产管理系统关系数据库的关键词搜索方法
CN102880645B (zh) * 2012-08-24 2015-12-16 上海云叟网络科技有限公司 语义化的智能搜索方法
CN102955697B (zh) * 2012-11-08 2016-01-20 沈阳建筑大学 基于面向方面的构件库构建方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180041356A (ko) * 2016-10-14 2018-04-24 배재대학교 산학협력단 웹 서버 기반의 분산형 기기간 협업 시스템 및 방법
KR101862779B1 (ko) * 2016-11-01 2018-05-30 광운대학교 산학협력단 컬럼 수준 비정규화를 이용한 데이터 마이그레이션 장치 및 방법

Also Published As

Publication number Publication date
JP2023162404A (ja) 2023-11-08
JP6817988B2 (ja) 2021-01-20
AU2021225210A1 (en) 2021-09-30
JP2016521398A (ja) 2016-07-21
EP2973048A1 (en) 2016-01-20
US20210117445A1 (en) 2021-04-22
US20140279837A1 (en) 2014-09-18
US11921751B2 (en) 2024-03-05
AU2020201503B2 (en) 2021-06-17
EP2973048A4 (en) 2016-11-16
MX2015013209A (es) 2016-04-15
US20160224647A1 (en) 2016-08-04
CA2906635C (en) 2019-08-06
AU2020201503A1 (en) 2020-03-19
US9792347B2 (en) 2017-10-17
JP7345598B2 (ja) 2023-09-15
JP2022120014A (ja) 2022-08-17
US20240168973A1 (en) 2024-05-23
BR112015023053A2 (pt) 2017-07-18
AU2017272146A1 (en) 2017-12-21
EP3690668A1 (en) 2020-08-05
MX2021010973A (es) 2023-01-03
JP2021064392A (ja) 2021-04-22
CA2906635A1 (en) 2014-09-18
KR101782704B1 (ko) 2017-09-27
JP2019032875A (ja) 2019-02-28
AU2021225210B2 (en) 2023-02-16
CN108363798A (zh) 2018-08-03
US9430549B2 (en) 2016-08-30
AU2014228252B9 (en) 2017-06-29
AU2014228252A1 (en) 2015-10-08
US10891310B2 (en) 2021-01-12
MX2023000287A (es) 2023-02-09
CN105378721A (zh) 2016-03-02
WO2014143755A1 (en) 2014-09-18
CN105378721B (zh) 2019-02-19
US20170351745A1 (en) 2017-12-07
AU2014228252B2 (en) 2017-06-15
JP6420311B2 (ja) 2018-11-07
JP7086166B2 (ja) 2022-06-17

Similar Documents

Publication Publication Date Title
AU2021225210B2 (en) Knowledge capture and discovery system
US11763175B2 (en) Systems and methods for semantic inference and reasoning
US10380144B2 (en) Business intelligence (BI) query and answering using full text search and keyword semantics
US20190384766A1 (en) System and method for reducing resource usage in a data retrieval process
AU2019284618B2 (en) Multi-source-type interoperability and/or information retrieval optimization
WO2013137903A1 (en) Systems and methods for semantic inference and reasoning

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant