KR20170116590A - 컴퓨팅 디바이스와 상호작용하는 장치 및 방법 - Google Patents

컴퓨팅 디바이스와 상호작용하는 장치 및 방법 Download PDF

Info

Publication number
KR20170116590A
KR20170116590A KR1020170046928A KR20170046928A KR20170116590A KR 20170116590 A KR20170116590 A KR 20170116590A KR 1020170046928 A KR1020170046928 A KR 1020170046928A KR 20170046928 A KR20170046928 A KR 20170046928A KR 20170116590 A KR20170116590 A KR 20170116590A
Authority
KR
South Korea
Prior art keywords
entity
application
command
ems
commands
Prior art date
Application number
KR1020170046928A
Other languages
English (en)
Other versions
KR102276856B1 (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 삼성전자주식회사
Publication of KR20170116590A publication Critical patent/KR20170116590A/ko
Application granted granted Critical
Publication of KR102276856B1 publication Critical patent/KR102276856B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/4443
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • 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/245Query processing
    • G06F16/2452Query translation
    • G06F16/24526Internal representations for queries
    • 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/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24547Optimisations to support specific applications; Extensibility of optimisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • Tourism & Hospitality (AREA)
  • Primary Health Care (AREA)
  • Computer Security & Cryptography (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Human Computer Interaction (AREA)
  • Accounting & Taxation (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

컴퓨팅 디바이스와 상호작용하는 방법에 있어서, 복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입(entity type)을 포함하는 복수의 커맨드를 등록하고, 상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하고, 파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하고, 프로세서를 이용하여, 상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는 방법이 개시된다.

Description

컴퓨팅 디바이스와 상호작용하는 장치 및 방법 {METHOD AND APPARATUS FOR INTERACTING WITH COMPUTING DEVICE}
본 개시는 컴퓨팅 디바이스와 상호작용하는 장치 및 방법을 제공한다.
현대의 컴퓨팅 디바이스들과의 사용자 상호작용은 대체로 어플리케이션 중심적이다. 사용자가 컴퓨팅 디바이스에 어플리케이션을 설치하며 어플리케이션은 다양한 작업을 수행할 수 있다. 일단 어플리케이션이 설치되면, 사용자는 어플리케이션과 상호작용하여 다양한 작업을 수행할 수 있다. 터치 스크린이 존재하는 컴퓨팅 디바이스의 경우, 사용자 상호작용의 주된 형태는 종종 "찾기 및 탭" 형태일 수 있다. "찾기 및 탭" 시나리오에서는, 사용자가 어플리케이션의 그래픽 사용자 인터페이스(GUI)를 탐색함으로써, 필요한 제어 및 탭을 찾거나 커맨드를 시작하는 제어를 선택한다. 많은 작업이 완료되려면 여러 단계가 진행될 필요가 있기 때문에, 사용자는 당면한 작업을 수행하기 위해 어플리케이션의 GUI를 탐색하는데 상당한 시간을 소비하는 경우가 많다.
많은 경우, 사용자는 다수의 상이한 어플리케이션 및/또는 다수의 상이한 디바이스를 사용하여보다 복잡한 작업을 수행한다. "찾기 및 탭" 방법론이 어플리케이션 및/또는 디바이스에 적용될 때, 사용자가 어플리케이션의 GUI를 탐색하는데 소요되는 시간은 추가로 늘어날 수 있다. 다른 경우, 사용자는 수행할 작업을 완전히 숙지하거나 정의하지 않고, 나중에 어떤 활동에 참여할 아이디어를 가지고 있을 수 있다. 작업이 초기부터 완전히 숙지되고 정의되는 것으로 가정하는 "찾기 및 탭" 상호작용 방법이 현대 컴퓨팅 디바이스에서 주로 이용된다는 점을 고려할 때, 이러한 의도를 포착하는 것은 매우 어려울 수 있다.
본 개시는 컴퓨팅 디바이스와 상호작용하는 장치 및 방법을 제공한다. 구체적으로, 사용자가 다수의 상이한 어플리케이션을 사용하는데 있어서, GUI 탐색 시간을 감소시킬 수 있는 컴퓨팅 디바이스와 상호작용하는 장치 및 방법을 제공한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입(entity type)을 포함하는 복수의 커맨드를 등록하는 단계; 상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하는 단계; 파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하는 단계; 및 프로세서를 이용하여, 상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는 단계;를 포함하는 컴퓨팅 디바이스와 상호작용하는 방법을 제공할 수 있다.
또한, 본 개시의 제 2 측면은, 컴퓨팅 디바이스와 상호작용하는 방법에 있어서, 복수의 어플리케이션으로부터의 복수의 커맨드를 등록하는 단계; 상기 복수의 커맨드 중에 하나인, 제 1 커맨드를 결정하는 단계; 상기 등록에 기초하여, 상기 제 1 커맨드에 의해 수용되는 제 1 엔티티 타입을 결정하는 단계; 상기 제 1 커맨드에 대한 파라미터로서, 상기 제 1 엔티티 타입의 제 1 엔티티를 획득하는 단계; 및 프로세서를 이용하여, 상기 제 1 커맨드를 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 커맨드 및 상기 제 1 엔티티를 제공하는 단계;를 포함하는, 방법을 제공할 수 있다.
또한, 본 개시의 제 3 측면은, 프로그램 코드를 저장하는 메모리; 및 상기 메모리에 결합되고, 상기 프로그램 코드의 실행에 응답하여, 컴퓨팅 디바이스와 상호작용하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입을 포함하는 복수의 커맨드를 등록하고, 상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하고, 파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하고, 상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는, 컴퓨팅 디바이스를 제공할 수 있다.
또한, 본 개시의 제 4 측면은, 컴퓨팅 디바이스와 상호작용하기 위한 프로그램 코드를 저장한 컴퓨터로 읽을 수 있는 기록매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 프로그램 코드는 프로세서에 의해 실행됨으로써, 복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입을 포함하는 복수의 커맨드를 등록하고, 상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하고, 파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하고, 상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는, 기록매체를 제공할 수 있다.
도 1은 본 개시의 하나 이상의 실시예에 따른 컴퓨팅 디바이스의 예시를 설명하는 도면이다
도 2는 실시예에 따른 엔티티 관리 시스템에 의해 지원되는 상호작용 모델의 예시를 설명하는 도면이다.
도 3은 실시예에 따른 EMS 구조의 예시를 설명하는 도면이다.
도 4는 실시예에 따른, 어플리케이션을 등록하는 예시적인 방법을 설명하는 흐름도이다.
도 5는 실시예에 따른 어플리케이션을 등록하는 예시를 설명하는 도면이다.
도 6은 실시예에 따른 커맨드 및 엔티티들을 이용하여 컴퓨팅 디바이스와 상호작용하는 예시를 설명하는 흐름도이다.
도 7은 다른 실시예에 따른, 커맨드들 및 엔티티들을 사용하여 컴퓨팅 디바이스와 상호작용하는 예시를 설명하는 흐름도이다.
도 8은 실시예에 따른, 대화형 커맨드행 GUI의 일 예시를 나타내는 도면이다.
도 9는 실시예에 따른 GUI의 다른 예시를 나타내는 도면이다.
도 10은 실시예에 따른 GUI의 다른 예시를 나타내는 도면이다.
도 11은 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 12는 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 13은 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 14는 실시예에 따른 통지와 함께 엔티티들을 사용하는 동작을 설명하기 위한 도면이다.
도 15는 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 16은 실시예에 따른 도 8의 GUI 및, 엔티티 및 커맨드를 이용하는 크로스-디바이스 상호작용 동작을 설명하기 위한 도면이다.
본 개시는 신규한 특징을 정의하는 청구범위로 결론을 맺지만, 본 개시에서 설명된 다양한 특징은 도면과 관련한 설명을 참조함으로써 더 잘 이해될 것이다. 본 개시에 설명된 적어도 하나의 프로세스, 적어도 하나의 장치, 적어도 하나의 제품 및 이들을 변형한 내용은 예시적인 것이다. 본 개시에서 설명된 특정 구조적 및 기능적 세부 내용은 제한으로서 해석되어서는 안되며, 단지 청구범위의 기초로서 그리고 통상의 기술자가 이를 이용하여 다양하게 응용하도록 교시하기 위한 대표적인 예로서 해석되어야 한다. 또한, 본 개시 사용되는 용어는 용어의 명칭만으로 해석되어서는 안되며, 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 해석되어야.
본 개시는 명령들 및 엔티티들을 통해 컴퓨팅 디바이스와의 사용자 상호작용을 지원하는 플랫폼에 관한 것이다. 본 개시에서 설명되는 하나 이상의 실시예는 엔티티 및/또는 커맨드를 어플리케이션으로부터 분리함으로써, 사용자와 컴퓨팅 디바이스(및/또는 시스템) 간의 상호작용이 수행되도록 하는 방법에 관한 것이다. 일반적으로 엔티티는 사용자가 컴퓨팅 디바이스 또는 다른 시스템을 사용하여 행동하고자 하는 "사물"을 나타낼 수 있다. 커맨드는 컴퓨팅 디바이스에 의해 수행되거나 실행되는 프로세스, 방법, 기능, 작업 등을 나타낼 수 있다. 커맨드는 컴퓨팅 디바이스 내의 다른 어플리케이션이나 다른 시스템에서 사용될 수 있으며, 엔티티에서 상에서 작동하거나 엔티티를 사용할 수 있다.
엔티티, 커맨드, 하나 이상의 엔티티 및 하나 이상의 커맨드의 조합 중 적어도 하나가 선택되고 실행 될 수 있다. 사용자가 선택된 엔티티 및/또는 커맨드를 지원하는 어플리케이션을 먼저 시작하거나 실행할 필요 없이, 선택된 엔티티 및/또는 커맨드가 실행될 수 있다. 따라서 사용자가 원하는 커맨드를 수행하는 어플리케이션을 결정하는 것도, 어플리케이션을 실행하는 것도, 그리고 어플리케이션의 그래픽 사용자 인터페이스(GUI)를 탐색하여 원하는 작업을 수행하는 것도 요구되지 않는다. 엔티티는 컴퓨팅 디바이스 내에 존재하며 어플리케이션과 독립적으로 존재할 수 있다.
실시예에서, 어플리케이션들은 어플리케이션들 각각이 지원하는 서로 다른 커맨드들을 등록할 수 있다. 플랫폼에 등록된 어플리케이션의 커맨드는 본 개시에서 등록된 커맨드로 지칭될 수 있다. 이 플랫폼을 사용하면 어플리케이션을 다른 엔티티 타입의 공급자로 등록할 수 있다. 따라서, 다수의 어플리케이션을 포함하는 워크 플로우는 엔티티로서 지원될 수 있고, 커맨드는 하나 이상의 어플리케이션으로부터 획득되고 워크 플로우를 수행하기 위해 하나 이상의 다른 어플리케이션에 제공될 수 있다. 워크 플로우는 복수의 디바이스로 확장 될 수 있다.
본 개시에 관한 다른 실시예는 도면을 참조하여 이하에서 보다 상세하게 설명된다. 설명을 단순화하고 명료하게 하기 위해, 도면들에 도시된 구성 요소들은 일정한 비율로 그려지는 것은 아니다. 예를 들어, 일부 구성 요소의 치수는 명확성을 위해 다른 요소에 비해 과장 될 수 있다.
도 1은 본 개시의 실시예에 따른 컴퓨팅 디바이스의 예시를 설명하는 도면이다.
도 1을 참조하면, 본원의 예시적인 실시예에서, 디바이스(100)는 메모리(102), 하나 이상의 프로세서(104) (예를 들어, 이미지 프로세서, 디지털 신호 프로세서, 데이터 프로세서 등) 및 인터페이스 회로(106)를 포함할 수 있다. 도 1에서는 하나의 프로세서(104)가 포함되는 경우를 예로 들어 도시하였다. 이하에서는, 디바이스(100)가 하나의 프로세서를 포함되는 경우를 예로 들어 설명한다. 예시적인 실시예에서, 메모리(102), 적어도 하나의 프로세서(104), 및 인터페이스 회로(106) 중 적어도 하나는 개별 구성요소로 구현될 수 있다. 다른 실시예에서, 메모리(102), 프로세서(104) 및/또는 인터페이스 회로(106)는 하나 이상의 집적 회로에 통합될 수 있다. 예를 들어, 디바이스(100)의 다양한 구성 요소들은 하나 이상의 통신 버스 또는 신호 라인 (예를 들어, 상호 연결 및/또는 와이어)에 의해 연결될 수 있다. 실시예에서, 메모리(102)는 메모리 인터페이스(미도시)를 통해 인터페이스 회로(106)와 연결될 수 있다.
도시된 예에서, 센서들(108), 서브시스템들(110, 114, 116), 입력/출력(I/O) 디바이스(122), 및 디스플레이(124) 중 적어도 하나는 인터페이스 회로(106)와 결합됨으로써 발명의 실시예에서 설명되는 기능 및/또는 동작들을 수행할 수 있다. 센서(108), 서브시스템(110, 114 및 116), I/O 디바이스(122), 및 디스플레이(124) 중 적어도 하나는 인터페이스 회로(106)에 직접적으로 연결되거나, 하나 이상의 중개 I/O 제어기(미도시)를 통해 연결될 수 있다.
디바이스(100)에 포함될 수 있는 센서(108)는 방향, 조명 및 근접 기능 각각을 용이하게 하기 위한 모션 센서, 광 센서 및 근접 센서 중 적어도 하나를 포함할 수 있다. 센서(108)는 또한, 지리적 위치 센서 데이터를 제공하기 위한 위치 센서(예를 들어, GPS 수신기 및/또는 프로세서), 방향 탐색을 위해 자북(magnetic North)의 방향을 결정하는데 사용할 수 있는 센서 데이터를 제공하는 전자 자력계(electronic magnetometer)(예를 들어, 회로 칩), 3차원에서 디바이스의 속도 및 방향 변경을 결정하는데 사용할 수 있는 센서 데이터를 제공하는 가속도계, 및 고도를 결정하는데 사용될 수 있는 센서 데이터를 제공하기 위한 고도계 (예를 들어, 집적 회로) 중 적어도 하나를 포함 할 수 있다.
카메라(110)는 광학 센서(112)를 포함하여 형성될 수 있다. 광학 센서(112)는 임의의 다양한 기술을 사용하여 구현될 수 있다. 광학 센서(112)는 CCD(charge coupled device), CMOS(complementary metal-oxide semiconductor) 광 센서 등을 포함할 수 있지만, 이에 제한되는 것은 아니다. 카메라 서브시스템(110) 및 광학 센서(112)는, 예를 들어, 이미지 및/또는 비디오 클립 녹화와 같은 카메라 기능을 수행하는데 이용될 수 있다.
통신 기능은 하나 이상의 무선 통신 서브시스템(114)을 통해 수행될 수 있다. 무선 통신 서브시스템(114)은 무선 주파수 수신기 및 송신기, 광학(예를 들어, 적외선) 수신기 및 송신기 등을 포함할 수 있지만, 이에 제한되지는 않는다. 무선 통신 서브시스템(114)의 특정 설계 및 구현은 구현된 디바이스(100)의 특정 타입 및/또는 디바이스(100)가 동작하고자 하는 적어도 하나의 통신 네트워크에 의해서 결정될 수 있다.
적어도 하나의 무선 통신 서브시스템(114)은 하나 이상의 모바일 네트워크(예를 들어, GSM, GPRS, EDGE), WiMax 네트워크를 포함하는 WiFi 네트워크, 근거리 무선 네트워크, 및 PAN(personal area network)(예를 들어, 블루투스 네트워크) 중 적어도 하나에 따른 네트워크를 이용하여 동작 되도록 설계될 수 있다. 적어도 하나의 무선 통신 서브시스템(114)은 디바이스(100)가 다른 무선 디바이스를 위한 기지국으로서 구성될 수 있도록 호스팅 프로토콜을 구현할 수 있다.
오디오 서브시스템(116)은 음성 인식, 음성 복제, 디지털 녹음 및 전화 기능 등과 같은 음성 작동 기능을 수행하기 위해 스피커(118) 및 마이크로폰(120)과 연결될 수 있다. 오디오 서브시스템(116)은 오디오 타입 센서 데이터를 생성할 수 있다. 또한, 오디오 서브시스템(116)은 스피커(118) 및 마이크로폰(120)을 포함하는 형태로 구현될 수도 있을 것이다.
I/O 디바이스(122)의 예는 트랙 패드, 키보드, 포인팅 장치, 통신 포트(예를 들어, USB 포트, 이더넷 포트 등), 네트워크 어댑터(예를 들어, 모뎀 등), 버튼 및 다른 물리적 제어 장치 중 적어도 하나를 포함할 수 있다. 디스플레이(124)는 스크린, 터치 감지 스크린 등이 될 수 있다. 디스플레이 및/또는 패드와 같은 터치 감지 디바이스는 다양한 터치 감지 기술을 사용하여, 접촉, 이동, 접촉에 있어서의 다양한 형태 등(이하에서는 "제스처"라고 지칭)을 감지하도록 구성될 수 있다. 터치 감지 기술은 용량성, 저항성, 적외선, 표면 탄성파 기술, 및 터치 센서 디바이스와의 하나 이상의 접촉점을 결정하기 위한 다른 근접 센서 어레이 또는 다른 요소 들 중 적어도 하나를 이용 또는 포함하지만, 이에 제한되지 않는다. 하나 이상의 I/O 디바이스(122) 및/또는 디스플레이(124)는 디바이스(100)의 센서(108) 및/또는 서브시스템(110, 114, 및/또는 116)의 기능을 제어할 수 있다.
디바이스(100)는 전원(130)을 더 포함할 수 있다. 전원(130)은 디바이스(100)의 다양한 구성요소들에 전력을 공급할 수 있다. 예시적인 실시예에서, 전원(130)은 하나 이상의 배터리로서 구현될 수 있다. 배터리는 일회용(예를 들어, 교체 가능) 또는 재충전 가능 여부에 관계없이 다양한 상이한 배터리 기술 중 임의의 것을 사용하여 구현될 수 있다. 다른 실시예에서, 전원(130)은 외부전원으로부터 전력을 획득하고 디바이스(100)의 구성요소들에 전력(예를 들어, DC 전력)을 제공하도록 구성될 수 있다. 충전식 배터리의 경우에, 전원(130)이 외부전원에 연결될 때 전원(130)에 포함되는 배터리(미도시)를 충전 할 수 있는 연결 장치를 더 포함할 수 있다.
메모리(102)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 휘발성 메모리는 랜덤 액세스 메모리를 포함할 수 있다. 비휘발성 메모리는 하나 이상의 자기 디스크 저장 장치, 하나 이상의 광학 저장 장치, 플래시 메모리 등을 포함할 수 있지만, 이에 제한되는 것은 아니다. 메모리(102)는 운영 체제(150), 엔티티 관리 프로그램 코드(152) 및 다른 프로그램 코드(154)를 포함할 수 있다. 운영 체제(150)는 모바일 디바이스 운영 체제, 내장 운영 체제 등을 포함하는 다양한 상이한 운영 체제 중 적어도 하나일 수 있다. 운영 체제(150)는 시스템 서비스를 처리하고 하드웨어 의존적 작업을 수행하기 위한 커맨드를 포함할 수 있다.
엔티티 관리 프로그램 코드(152)는 실행시 엔티티(entity) 및/또는 커맨드의 저장, 관리 및/또는 처리를 수행할 수 있다. 엔티티 관리 프로그램 코드(152)는 엔티티의 제공자로서 어플리케이션을 등록하고, 등록된 커맨드로서 어플리케이션의 커맨드를 등록하며, 커맨드, 엔티티 등의 이용가능성에 대해 어플리케이션에게 문의할 수 있다. 여기서, 커맨드, 엔티티 등의 이용가능성에 대해 어플리케이션에게 문의 하는 동작을 '쿼리 어플리케이션(querying applications)'이라 칭할 수 있다. 이하의 도면에서 엔티티 관리 프로그램 코드(152)에 대해 자세하게 설명하기로 한다.
또한, 메모리(102)는 다른 프로그램 코드(154)를 저장할 수 있다. 다른 프로그램 코드(154)는 하나 이상의 추가적 디바이스, 하나 이상의 컴퓨터 및/또는 하나 이상의 서버와의 통신을 수행하는 명령어; GUI 프로세싱; 센서 관련 프로세싱 및 기능; 전화 관련 프로세스 및 기능; 전자 메시징 관련 프로세스 및 기능; 웹 브라우징 관련 프로세스 및 기능; 미디어 처리 관련 프로세스 및 기능; GPS 및 네비게이션 관련 프로세스 및 기능; 보안 기능; 웹 카메라 및/또는 웹 비디오 기능을 포함한 카메라 관련 프로세스 및 기능; 기타 등을 포함할 수 있다.
언급된 바와 같이, 다른 프로그램 코드(154)는, 엔티티의 제공자, 커맨드를 등록하는 어플리케이션, 엔티티 관리 프로그램 코드(152)에 의해 문의되는 어플리케이션 등과 같이, 본원의 예시적인 실시예에서 설명된 다양한 어플리케이션과 같은 하나 이상의 어플리케이션을 포함할 수 있다. 또한, 메모리(102)는 센서 데이터 등의 다양한 타입의 데이터(미도시)를 저장할 수 있다.
설명된 다양한 타입의 커맨드 및/또는 프로그램 코드는 예시적인 것으로, 이에 제한되는 것은 아니다. 프로그램 코드는 별개의 소프트웨어 프로그램, 절차 또는 모듈로서 구현될 수 있다. 메모리(102)는 추가 명령어 또는 더 적은 명령어를 저장할 수 있다. 또한, 디바이스(100)의 다양한 기능은 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 예를 들어, 디바이스(100)의 하나 이상의 기능은 하나 이상의 신호 처리 및/또는 주문형 집적 회로로서 구현될 수 있다.
메모리(102) 내에 저장된 프로그램 코드 및 디바이스(100)에 의해 사용, 생성 및/또는 조작되는 임의의 데이터는, 디바이스 및/또는 다른 시스템의 일부로서 채용될 때 기능을 부여하는 기능적 데이터 구조를 가질 수 있다. 기능적 데이터 구조에는, 엔티티, 커맨드, 워크 플로우(workflows), 어플리케이션 등록 데이터 등이 포함될 수 있으며, 이에 제한되지 않는다.
실시예에서, 디바이스(100)를 참조하여 설명된 하나 이상의 다양한 센서들 및/또는 서브시스템들은 유선 또는 무선 연결을 통해 디바이스(100)에 결합되거나 통신 가능하게 링크되는 별개의 장치들일 수 있다. 예를 들어, 도 1에서 설명된 다양한 센서들(108) 중 하나 이상 또는 모두는, I/O 디바이스(122) 및/또는 무선 통신 서브시스템(114)에 의해 디바이스(100)에 연결되는 별개의 시스템 또는 서브시스템으로서 구현될 수 있다.
디바이스(100)는 구현된 특정 타입의 디바이스에 따라, 도시된 것보다 적은 수의 구성 요소 또는 도 1에 도시되지 않은 추가 구성 요소를 포함할 수 있다. 또한, 특정 운영 시스템 및/또는 적어도 하나의 어플리케이션 및/또는 다른 프로그램 코드는, 시스템 타입에 따라 다를 수 있다. 또한, 예시적인 구성 요소들 중 하나 이상은 다른 구성 요소에 통합되거나 다른 구성 요소의 일부를 형성할 수 있다. 예를 들어, 프로세서는 적어도 하나의 메모리를 포함할 수 있다.
디바이스(100)의 동작 및 구성은 예시적인 것으로, 이에 제한되지 않는다. 실시예에서 설명된 동작을 수행하도록 구성된 기구, 디바이스 및/또는 시스템은 도 1에 도시 된 것과 다른 구조(architecture)를 가질 수 있다. 여기서, 구조는 디바이스(100)와 관련하여 설명된 구조의 단순화 된 버전일 수 있으며, 프로세서, 명령어를 저장하는 메모리, 및 디스플레이를 포함할 수 있다.
디바이스(100)는, 스마트 폰 또는 다른 모바일 디바이스 또는 전화, 웨어러블 컴퓨팅 디바이스(예를 들어, 스마트 시계, 피트니스 트래커 등), 컴퓨터(예를 들어, 데스크탑, 랩톱, 태블릿 컴퓨터, 다른 데이터 처리 시스템 등) 및 여기에 설명 된 기능을 수행 할 수 있는 임의의 적합한 전자 디바이스를 포함할 수 있다. 또한, 실시예들은 독립형 디바이스로서 배치되거나 분산 클라이언트-서버 네트워크형 시스템에서 다수의 디바이스로서 배치될 수 있다는 것을 이해할 것이다. 실시예에서, 시스템은, 제 2 디바이스(예를 들어, 모바일 폰, 태블릿 컴퓨터, 컴퓨터 시스템 등)와 구현되거나, 제 2 디바이스와 페어링되어 동작하는 제 1 디바이스(예를 들어, 스마트 워치 또는 피트니스 트래커)와 같이, 두 개 이상의 디바이스로서 구현될 수 있다.
도 2는 본원의 실시예에 따른 엔티티 관리 시스템(이하, EMS)에 의해 지원되는 상호작용 모델의 예시를 설명하는 도면이다.
도 2를 참조하면, EMS(200)는 도 1의 엔티티 관리 프로그램 코드(152)에 의해, 또는 이로서 구현될 수 있다. 도 2는 엔티티(205) 및 등록된 커맨드(210)가 어플리케이션들(215, 220 및 225과 독립적으로 존재함을 도시한다. "엔티티"는 컴퓨팅 디바이스가 동작할 수 있는 명사 또는 실제 객체를 나타내는 데이터 구조를 지칭한다. 각 엔티티는 "사람", "장소" 또는 "사물"과 같은 타입을 가질 수 있다. 각 엔티티는 하나 이상의 필드를 추가로 가질 수 있다. 예를 들어, 사람 엔티티 타입은 모바일 전화 번호 필드, 전자 메일 주소 필드 등을 가질 수 있다. 엔티티는 "영화", "레스토랑", "노래"등을 포함하나 이에 제한되지 않는다. 커맨드는 어플리케이션에 의해 수행되는 프로세스, 방법, 함수 등을 나타낼 수 있다. 커맨드는 파라미터로서 하나 이상의 엔티티를 취하거나 지원할 수 있다.
실시예에서, EMS(200)는 온톨로지(ontology)에 기초하여 엔티티 및/또는 커맨드를 정의 및/또는 조직할 수 있다. 실시예에서, 온톨로지는 schema.org 또는 다른 제공자와 같은 소스로부터 획득될 수 있는 것으로 사전 정의될 수 있다. 또 다른 예에서, 온톨로지는 EMS(200)를 위해 특별히 생성될 수 있다. 또 다른 예에서, EMS(200)에 등록되는 어플리케이션에 의해 선언된 커맨드 및 엔티티 타입에 기초하여, EMS(200)는 애드혹(Ad hoc) 방식으로 형성된 엔티티 타입 및 커맨드를 이용할 수 있다. 다른 실시예들은 이들 접근법의 상이한 조합을 사용할 수 있다.
예를 들어, 도 2에 도시된 바와 같이, 각각의 어플리케이션(215-225)은 특정 엔티티 및/또는 커맨드를 지원할 수 있다. 예를 들어, 어플리케이션(215)은 엔티티(230) 및 커맨드(245)를 지원 할 수 있다. 어플리케이션(220)은 엔티티(235) 및 커맨드(250)를 지원할 수 있다.
일 실시 예에서, 어플리케이션들(215, 220, 225) 각각은 EMS(200)에 등록될 수 있다. 일반적으로, 등록은 하나 이상의 서로 다른 타입의 엔티티의 제공자로서 등록하는 어플리케이션을 포함할 수 있다. 예를 들어, 어플리케이션(215)은 엔티티(230)에 대응되는 엔티티 타입의 제공자로서 등록될 수 있다. 어플리케이션(220)은 엔티티(235)에 대응되는 엔티티 타입의 제공자로서 등록될 수 있다. 어플리케이션(225)은 엔티티(240)에 대응되는 엔티티 타입의 제공자로서 등록될 수 있다.
등록은 또한, 각각의 어플리케이션에 의해 지원되거나 실행가능한 하나 이상의 커맨드를 등록하는 어플리케이션을 포함할 수 있다. 예를 들어, 어플리케이션들(215, 220, 225) 각각은 어플리케이션에 의해 지원되는 하나 이상의 커맨드를 EMS(200)에 등록할 수 있다. 어플리케이션(215)은 하나 이상의 커맨드(245)를 EMS(200)에 등록할 수 있다. 어플리케이션(220) 하나 이상의 커맨드(250)을 EMS(200)에 등록할 수 있다. 어플리케이션(225)은 하나 이상의 커맨드(255)을 EMS(200)에 등록할 수 있다. 도 2 에서는, 다양한 어플리케이션(215-225)에 의해 등록된 커맨드를 EMS(200) 내의 등록된 커맨드(210)로서 도시하였다. EMS(200)는 나머지 도면을 참조하여보다 상세히 설명된다.
도 2에 도시된 상호작용 모델은, 커맨드들 및 엔티티들이 더 이상 어플리케이션들 내에만 존재하도록 제한되지 않는다는 것을 도시한다. 이와 관련하여, 엔티티는 EMS(200) 내에 존재할 수 있거나, 및/또는 엔티티를 지원하는 어플리케이션으로부터 독립적으로 또는 분리된 데이터 구조로서 저장될 수 있기 때문에, 엔티티들은 어플리케이션과 독립적이라고 할 수 있다. 각 어플리케이션(215-225)은 더 이상 독립적인 어플리케이션으로서만 기능하지 않고, 엔티티를 제공 및/또는 이용할 수 있고 EMS(200)에 등록된 커맨드를 수행하기 위한 지원을 제공할 수 있다. EMS(200)는 어플리케이션(215), 어플리케이션(220) 및/또는 어플리케이션(225) 내의 등록된 커맨드를 호출할 수 있다.
도 3은 실시예에 따른 EMS 구조의 예시를 설명하는 도면이다.
실시예에서, EMS(200)는 디바이스(100)의 운영 시스템(예를 들어, 운영 시스템(150))의 일부로서 구현될 수 있다. 예를 들어, 예시적인 실시예에서 설명되는 EMS(200)에 대한 다양한 기능들 및 API는 운영 체제의 통합된 부분이며, 따라서 디바이스(100)의 통합된 부분일 수 있다.
EMS(200) 및 어플리케이션들(330, 335, 및 340)은 디바이스(100) 내에서 국부적으로 실행될 수 있다. 또한, EMS(200)는 커맨드 관리자(305), 저장된 엔티티 관리자(310) 및 CDC(cross-device communication) 관리자(315)를 포함할 수 있다. 일반적으로, 전체로서 취급되는(taken collectively) 커맨드 관리자(305), 저장된 엔티티 관리자(310) 및 CDC 관리자(315)는 예시적인 실시예에 설명된 기능을 수행하기 위해, 국부적으로 디바이스(100) 내에서 액세스 가능한 API(application programming interface), 및/또는 하나 이상의 다른 디바이스 및/또는 시스템에서 실행되는 어플리케이션에 의해 액세스 가능한 API를 제공할 수 있다.
실시예에서, 커맨드 관리자(305)는, 어플리케이션 등록, 어플리케이션 문의, 엔티티 및/또는 등록된 커맨드를 어플리케이션에 제공하는 것을 포함하는 기능을 수행하지만, 커맨드 관리자(305)의 기능은 이에 제한되지 않는다. 도 3에 도시된 바와 같이, 커맨드 관리자(305)는 어플리케이션(330)과 같은 어플리케이션을 등록하고, 등록 프로세스로부터의 데이터를 등록 데이터(320)로서 저장할 수 있다. 커맨드 관리자(305)는 예를 들어 실시간으로 어플리케이션(330)과 같은 어플리케이션에 문의하여, 어플리케이션(330)에 의해 지원되는 커맨드, 어플리케이션(330)에 의해 제공되는 엔티티 타입, 및/또는 어플리케이션(330)에 대한 문의에 제공된 기준에 매칭되는 특정 엔티티를 결정할 수 있다. 커맨드 관리자(305)는 또한, 실행을 위해 등록된 커맨드 및/또는 엔티티의 조합을 어플리케이션(335)와 같은 어플리케이션에 제공할 수 있다.
실시예에서, 저장된 엔티티 관리자(310)는 어플리케이션(340)과 같은 어플리케이션으로부터 엔티티를 수신하고, 엔티티를 저장된 엔티티 데이터(325)로서 저장할 수 있다. 저장된 엔티티 관리자(310)는 또한 저장된 엔티티 또는 저장된 엔티티의 리스트에 대한 요청에 응답하여, 저장된 엔티티 데이터(325)로부터, 어플리케이션(340)과 같은 어플리케이션으로 저장된 엔티티를 제공할 수 있다. 실시예에서, 저장된 엔티티 데이터(325) 내의 저장된 엔티티는, 저장된 엔티티에 대해 동작하기 위해 하나 이상의 등록된 커맨드 및/또는 하나 이상의 후보 어플리케이션과 연관되어 저장될 수 있다.
실시예에서, CDC 관리자(315)는, EMS(200)에 등록하기 위해 하나 이상의 다른 디바이스(360)에서 실행되는 어플리케이션에 대한 인터페이스로서 기능하고, 저장된 엔티티 관리자(310)를 통해 엔티티를 저장 및/또는 검색하고, 다른 디바이스(360)로의 실행을 위해 커맨드 및 엔티티를 전송/수신하도록 커맨드 관리자(305)와 상호작용할 수 있다.
실시예에서, 커맨드 관리자(305)는 엔티티 인식 서비스(345)에 액세스 할 수 있다. 예를 들어, 커맨드 관리자(305)는 프로세싱을 위해 하나 이상의 어플리케이션으로부터 획득된 텍스트의 부분을 엔티티 인식 서비스(345)로 전달할 수 있다. 엔티티 인식 서비스(345)는 수신된 텍스트 내의 엔티티를 인식하고 인식된 엔티티를 커맨드 관리자(305)에게 다시 제공할 수 있다.
실시예에서, 엔티티 인식 서비스(345)는 디바이스(100)와는 다른 시스템에서 실행될 수 있다. 예를 들어, 엔티티 인식 서비스(345)는 웹 기반 또는 인터넷 기반 서비스로 구현될 수 있다. 또 다른 실시예에서, 엔티티 인식 서비스(345)는 디바이스(100) 내에서 국부적으로 포함되고 실행될 수 있다. 또 다른 실시예에서, 엔티티 인식 서비스(345)는 부분적으로 디바이스(100) 상에 또는 디바이스 내에서 그리고 부분적으로 디바이스(100)와는 별개의 또는 상이한 데이터 처리 시스템에서 구현될 수 있다.
엔티티 인식 서비스(345)는 명명된 엔티티 인식기(350) 및 엔티티 데이터베이스(355)를 포함할 수 있다. 명명된 엔티티 인식기(350)는 커맨드 관리자(305)로부터 제공되는 문자열 내에서 발생하는 엔티티 이름을 인식할 수 있다. 엔티티 데이터베이스(355)는 후보 엔티티들의 리스트 또는 디렉토리를 포함할 수 있다.
실시예에서, 명명된 엔티티 인식기(350)는 엔티티 데이터베이스(355)에 저장된 후보 엔티티와 매칭되거나 대응하는, 텍스트 내의 명명된 엔티티의 위치를 찾아낼 수 있다. 엔티티 인식 서비스(345)는 수신된 문자열 내에 인식된, 명명된 엔티티를 커맨드 관리자(305)에 제공할 수 있다. 커맨드 관리자(305)는 엔티티 인식 서비스(345)로부터 결과를 수신할 수 있고, 적어도 하나의 수신된 명명된 엔티티을 예시적인 실시예에 기술된 바와 같이 추가 처리를 위해 사용할 수 있다. 이러한 방식으로, 커맨드 관리자(305)는 텍스트 또는 다양한 다른 데이터 소스(예를 들어, 이미지) 중 임의의 것으로부터 엔티티를 검출할 수 있다.
도 4는 실시예에 따른, 어플리케이션을 등록하는 예시적인 방법을 설명하는 흐름도이다.
방법(400)은 도 1 내지 도 3을 참조하여 설명한 디바이스(100)에 의해 수행될 수 있으며, EMS(200)에 의해 수행될 수 있다. 예시적인 실시예에 따른 방법(400)을 설명하는데 있어서, EMS(200)에 의해 수행되는 동작이 참조된다. 구체적으로, EMS(200) 또는 이와 유사한 다른 플랫폼을 실행하는, 디바이스(100) 또는 이와 유사한 다른 디바이스의 동작을 참조할 수 있다. 실시예에서, 방법(400)은 도 3에 상술된 커맨드 관리자(305)에 의해 수행될 수 있다.
단계 405에서, EMS는 어플리케이션으로부터 등록 데이터를 수신할 수 있다. 예를 들어, 어플리케이션은 커맨드 관리자에 의해 제공되는 API를 사용함으로써, 등록 데이터를 제출하거나 푸시(push)할 수 있다. 등록 데이터는 다양한 형식 및 신택스(syntax) 중 적어도 하나로 구체화될 수 있다. 예를 들어, 등록 데이터는 XML(Extensible markup language)와 같은 마크 업 언어(markup language)를 사용하여 구체화될 수 있다. 다른 예에서, 등록 데이터는 텍스트 파일과 같이 제한된 형태로 제출될 수 있다. 방법(400)은 등록 데이터가 어플리케이션에 대해 하나의 커맨드를 나타내도록, 등록 데이터가 하나의 커맨드를 포함하는 경우를 예로 들어 설명한다. 그러나, 어플리케이션에 의해 제공되는 등록 데이터는 어플리케이션에 의해 지원되는 하나 이상의 커맨드를 포함할 수 있다. 따라서, 도 4에서 설명되는 내용은 필요에 따라 등록 데이터 내의 추가 커맨드를 처리하도록 적용될 수 있다. 어느 경우에나, EMS는 이하에 설명되는 다양한 동작을 수행함에 있어서 수신된 등록 데이터를 분석할 수 있다.
또한, 어플리케이션이 EMS에 적극적으로 등록되기보다는, EMS는 어플리케이션에 대한 등록 데이터를 가져올 수 있다. 디바이스(100)의 운영 시스템은 어플리케이션을 설치 절차의 일부로서, 어플리케이션에 대한 등록 데이터를 커노니컬 위치(canonical location)에 저장할 수 있다. EMS는 예를 들어 커노니컬 위치에 저장된 등록 데이터의 검토를 통해, 새로운 어플리케이션의 설치를 검출할 수 있다. EMS는 또한, 어플리케이션에 대한 등록 데이터를 포함하고 등록 데이터를 임포트(import)하는 커노니컬 위치에서, 어플리케이션과 연관된 데이터를 검색할 수 있다.
단계 410에서, EMS는 등록 데이터로부터 어플리케이션으로 적어도 하나의 커맨드 및 적어도 하나의 파라미터를 전달하기 위한 메커니즘을 결정할 수 있다. 실시예에서, 등록 데이터는 커맨드 및 파라미터를 어플리케이션에 전달하기 위한 패키지 및 클래스를 지정할 수 있다.
단계 415에서, EMS는 등록 데이터로부터, 어플리케이션에 의해 지원되는 커맨드를 결정할 수 있다. 실시예에서, EMS가 등록 데이터로부터 어플리케이션에 의해 지원되는 커맨드를 결정할 때, EMS는 커맨드 및 도 3에서 상술한 제공자 데이터 내의 어플리케이션에 대한 "등록된 커맨드"로서 어플리케이션 및 지원된 커맨드의 기록을 저장할 수 있다.
단계 420에서, 동의어가 지정될 수 있는 경우, EMS는 등록 데이터로부터 커맨드에 대한 하나 이상의 동의어를 결정할 수 있다. 커맨드에 대한 동의어 지정은 선택적이며 등록 데이터에는 커맨드에 대한 동의어가 포함될 수도 있고 포함되지 않을 수도 있다. 예를 들어, 등록 데이터를 제공하는 어플리케이션은 전자 메일 어플리케이션일 수 있다. 등록 데이터는 "이메일" 커맨드가 지원되는 커맨드를 나타낼 수 있는데, 예를 들어, 전자 메일을 생성하고 전자 메일을 전송하기 위해 어플리케이션에 의해 실행 가능한 커맨드임을 나타낼 수 있다. 등록 데이터는 "전송"이 "전자 메일" 커맨드의 동의어임을 지정할 수 있다. 전자 메일 어플리케이션과 관련하여, "전송" 및 "전자 메일"이라는 용어는 동일한 커맨드로 간주될 수 있다. 시스템은 커맨드에 대한 동의어를 커맨드 및 제공자 데이터 내의 적절한 레코드에 추가할 수 있다.
단계 425에서, EMS는 등록 데이터로부터, 어플리케이션에 대한 커맨드에 의해 수용되는 파라미터를 결정할 수 있다. 실시예에서, 커맨드에 대한 파라미터는 엔티티에 대한 라벨 및 엔티티 타입을 포함할 수 있다. 예를 들어, "이메일" 커맨드에 대한 엔티티의 라벨은 "받는 사람", "참조" 및/또는 "숨은 참조"일 수 있다. 라벨은 파라미터가 커맨드에 의해 사용되는 방법을 나타낼 수 있다. 엔티티 타입은 "사람"일 수 있다. 따라서, 등록 데이터는 "이메일" 커맨드가 "받는 사람" 라벨에 대해 "사람" 타입의 엔티티, "참조" 라벨에 대해 "사람" 타입의 엔티티 및 "숨은 참조" 라벨에 대해 "사람" 타입의 엔티티를 수신할 수 있음을 나타낼 수 있다.
단계 430에서, EMS는 등록 데이터로부터 커맨드에 의해 수용되는 각 엔티티 타입의 양을 결정할 수 있다. 예를 들어, 등록 데이터는, "이메일" 커맨드가 "받는 사람" 라벨에 대한 하나 이상의 "사람" 타입 엔티티를 수신해야 하고, "참조" 및 "숨은 참조" 라벨 각각에 대한 0이상의 "사람" 타입 엔티티를 수신해야 한다고 지정할 수 있다. 이와 관련하여, 등록 데이터는 파라미터가 필수인지 또는 선택적인지 여부를 추가로 나타낼 수 있다. 예를 들어 "받는 사람" 라벨의 파라미터는 필수사항일 수 있으며, "참조" 및 "숨은 참조" 라벨에 대한 파라미터는 선택사항일 수 있다.
단계 435에서, 파라미터에 대한 제약이 지정된 경우, EMS는 등록 데이터로부터 커맨드의 파라미터에 대한 제약조건(constraints)을 결정할 수 있다. 제약조건은 엔티티의 어떤 필드가 커맨드의 주어진 파라미터에 필요한지 나타낼 수 있다. 예를 들어, 제약조건은 "받는 사람" 레이블을 갖는 파라미터가 "사람" 타입의 엔티티에 전자 메일 주소 필드(예를 들어, 전자 메일 주소 필드에 대한 값)가 필요하다는 것을 의미할 수 있다. 그렇지 않으면, 파라미터를 이행할 때, 제공된 엔티티가 "이메일" 커맨드를 실행하는데 필요한 정보를 제공할 수 없다.
또 다른 예에서, 메시지 어플리케이션은 "전송"과 동의어를 갖는 "메시지"와 같은 커맨드를 지원할 수 있다. 예를 들어, "메시지" 커맨드는, "사람" 타입 엔티티가 메시지 전송을 위해 메시지 어드레스(예를 들어, 전자 메일 주소 등)를 가져야 한다는 것을 나타내는 제약조건을 가질 수 있다.
단계 440에서, EMS는 등록 데이터로부터 어플리케이션에 의해 제공되는 엔티티 타입을 결정할 수 있다. 어플리케이션은 하나 이상의 다른 엔티티 타입의 제공자 역할을 수행할 수 있다. 예를 들어, 연락처 관리 어플리케이션은 "사람" 엔티티 타입의 제공자로 등록될 수 있다. 스트리밍 서비스는 "영화", "TV 쇼" 또는 "노래" 엔티티 타입의 제공자로 등록될 수 있다. 사진 관리 어플리케이션은 "사진" 및/또는 "비디오" 엔티티 타입의 제공자로 등록될 수 있다.
단계 445에서, EMS는 등록 데이터로부터 어플리케이션에 대한 제공자를 결정할 수 있다. 실시예에서, 어플리케이션 제공자는 EMS가 호출할 수 있는 어플리케이션에 대한 엔트리 포인트(entry point)일 수 있고, 실행될 때 EMS가 엔티티를 선택 또는 지정하게 할 수 있다. 등록 데이터는 엔트리 포인트를 지정할 수 있습니다. 실시예에서, 어플리케이션의 엔트리 포인트는, 예를 들어, 안드로이드 운영 체제에서 이용가능한 액티비티일 수 있다. 또 다른 실시예에서, 어플리케이션에 대한 엔트리 포인트는 서비스일 수 있다.
도 5는 실시예에 따른 어플리케이션을 등록하는 예시를 설명하는 도면이다.
도 5를 참조하면, 각각의 어플리케이션 A, B, C 및 D는 EMS에 등록될 수 있다. 예를 들어, 어플리케이션 A는 스트리밍 미디어 서비스일 수 있다. 도 5에 도시된 바와 같이, 어플리케이션 A는 "시청(Watch)" 및 "자세히 보기(Learn More)"와 같은 커맨트를 지원할 수 있다. "시청" 및 "자세히 보기" 커맨드는 모두 "영화", "TV 쇼" 및 "비디오" 타입의 엔티티를 수용할 수 있다.
또한, 예를 들어, 어플리케이션 B는 소셜 네트워크 어플리케이션일 수 있다. 어플리케이션 B는 "게시(Post)", "공유(Share)", "다이렉트 메시지(Direct Message)", "팔로우(Follow)" 및 "연락처(Contact)"와 같은 커맨드를 지원할 수 있다. "게시", "공유" 및 "다이렉트 메시지" 커맨드는, "그림", "텍스트" 및 "링크"의 엔티티 타입을 수신 할 수 있다. "팔로우" 및 "연락처" 커맨드는 "사람(Person)" 타입의 엔티티를 수신 할 수 있다.
또한, 예를 들어, 어플리케이션 C는 카메라 어플리케이션일 수 있다. 어플리케이션 C는 "촬영(Take)" 및 "캡쳐(Capture)" 커맨드를 지원할 수 있다. "촬영" 및 "캡쳐" 커맨드는 "그림" 및 "비디오"의 엔티티 타입을 수신 할 수 있다.
또한, 예를 들어, 어플리케이션 D는 전화 어플리케이션일 수 있다. 어플리케이션 D는 "통화(Call)", "전화 걸기(Dial)" 및 "연락처" 커맨드를 지원할 수 있다. "통화", "전화 걸기" 및 "연락처" 커맨드는 "사람" 및 "번호"의 엔티티 타입을 수신 할 수 있다.
도 6은 실시예에 따른 커맨드 및 엔티티들을 이용하여 컴퓨팅 디바이스와 상호작용하는 예시를 설명하는 흐름도이다.
도 6에 도시된 방법(600)은 EMS(200)에 의해 수행될 수 있다. 일 실시 예에서, 방법(600)은 도 3에서 상술한 바와 같이, 커맨드 관리자(305)에 의해 수행될 수 있다.
단계 605에서, EMS는 어플리케이션으로부터의 커맨드를 등록된 커맨드로서 등록할 수 있다. 구체적으로, EMS는 복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입을 포함하는 복수의 커맨드를 등록할 수 있다. 시스템은 복수의 상이한 어플리케이션으로부터 하나 이상의 커맨드를 등록 할 수 있다. 시스템은 도 3 내지 5에서 상술한 바와 같이, 커맨드를 등록할 수 있다.
단계 610에서, EMS는 복수의 엔티티 타입 중 하나의 타입을 갖는 엔티티를 결정할 수 있다. 구체적으로, EMS는, 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정할 수 있다. 실시예에서, 특정 엔티티를 직접 또는 간접적으로 지정하는 사용자 입력이 수신될 수 있다. 예를 들어, 사용자는 엔티티를 명시적으로 지정할 수 있다. 다른 예에서, 사용자는 기준을 특정하는 사용자 입력을 제공할 수 있다.
EMS는, 적어도 하나의 특정 타입의 엔티티의 공급자로 등록된 어플리케이션을 결정하기 위해, 부분적으로 텍스트 등으로 입력된 기준을 이용할 수 있다. 한편, 기준은 사용자에 의해 선택된 다른 커맨드 및/또는 엔티티를 포함하거나 포함하지 않을 수 있다. EMS는 문의 기준과 매칭되는 적어도 하나의 후보 엔티티를 획득하기 위한 기준을 이용하여, 적어도 하나의 결정된 어플리케이션에 문의할 수 있다.
단계 615에서, EMS는 단계 610에서 결정된 엔티티의 엔티티 타입을 수용하는 등록된 커맨드로부터 커맨트를 선택할 수 있다. 구체적으로, EMS는 파라미터로서 제 1 엔티티 타입을 수용하며 복수의 어플리케이션에 의해 등록된 복수의 커맨드로부터, 커맨드를 선택할 수 있다.
단계 620에서, EMS는 어플리케이션에게 선택된 커맨드 및 엔티티를 제공할 수 있다. 구체적으로, EMS는 프로세서를 이용하여, 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 제 1 엔티티 및 선택된 커맨드를 제공할 수 있다. 예를 들어, 추가적인 사용자 입력, 선택된 커맨드에 대해 등록된 디폴트 어플리케이션 등에 기초하여, 시스템은 하나 이상의 상이한 어플리케이션으로부터 어플리케이션을 선택할 수 있다.
예를 들어, 사용자는 온라인 리뷰 서비스를 이용하여 레스토랑에 대한 등급을 검색하거나, 온라인 구매 이전에 제품의 리뷰를 확인하거나, 온라인 영화 (예를 들어, 스트리밍) 서비스 상에서 영화를 시청하기를 원할 수 있다. 각 어플리케이션이 다른 어플리케이션과는 분리되어(siloed off) 독립적인 방식으로 작동하는 기존의 찾기 및 탭 상호작용 모델을 이용하는 경우, 사용자가 참여할 수 있는 상호작용 타입이 제한적일 수 있다. 특히, 사용자는 각각의 개별적인 전용 어플리케이션을 방문하여, 레스토랑에 대한 리뷰를 얻고, 다른 어플리케이션을 사용하여 제품 리뷰를 확인하고, 또 다른 어플리케이션을 사용하여 온라인으로 구매하고, 또 다른 어플리케이션을 사용하여 영화를 시청할 수 있다. 사용자는 각각의 개별 어플리케이션을 실행하고 해당 어플리케이션 내에서 찾기 및 탭 패러다임을 수행하여 작업을 수행하고, 필요에 따라 다른 어플리케이션에서 동일한 동작을 반복해야 할 수 있다.
본 개시에 설명된 예시적인 실시예에 따르면, 레스토랑 리뷰를 위한 어플리케이션은 "자세히 보기"와 같은 커맨드를 지원할 수 있고, 커맨드는 "레스토랑" 및/또는 "상점"과 같은 엔티티를 파라미터로서 수용한다는 것을 나타낼 수 있다. 온라인 구매 어플리케이션은 "영화"를 포함하여, 어플리케이션에서 판매되는 제품과 관련된 다양한 엔티티에 대해 "구매"와 같은 커맨드를 등록할 수 있다. 다른 실시예에서, 온라인 구매 어플리케이션은 커맨드가 "영화" 엔티티 타입을 파라미터로 수용하는 "대여"와 같은 커맨드를 지원할 수 있다. 온라인 스트리밍 어플리케이션은 "영화" 및 "TV 쇼"의 엔티티 타입을 지원하는 "시청" 커맨드를 등록할 수 있다.
또한, 사용자는 어플리케이션 자체 내에서 먼저 실행 및 검색하지 않고 어플리케이션의 엔티티 및/또는 커맨드에 직접 액세스 할 수 있다. 예를 들어, 사용자는 사용자가 커맨드 및 엔티티에 직접 액세스 할 수 있는 대화형 명령행 GUI(interactive command line GUI)를 사용할 수 있다.
또한, EMS는 2개 이상의 커맨드를 함께 연결할 수 있다. 예를 들어, EMS는 제 1 어플리케이션에 커맨드를 제출할 수 있고, 이에 응답하여 제 1 어플리케이션으로부터 하나 이상의 엔티티를 수신 할 수 있다. 예를 들어, EMS는 제 1 어플리케이션에 정의된 기준에 부합하는 특정 타입의 엔티티를 문의할 수 있다. EMS는 반환된 적어도 하나의 엔티티에 대해 하나 이상의 추가 커맨드를 자동으로 식별할 수 있다. 예를 들어, EMS는 제 1 어플리케이션에서 반환된 타입의 엔티티를 어떤 등록된 커맨드가 수용하는지를 결정할 수 있다. EMS는 적어도 하나의 커맨드를 선택할 수 있고, 적어도 하나의 선택된 커맨드를 지원하는 제 2 어플리케이션으로, 적어도 하나의 반환된 엔티티와 함께 선택된 커맨드를 제출할 수 있다. 실시예에서, 사용자는 필요하다면 상이한 후보 커맨드들 및/또는 반환된 후보 엔티티들 중에서 선택함으로써, 위에서 설명된 프로세스를 진행할 수 있다.
도 7은 다른 실시예에 따른, 커맨드들 및 엔티티들을 사용하여 컴퓨팅 디바이스와 상호작용하는 예시를 설명하는 흐름도이다.
도 7을 참조하면, 방법(700)은 EMS(200)에 의해 수행될 수 있다. 구체적으로, 방법(700)은 도 3에서 설명된 커맨드 관리자(305)에 의해 수행될 수 있다.
단계 705에서, EMS는 복수의 어플리케이션으로부터의 복수의 커맨드를 등록할 수 있다. 등록 프로세스를 통해 생성된 등록 데이터는 복수의 어플리케이션 중 어느 어플리케이션이, 등록된 커맨드에 대한 파라미터로서 수용된 복수의 커맨드 및 엔티티 타입 중 서로 다른 것들을 지원하는지 등의 정보를 포함할 수 있다.
단계 710에서, EMS는 복수의 커맨드 중에 하나인, 커맨드를 결정할 수 있다. 커맨드는 단계 705에서 등록된 복수의 커맨드 중 하나인 사용자 지정 커맨드일 수 있다. 구체적으로, 특정 커맨드를 특정하는 사용자 입력이 수신될 수 있다. 구체적으로, 디바이스(100)의 디스플레이(124)는 사용자가 선택하거나 선택할 수 있는 하나 이상의 커맨드를 표시할 수 있다. 예를 들어 사용자는, EMS가 등록 데이터의 커맨드를 사용자가 선택할 수 있는 기준에 부합하는 커맨드의 서브 세트로 필터링하는데 사용될 수 있는 하나 이상의 문자와 같은, 기준을 특정하는 사용자 입력을 입력할 수 있다. 구체적으로, 사용자는 I/O 장치(122)를 통하여 사용자 입력을 입력할 수 있다.
또한, EMS는 사용자가 특정 커맨드를 지정하는 것에 응답하여, 커맨드를 지원하는 어플리케이션을 호출하여 사용자 인터페이스가 디스플레이되도록 제어할 수 있다. 예를 들어, "게시" 커맨드에 응답하여, EMS는 "게시" 커맨드를 지원하는 어플리케이션을 호출하여, 사용자가 "게시" 커맨드에 대한 파라미터로서의 엔티티와 같은 추가 데이터를 지정할 수 있는 사용자 인터페이스를 디스플레이할 수 있다.
단계 715에서, EMS는 등록에 기초하여, 제 1 커맨드에 의해 수용되는 엔티티 타입을 결정 결정할 수 있다. 구체적으로, EMS는 단계 710의 커맨드에 의해 수용되는 엔티티 타입을 파라미터로서 결정할 수 있다.
단계 720에서, EMS는 커맨드에 대한 파라미터로서, 엔티티 타입의 엔티티를 획득할 수 있다. 구체적으로, EMS는 단계 710의 커맨드에 대한 파라미터로서, 단계 715에서 결정된 타입의 엔티티를 획득할 수 있다. 실시예에서, EMS는 단계 715에서 결정된 엔티티 타입의 제공자로서 등록된, 어플리케이션에게 엔티티에 대해 문의할 수 있다. EMS는 또한, 문의의 일부로서 조건을 제공할 수 있다. 예를 들어, 사용자는 엔티티를 필터링하는데 사용할 수 있는 하나 이상의 문자를 지정할 수 있다. 문의의 일부로서 문자들이 적어도 하나의 어플리케이션에 제공됨으로써, 어플리케이션이 문의 기준과 일치하는 요청된 타입의 엔티티만을 반환할 수 있다. 예를 들어, 어플리케이션은 문자 "사"로 시작하는 "사람" 엔티티만을 반환할 수 있다. 다른 예에서, 엔티티는 저장된 엔티티들의 리스트로부터 선택될 수 있다.
단계 725에서, EMS는 프로세서를 이용하여, 커맨드를 지원하는 상기 복수의 어플리케이션에 포함된 어플리케이션에, 커맨드 및 엔티티를 제공할 수 있다. EMS는 실행을 위해 선택된 커맨드 및 엔티티를 어플리케이션에 제공할 수 있다. 실시예에서, 추가적인 사용자 입력, 선택된 커맨드에 대해 등록된 디폴트 어플리케이션 등에 기초하여, 시스템은 하나 이상의 상이한 어플리케이션으로부터 어플리케이션을 선택할 수 있다.
예를 들어, 사용자는 소셜 네트워크 플랫폼에 대한 게시물을 작성하기 원할 수 있다. 사용자는 EMS의 사용자 인터페이스를 통해 "게시" 커맨드를 지정할 수 있다. "게시" 커맨드를 지정한 후, EMS는 "게시" 커맨드를 지원하는 어플리케이션이 사용자가 "게시" 커맨드에 대한 엔티티를 지정할 수 있는 사용자 인터페이스를 디스플레이 하도록 할 수 있다. 다른 예에서, 사용자는 EMS의 사용자 인터페이스를 계속 사용함으로써 "게시" 커맨드에 대한 엔티티를 지정할 수 있다.
도 8은 실시예에 따른, 대화형 커맨드행 GUI의 일 예시를 나타내는 도면이다.
도 8을 참조하면, 대화형 커맨드행의 예가 도시된다. 디바이스(100)의 디스플레이(124)는 GUI(800)를 디스플레이 할 수 있다. 구체적으로, GUI(800)는 EMS가 대화형 명령행에 대한 액세스를 요청하는 특정 사용자 입력에 응답하여 디스플레이하고, 어플리케이션에 직접 커맨드를 제공할 수 있는, 최상위 인터페이스일 수 있다.
종래의 명령행 인터페이스는 사용자로부터 텍스트 커맨드를 수신할 수 있고, 텍스트 커맨드는 어플리케이션을 실행할 수 있다. 예를 들어, 각 커맨드가 제출될 때 특정 어플리케이션이 실행될 수 있다. 또한, 종래의 명령행은 은 도 8의 경우와 같이 대화형이지도 않다. 도 8의 예에서는, 도 8에 도시 된 바와 같이, GUI(800)는 대화형으로 동작할 수 있다. 또한, GUI(800)는 단순히 전체 어플리케이션 그 자체의 실행을 개시하는 것과는 대조적으로 어플리케이션의 개별 동작 또는 기능을 실행하거나 개시하는 개별 커맨드를 수신할 수 있다.
GUI(800)는 영역(802 및 804) 및 키보드(806)를 포함할 수 있다. 초기화면에 포함되는 영역(802)은 복수개의 커맨드(808)를 디스플레이 할 수 있다. 사용자는 어플리케이션을 실행하기 위해 하나 이상의 커맨드(808)를 선택할 수 있다. 복수개의 커맨드(808)는 "구입", "통화", "이메일", "메시지", "티켓 구매", "채팅", "자세히 보기" 및 "예약" 각각의 기능을 수행하는 커맨드를 포함할 수 있다.
복수개의 커맨드(808), 또는 그러한 커맨드를 나타내는 제어 창은 아이콘(810 및 812)을 포함할 수 있다. 실시예에서, 복수개의 아이콘(810) 각각은 복수개의 커맨드(808)를 지원하는 어플리케이션을 지시할 수 있다. 실시예에서, 어플리케이션과 커맨드 간의 연결은 명백하거나 암시적일 수 있다. 어플리케이션이 커맨드를 지원하는 유일한 어플리케이션인 경우, 어플리케이션은 커맨드에 명시적으로 연결될 수 있다. 커맨드가 둘 이상의 어플리케이션에서 지원되고 어플리케이션이 커맨드의 기본 수신자인 경우, 어플리케이션은 커맨드에 암시적으로 연결될 수 있다. 아이콘(810)은 커맨드와 어플리케이션 간의 관계가 암시적이거나 명시적인지 여부를 나타낼 수 있다.
예를 들어, 복수개의 아이콘(810)은 복수개의 커맨드(808)와 어플리케이션 사이의 관계가 명백할 때 불투명하게 표시될 수 있다. 이 경우, 복수개의 커맨드(808) 각각에 대응되는 복수개의 아이콘(810)은 커맨드를 지원하는 단일 어플리케이션의 아이콘일 수 있다. 이와 같이, 불투명한 아이콘(810)은 커맨드(808)를 처리하거나 수행할 특정 어플리케이션을 나타낸다. 둘 이상의 어플리케이션에 의해 커맨드(808)가 지원되는 경우 아이콘(812)은 반투명할 수 있다. 반투명 아이콘(812)은 여전히 커맨드에 대한 특정 선호 어플리케이션을 나타낼 수 있다. 반투명한 아이콘(812)의 경우, 다른 어플리케이션도 커맨드를 지원하며 선택될 수 있음을 나타낼 수 있다.
단일 어플리케이션 또는 다중 어플리케이션이 커맨드를 지원하는지 여부를 나타내기 위해 특정 시각 효과가 제공될 수 있으나, 특정 시각 효과는 예시적인 실시예에 의해 제한되지 않는다. 커맨드를 지원하는 어플리케이션을 나타내기 위해 다양한 시각 효과가 적용될 수 있다. 실시예에서, EMS는 선택된 커맨드와 연관되는, 커맨드를 지원하는 모든 어플리케이션을 반투명 아이콘으로 표시할 수 있다. 또한, 명시적으로 연결된 어플리케이션을 불투명 한 아이콘으로 표시할 수 있습. 또 다른 예에서 EMS는 암시적으로 연결된 어플리케이션에 "임시" 또는 "기본값"으로 라벨을 지정할 수 있다.
커맨드에 대한 디폴트 어플리케이션은 하나 이상의 상이한 선택 방법을 사용하여 선택될 수 있다. 실시예에서, EMS는 커맨드를 수행하기 위해, 어플리케이션의 사용 빈도에 기초하여 커맨드에 대한 디폴트 어플리케이션을 선택할 수 있다. 이 경우, 사용빈도가 가장 높은 어플리케이션이 디폴트 어플리케이션일 수 있다. 또한 실시예에서, EMS는 커맨드를 수행하기 위해, 가장 최근에 사용한 어플리케이션을 디폴트 어플리케이션으로 선택할 수 있다. 또한, 실시예에서, EMS는 설치 타임 스탬프(time stamp of installation)에 기초하여 디폴트 어플리케이션을 선택할 수 있다. 이 경우, 커맨드를 지원하는 어플리케이션들 중 가장 최근에 설치된 어플리케이션이 디폴트 어플리케이션일 수 있다.
예를 들어, 어플리케이션은 등록 시에 어플리케이션에 대한 디폴트 커맨드를 특정할 수 있다. 구체적으로, 어플리케이션에 기본 커맨드가 있는 경우, GUI(800)는 어플리케이션에 대한 기본 커맨드 세트인 디폴트 커맨드와 함께 어플리케이션을 표시할 수 있다. 실시예에서, 영역(802)은 어플리케이션을 디스플레이할 수 있다. 어플리케이션은 커맨드(808)의 유무에 관계없이 디스플레이 될 수 있다. 사용자가 커맨드(808)와 반대로, 영역(802)으로부터 어플리케이션을 선택하는 경우, EMS는 선택된 어플리케이션에 대한 디폴트 커맨드(예를 들어, 커맨드(808))를 디스플레이할 수 있다. 또한, EMS는 상술된 바와 같은 시각화 방법을 사용하여 선택된 어플리케이션이 커맨드에 명시적으로 연결됨을 나타낼 수 있다.
EMS는 사용자 입력을 수신할 수 있다. 예를 들어, EMS는, 커맨드(808)에 대한 사용자 터치 또는 선택, 또는 영역(804) 내의 텍스트를 지정하는 키보드(806)를 사용하여 사용자 입력을 검출할 수 있다. 사용자가 GUI(800)를 통해 입력을 제공함에 따라, EMS는 영역(802)에 제시된 선택 세트를 필터링할 수 있다. 필터링된 선택은 업데이트된 커맨드(808) 및/또는 엔티티로서 도시될 수 있다. 예를 들어, 사용자가 텍스트를 영역(804)에 입력하면, EMS는 영역(802)에 도시된 커맨드(808) 세트를 동적으로 조정할 수 있다. 추가로 사용자 입력을 수신함으로써, 사용자 지정 텍스트와 매칭되는 커맨드(808) 및/또는 엔티티만을 디스플레이하기 위해, EMS는 영역(802)에 도시된 커맨드(808) 세트 및/또는 엔티티를 지속적으로 조정할 수 있다. 매칭은 커맨드 및/또는 커맨드를 지원하는 어플리케이션의 시작 문자열, 또는 커맨드 및/또는 어플리케이션의 일부 문자열로 제한될 수 있다.
예를 들어, 사용자는 텍스트 입력을 완료하기 위해, 커맨드를 탭하여 원하는 커맨드를 선택할 수 있다. 다른 예에서, EMS는 사용자에 대한 자동 완성 옵션으로서 후보 커맨드를 디스플레이할 수 있다. 사용자는 키보드(806)의 스페이스 바를 누름으로써 자동 완성 옵션을 선택할 수 있다. EMS에 의해 제공되는 자동 완성 옵션은 임의의 다양한 다른 방법을 사용하여 결정될 수 있다. 예를 들어, 사전 순으로 정렬된 커맨드 목록에서 사용자의 텍스트 입력으로 시작하는 첫 번째 커맨드를 선택할 수 있고, 사용자가 지정한 텍스트와 매칭되는 커맨드 중에서 가장 높은 빈도로 사용된 커맨드를 선택할 수 있고, 사용자가 지정한 텍스트와 매칭되는 커맨드 중에서 가장 최근의 사용된 커맨드를 선택할 수 있으나, 이에 제한되지 않는다.
어플리케이션이 GUI(800)를 통해 특정된 커맨드에 명시적으로 연결되는 경우, EMS는 입력으로서 어플리케이션이 커맨드를 허용하는 파라미터(예컨대, 엔티티) 또는 파라미터의 조합만을 허용할 수 있다. 한편, 둘 이상의 어플리케이션이 GUI(800)를 통해 지정된 커맨드를 지원하는 경우와 같이 연결이 암시적인 경우, EMS는 커맨드를 지원하는 어플리케이션 중 적어도 하나에 의해 수용되는 임의의 파라미터(예를 들어, 엔티티) 또는 파라미터의 조합을 허용할 수 있다.
사용자가 GUI(800)를 통해 추가 엔티티를 계속해서 지정함에 따라, EMS가 지정된 커맨드를 지원하는 어플리케이션 하나만을 허용하는 임의의 엔티티 또는 엔티티의 조합을 검출함으로써, 커맨드 및 어플리케이션 간의 연결이 암시적 연결에서 명시적 연결로 전환될 수 있다. 예를 들어, GUI(800)는 사용자에 의해 지정된 커맨드를 지원하는 어플리케이션의 리스트(예를 들어, 영역(802))를 디스플레이할 수 있다. 커맨드는 키보드(806)를 사용하여 영역(804)에 입력되거나, 영역(802)으로부터 선택될 수 있다. EMS는 리스트로 기재된 어플리케이션들 중 하나를 선택하는 사용자 입력을 수신함으로써, 커맨드와 선택된 어플리케이션 간의 연결을 명백하게 만들 수 있고, 시스템이 수신할 수 있는 허용 가능한 파라미터의 세트를 제한할 수 있다.
도 9는 실시예에 따른 GUI의 다른 예시를 나타내는 도면이다.
도 9를 참조하면, EMS는 "전송" 커맨드가 영역(804)에서 선택되는 것에 응답하여, GUI(800)의 상태를 변경시킬 수 있다. "전송" 커맨드에 대한 아이콘(810)은 "전송" 커맨드를 지원할 수 있는 둘 이상의 어플리케이션이 등록되었음을 나타내는 반투명으로 디스플레이될 수 있다. 예를 들어, 시스템은 "전송" 커맨드를 지원하도록 등록된 두 개의 서로 다른 전자 메일 클라이언트를 가질 수 있다. 커맨드가 선택되면 사용자는 커맨드에 대한 파라미터를 지정할 수 있다. 시스템은 커맨드에 대한 후보 엔티티를 표시할 수 있다. 예를 들어, "전송" 커맨드가 선택되고 사용자가 키보드(806) 상의 문자 "연"을 누르는 것에 응답하여, EMS는 허용 가능한 엔티티 세트를 영역(802)에 도시된 것들로 필터링할 수 있다.
사용자가 영역(802)에서 표시되는 커맨드를 선택하면, EMS는 선택된 커맨드에 의해 수용될 수 있는 엔티티들만을 적어도 하나의 파라미터로서 디스플레이 할 수 있다. 실시예에서, 사용자는 영역(804)에서 선택된 커맨드가 완료되거나 영역(804)으로부터 제거될 때까지 다른 커맨드를 지정할 수 없다. 도 8에 도시된 바와 같이, EMS는 지원 어플리케이션 각각에 대한 "전송" 커맨드가 "개인" 타입 엔티티를 수용한다는 것을 감지할 수 있다. 따라서, EMS는 문자 "연"으로 시작하는 엔티티에 대해 "사람" 엔티티를 제공하도록 등록된 어플리케이션에 문의할 수 있다. 사용자가 키보드(806)를 사용하여 영역(804)에 타이핑함에 따라, EMS는 입력된 텍스트와 매칭되는 엔티티에 대해 문자 단위로 어플리케이션에 계속 문의할 수 있다. 예를 들어, EMS는 영역(804)에서 수신된 텍스트를, 영역(804) 내 커맨드에 대해 허용 가능한 타입의 엔티티를 제공하도록 등록된 각 어플리케이션에 전송할 수 있다. EMS는 문의된 어플리케이션으로부터 후보 엔티티를 수신할 수 있다.
문의된 어플리케이션들로부터 후보 엔티티들을 수신하는 것에 응답하여, EMS는 선택 가능한 옵션들로서 영역(802) 내의 후보 엔티티들을 디스플레이할 수 있다. 도 9에 도시된 바와 같이, EMS는 문자 "연"으로 시작하는 3개의 "사람" 타입 엔티티(예를 들어, 연락처 A, 연락처 B 및 연락처 C)가 디스플레이되도록 제어할 수 있다. 영역(804) 내에서, 자동 완성 제안은 사용자가 키보드(806)의 스페이스 키를 누름으로써 언제든지 선택될 수 있는 "연락처 A"에 대한 것일 수 있다.
EMS는 임의의 다양한 상이한 방법을 사용하여 엔티티를 제안할 수 있다. 구체적으로, EMS는 다양한 방법으로 엔티티를 사용자에게 제안하기 위해서, 제안되는 엔티티를 포함하는 GUI 가 출력되도록 제어할 수 있다. 실시예에서, EMS는 커맨드에 대한 엔티티의 선택 빈도에 기초하여 커맨드에 대해 허용되는 엔티티를 제안할 수 있다. 다른 예에서, EMS는 커맨드에 대해 최근 선택된 엔티티를 디스플레이할 수 있다. 다른 예에서, EMS는 서로 다른 커맨드에 걸쳐, 특정 엔티티 타입에 관해 사용자가 자주 선택하거나 최근에 선택된 영역(802) 내의 엔티티를 제안할 수 있다.
실시예에서, EMS는 영역(804)에서 커맨드(예를 들어, "전송" 커맨드)에 의해 수용되는 엔티티 타입을 제공하기 위해, 등록된 각각의 어플리케이션에 문의할 수 있다. 다른 실시예에서, EMS는 "전송" 커맨드에 대해 유효한 타입의 제공 엔티티로서, 등록된 어플리케이션의 서브 세트에 문의할 수 있다. 문의되는 어플리케이션의 수를 제한하면 처리 속도가 빨라질 수 있다. 문의되는 어플리케이션 세트를 제한하고, 커맨드에 대한 원하는 엔티티가 수신되지 않았음을 결정한 후에, EMS는 추가 어플리케이션에게 엔티티에 대해 문의할 수 있다. 예를 들어 "사람" 엔티티를 제공하는 어플리케이션의 서브 세트에 문의한 후, 사용자가 "전송" 커맨드를 완료하기 위한 후보 엔티티를 선택하지 않았거나 임의의 후보 엔티티를 반환하지 않는 어플리케이션에 문의한 경우, EMS는 문의된 어플리케이션 집합을 확장할 수 있다.
실시예에서, 시스템이 후보 엔티티에 대해 문의하는 특정 어플리케이션은, 영역(804) 내 커맨드에 대해 허용된 타입의 후보 엔티티를 제공하기 위해 사용자가 가능하게 한 것만으로 제한될 수 있다. 이러한 실시예에서, 사용자가 특별히 활성화시킨 어플리케이션만이 사용자가 사용하는 콘텐츠(예를 들어, 엔티티)에 액세스 할 수 있으므로, 개인 정보가 보다 잘 보호될 수 있다. EMS는 사용자가, 어떤 어플리케이션이 특정 타입의 엔티티를 제공하는지, 및/또는 어떤 어플리케이션이 상이한 등록된 커맨드(예를 들어, 커맨드 단위로 상이)의 특정 타입의 엔티티를 제공할 수 있는지를, 지시할 수 있는 선호 사용자 인터페이스를 제공할 수 있다.
실시예에서, 시스템은 어플리케이션이 이용가능하게 하는 상이한 사용자 인터페이스에 대한 이용가능한 옵션을 디스플레이 할 수 있다. 사용자 인터페이스를 통해 사용자는 대화식으로 엔티티를 선택할 수 있다. 예를 들어, 포토 갤러리 어플리케이션은 사용자가 최근 찍은 사진들 중에서 선택할 수 있는, 사용자 인터페이스를 제공할 수 있다. 시스템은 갤러리 어플리케이션이 제공하는 다른 사용자 인터페이스에 대한 제어 창과 함께, 상기 인터페이스를 시작하는 제어 창을 디스플레이함으로써, 커맨드에 대한 엔티티의 사용자 선택을 용이하도록 할 수 있다.
도 10은 실시예에 따른, GUI의 다른 예시를 나타내는 도면이다.
도 10을 참조하면, EMS는 영역(804)에서 "이메일" 커맨드가 특정되는 것에 응답하여 엔티티(1002 및 1004)와 함께 GUI(800)의 상태를 변경할 수 있다. 예를 들어, 사용자는 "이메일" 커맨드 및 "이메일" 커맨드에 대한 허용 가능한 엔티티를 선택할 수 있다. 예를 들어, 엔티티(1002)는 생성될 전자 메일에 첨부될 수 있는 특정 파일을 지정하는 "파일" 타입의 엔티티일 수 있고, 엔티티(1004)는 전자 메일의 "받는 사람" 필드에 사용될, 전자 메일 주소를 갖는 "사람" 타입의 엔티티일 수 있다.
예를 들어, 사용자는 "이메일" 커맨드를 지정할 수 있다. 사용자는 문자 그대로의 이름이 아닌, 설명 입력을 추가로 지정할 수 있다. 예를 들어, 디바이스(100)에 의해 촬영된 최근 사진을 선택하기 원하는 경우, 사용자는 사진 어플리케이션의 엔트리 포인트(entry point)를 시작하기 위해 영역(802)에서 "최근 사진" 제어 창을 선택할 수 있다. 또한, 사용자는 "엄마"를 입력하여 "엄마"라는 닉네임 및 전자 메일 주소를 갖는 "사람" 타입의 엔티티를 검색할 수 있다.
EMS는 엔티티(1002 및 1004)를 "이메일" 커맨드에 대한 활성 파라미터 세트에 추가 또는 첨부할 수 있다. 예를 들어, 도 10을 참조하면, 엔티티(1002 및 1004)는 아이콘으로 도시될 수 있다. 엔티티는 텍스트, 썸네일 이미지, 아이콘(또는 썸네일) 및 제목(예를 들어, 텍스트) 등을 포함하는 다양한 형태로 제시될 수 있다. 실시예에서, EMS는 수신된 파라미터에 대한 라벨을 디스플레이할 수 있다. 엔티티(1004)는 "사람" 타입을 가지기 때문에, EMS는 엔티티(1004)가 "이메일" 커맨드에 대한 "받는 사람" 라벨에 대한 것임을 나타낼 수 있다.
설명된 바와 같이, 사용자는 영역(802)에 도시된 필터링된 엔티티 세트로부터 엔티티(1002 및 1004)를 선택할 수 있고, 자동 완성 옵션을 선택함으로써 엔티티(1002 및 1004)를 선택할 수 있다. 또한, 논의된 바와 같이, EMS에 의해 제공되는 자동 완성 옵션은 다양한 방식으로 결정될 수 있다. 어플리케이션은 서로 다른 시간에 영역(802)에서 사용자에게 디스플레이하기 위한 후보 엔티티를 반환할 수 있기 때문에, EMS는 서로 다른 시간에 자동 완료 옵션을 결정하기 위해, 그리고 어플리케이션이 제공하는 엔티티 타입에 기초한 서로 다른 어플리케이션을 위해, 상이한 방법을 사용할 수 있다.
예를 들어, EMS는 후보 엔티티들의 제 1 세트로부터 자동 완성 옵션을 결정할 수 있다. 시스템은 자동 완성 옵션을 선택하기 전에, 문의된 각 어플리케이션이 후보 엔티티를 반환할 때까지 대기할 수 있다. 시스템은 자동 완성 옵션을 선택하기 전에 각 어플리케이션에 문의한 후, 최소 시간 동안 대기할 수 있다. 시스템은 자동 완성 옵션을 선택하고, 자동 완료 옵션을 저장하고, 문의된 어플리케이션에 의해 보다 적합한 매치가 결정되었거나 반환되었다는 결정에 응답하여, 다른 후보 엔티티로 자동 완성 옵션을 업데이트할 수 있다.
EMS는, 실행시에 커맨드가 유효하다면, 엔티티를 선택하기 전 또는 선택하는 동안 사용자가 영역(804)에서 커맨드를 실행하게 할 수 있다. "유효한" 커맨드는, 커맨드의 각 필수 파라미터에 대해, 엔티티를 파라미터로서 갖는 커맨드일 수 있다. 예를 들어, "이메일" 커맨드의 경우, 필수 엔티티는 "받는 사람" 커맨드에 대한 "사람" 엔티티이고, 선택적으로 "파일", "사진" 등과 같은 타입의 엔티티와 같은 컨텐츠 또는 텍스트일 수 있다. 일단 유효한 커맨드가 생성되면, 사용자는 다양한 방법을 통해 커맨드를 실행할 수 있다. 예를 들어, EMS는, GUI(800)에 포함될 수 있는 "실행" 제어의 활성화, 반환 또는 입력 키의 활성화 등을 검출하는 것에 응답하여, 커맨드(및 영역(804)으로부터의 커맨드의 변수로서의 엔티티)를 커맨드와 명시적 또는 암시적으로 연결된 어플리케이션에 제출할 수 있다.
구체적으로, EMS는, 영역(804)에서 커맨드를 실행하기 위한 사용자 요청에 응답하여, 선택된 엔티티를 구조화된 텍스트 데이터로 묶어서(bundling), 선택된 커맨드의 아이덴티티(예를 들어, 식별자)를 갖는 구조화된 원문의(textual) 데이터를 어플리케이션에 전송할 수 있다. 어플리케이션은 커맨드를 실행하기 위해, 수신된 데이터를 내부 어플리케이션 형식으로 매핑하는 방법을 결정할 수 있다. 예를 들어, 어플리케이션은 수신된 데이터를 어플리케이션이 사용하는 내부 포맷으로 디코딩할 수 있다.
또한, 데이터를 수신하는 어플리케이션은 커맨드를 처리하는 방법을 선택할 수 있다. 실시예에서, 어플리케이션은 사용자에게 디스플레이하기 위해, 특정 사용자 인터페이스를 개방할 수 있다. 다른 실시예에서, 어플리케이션은, 추가적인 사용자 인터페이스를 사용자에게 보여주지 않고 백그라운드에서 커맨드를 실행할 수 있다. 예를 들어, "이메일" 커맨드의 경우, 전자 메일 어플리케이션은 엔티티(1004)가 나타내는 전자 메일 주소로 보내지는 전자 메일 메시지를 생성하고, 엔티티(1002)로서 제시되는 파일을 첨부하고, 전자 메일 메시지를 전송할 수 있다. 다른 실시예에서, 전자 메일 어플리케이션은 전자 메일 메시지를 생성하고 인터페이스에 전자 메일 메시지가 디스플레이되도록 제어함으로써, 사용자가 전자 메일 메시지를 전송하기 전에 변경하게 할 수 있다.
일부 실시예들에서, 두 개 이상의 서로 다른 어플리케이션이 동일한 엔티티를 반환할 수 있다. 예를 들어, 소셜 네트워크 어플리케이션은 "사람" 타입 엔티티를 반환할 수 있으며, 통신 어플리케이션 역시 "사람" 타입 엔티티를 반환할 수 있는데, 두 엔티티는 동일한 사람에 대응될 수 있다. 실시예에서, EMS는 동일한 엔티티로 결정된 엔티티들을 통합(coalesce)하거나 결합할 수 있다. 예를 들어, EMS는 엔티티 이름들과 중복되는 것으로 간주되는 하나 이상의 엔티티 필드를 엔티티 이름들과 비교할 수 있다. 예시적인 실시예에서, 중복되는 것으로 간주되는 엔티티들을 통합하는 경우, 하나 이상의 필드가 서로 다른 경우 EMS는 필드들을 결합할 수 있다. 예를 들어, 두 엔티티가 같은 사람에 대한 것이지만, 한 엔티티가 소셜 미디어 개인정보(credential)에 관한 필드를 포함하고 다른 엔티티가 전자 메일 주소에 관한 필드를 포함하는 경우, EMS는 소셜 미디어 개인정보 필드 및 전자 메일 주소 필드를 포함하는 하나의 엔티티로 두 엔티티를 결합할 수 있다. EMS는 결합된 엔티티를 커맨드의 파라미터로서 제공할 수 있다.
다른 실시예에서, EMS가 둘 이상의 엔티티가 동일한 사람 또는 물건에 대응한다고 확실하게 결정할 수 없는 경우, EMS는 유사한 엔티티를 클러스터링(clustering) 할 수 있다. EMS는 클러스터된 엔티티를 사용자에게 제시하고 사용자가 정확한 엔티티 또는 의도된 엔티티를 선택할 수 있게 할 수 있다. 다른 예에서, EMS는 결합된 엔티티를 제시할 수 있고, 특정 사용자 입력에 응답하여, 결합되었던 개별 엔티티가 디스플레이되도록 제어함으로써, 사용자가 커맨드에 대한 파라미터로서 엔티티들 중 특정 엔티티를 선택하여 사용하게 할 수 있다.
도 11은 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
디바이스(100)는 디스플레이(124)를 통해 GUI(1100)를 디스플레이하고, GUI(1100)는 크로스-어플리케이션(cross-application) 커맨드를 이용하기 위해서 출력될 수 있다. 크로스-어플리케이션 커맨드는 사용자가 둘 이상의 다른 어플리케이션에 걸쳐 활동을 전환하게 할 수 있다. 일반적으로, 사용자는 먼저 동작시키고자 하는 엔티티를 선택할 수 있다.
실시예에서, 어플리케이션은 어플리케이션의 현재 동작 컨텍스트(context)로부터 하나 또는 다수의 엔티티를 식별할 수 있다. 예를 들어, 어플리케이션은 사용자 인터페이스 구성요소를 제공할 수 있는데, 구성요소가 선택됨으로써 사용자가 현재 어플리케이션에서 다른 활동으로 전환하고 싶다는 것을 나타낼 수 있다. 도 11에 도시된 어플리케이션(1102)과 같은 어플리케이션은 아이콘(1104)을 제공할 수 있다. 아이콘(1104)은, 어플리케이션(1102)이 EMS에 적어도 하나의 엔티티를 제공할 수 있는 컨텍스트를 나타내기 위해 하나 이상의 인터페이스 제어에 할당하는, 일반적인 전환 아이콘일 수 있다. EMS는 어플리케이션(1102)이 엔티티를 제공할 수 있는 컨텍스트에서, 아이콘(1104)만이 디스플레이되도록 제어할 수 있다.
이와 관련하여, 어플리케이션은 전환을 요청하는 사용자 입력에 응답하여, 현재의 컨텍스트와 관련된 적어도 하나의 엔티티를 명시적으로 식별할 수 있다. 예를 들어, 사용자는 아이콘(1104)을 터치함으로써 아이콘(1104)를 선택할 수 있다. 그러면, 아이콘(1104)에 대한 사용자 선택에 응답하여, 어플리케이션(1102)은 어플리케이션 (1102)의 현재 컨텍스트에 대해 결정된 하나 이상의 엔티티에 대한 설명을 EMS에 제공할 수 있다.
실시예에서, 사용자는, 현재 실행 및/또는 디스플레이되는 어플리케이션의 현재 동작 컨텍스트와 관련된 엔티티에 대한 요청으로서, 운영 시스템에 의해 인식되는 시스템 차원(system-wide)의 동작을 개시할 수 있다. 예를 들어, 시스템 차원의 동작은 디바이스(100)의 홈 버튼이 눌려졌거나 디바이스(100)상의 전용 버튼이 활성화되었음을 검출한 것에 응답하여 개시될 수 있다. 이 경우 운영 체제 또는 EMS는 디스플레이된 어플리케이션으로부터 엔티티를 요청할 수 있다.
예시적인 실시예에서, 어플리케이션(1102)은 영화 데이터베이스 어플리케이션일 수 있다. 어플리케이션(1102)은, 아이콘(1104) 선택과 같은 전환을 요청하는 사용자 요청에 응답하여, 현재 컨텍스트에 대해 디스플레이되고 있는 컨텐트를 결정할 수 있다. 예를 들어, 어플리케이션(1102)은 특정 영화에 대한 정보가 GUI(1100)의 현재 뷰의 디스플레이124) 상에 디스플레이되고 있음을 결정할 수 있고, "영화" 타입 엔티티로서 영화에 관한 설명을 EMS에 제공할 수 있다.
다른 실시예에서, EMS는 어플리케이션이 전환 작업에 대한 명시적인 지원을 제공하지 않는 경우에, 어플리케이션에 의해 디스플레이된 명명된 엔티티를 인식할 수 있다. 예를 들어, EMS는, 사용자 입력(예를 들어, 시스템 차원의 전환 동작)에 응답하여, 어플리케이션(1102)에 의해 디스플레이되는 텍스트를 추출하고 추출된 텍스트를 처리하여 텍스트에 포함된 명명된 엔티티를 식별할 수 있다. 검색된 명명된 엔티티의 수가 임계 값을 초과하는 경우, 처리될 텍스트의 서브 세트를 나타내기 위해, EMS는 사용자가 경계 영역을 지정하는 것(예를 들어, 경계 박스를 그리는 것)을 수행할 수 있다. 예를 들어, EMS는 사용자가 텍스트의 일부분을 가로질러 스와이프(swipe)하게함으로써, 전환 작업을 개시하기 위해 명명된 엔티티를 식별하도록, 가로질러 스와이프된 텍스트를 처리할 수 있다. 다른 예에서, EMS는 사용자 인터페이스를 제공할 수 있으며, EMS가 사용자 인터페이스를 통해 명명된 엔티티의 초기 세트를 결정한 후에, 사용자가 명명된 엔티티의 수를 한정하거나 줄일 수 있다. 다른 예에서, EMS는 검색된 명명된 엔티티의 서브 세트를 이전의 명명된 엔티티 세트와 결합할 수 있다.
도 11을 참조하면, 엔티티(1106)는 어플리케이션(1102)의 현재 컨텍스트로부터 결정될 수 있다. 설명된 바와 같이, 예를 들어, 어플리케이션(1102)은 EMS에 엔티티(1106)를 제공할 수 있다. 다른 예에서, 엔티티(1106)는 EMS에 의해, 어플리케이션(1102)의 컨텍스트로부터 결정될 수 있다. 예를 들어, 어플리케이션(1102)은 웹 페이지의 텍스트를 디스플레이하는 브라우저일 수 있다. EMS는 웹 페이지 안에 포함된 엔티티(1106)를 식별하기 위해 웹 페이지의 텍스트에 대한 엔티티 처리를 수행할 수 있다. 예를 들어, 엔티티(1106)는 웹 페이지에서 언급된 책 제목일 수 있다.
EMS는 어플리케이션에 의해 제공되는 등록 데이터에 기초하여 개시될 수 있고, 엔티티(1106)를 수신할 수 있는 후보 커맨드(1108 및 1110)를 식별할 수 있다. 예를 들어, EMS는 어플리케이션(1102)의 현재 컨텍스트에 대한 엔티티(1106)를 식별하고, 영화와 같은 엔티티(1106) 및, "구매" 및 "대여"와 같은 커맨드(1108 및 1110)가 디스플레이되도록 제어할 수 있다. "구매" 및 "대여" 커맨드 모두 "영화" 타입 엔티티를 파라미터로 수용할 수 있다. 도 11에 도시된 예시에서 검출된 엔티티 및 이용가능한 커맨드가 나열된다. 다른 예에서, EMS는 검출된 엔티티에 대해 어플리케이션이 지원하는 각각의 커맨드에 대한 제어 창과 함께, 어플리케이션들의 리스트가 디스플레이되도록 제어할 수 있다. 일단 사용자가 특정 어플리케이션에 대한 커맨드를 선택하면, EMS는 실행을 위해 엔티티 및 선택된 커맨드를 어플리케이션에 전송할 수 있다.
도 12는 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 12를 참조하면, 디바이스(100)는 디스플레이(124)를 통해 GUI(1200)를 디스플레이할 수 있다. 그러면, 사용자는 디스플레이된 GUI(1200)를 통해 어플리케이션에 대한 엔티티를 선택할 수 있다. 도 12는 어플리케이션이 엔티티에 대해 동적으로 엔티티를 요청(예를 들어, 엔티티에 대한 EMS를 문의)하는 예를 나타낸다.
어플리케이션 생성 GUI(1200)는 전자 메일 어플리케이션일 수 있다. 실시예에서, 어플리케이션은 커서(cursor)가 "받는 사람" 필드, "참조(cc)" 필드 또는 "숨은참조(bcc)"에 위치하는 것에 응답하여, 전자 메일 주소 필드를 갖는 "사람" 엔티티를 요청할 수 있다. 전자 메일 어플리케이션은 EMS에서 "사람" 엔티티 타입을 요청할 수 있다. EMS는 응답으로서, 사용자가 원하는 타입의 하나 이상의 엔티티를 선택할 수 있게 하는 하나 이상의 사용자 인터페이스를 디스플레이를 통해 제공할 수 있다.
예를 들어, EMS는 사용자가 "사람" 타입의 하나 이상의 엔티티(1204 및 1206)를 선택할 수 있는 영역(1202)을 생성할 수 있다. 예시적인 실시예에서, 엔티티들(1204 및 1206)은 "사람" 엔티티 타입의 저장된 엔티티들일 수 있다. 다른 예시적인 실시예에서, 엔티티들(1204 및 1206)은 EMS가 "사람" 엔티티들의 등록된 제공자에 직접 문의함으로써 획득될 수 있다.
다른 예에서, EMS는 영역(1208)을 생성 할 수 있다. 영역(1208)은 사용자가 "엔티티 피커(picker)" 사용자 인터페이스를 선택하게 할 수 있다. 예를 들어, 영역(1208)은 "사람" 엔티티 피커 및 "스캔" 엔티티 피커를 개시하기 위한 제어 창을 포함할 수 있다. EMS는, "사람" 엔티티 피커의 활성화에 응답하여, "사람" 엔티티 타입을 제공하기 위해 등록된 어플리케이션에 의해 등록된 제공자를 호출할 수 있다. EMS는, "스캔" 엔티티 피커의 활성화에 응답하여, 첨부로 전송될 수 있는 "이미지" 엔티티 타입을 제공하기 위해 등록된 어플리케이션에 의해 등록된 제공자를 호출할 수 있다.
다른 예에서, EMS는 도 8에서 상술된 프로세스와 유사하게, 사용자가 GUI(1200)의 필드에 타이핑할 때 엔티티를 대화형식으로 제안할 수 있다. 사용자가 엔티티를 선택하면, EMS는 해당 엔티티를 해당 필드의 현재 어플리케이션에 제공할 수 있다.
실시예에서, 어플리케이션은 활성화시에, 사용자가 현재의 컨텍스트에 대한 엔티티를 선택할 수 있게 하는 제어 창을 제공할 수 있다. 대안적으로, 사용자가 현재 컨텍스트에 대한 엔티티를 선택할 수 있는 시스템 차원의 제어가 제공될 수 있다. 예를 들어, EMS는 시스템 차원의 제어의 활성화가 검출되면, 현재 컨텍스트에 대해 적어도 하나의 유효한 엔티티의 타입에 관하여 어플리케이션에 문의할 수 있다 (예를 들어, "받는 사람" 필드에 허용가능한 엔티티 타입). EMS는, 사용자가 현재 어플리케이션에서 사용할 엔티티를 선택하도록 하는 유효한 타입의 엔티티를 제시하도록 구성된 사용자 인터페이스를 제공할 수 있다. EMS가 제공하는 특정 사용자 인터페이스는 현재 컨텍스트의 유효한 엔티티 타입에 따라 달라질 수 있다. 도 12에 도시된 바와 같이, 제시된 사용자 인터페이스는 "사람" 엔티티 타입의 엔티티들 중에서 선택하기에 적합한 것일 수 있다.
실시예에서, 어플리케이션은 엔티티를 수용하지 않을 수 있다. 이러한 경우, EMS는 사용자가 임의의 타입의 엔티티를 선택할 수 있는 사용자 인터페이스가 디스플레이되도록 제어할 수 있고, 특정 엔티티의 사용자 선택에 응답하여, 선택된 엔티티의 설명을 텍스트로서 현재 인터페이스에 추가할 수 있다. 예를 들어, EMS는 "사람" 엔티티 타입의 선택된 엔티티 또는 "레스토랑" 엔티티 타입의 특정 레스토랑의 이름과 주소를, 도 12의 전자 메일의 본문 부분에 타이핑하여 넣을 수 있다.
도 13은 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 13을 참조하면, 디바이스(100)는 디스플레이(124)를 통해 GUI(1300)를 디스플레하되고, 엔티티의 저장 및 후속 호출의 예가 도시된다. 실시예에서, EMS는 본 개시에 설명된 하나 이상의 사용자 인터페이스를 통해 사용자에 의해 선택된 엔티티를 저장할 수 있다. 예를 들어, EMS가 활성화될 때, 이후의 동작을 위해 지정된 엔티티를 저장하도록 하는 제어 창이 제공될 수 있다. 예를 들어, EMS는 도 3에서 상술된 바와 같이, 엔티티를 저장된 엔티티의 리스트에 저장할 수 있다. 다른 예에서, EMS는 저장된 엔티티와 조합하여 커맨드 및/또는 어플리케이션을 저장할 수 있다. EMS는 커맨드-엔티티 쌍 또는 커맨드-엔티티-어플리케이션 트리플릿(triplet)을 리스트에 저장할 수 있다.
도 13에 도시된 바와 같이, 저장된 엔티티가 커맨드와 함께 어플리케이션에 아직 제공되지 않았기 때문에, 저장된 엔티티는 실행되지 않은 엔티티로서 참조될 수 있다. 예시적인 실시예에서, 저장된 엔티티 리스트(예를 들어, 저장된 엔티티 데이터)로부터의 엔티티의 제출은 엔티티가 실행됨을 나타내며, EMS는 저장된 엔티티 리스트 또는 저장된 엔티티 데이터로부터 저장된 엔티티를 제거할 수 있다
실시예에서, GUI(1300)는 EMS에 의해 생성될 수 있다. 예를 들어, EMS는, 사용자가 저장된 엔티티들(1302, 1304 및 1306)을 브라우징할 수 있는 전용 사용자 인터페이스를 제공할 수 있다. 엔티티가 커맨드와 함께 저장되는 경우, 커맨드 또한 디스플레이될 수 있다. 예를 들어, 저장된 엔티티(1304)는 선택될 수 있는 커맨드(1308)와 함께 저장될 수 있다. 커맨드(1308)를 선택하면, EMS는 실행을 위해, 저장된 엔티티 및 커맨드(1308)의 지시를 커맨드(1308)를 지원하는 어플리케이션에 제출할 수 있다. 엔티티가 커맨드 및 어플리케이션과 함께 저장되는 경우, 커맨드 및 어플리케이션 또한 저장된 엔티티와 함께 표시될 수 있다.
실시예에서, 사용자는 커맨드와 연관되어 저장되지 않은, 저장된 엔티티를 선택할 수 있다. 예를 들어, 사용자는 엔티티(1302) 또는 엔티티(1306)를 선택할 수 있다. EMS는, 커맨드와 연관되어 저장되지 않은 저장된 엔티티의 사용자 선택에 응답하여, 선택된 엔티티에 대해 이용가능한 커맨드의 리스트를 제시할 수 있다. 이 경우 사용자는 실행할 커맨드 중 하나를 선택할 수 있다. 커맨드의 선택에 응답하여, EMS는 저장된 엔티티 및 선택된 커맨드의 지시를 핸들링(handling) 어플리케이션(예를 들어, 선택된 커맨드를 지원하는 어플리케이션)에 제출할 수 있다.
실시예에서, 어플리케이션은 저장된 엔티티에 대한 액세스를 요청할 수 있다. 또한 어플리케이션은 특정 타입의 저장된 엔티티에 대한 액세스를 요청할 수 있다. 예를 들어, 사용자의 허가를 받은 어플리케이션은 저장된 엔티티의 리스트 및/또는 특정 타입의 저장된 엔티티에 관해 EMS에 문의할 수 있다. 예를 들어, 온라인 쇼핑 어플리케이션은, "영화", "서적", "음악" 또는 다른 타입의 엔티티와 같은, 어플리케이션을 통해 구입할 수 있는 저장된 엔티티 타입을 요청할 수 있다. EMS는 엔티티 타입, 엔티티 필드 등을 지정하는 것과 같이, 어플리케이션에 의해 특정 기준에 매칭되는 저장된 엔티티의 리스트를 반환할 수 있다. 어플리케이션은 특정 기준에 매칭되는 저장된 엔티티의 리스트를 수신하는 것에 응답하여, 저장된 엔티티와 매칭되는 어플리케이션을 통해 구매할 수 있는 아이템을 검색할 수 있다. 어플리케이션은 사용자에게 제시되는 사용자 인터페이스를 수정하여, 판매되는 아이템과 매칭되는 저장된 엔티티를 표시함으로써, 사용자가 저장된 엔티티에서 직접 작업하게 할 수 있다.
예를 들어, GUI(1300)와 같은 사용자 인터페이스를 사용하여, 저장된 엔티티는 또한 저장된 엔티티 리스트로부터 제거되거나 삭제될 수 있다. 예를 들어, 사용자는 저장된 엔티티 리스트로부터 엔티티(1302, 1304, 1306 중 적어도 하나)를 제거하기 위해 특정 방향으로 스와이프 할 수 있다.
하나 이상의 실시예에서, EMS는 다양한 컨텍스트에서, 엔티티를 제안으로서 디스플레이 할 수 있다. 예를 들어, EMS는 도 8의 GUI(800)와 상호작용할 때, 영역(802) 내의 후보 엔티티로서 저장된 엔티티를 디스플레이할 수 있다. 다른 예에서, EMS는 어플리케이션으로부터의 요청에 응답하거나 또는 도 12에서 상술된 바와 같이 사용자가 엔티티를 선택하고자 하는 의사를 표현하는 경우, 저장된 엔티티를 후보로서 제공할 수 있다.
실시예에서, EMS는 엔티티를 제공하는 소스(source) 어플리케이션을 저장할 수 있다. EMS는, 때때로, 주기적으로, 또는 저장된 엔티티에 대한 요청과 같은 이벤트에 응답하여, 저장된 엔티티가 여전히 유효한지 여부를 결정하기 위해 소스 어플리케이션에 문의할 수 있다. 예를 들어, 저장된 엔티티의 "영화" 타입이 더 이상 영화관 내에 표시되지 않을 수 있다. 이 경우, 영화에 관한 티켓은 더 이상 이용할 수 없다. 유사하게, 영화 구입 및/또는 영화 대여는 아직 제공되지 않을 수 있다. 이 경우 EMS는 "영화" 타입의 특정 저장된 엔티티가 여전히 유효한지 여부를 결정하기 위해, "영화" 엔티티 또는 "영화" 타입 엔티티의 소스 어플리케이션에 문의할 수 있다. 다른 예에서, 제품은 단종될 수 있다. EMS는, 엔티티가 아직도 유효한지, 즉, 제품이 아직 구매가능한지를 결정하기 위해, 제품을 나타내는 엔티티에 관해 소스 어플리케이션에 문의할 수 있다. 엔티티가 더 이상 유효하지 않다고 판단되는 경우, EMS는 저장된 엔티티 리스트에서 유효하지 않은 엔티티를 삭제하거나 제거할 수 있다.
도 14는 실시예에 따른 통지와 함께 엔티티들을 사용하는 예시를 나타내는 도면이다.
도 14를 참조하면, 통지(1405)는 엔티티(1410 및 1415)로서 도시된 하나 이상의 엔티티와 연관될 수 있다. 실시예에서, 어플리케이션은 엔티티를 통지와 연관시킬 수 있다. 실시예에서, EMS는 통지와 연관된 엔티티를 디스플레이하기 위한 액세스 방법을 제공할 수 있다. 한편, 액세스 방법은 사용자가 통지와 연관된 엔티티에 대해 동작하게 할 수 있다.
EMS는, 통지와 연관된 엔티티들의 리스트를 요청하는 상호작용(예컨대, 제스처와 같은 사용자 입력)을 검출하는 것에 응답하여, 통지와 연관된 엔티티들이 디스플레이되도록 제어할 수 있다. 예를 들어, 사용자는 통지(1405)에 대해 길게 누름과 같은 제스처와 같은 입력을 제공할 수 있다. 다른 예에서, 엔티티(1410 및 1415)를 보기 위한 사용자 입력은 한 방향(예를 들어, 좌측방향)으로 통지(1405)를 스와이프하는 것과 같은 제스처일 수 있다. 한편, 다른 방향(예를 들어, 우측방향)으로 통지(1405)를 스와이프하는 것은 통지(1405)를 해제하는 동작일 수 있다.
예를 들어, 통지(1405)와 관련된 엔티티를 요청하는 사용자 상호작용을 검출하는 것에 응답하여, EMS는 엔티티(1410 및 1415)를 디스플레이 할 수 있다. 엔티티(1410 및 1415)는 통지(1405)와 연관될 수 있다. 예를 들어, 통지(1405)는 저녁 모임과 같은 일정 이벤트가 다가옴을 나타내는 통지일 수 있다. 캘린더 이벤트는 회의 위치와 참석자를 나열할 수 있다. 따라서, 엔티티(1410)는 회의가 열리는 장소(예를 들어, 식당)를 나타낼 수 있고, 엔티티(1415)는 회의 참석자를 나타낼 수 있다. 상술한 바와 같이, EMS는 각 엔티티에 대해 이용가능한 커맨드 및/또는 어플리케이션을 더 보여주도록 디스플레이를 제어할 수 있다. 예를 들어, EMS는 엔티티(1410)에 대해 동작하거나, 엔티티(1410)를 파라미터로서 수용하는 커맨드(1420 및 1425)를 표시하도록 디스플레이를 제어할 수 있다. EMS는 엔티티(1415)에 대해 동작하거나, 엔티티(1415)를 파라미터로서 수용하는 커맨드(1430 및 1435)를 표시하도록 디스플레이를 제어할 수 있다.
실시예에서, EMS는 다른 사용자 입력에 응답하여, 통지(1405)를 엔티티로서 저장할 수 있다. 예를 들어, 엔티티로서 통지(1405)를 저장하도록 요청하는 사용자 입력에 응답하여, 저장된 엔티티 관리자(310)는 저장된 엔티티의 리스트(예를 들어, 저장된 엔티티 데이터(325))에 통지(1405)를 나타내는 엔티티 및 통지(1405)와 연관된 다른 엔티티를 생성할 수 있다.
도 15는 본 개시의 하나 이상의 실시예에 사용되는 GUI의 다른 예시를 나타내는 도면이다.
도 15를 참조하면, 디바이스(100)는 디스플레이(124)를 통해 GUI(1500)를 디스플레이할 수 있고, 통지와 관련된 엔티티 및/또는 커맨드가 디스플레이되는 예시가 도시된다. 도 15에 도시된 바와 같이, EMS는 통지와의 사용자 상호작용을 검출할 수 있다. 한편, 사용자 상호작용은 도 14의 통지(1405)와 연관된 엔티티들의 리스트에 대한 요청을 포함할 수 있다. EMS는 이용가능한 커맨드(1420 및 1425)로 엔티티(1410)가 디스플레이되도록 제어할 수 있다. 또한, EMS는 이용가능한 커맨드(1430 및 1435)로 엔티티(1415)가 디스플레이되도록 제어할 수 있다. 이용가능한 커맨드(1420, 1425, 1430 및 1435)는, 커맨드가 하나 이상의 어플리케이션 관련되어있는지 여부에 따라, 반투명인지 아닌지 여부에 관계없이 어플리케이션 아이콘으로 디스플레이될 수 있다.
실시예에서, 통지와 연관된 엔티티는 하나의 디바이스에서 다른 디바이스로 전환될 수 있다. 예를 들어, 통지(1405)와 같은 통지는, 디바이스(100)와 연관된 또는 통신 가능하게 연결된 제 2 디바이스 상에 디스플레이되거나 제공될 수 있다. 제 2 디바이스는 웨어러블 디바이스와 같은 주변 디바이스일 수 있다. 제 2 디바이스는 엔티티 및/또는 엔티티의 동작을 디스플레이함으로써 사용자가 통지와 연관된 엔티티에 대해 행동하게 할 수 있다. 사용자에게는 제 2 디바이스를 통해 엔티티를 동작하게하는 커맨드를 실행하기 위한 바로 가기가 제공될 수 있다.
도 16은 실시예에 따른 도 8의 GUI 및, 엔티티 및 커맨드를 이용하는 크로스-디바이스 상호작용의 예시를 나타내는 도면이다.
도 16을 참조하면, 엔티티는 상이한 디바이스를 나타내는데 이용될 수 있다. 도시된 바와 같이, 각각의 "라이트 A"(예를 들어, 네트워크 접속 광) 디바이스, "라이트 B"(예를 들어, 다른 네트워크 접속 광) 디바이스, 및 "아웃렛(outlet)"(예를 들어, 네트워크 접속 아웃렉)디바이스는 영역(802)에서 다른 엔티티로 도시된다. 실시예에서, EMS를 사용하는 디바이스(100)는, 엔티티들로서 표현되는 이와 같은 디바이스들에 커맨드를 발행할 수 있다.
실시예에서, "라이트 A", "라이트 B" 및 "아웃렛"등과 같은 실제 객체(real-world object)를 제어할 수 있는 어플리케이션은 커맨드를 등록할 수 있다. 어플리케이션은 이러한 커맨드를 이용하여 실제 객체를 제어할 수 있다. 또한, 어플리케이션은 각각의 어플리케이션에 의해 제어되는 실제 객체를 나타내는 후보 엔티티의 제공자로서 등록할 수 있다. 따라서, 가전제품, IOT(Internet of Things) 디바이스 등을 제어할 수 있는 어플리케이션은, 실제 객체를 나타내는 후보 엔티티 및 실제 객체에 대한 커맨드를 제공할 수 있다.
도 16에 도시된 바와 같이, GUI(800)가 사용자 입력에 응답하여 디스플레이되고, 실제 객체와 상호작용하도록 구성될 수 있다. 예를 들어, 커맨드(1605)는 영역(804)에 입력될 수 있다. 실시예에서, 커맨드(1605)는, 커맨드(1605)가 제출될 수 있는 특정 디바이스 및/또는 어플리케이션을 나타내는 아이콘을 포함할 수 있다. 예를 들어, 커맨드(1605)가 "켜짐" 커맨드 또는 "꺼짐" 커맨드인 경우, 커맨드(1605)는 "라이트 A"를 제어하는 어플리케이션, "라이트 B"를 제어하는 어플리케이션, 또는 "아웃렛"을 제어하는 어플리케이션에 제출될 수 있다. 커맨드(1605)가 둘 이상의 어플리케이션 또는 어플리케이션이 제어하는 둘 이상의 디바이스에 제출될 수 있는 경우, 아이콘은 반투명일 수 있다. 사용자는 엔티티를 탭하고, 키보드(806)를 사용하여 엔티티를 타이핑하는 등의 동작을 통해, 커맨드(1605)가 제출될 엔티티를 명시적으로 선택할 수 있다.
EMS는 실행을 요청하는 사용자 입력에 응답하여, 선택된 엔티티로서 표현되는 실제 객체를 제어하기 위해 적절한 어플리케이션에 커맨드(1605)를 제출할 수 있다. 예를 들어, 커맨드(1605)가 "라이트 B"를 제어하는 어플리케이션으로 전송될 수 있다. "라이트 B"는 사용자에 의해 명시적으로 선택될 수 있고, 커맨드(1605)에 대한 디폴트 엔티티 또는 디바이스일 수 있다.
다른 실시예에서, EMS는 로컬 어플리케이션과 상호작용하는 것과는 대조적으로, 실제 객체를 제어하기 위해 온라인 IOT 서비스와 직접 통신할 수 있다. 예를 들어, EMS는 웹 또는 인터넷 서비스와 통신할 수 있다. 이 경우, 서비스는 EMS에 의해 사용이 가능한 유효 커맨드 세트 및 엔티티를 식별할 책임이 있을 수 있다.
실시예에서, 유사한 방법이 특정 액세서리 디바이스와 관련되거나, 특정 액세서리 디바이스(accessory devie)를 이용하는 어플리케이션과 상호작용하는데 이용될 수 있다. 예를 들어, 액세서리 디바이스는 헤드폰, 웨어러블 디바이스, 스피커, 차량 등을 포함할 수 있지만, 이에 제한되지는 않는다. 예를 들어, EMS는 액세서리 디바이스가 언제 디바이스(100)에 접속되거나 이용가능한지를 검출할 수 있다. 각각의 액세서리 디바이스는 하나 이상의 어플리케이션과 연관될 수 있다. 예를 들어, 헤드폰 액세서리는 음악 어플리케이션과 연관될 수 있다. 따라서, EMS는 헤드폰 액세서리가 이용 가능하거나 디바이스(100)에 접속된 것을 검출한 것에 응답하여, 사용자가 음악 어플리케이션에 대해 하나 이상의 이용 가능한 커맨드를 전송할 수 있게 하는 인터페이스가 디스플레이되도록 제어할 수 있다. 예를 들어, EMS는 헤드폰 액세서리가 이용 가능함을 검출하는 것에 응답하여, "재생" 커맨드를 포함하는 인터페이스를 디스플레이 할 수 있다. EMS는 "재생" 커맨드의 선택에 응답하여, 어플리케이션에 "재생" 커맨드를 전송하여 미디어의 재생을 시작할 수 있다.
예시적인 실시예에서, 사용자가 영역(804)에 커맨드를 입력하면, EMS는 입력된 커맨드와 관련된 액세서리 디바이스를 제안할 수 있다. 따라서, 사용자가 대화형 명령행에서 "재생" 커맨드를 먼저 입력하면, EMS는 무선 스피커 또는 헤드폰의 사용을 제안할 수 있다. 제시된 액세서리 디바이스는 전술한 바와 같이 영역(802) 내의 엔티티로서 표현될 수 있다. 이와 같이, 사용자는 커맨드의 파라미터로서 명령행 내 액세서리 디바이스를 포함시키기 위해, 제안된 엔티티를 선택할 수 있다. EMS는 커맨드의 실행에 응답하여, 선택된 액세서리 디바이스에 적극적으로 접속을 시도하고, 커맨드를 지원하는 어플리케이션에 커맨드를 제출할 수 있다.
예시적인 실시예에서, 명령행이 "재생" 커맨드를 포함하고 무선 스피커를 나타내는 엔티티를 포함하는 경우를 고려할 수 있다. EMS는 실행을 요청하는 사용자 입력에 응답하여, 무선 스피커가 이미 디바이스(100)에 연결되어 있지 않다면, 엔티티로서 표현되는 무선 스피커에 적극적으로 접속을 시도할 수 있다. 또한, EMS는 "재생" 커맨드를 지원하는 어플리케이션으로 "재생" 커맨드를 전송할 수 있다. 한편, 어플리케이션은 명시적으로 선택되거나 디폴트 어플리케이션 등일 수 있다.
다른 실시 예에서, EMS는 다수의 상이한 디바이스를 통한 통신을 수행할 수 있다. 예시적인 실시예에서, 제 1 디바이스(예를 들어, 텔레비전)는 제 2 디바이스(예를 들어, 수신기) 상에서 하나 이상의 커맨드를 지원할 수 있거나, 제 1 디바이스(예를 들어, 스트리밍 서비스 클라이언트)에서 실행되는 어플리케이션 상에서의 커맨드를 지원할 수 있다.
다른 실시 예에서, EMS는 디바이스(100)로부터 "켜짐" 커맨드를 텔레비전에 제출할 수 있으며, 여기서 텔레비전은 디바이스(100)에 통신 가능하게 링크될 수 있고 기본적으로 "켜짐" 커맨드는 텔레비전에 의해 실행 가능할 수 있다. 또한, EMS는 수신기에 특정 채널을 튜닝하거나 특정 영화를 재생하기 위해, 커맨드를 텔레비전에 전송할 수 있다. 텔레비전이 텔레비전에서 기본적으로 실행되지 않는 커맨드를 수신하는 경우, 경우에 따라 텔레비전은 제 2 디바이스(예를 들어, 특정 채널로 튜닝하는 수신기) 또는 어플리케이션(예를 들어, 특정 영화를 스트리밍하는 어플리케이션)에 커맨드를 제공할 수 있다.
다른 실시예에서, EMS는 서로 다른 디바이스들 간의 통신을 지원할 수 있다. 이 경우, EMS를 포함하는 디바이스(100)는 둘 이상의 상이한 디바이스들 사이의 브리지 또는 연락 디바이스로서 동작할 수 있다. 디바이스(100)는 둘 이상의 다른 디바이스를 서로 연결시켜주고 디바이스들을 추적할 수 있다. 예를 들어, 디바이스(100)는 두 개 이상의 상이한 디바이스 간에 P2P(peer-to-peer) 연결을 설정할 수 있다. 디바이스(100)는 P2P 연결을 이용하여, 다른 디바이스에게 커맨드를 송신하거나, 제 1 디바이스에서 데이터를 검색(retrieve)하거나, 제 1 디바이스에서 검색된 데이터를 사용하여 제 2 디바이스 상에서 커맨드를 개시할 수 있다.
본 개시에서 설명된 디바이스(100)는 P2P 연결을 사용하는 것으로 제한되지 않는다. 다른 예에서, 디바이스(100)는 다른 디바이스들 사이에서 커맨드 및/또는 데이터를 라우팅하기 위해, P2P 연결 대신 온라인 서비스에 액세스할 수 있다. 다른 예에서, 디바이스(100)는 디바이스(100)에 국부적으로 또는 근접해있는 다른 디바이스를 검출할 수 있고, 디바이스를 애드혹(Ad Hoc) 방식으로 식별할 수 있다. 일단 식별되면, 디바이스(100)는 다른 디바이스들에게 커맨드를 발행할 수 있다.
설명된 예들에서, 엔티티들은 대체로 상이한 어플리케이션들에 의해 제공된다. 다른 실시예에서, 디바이스(100)는 실제 객체들 중에서 엔티티들을 결정할 수 있다. 디바이스(100)는 카메라 또는 다른 이미지 캡쳐 시스템을 사용하여 실제 객체의 이미지를 얻을 수 있다. 디바이스(100)는 캡쳐된 이미지에 대한 이미지 프로세싱을 수행하여 이미지로부터 엔티티를 결정할 수 있다.
예를 들어, 사용자는 디바이스(100)의 카메라를 사용하여 이미지를 캡쳐할 수 있다. 이미지는 책, 영화 포스터, 레스토랑 등일 수 있다. 디바이스(100)는 이미지 내의 텍스트를 인식할 수 있고, 이미지 상의 객체 인식을 수행할 수 있다.
디바이스(100)에 의해 이용될 수 있는 텍스트 및/또는 온톨로지(ontologies)에 따른 객체의 분류와 같은, 텍스트 인식 및/또는 객체 인식을 통해 결정된 데이터는, 어플리케이션에게 이미지로부터 인식된 실제 객체와 매칭되는 엔티티에 관해 문의하는데 이용될 수 있다.
다른 예에서, 이미지는 바 코드 또는 QR 코드를 포함할 수 있다. 이 경우, 디바이스(100)는 코드를 사용하여 정보를 검색할 수 있다. 디바이스(100)는 코드를 사용하여, 어플리케이션에게 검색된 정보와 일치하는 엔티티에 대해 문의할 수 있다.
다른 예에서, 디바이스(100)는, 예를 들어, 디바이스(100) 위치로부터 미리 결정된 거리 내에 위치한 것과 같이, 물리적으로 가까운 실제 객체를 검출할 수 있다. 예를 들어, 디바이스(100)는 디바이스(100) 주변에 위치한 상점, 레스토랑 등을 식별할 수 있다. 이 경우, 디바이스(100)는 인식된 엔티티의 타입에 기초하여 커맨드를 제공하거나 제안할 수 있다. 또한, 디바이스(100)는 검출된 엔티티를 나중에 사용할 수 있도록 저장할 수 있다.
본 명세서에 정의되는 바와 같이, "컴퓨터로 읽을 수 있는 기록매체"는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이들과 연결되어 사용되는 프로그램 코드를 포함하거나 저장하는 기록매체를 의미할 수 있다. 본 명세서에 정의되는 바와 같이, "컴퓨터로 읽을 수 있는 기록매체"는 일시적인 전파 신호 그 자체가 아닐 수 있다. 컴퓨터로 읽을 수 있는 기록매체는 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스 또는 이들의 조합일 수 있지만, 이에 제한되는 것은 아니다. 본 명세서에서 설명된 바와 같이, 컴퓨터로 읽을 수 있는 기록매체는 메모리를 포함할 수 있다. 컴퓨터로 읽을 수 있는 기록매체는, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), EPROM(erasable programmable read-only memory, 또는 플래시 메모리), SRAM (Static Random Access Memory), CD-ROM, DVD, 메모리 스틱, 플로피 디스크 등을 포함할 수 있다.
본 명세서에 정의되는 바와 같이, "일 실시예", "실시예", "하나 이상의 실시 예" 또는 이와 유사한 용어는, 실시예와 연관되어 설명되는 특정 특징, 구조 또는 특성을 나타낸다. 따라서, 본 명세서 전체에서 "일 실시예에서", "실시 예에서", "하나 이상의 실시 예에서" 및 이와 유사한 표현은 동일한 실시예를 지칭할 수도 있으나, 반드시 그런 것은 아니다. "실시예" 및 "배치"는 본 명세서 내에서 상호 교환되어 사용된다.
본 명세서에 정의되는 바와 같이, "출력"은 예를 들어, 디바이스, 디스플레이 또는 다른 주변 출력 디바이스로의 쓰기, 다른 시스템으로의 송신 또는 전송, 내보내기 등과 같은 물리적 메모리 요소를 저장하는 것을 의미한다.
본 명세서에 정의되는 바와 같이, "프로세서"는 적어도 하나의 하드웨어 회로를 의미한다. 하드웨어 회로는 프로그램 코드에 포함된 커맨드들을 수행하도록 구성될 수 있다. 하드웨어 회로는 집적 회로일 수 있다. 프로세서는, 중앙 처리 장치(CPU), 어레이 프로세서, 벡터 프로세서, 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 프로그래머블 로직 어레이(PLA), 주문형 집적 회로(ASIC), 프로그램 가능 논리 회로 및 제어기를 포함할 수 있다.
본 명세서에 정의 된 바와 같이, 용어 "사용자"는 인간을 의미할 수 있다.
제 1, 제 2 등의 용어는 다양한 요소를 설명하기 위해 사용될 수 있다. 이들 용어는 문맥에서 달리 언급되지 않는 한, 하나의 성분을 다른 성분과 구별하기 위해서만 사용되는 것으로 제한되지 않아야 한다.
컴퓨터 프로그램 제품은 프로세서로 하여금 본 명세서의 실시예들을 수행하게 하는 컴퓨터로 읽을 수 있는 프로그램 명령어들을 갖는, 컴퓨터로 읽을 수 있는 기록매체를 포함할 수 있다. 본 명세서에서, "프로그램 코드"는 "컴퓨터로 읽을 수 있는 프로그램 명령어" 와 상호 교환되어 사용될 수 있다. 본 명세서에 설명된 컴퓨터로 읽을 수 있는 프로그램 명령어는, 네트워크(예를 들어, 인터넷, LAN, WAN 및 무선 네트워크 중 적어도 하나의 네트워크)를 이용하여 컴퓨터로 읽을 수 있는 기록매체, 외부 컴퓨터, 또는 외부 저장 디바이스로부터 각각의 컴퓨팅/처리 디바이스에 다운로드 될 수 있다. 네트워크에는 구리 전송 케이블, 광 전송 광섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및 에지 서버(edge server)를 포함하는 에지 디바이스(edge device)가 포함될 수 있다. 각각의 컴퓨팅/처리 디바이스 내의 네트워크 어댑터 카드 또는 네트워크 인터페이스는, 네트워크로부터 컴퓨터로 읽을 수 있는 프로그램 명령어를 수신하고, 각각의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터로 읽을 수 있는 기록매체에 저장하기 위해 컴퓨터로 읽을 수 있는 프로그램 명령어를 포워딩할 수 있다.
본 명세서에서 설명되는 디바이스의 예시적인 실시예는 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 설명된다. 흐름도 및/또는 블록도들의 각 블록, 및 흐름도 및/또는 블록도들의 블록들의 조합은, 컴퓨터로 읽을 수 있는 프로그램 명령어들(예를 들어, 프로그램 코드)에 의해 구현 될 수 있다.
컴퓨터로 읽을 수 있는 프로그램 명령어는, 컴퓨터의 프로세서, 특수 목적 컴퓨터 또는 다른 프로그램 가능 데이터 처리 디바이스의 프로세서에 제공되어 머신을 생성 할 수 있으며, 이에 따라 컴퓨터의 프로세서 또는 다른 프로그램 가능한 장치를 통해 실행되는 명령어는, 흐름도 및/또는 블록도의 블록(또는 블록들)에서 특정된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이러한 방식으로, 프로세서를 프로그램 코드 명령어들에 동작 가능하게 연결함으로써 프로세서의 머신을 프로그램 코드의 명령어들을 수행하기 위한 특수 목적 머신으로 변환시킬 수 있다. 컴퓨터로 읽을 수 있는 프로그램 명령어는 컴퓨터, 프로그램 가능 데이터 처리 디바이스 및/또는 다른 디바이스가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터로 읽을 수 있는 기록매체에 저장됨으로써, 명령어가 저장된 컴퓨터로 읽을 수 있는 기록매체가 흐름도 및/또는 블록도의 블록(또는 블록들)에서 특정된 동작들의 예시적인 실시예들을 구현하는 명령어들을 포함하는 제품을 포함할 수 있다.
또한, 컴퓨터로 읽을 수 있는 프로그램 명령어은 컴퓨터, 다른 프로그램 가능 데이터 처리 디바이스 또는 다른 디바이스 상에 로딩되어 컴퓨터, 다른 프로그램 가능 디바이스 또는 다른 디바이스 상에서 일련의 동작을 수행함으로써, 컴퓨터 구현 프로세스를 생성 할 수 있다. 컴퓨터, 다른 프로그램 가능한 디바이스 또는 다른 디바이스에서 실행되는 명령어들은 흐름도 및/또는 블록도의 블록(또는 블록들)에서 특정 된 기능/동작을 구현할 수 있다.
도면의 흐름도 및 블록도는 본 명세서에서 설명된 디바이스의 다양한 예시적인 실시예에 따른 시스템(예를 들어, 장치), 방법 및 컴퓨터 프로그램 제품의, 구현 가능한 구조, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 지정된 동작을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 명령어의 일부를 나타낼 수 있다. 일부 다른 구현 예에서, 블록들에서 언급된 동작들은 도면들에서 언급된 순서를 벗어나 수행될 수 있다. 예를 들어, 연속적으로 도시된 2 개의 블록은 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라 역순으로 실행될 수 있다. 또한, 블록도 및/또는 순서도의 각 블록, 및 블록도 및/또는 흐름도의 블록의 조합은, 특정 기능 또는 동작을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령어의 조합을 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다.
이하의 청구범위에서 확인할 수 있는 모든 기능식 청구항(means or step plus function elements)의 구조, 재료 및 균등물은 다른 청구된 요소와 조합하여 기능을 수행하기 위한 임의의 구조, 재료 또는 동작을 포함할 수 있다.
본 명세서에 제공된 실시예들은 설명의 목적을 위한 것이며 개시된 형태 및 실시예로 제한하려는 것은 아니다. 본 명세서에서 사용된 용어는 본 발명의 원리, 시장에서 발견된 기술에 대한 실제적인 적용 또는 기술적 개선을 설명하고, 당업자가 본 명세서에 개시된 실시예를 이해할 수 있도록 선택되었다. 본 발명의 범위 및 기술적 사상을 벗어나지 않는 범위에서 통상의 기술자에게 수정 및 변형이 명백 할 수 있다. 따라서, 전술한 설명보다는 이러한 특징 및 구현의 범위를 나타내는 이하의 청구 범위가 참조되어야 한다.

Claims (30)

  1. 컴퓨팅 디바이스와 상호작용하는 방법에 있어서,
    복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입(entity type)을 포함하는 복수의 커맨드를 등록하는 단계;
    상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하는 단계;
    파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하는 단계; 및
    프로세서를 이용하여, 상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는 단계;
    를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 선택된 커맨드는, 상기 제 1 엔티티에 대한 필수 필드(required field)를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 엔티티를 결정하는 단계는,
    상기 제 1 엔티티 타입의 제공자로 등록된 제 2 어플리케이션에게, 문의 기준에 매칭되는 상기 제 1 엔티티 타입의 엔티티가 존재하는지에 대해 문의하는 단계;
    를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 방법은,
    상기 제 1 엔티티 타입의 제공자로서 제 2 어플리케이션을 등록하는 단계;
    상기 제 2 어플리케이션에 상기 제1 엔티티가 존재하는지 문의하는 단계: 및
    상기 문의에 응답하여 상기 제 2 어플리케이션으로부터 상기 제 1 엔티티를 수신하는 단계;
    를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 방법은,
    후속 호출(recall)을 위해, 데이터 저장 디바이스에 상기 제 1 엔티티를 저장하는 단계; 및
    상기 제 1 엔티티를 포함하는 저장된 엔티티 리스트를 디스플레이하는 단계;
    를 더 포함하는, 방법.
  6. 제 5 항에 있어서,
    상기 제 1 엔티티는, 상기 선택된 커맨드 또는 상기 제 1 어플리케이션 중 적어도 하나와 연관되어 저장되는 것인, 방법.
  7. 제 1 항에 있어서,
    상기 방법은,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 실행하는 상기 제 1 어플리케이션에 응답하여, 상기 제 1 어플리케이션으로부터 제 2 엔티티를 수신하는 단계; 및
    상기 제 2 엔티티를 제 2 어플리케이션에 제공하는 단계;
    를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 방법은,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 제 1 디바이스로부터 제 2 디바이스에 제공하는 단계;
    를 더 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 제 1 엔티티는 통지와 연관되고,
    상기 방법은,
    상기 통지와의 사용자 상호작용에 응답하여, 상기 제 1 엔티티를 디스플레이하는 단계;
    를 더 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 제 1 엔티티를 파라미터로서 수용하고, 상기 선택된 커맨드를 포함하는 등록된 커맨드 리스트를 디스플레이하는 단계;
    를 더 포함하는, 방법.
  11. 프로그램 코드를 저장하는 메모리; 및
    상기 메모리에 결합되고, 상기 프로그램 코드의 실행에 응답하여, 컴퓨팅 디바이스와 상호작용하는 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입을 포함하는 복수의 커맨드를 등록하고,
    상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하고,
    파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하고,
    상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는, 컴퓨팅 디바이스.
  12. 제 11항에 있어서,
    상기 선택된 커맨드는, 상기 제 1 엔티티에 대한 필수 필드를 포함하는, 컴퓨팅 디바이스.
  13. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제 1 엔티티 타입의 제공자로 등록된 제 2 어플리케이션에게, 문의 기준에 매칭되는 상기 제 1 엔티티 타입의 엔티티가 존재하는지에 대해 문의하고,
    상기 문의에 응답하여, 상기 제 2 어플리케이션으로부터 상기 제 1 엔티티를 수신하는, 컴퓨팅 디바이스.
  14. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는,
    후속 호출(recall)을 위해, 데이터 저장 디바이스에 상기 제 1 엔티티를 저장하고,
    상기 제 1 엔티티를 포함하는 저장된 엔티티 리스트가 디스플레이되도록 제어하는, 컴퓨팅 디바이스.
  15. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 실행하는 상기 제 1 어플리케이션에 응답하여, 상기 제 1 어플리케이션으로부터 제 2 엔티티를 수신하고,
    상기 제 2 엔티티를 제 2 어플리케이션에 제공하는, 컴퓨팅 디바이스.
  16. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 제 1 디바이스로부터 제 2 디바이스에 제공하는, 컴퓨팅 디바이스.
  17. 제 11 항에 있어서,
    상기 제 1 엔티티는 통지와 연관되고,
    상기 통지와의 사용자 상호작용에 응답하여, 상기 제 1 엔티티가 디스플레이되도록 제어하고,
    상기 제 1 엔티티를 파라미터로서 수용하고, 상기 선택된 커맨드를 포함하는, 등록된 커맨드의 리스트가 디스플레이되도록 제어하는, 컴퓨팅 디바이스.
  18. 컴퓨팅 디바이스와 상호작용하기 위한 프로그램 코드를 저장한 컴퓨터로 읽을 수 있는 기록매체를 포함하는 컴퓨터 프로그램 제품으로서, 상기 프로그램 코드는 프로세서에 의해 실행됨으로써,
    복수개의 어플리케이션으로부터, 파라미터로서 수용되는 엔티티 타입을 포함하는 복수의 커맨드를 등록하고,
    상기 복수의 어플리케이션과 독립적이며, 제 1 엔티티 타입을 갖는 제 1 엔티티를 결정하고,
    파라미터로서 상기 제 1 엔티티 타입을 수용하며 상기 복수의 어플리케이션에 의해 등록된 상기 복수의 커맨드로부터, 커맨드를 선택하고,
    상기 선택된 커맨드의 실행을 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 엔티티 및 상기 선택된 커맨드를 제공하는, 기록매체.
  19. 제 18항에 있어서,
    상기 선택된 커맨드는, 상기 제 1 엔티티에 대한 필수를 포함하는, 기록매체.
  20. 제 18항에 있어서,
    상기 프로그램 코드는 프로세서에 의해 실행됨으로써,
    상기 제 1 엔티티 타입의 제공자로 등록된 제 2 어플리케이션에게, 문의 기준에 매칭되는 상기 제 1 엔티티 타입의 엔티티가 존재하는지에 대해 문의하고,
    상기 문의에 응답하여, 상기 제 2 어플리케이션으로부터 상기 제 1 엔티티를 수신하는, 기록매체.
  21. 제 18항에 있어서,
    상기 프로그램 코드는 프로세서에 의해 실행됨으로써,
    후속 호출(recall)을 위해, 데이터 저장 디바이스에 상기 제 1 엔티티를 저장하고,
    상기 제 1 엔티티를 포함하는, 저장된 엔티티 리스트가 디스플레이되도록 제어하는, 기록매체.
  22. 제 18항에 있어서,
    상기 프로그램 코드는 프로세서에 의해 실행됨으로써,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 실행하는 상기 제 1 어플리케이션에 응답하여, 상기 제 1 어플리케이션으로부터 제 2 엔티티를 수신하고,
    상기 제 2 엔티티를 제 2 어플리케이션에 제공하는, 기록매체.
  23. 제 18항에 있어서,
    상기 프로그램 코드는 프로세서에 의해 실행됨으로써,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 제 1 디바이스로부터 제 2 디바이스에 제공하는, 기록매체.
  24. 제 18항에 있어서,
    상기 제 1 엔티티는 통지와 연관되고,
    상기 프로그램 코드는 프로세서에 의해 실행됨으로써,
    상기 통지와의 사용자 상호작용에 응답하여, 상기 제 1 엔티티가 디스플레이되도록 제어하고,
    상기 제 1 엔티티를 파라미터로서 수용하고, 상기 선택된 커맨드를 포함하는, 등록된 커맨드의 리스트가 디스플레이되도록 제어하는, 기록매체.
  25. 컴퓨팅 디바이스와 상호작용하는 방법에 있어서,
    복수의 어플리케이션으로부터의 복수의 커맨드를 등록하는 단계;
    상기 복수의 커맨드 중에 하나인, 제 1 커맨드를 결정하는 단계;
    상기 등록에 기초하여, 상기 제 1 커맨드에 의해 수용되는 제 1 엔티티 타입을 결정하는 단계;
    상기 제 1 커맨드에 대한 파라미터로서, 상기 제 1 엔티티 타입의 제 1 엔티티를 획득하는 단계; 및
    프로세서를 이용하여, 상기 제 1 커맨드를 지원하는 상기 복수의 어플리케이션에 포함된 제 1 어플리케이션에, 상기 제 1 커맨드 및 상기 제 1 엔티티를 제공하는 단계;
    를 포함하는, 방법.
  26. 제 25항에 있어서,
    상기 방법은,
    상기 제 1 엔티티 타입의 제공자로 등록된 제 2 어플리케이션에게, 문의 기준에 매칭되는 상기 제 1 엔티티 타입의 엔티티가 존재하는지에 대해 문의하는 단계;
    를 포함하는, 방법.
  27. 제 25항에 있어서,
    상기 방법은,
    후속 호출(recall)을 위해, 데이터 저장 디바이스에 상기 제 1 엔티티를 저장하는 단계; 및
    상기 제 1 엔티티를 포함하는, 저장된 엔티티 리스트를 디스플레이하는 단계;
    를 더 포함하는, 방법.
  28. 제 25항에 있어서,
    상기 방법은,
    상기 제 1 엔티티 및 상기 선택된 커맨드를 제 1 디바이스로부터 제 2 디바이스에 제공하는 단계;
    를 더 포함하는, 방법.
  29. 제 25항에 있어서,
    상기 제 1 엔티티는 통지와 연관되고,
    상기 방법은,
    상기 통지와의 사용자 상호작용에 응답하여, 상기 제 1 엔티티를 디스플레이하는 단계;
    를 더 포함하는 방법.
  30. 제 29항에 있어서,
    상기 제 1 엔티티를 파라미터로서 수용하고, 상기 선택된 커맨드를 포함하는 등록된 커맨드 리스트를 디스플레이하는 단계;
    를 더 포함하는, 방법.
KR1020170046928A 2016-04-11 2017-04-11 컴퓨팅 디바이스와 상호작용하는 장치 및 방법 KR102276856B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662320911P 2016-04-11 2016-04-11
US62/320,911 2016-04-11
US15/481,701 US10749986B2 (en) 2016-04-11 2017-04-07 Platform for interaction via commands and entities
US15/481,701 2017-04-07

Publications (2)

Publication Number Publication Date
KR20170116590A true KR20170116590A (ko) 2017-10-19
KR102276856B1 KR102276856B1 (ko) 2021-07-13

Family

ID=59998473

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170046928A KR102276856B1 (ko) 2016-04-11 2017-04-11 컴퓨팅 디바이스와 상호작용하는 장치 및 방법

Country Status (4)

Country Link
US (1) US10749986B2 (ko)
EP (1) EP3427468A4 (ko)
KR (1) KR102276856B1 (ko)
WO (1) WO2017179876A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10749986B2 (en) 2016-04-11 2020-08-18 Samsung Electronics Co., Ltd. Platform for interaction via commands and entities

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10725630B2 (en) * 2016-01-04 2020-07-28 Lenovo (Singapore) Pte Ltd Selecting a target application based on content
US12002010B2 (en) 2017-06-02 2024-06-04 Apple Inc. Event extraction systems and methods
US11321134B2 (en) 2019-05-31 2022-05-03 Apple Inc. Normalizing target utilization rates of a cross-application table of concurrently executing applications to schedule work on a command queue of a graphics processors
US11573812B2 (en) * 2019-09-15 2023-02-07 Oracle International Corporation Generating a next best action recommendation using a machine learning process
FR3138226A1 (fr) * 2022-07-25 2024-01-26 Orange Procédé et dispositif d’exécution d’une commande générée par l’utilisateur d’un terminal.

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080059195A1 (en) * 2006-08-09 2008-03-06 Microsoft Corporation Automatic pruning of grammars in a multi-application speech recognition interface
US20080222611A1 (en) * 2007-03-09 2008-09-11 Microsoft Corporation Generic validation layer for object properties
US20140250106A1 (en) * 2013-03-01 2014-09-04 Quixey, Inc. Generating Search Results Containing State Links to Applications
US20140365912A1 (en) * 2013-06-09 2014-12-11 Apple Inc. Device, method, and graphical user interface for sharing content from a respective application
US20150381714A1 (en) * 2013-03-14 2015-12-31 Good Technology Corporation Application registration and interaction

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680640A (en) 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
DE60117676T2 (de) 2000-12-29 2006-11-16 Stmicroelectronics S.R.L., Agrate Brianza Verfahren zur einfachen Ausdehnung der Funktionalität eines tragbaren elektronischen Geräts und zugehöriges, tragbares elektronisches Gerät
US10235873B2 (en) 2001-12-20 2019-03-19 Universal Electronics Inc. System and method to facilitate configuration of a controlling device
EP1685731B1 (en) 2003-11-17 2012-02-29 Telecom Italia S.p.A. Quality of service monitoring architecture, related method, network and computer program product
US20060168347A1 (en) 2004-12-09 2006-07-27 Eric Martin System for sharing context information between executable applications
US7702773B2 (en) 2007-02-26 2010-04-20 Service Bureau Intetel S.A. Remotely managing enterprise resources
US20080222660A1 (en) 2007-03-06 2008-09-11 Jari Tavi Processing of data of a plurality of applications with a single client application
US8561087B2 (en) 2008-07-16 2013-10-15 Sandisk Il Ltd. Methods for enabling software in storage-capable devices
US7870282B2 (en) 2008-11-24 2011-01-11 Cisco Technology, Inc. Media sharing network
US20100217944A1 (en) 2009-02-26 2010-08-26 Dehaan Michael Paul Systems and methods for managing configurations of storage devices in a software provisioning environment
US9069908B2 (en) 2009-03-16 2015-06-30 Apple Inc. Accessory and mobile computing device communication using an application communication protocol
US20110167067A1 (en) 2010-01-06 2011-07-07 Muppirala Kishore Kumar Classification of application commands
US9064054B2 (en) 2010-12-29 2015-06-23 Red Hat, Inc. Synchronizing execution of a testing application
JP2012230597A (ja) 2011-04-27 2012-11-22 Fujitsu Ltd 処理装置,制御装置および処理方法
US9836179B2 (en) 2012-12-20 2017-12-05 Microsoft Technology Licensing, Llc Auto-complete with persisted atomically linked entities
US9563795B2 (en) 2013-03-13 2017-02-07 Mark Sehmer Radio frequency identification system
US20150193392A1 (en) * 2013-04-17 2015-07-09 Google Inc. User Interface for Quickly Checking Agenda and Creating New Events
US8676913B1 (en) * 2013-09-09 2014-03-18 LavaRipples, LLC Discussion-topic, social network systems
US10749986B2 (en) 2016-04-11 2020-08-18 Samsung Electronics Co., Ltd. Platform for interaction via commands and entities

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080059195A1 (en) * 2006-08-09 2008-03-06 Microsoft Corporation Automatic pruning of grammars in a multi-application speech recognition interface
US20080222611A1 (en) * 2007-03-09 2008-09-11 Microsoft Corporation Generic validation layer for object properties
US20140250106A1 (en) * 2013-03-01 2014-09-04 Quixey, Inc. Generating Search Results Containing State Links to Applications
US20150381714A1 (en) * 2013-03-14 2015-12-31 Good Technology Corporation Application registration and interaction
US20140365912A1 (en) * 2013-06-09 2014-12-11 Apple Inc. Device, method, and graphical user interface for sharing content from a respective application

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10749986B2 (en) 2016-04-11 2020-08-18 Samsung Electronics Co., Ltd. Platform for interaction via commands and entities

Also Published As

Publication number Publication date
KR102276856B1 (ko) 2021-07-13
EP3427468A4 (en) 2019-03-27
EP3427468A1 (en) 2019-01-16
WO2017179876A1 (en) 2017-10-19
US10749986B2 (en) 2020-08-18
US20170295260A1 (en) 2017-10-12

Similar Documents

Publication Publication Date Title
JP7037602B2 (ja) デジタルアシスタントサービスの遠距離拡張
US11102259B2 (en) Network system for content playback on multiple devices
US11784951B1 (en) Determining contextually relevant application templates associated with electronic message content
JP6622863B2 (ja) 移動装置のアプリケーション管理のためのユーザインターフェイス
US11750683B2 (en) Computer application promotion
KR102276856B1 (ko) 컴퓨팅 디바이스와 상호작용하는 장치 및 방법
US20190171339A1 (en) Method, system, and apparatus for executing an action related to user selection
US20160133254A1 (en) Context-based actions
EP3329367A1 (en) Tailored computing experience based on contextual signals
US20110167357A1 (en) Scenario-Based Content Organization and Retrieval
US10922274B2 (en) Method and apparatus for performing auto-naming of content, and computer-readable recording medium thereof
JP2013507882A (ja) ユーザーデータエントリーのアプリケーションへのルーティング方法及び装置
US20170286133A1 (en) One Step Task Completion
US10197415B2 (en) Method of sharing information through map service and electronic device therefor
US9710444B2 (en) Organizing unstructured research within a document

Legal Events

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