KR20180030105A - 컨텍스트 데이터를 기반으로 하는 어플리케이션 카드들 - Google Patents

컨텍스트 데이터를 기반으로 하는 어플리케이션 카드들 Download PDF

Info

Publication number
KR20180030105A
KR20180030105A KR1020187004082A KR20187004082A KR20180030105A KR 20180030105 A KR20180030105 A KR 20180030105A KR 1020187004082 A KR1020187004082 A KR 1020187004082A KR 20187004082 A KR20187004082 A KR 20187004082A KR 20180030105 A KR20180030105 A KR 20180030105A
Authority
KR
South Korea
Prior art keywords
application
application function
card
user
function
Prior art date
Application number
KR1020187004082A
Other languages
English (en)
Other versions
KR102558153B1 (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 KR20180030105A publication Critical patent/KR20180030105A/ko
Application granted granted Critical
Publication of KR102558153B1 publication Critical patent/KR102558153B1/ko

Links

Images

Classifications

    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • 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
    • 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
    • H04L67/327
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • 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
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • 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
    • G06Q50/01Social networking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • H04L43/045Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • Game Theory and Decision Science (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

서버는, 네트워크 통신 디바이스, 저장 디바이스 및 프로세싱 디바이스를 포함한다. 상기 프로세싱 디바이스는 컴퓨터 판독 가능 지시들을 실행하고, 상기 컴퓨터 판독 가능 지시들이 실행될 때 상기 프로세싱 디바이스는: 상기 네트워크 통신 디바이스를 통해 클라이언트 컴퓨팅 디바이스로부터 컨텍스트 데이터(contextual data)를 수신하고, 상기 컨텍스트 데이터는 상기 클라이언트 컴퓨팅 디바이스에 표시되는 제1 어플리케이션을 나타내고; 제1 어플리케이션 뷰(view)에 상응하는 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID를 식별하고; 상기 제1 어플리케이션 기능 ID에 상응하는 제1 사용자 의도 ID를 판단하고; 상기 제1 사용자 의도 ID로부터 천이되는 제2 사용자 의도 ID를 판단하고; 상기 제2 사용자 의도 ID에 상응하는 제2 어플리케이션 기능 ID를 식별하고; 상기 저장 디바이스로부터 상기 제2 어플리케이션 기능 ID에 상응하는 카드 오브젝트를 회신(retrieve)하고; 상기 네트워크 통신 디바이스를 통해 상기 클라이언트 컴퓨팅 디바이스로 상기 카드 오브젝트를 송신한다.

Description

컨텍스트 데이터를 기반으로 하는 어플리케이션 카드들
본 개시는 이동 컴퓨팅 디바이스의 컨텍스트 데이터(contextual data)를 기반으로 상기 이동 컴퓨팅 디바이스(mobile computing device) 상에 표시하는 어플리케이션 카드(application card)들을 판단(결정)하는 것에 관한 것이다.
많은 이동 컴퓨팅 디바이스들은 어플리케이션들을 설치하여 실행할 수 있다. 어플리케이션들은 상기 이동 컴퓨팅 디바이스의 사용자가 특정 태스크(task)를 실행할 수 있는 어플리케이션 기능들을 포함한다. 일 예로, 크라우드-소스드 리뷰(crowd-sourced review) 어플리케이션은 사용자가 레스토랑 리뷰들을 볼 수 있도록 하는 레스토랑 리뷰 기능을 포함할 수 있다. 승차-요청(ride-requesting) 어플리케이션은 사용자가 어느 한 장소에서 다른 장소로의 승차를 요청할 수 있도록 하는 승차-요청 기능을 포함할 수 있다. 많은 이동 컴퓨팅 디바이스들은 사용자들이 어플리케이션들 간을 스위칭하도록 허여한다. 예를 들어, 사용자는 상기 크라우드-소스드 어플리케이션으로 레스토랑 리뷰를 보다가 상기 승차-요청 어플리케이션으로 스위칭하여 상기 레스토랑까지의 승차를 요청할 수 있다.
본 개시는 이동 컴퓨팅 디바이스의 컨텍스트 데이터(contextual data)를 기반으로 상기 이동 컴퓨팅 디바이스(mobile computing device) 상에 표시하는 어플리케이션 카드(application card)들을 판단(결정)하는 방법 및 그 장치를 제공한다.
서버는 네트워크 통신 디바이스, 저장 디바이스, 프로세싱 디바이스를 포함할 수 있다. 상기 저장 디바이스는 어플리케이션 기능 데이터 스토어, 사용자 의도 데이터 스토어 및 카드 데이터 스토어를 저장할 수 있다. 상기 어플리케이션 기능 데이터 스토어는 어플리케이션 기능들을 식별하는 어플리케이션 기능 ID들(application function identifiers) 및 상기 어플리케이션 기능 ID들에 상응하는 사용자 의도들(user intents)을 식별하는 사용자 의도 ID들을 저장한다. 상기 사용자 의도 데이터 스토어는 상기 사용자 의도 ID들 및 상기 사용자 의도 ID들 간의 천이들(transitions)을 저장한다. 상기 카드 데이터 스토어는 상기 어플리케이션 기능 ID들에 상응하는 카드 오브젝트들(card objects)을 저장한다. 카드 오브젝트들 각각은 상기 어플리케이션 기능 ID에 의해 식별되는 어플리케이션 기능을 수행하는 클라이언트 컴퓨팅 디바이스들(client computing devices)에서 실행 가능한 컴퓨터 판독 가능 지시들을 포함할 수 있다. 상기 프로세싱 디바이스는 상기 컴퓨터 판독 가능한 지시들을 실행할 수 있고, 상기 프로세싱 디바이스에 의해 상기 지시들이 실행될 때, 상기 프로세싱 디바이스는 상기 네트워크 통신 디바이스를 통해 클라이언트 컴퓨팅 디바이스로부터 컨텍스트 데이터(contextual data)를 수신할 수 있다. 상기 컨텍스트 데이터는 상기 클라이언트 컴퓨팅 디바이스 상에 현재 표시되고 있는 제1 어플리케이션 뷰(first application view)를 나타낼 수 있다.
상기 프로세싱 디바이스는, 상기 컨텍스트 데이터와 상기 어플리케이션 기능 데이터 스토어에 저장되어 있는 어플리케이션 기능 ID들을 비교함으로써, 제1 어플리케이션 뷰에 상응하는 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID를 식별할 수 있다. 상기 프로세싱 디바이스는 상기 제1 어플리케이션 기능 ID에 상응하는 제1 사용자 의도 ID를 판단(결정)할 수 있다. 상기 제1 사용자 의도 ID는 상기 클라이언트 컴퓨팅 디바이스의 사용자의 현재 사용자 의도를 나타낼 수 있다. 상기 프로세싱 디바이스는 상기 제1 사용자 의도 ID로부터 천이되는 제2 사용자 의도 ID를 판단(또는 결정)할 수 있다. 상기 제2 사용자 의도 ID는 상기 현재 사용자 의도에 기반하여 상기 사용자의 다음 사용자 의도의 예측을 나타낼 수 있다. 상기 프로세싱 디바이스는 상기 제2 사용자 의도 ID에 상응하는 제2 어플리케이션 기능 ID를 식별할 수 있다. 상기 제2 어플리케이션 기능 ID는 제2 어플리케이션 기능을 식별할 수 있다. 상기 프로세싱 디바이스는 상기 카드 데이터 스토어로부터 상기 제2 어플리케이션 ID에 상응하는 카드 오브젝트를 회신(retrieve)할 수 있다. 상기 프로세싱 디바이스는 상기 네트워크 통신 디바이스를 통해 상기 클라이언트 컴퓨팅 디바이스로 상기 카드 오브젝트를 송신할 수 있다.
이동 컴퓨팅 디바이스는 터치 스크린 디스플레이, 다수의 센서들, 송수신기, 메모리 및 컴퓨팅 프로세서를 포함할 수 있다. 상기 컴퓨팅 프로세서는 컴퓨터 판독 가능한 지시들을 실행할 수 있고, 상기 컴퓨팅 프로세서에 의해 상기 지시들이 실행될 때, 상기 컴퓨팅 프로세서는, 상기 터치 스크린 디스플레이 상에 제1 어플리케이션 기능을 나타내는 제1 어플리케이션 뷰를 표시할 수 있다. 상기 컴퓨팅 프로세서는 컨텍스트 데이터(contextual data)를 상기 메모리에 저장할 수 있다. 상기 컨텍스트 데이터는 상기 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID(first application identifier)를 포함할 수 있다. 상기 컨텍스트 데이터는 상기 다수의 센서들에 의해 측정되는 센서 측정값들을 포함할 수 있다. 상기 컨텍스트 데이터는 상기 터치 스크린 디스플레이 상에 표시되는 어플리케이션 뷰들의 히스토리(history)를 포함하는 어플리케이션 기능 사용 데이터(application function usage data)를 포함할 수 있다. 상기 컴퓨팅 프로세서는 상기 컨텍스트 데이터를 상기 송수신기를 통해 서버로 송신할 수 있다. 상기 컴퓨팅 프로세서는, 상기 서버로 컨텍스트 데이터를 송신하는 것에 대한 응답으로서, 상기 서버로부터 카드 오브젝트(card object)를 수신할 수 있다. 상기 카드 오브젝트는 제2 어플리케이션 기능을 식별하는 제2 어플리케이션 기능 ID를 나타낼 수 있다. 상기 컴퓨팅 프로세서는 상기 카드 오브젝트에 기반하여 상기 제2 어플리케이션 기능을 나타내는 어플리케이션 카드의 렌더링(rendering)을 판단(결정)할 수 있다. 상기 컴퓨팅 프로세서는 상기 제1 어플리케이션 뷰와 동시에 상기 어플리케이션 카드를 표시할 수 있다.
컴퓨터-구현 방법은, 어플리케이션 기능 ID들(application identifiers)을 그래프 노드들(graph nodes)로서 저장하는 어플리케이션 기능 그래프 및 상기 어플리케이션 기능 ID들에 상응하는 사용자 의도들을 식별하는 사용자 의도 ID들을, 서버의 저장 디바이스에 저장하는 동작을 포함할 수 있다. 상기 어플리케이션 기능 ID들은 어플리케이션 기능들을 식별한다. 상기 방법은, 상기 사용자 의도 ID들을 그래프 노드들로서 저장하고, 사용자 의도 ID들 간의 천이들을 에지들(edges)로서 저장하는 사용자 의도 그래프를, 상기 저장 디바이스에 저장하는 동작을 포함할 수 있다. 상기 방법은, 상기 어플리케이션 기능 ID들에 상응하는 카드 오브젝트들(card objects)을 저장하는 카드 데이터 스토어(card data store)를 상기 저장 디바이스에 저장하는 동작을 포함할 수 있다. 카드 오브젝트들 각각은 클라이언트 컴퓨팅 디바이스들(client computing devices)에서 실행 가능하고, 상기 어플리케이션 기능 ID에 의해 식별되는 어플리케이션 기능을 수행하는 컴퓨터 판독 가능 지시들(computer-readable instructions)을 포함할 수 있다. 상기 방법은, 상기 서버의 네트워크 통신 디바이스를 통해 클라이언트 컴퓨팅 디바이스로부터 컨텍스트 데이터(contextual data)를 수신하는 동작을 포함할 수 있다. 상기 컨텍스트 데이터는 상기 클라이언트 컴퓨팅 디바이스 상에 현재 표시되고 있는 제1 어플리케이션 뷰를 나타낼 수 있다.
상기 방법은, 상기 서버의 프로세싱 디바이스가, 상기 컨텍스트 데이터와 상기 어플리케이션 기능 데이터 스토어에 저장되어 있는 어플리케이션 기능 ID들을 비교함으로써, 상기 제1 어플리케이션 뷰에 상응하는 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID를 식별하는 동작을 포함할 수 있다. 상기 방법은, 상기 프로세싱 디바이스가, 상기 제1 어플리케이션 기능 ID에 상응하는 제1 사용자 의도 ID를 판단(결정)하는 동작을 포함할 수 있다. 상기 제1 사용자 의도 ID는 상기 클라이언트 컴퓨팅 디바이스의 사용자의 현재 사용자 의도를 나타낼 수 있다. 상기 방법은, 상기 프로세싱 디바이스가 상기 제1 사용자 의도 ID로부터 천이되는 제2 사용자 의도 ID를 판단하는 동작을 포함할 수 있다. 상기 제2 사용자 의도 ID는 상기 현재 사용자 의도에 기반하여 상기 사용자의 다음 사용자 의도의 예측을 나타낼 수 있다. 상기 방법은, 상기 프로세싱 디바이스가 상기 제2 사용자 의도 ID에 상응하는 제2 어플리케이션 기능 ID를 식별하는 동작을 포함할 수 있다. 상기 제2 어플리케이션 기능 ID는 제2 어플리케이션 기능을 식별한다. 상기 방법은, 상기 프로세싱 디바이스가 상기 카드 데이터 스토어로부터 상기 제2 어플리케이션 ID에 상응하는 카드 오브젝트(card object)를 회신(retrieve)하는 동작을 포함할 수 있다. 상기 방법은, 상기 네트워크 통신 디바이스를 통해 상기 클라이언트 컴퓨팅 디바이스로 상기 카드 오브젝트를 송신하는 동작을 포함할 수 있다.
본 개시의 하나 또는 그 이상의 구현들의 구체적인 사항들은 첨부 도면들 및 하기의 상세한 설명에서 설명된다. 다른 측면들, 특징들, 이점들은 상세한 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
본 개시는 이동 컴퓨팅 디바이스의 컨텍스트 데이터(contextual data)를 기반으로 상기 이동 컴퓨팅 디바이스(mobile computing device) 상에 표시하는 어플리케이션 카드(application card)들을 판단(결정)하는 방법 및 그 장치를 제공할 수 있다.
도 1은 컨텍스트 데이터에 기반하여 클라이언트 컴퓨팅 디바이스에서 어플리케이션 카드를 표시하는 시스템의 일 예를 나타낸 도면이다.
도 2a 내지 도 3b는 상기 클라이언트 컴퓨팅 디바이스에서 표시될 수 있는 어플리케이션 카드들의 일 예를 나타낸 도면들이다.
도 4는 상기 클라이언트 컴퓨팅 디바이스의 컨텍스트 데이터에 기반하여 상기 클라이언트 컴퓨팅 디바이스 상에 표시될 수 있는 어플리케이션 카드를 판단하는 서버의 일 예를 나타낸 도면이다.
도 5는 어플리케이션 기능 데이터 스토어에 저장된 어플리케이션 기능 그래프의 일 예를 나타낸 도면이다.
도 6은 사용자 의도 데이터 스토어에 저장된 사용자 의도 그래프의 일 예를 나타낸 도면이다.
도 7은 상기 클라이언트 컴퓨팅 디바이스의 컨텍스트 데이터에 기반하여 상기 클라이언트 컴퓨팅 디바이스에서 표시될 수 있는 어플리케이션 카드를 판단하는 방법의 일 예를 나타낸 도면이다.
도 8은 도 1에 도시되어 있는 클라이언트 컴퓨팅 디바이스의 구현의 일 예를 나타낸 도면이다.
도 9는 상기 클라이언트 컴퓨팅 디바이스에서, 어플리케이션 기능의 어플리케이션 카드를 다른 어플리케이션 기능의 어플리케이션 뷰와 함께 표시하는 방법의 일 예를 나타낸 도면이다.
도 10은 도 1에 도시되어 있는 서버 및/또는 클라이언트 컴퓨팅 디바이스를 구현하는데 사용될 수 있는 컴퓨팅 디바이스의 일 예를 나타낸 도면이다.
다양한 도면들에서 유사한 참조 기호들은 유사한 엘리먼트들을 나타낸다.
이동 컴퓨팅 디바이스들은 사용자들이 다른 어플리케이션 기능들을 수행할 수 있도록 어플리케이션들 간을 스위칭할 수 있게 한다. 어플리케이션들 간의 스위칭은, 어플리케이션을 시작하고 상기 어플리케이션 내에서 어플리케이션 뷰를 수동으로 이동하는데 상당한 시간을 필요로 하기 때문에 많은 시간이 소비된다. 또한 사용자는 제1 어플리케이션의 제1 어플리케이션 뷰를 보는 것으로부터 제2 어플리케이션의 제2 어플리케이션 뷰를 보는 것으로 스위칭하기 위해 몇 개의 버튼들을 눌러야만 할 수 있다. 예를 들어, 상기 사용자는 홈 버튼을 눌러서 홈 스크린으로 스위칭하고, 아이콘을 선택하여 제2 어플리케이션을 시작(launch)한 다음, 상기 제2 어플리케이션 내의 제2 어플리케이션 뷰로 이동할 수 있다. 상기 홈 버튼을 과도하게 많이 누르는 것은 상기 이동 컴퓨팅 디바이스의 마모와 파손을 가속화시킬 수 있다. 어플리케이션 뷰들 간의 수동 이동에서의 시간 낭비는 전력 소비를 증가시키고 배터리 방전을 가속화시킬 수 있다. 마지막으로, 어플리케이션들의 폭발적인 증가로 인해서, 어플리케이션 기능들 및 그에 상응하는 어플리케이션 뷰들을 탐색하는 것이 점점 어려워지고 있다.
상기 이동 컴퓨팅 디바이스는 제1 어플리케이션 기능의 제1 어플리케이션 뷰를 표시하고, 동시에 제2 어플리케이션 기능에 대한 어플리케이션 카드를 표시할 수 있다. 상기 어플리케이션 카드는 상기 이동 컴퓨팅 디바이스의 사용자가 상기 제2 어플리케이션 기능의 제2 어플리케이션 뷰로 수동으로 이동하지 않고도 상기 제2 어플리케이션 기능을 사용하도록 하기 위한 어플리케이션 제어들(application controls)을 포함할 수 있다. 상기 어플리케이션 카드는 상기 이동 컴퓨팅 디바이스가 상기 제2 어플리케이션 기능을 수행하는, 실행 가능 지시들을 포함할 수 있다. 상기 이동 컴퓨팅 디바이스는 상기 이동 컴퓨팅 디바이스의 컨텍스트 데이터(contextual data)에 기반하여 상기 어플리케이션 카드를 표시할 수 있다.
상기 컨텍스트 데이터는 상기 이동 컴퓨팅 디바이스 상에서 현재 표시되고 있는 어플리케이션 데이터를 나타낼 수 있다. 예를 들어, 크라우드-소스드 리뷰(crowd-sourced review) 어플리케이션에서 레스토랑-리뷰 기능을 위한 어플리케이션 뷰를 표시하면서, 상기 이동 컴퓨팅 디바이스는 승차-요청 어플리케이션에서 승차 요청 기능을 위한 어플리케이션 카드를 표시할 수 있다. 상기 컨텍스트 데이터는 센서 측정값들(예: 가속도계 측정값들)을 포함할 수 있다. 예를 들어, 상기 이동 컴퓨팅 디바이스의 사용자가 보행 중이고 상기 레스토랑-리뷰 기능을 사용 중임을 검출하면, 상기 이동 컴퓨팅 디바이스는 테이블-예약 어플리케이션으로부터 테이블-예약 기능을 위한 어플리케이션 카드를 표시할 수 있다. 상기 컨텍스트 데이터는 이전에 표시된 어플리케이션 뷰들의 히스토리를 포함할 수 있고, 상기 이동 컴퓨팅 디바이스는 상기 히스토리에 기반하여 상기 어플리케이션 카드를 표시할 수 있다.
상기 어플리케이션 카드는 상기 어플리케이션 카드에 의해 나타내지는 어플리케이션 기능에 대한 기능 파라미터들(function parameters)을 수신하는 그래픽 사용자 인터페이스(graphical user interface: GUI) 엘리먼트들을 표시할 수 있다. 상기 기능 파라미터들은 상기 컨텍스트 데이터에 기반하여 채워질 수 있다. 예를 들어, 상기 승차 요청 기능에 대한 어플리케이션 카드의 목적지 주소는, 상기 레스토랑-리뷰 기능에 대한 어플리케이션 뷰에 표시되는 레스토랑 주소로 채워질 수 있다. 상기 어플리케이션 카드의 상기 GUI 엘리먼트들은 상기 어플리케이션 기능에서의 어플리케이션 뷰의 GUI 엘리먼트들과 유사할 수 있다. 또한 상기 어플리케이션 기능에서의 어플리케이션 뷰의 GUI 엘리먼트들과 유사하게, 상기 어플리케이션 카드의 GUI 엘리먼트들은 동일한 어플리케이션 프로그래밍 인터페이스(application programming interface: API)들과, 동일한 방식으로 동작하는 라이브러리(library)들 및 엔드포인트(endpoint)들을 호출할 수 있다.
도 1은 어플리케이션 뷰(46)와 상기 어플리케이션 뷰(46)와 함께 어플리케이션 카드(50)를 표시하는 시스템(10)을 도시한 도면이다. 상기 도시되어 있는 예제에서, 상기 시스템(10)은 서버(100), 클라이언트 컴퓨팅 디바이스(client computing device)(140) 및 네트워크(190)를 포함한다. 상기 서버(100) 및 클라이언트 컴퓨팅 디바이스(140)는 어플리케이션 기능들(146)(예: 146-1, 146-2, …, 146-N)를 가지는 어플리케이션들을 저장할 수 있다. 상기 어플리케이션들은 상기 어플리케이션 기능들(146)을 나타내는 어플리케이션 뷰들(46)(예: 46-1, 46-2, …, 46-N)을 가질 수 있다. 상기 서버(100)는 상기 어플리케이션 기능들(146)을 나타내는 어플리케이션 카드들(50)(예: 50-1, 50-2, …, 50-N)을 저장할 수 있다. 어플리케이션 뷰들(46) 및 어플리케이션 카드들(50)은 상기 클라이언트 컴퓨팅 디바이스(140)에 의해 해당 어플리케이션 기능들(146)이 수행될 수 있도록 하는 컴퓨터 판독 가능 지시들을 포함할 수 있다. 상기 어플리케이션 뷰들(46) 및 어플리케이션 카드들(50)은 상기 어플리케이션 기능들(146)을 수행하는 그 대표 어플리케이션 기능들(146)과 연관되는 어플리케이션 프로그래밍 인터페이스(application programming interface: API)들, 라이브러리들 및/또는 엔드포인트들을 호출할 수 있다.
상기 클라이언트 컴퓨팅 디바이스(140)는 상기 어플리케이션 기능(146-1)의 어플리케이션 뷰(46-1)을 표시할 수 있다. 상기 어플리케이션 뷰(46-1)는, 일 예로, 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 어플리케이션 뷰(46-1)를 보고 있는 중일 수 있기 때문에 현재 어플리케이션 뷰(current application view)로 칭해질 수 있다. 도 1에서, 상기 어플리케이션 뷰(46-1)는 상기 크라우드-소스드 리뷰 어플리케이션의 레스토랑 리뷰 기능의 표현을 표시하고 있다. 상기 크라우드-소스드 리뷰 어플리케이션의 예제는 YELP® 어플리케이션 (이하, Yelp)이다. 도시되어 있는 바와 같이, 상기 어플리케이션 뷰(46-1)는 타이 팰리스라는 이름의 레스토랑에 대한 레스토랑 리뷰를 표시하고 있는 중이다.
상기 클라이언트 컴퓨팅 디바이스(140)는 다른 어플리케이션 기능(146-2)의 어플리케이션 카드(50-2)를 표시할 수 있다. 상기 다른 어플리케이션 기능(146-2)은, 예를 들어, 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 어플리케이션 기능(146-1)을 사용한 후에 (일 예로, 직후에) 상기 어플리케이션 기능(146-2)을 사용할 수 있기 때문에 다음 어플리케이션 기능이라고 칭해질 수 있다. 도 1의 일 예에서, 상기 어플리케이션 기능(146-2)은 승차 요청 어플리케이션의 승차 요청 기능이다. 상기 승차 요청 기능의 일 예는 우버(UBER®) 어플리케이션(이하, Uber)에서 우버X(UberX®) 드라이버 기능 요청(Request an UberX® driver function)(이하, Request UberX)이다. 상기 어플리케이션 카드(50-2)는 실행 시 상기 어플리케이션 기능(146-2)를 수행하는 컴퓨터 판독 가능 지시들을 포함할 수 있다.
상기 어플리케이션 카드(50-2)는, 예를 들어, 상기 어플리케이션 카드(50-2)가 상기 어플리케이션 기능(146-2)의 기능 파라미터들에 상응하는 GUI 엘리먼트들을 표시하기 때문에 딥 뷰 카드(Deep View Card: DVC)라고 칭해질 수 있다. 다른 방식으로서, 어플리케이션 카드(50-2)는 사용자가 해당 어플리케이션의 기능을 활용하도록(leverage) 하고, 또한 다양한 실시예들에서 상기 카드를 하나 또는 그 이상의 값들로 파라미터화하도록 한다. 예를 들어, 사용자는 픽업 위치 및/또는 드롭-오프(drop-off) 위치를, 상기 Uber의 예약 UberX 기능을 활용하는 어플리케이션 카드로 입력시킬 수 있다. 상기 클라이언트 컴퓨팅 디바이스(140)는 상기 어플리케이션 카드(50-2)가 상기 어플리케이션 뷰(46-1)의 위에 놓여지도록 상기 어플리케이션 카드(50-2)를 표시할 수 있다. 상기 클라이언트 컴퓨팅 디바이스(140)는 상기 어플리케이션 카드(50-2)가 상기 어플리케이션 뷰(46-1)의 일부를 숨길 수 없도록 상기 어플리케이션 카드(50-2)의 투명도(transparency)를 제어할 수 있다. 상기 어플리케이션 카드(50-2)의 GUI의 엘리먼트들은 사용자가 어플리케이션들을 스위칭하지 않고, 또한 상기 어플리케이션 기능(146-2)을 나타내는 어플리케이션 뷰(46-2)로 수동으로 이동하지 않고도 상기 어플리케이션 기능(146-2)을 사용할 수 있도록 한다.
도시되어 있는 예제에서, 상기 어플리케이션 카드(50-2)의 GUI 엘리먼트들은 제1 및 제2 텍스트 필드들(150, 152), 제1 및 제2 텍스트 라벨들(154, 156) 및 버튼(158)을 포함한다. 상기 텍스트 필드들(150, 152)은 상기 어플리케이션 기능(146-2)에 대한 파라미터들을 수신할 수 있다. 일 예로, 상기 제1 텍스트 필드(150)는 현재의 주소를 수신할 수 있고, 상기 제2 텍스트 필드(152)는 목적지 주소를 수신할 수 있다. 상기 제1 및 제2 텍스트 필드들(150, 152)은 상기 어플리케이션 뷰(46-1)에 표시되어 있는 정보에 기반하여 채워질 수 있다. 일 예로, 상기 레스토랑 리뷰 기능에 의해 표시되는 레스토랑 주소는 상기 목적지 주소를 채우기 위해 사용될 수 있다. 상기 제1 및 제2 텍스트 라벨들(154, 156)은 상기 어플리케이션 기능(146-2)과 연관되는 API, 라이브러리 및/또는 엔드포인트를 호출함으로써 결정되는 정보를 표시할 수 있다. 일 예로, 상기 어플리케이션 카드(50-2)는 상기 어플리케이션 기능(146-2)와 연관되는 요금 추정 엔드포인트를 사용하여 상기 텍스트 라벨(154)에 의해 표시되는 요금 추정값을 판단(결정)할 수 있다. 유사하게, 상기 어플리케이션 카드(50-2)는 상기 어플리케이션 기능(146-2)와 연관되는 시간 추정 엔드포인트를 사용하여 상기 텍스트 라벨(156)에 의해 표시되는 시간 추정값을 판단(결정)할 수 있다.
상기 클라이언트 컴퓨팅 디바이스(140)는, 예를 들어 상기 사용자가 상기 버튼(158)을 누를 때 상기 버튼(158)의 선택을 수신할 수 있다. 상기 버튼(158)의 선택을 수신하면, 상기 어플리케이션 카드(50-2)는 상기 텍스트 필드들(150, 152)을 통해 수신된 파라미터들을 사용하여 태스크(예: UberX 승차 요청)을 수행할 수 있다. 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 어플리케이션 기능(146-2)을 사용할 수 있다고 결정(예측)하고, 상기 어플리케이션 카드(50-2)를 자동으로 표시함으로써, 상기 사용자는 어플리케이션들을 스위칭하여 상기 어플리케이션 뷰(46-2)로 수동으로 이동할 필요가 없을 수 있다. 일 예로, 상기 사용자는 홈 버튼을 눌러 홈 스크린으로 이동하고, 어플리케이션 트레이(application tray)에서 Uber 아이콘을 검색하고, Uber를 시작하기 위해 Uber 아이콘을 선택한 후, 상기 Uber 어플리케이션 내의 상기 request UberX 기능으로 이동할 필요가 없을 수 있다.
상기 클라이언트 컴퓨팅 디바이스(140)는 상기 서버(100)로부터 상기 어플리케이션 카드(50-2)를 수신할 수 있다. 상기 어플리케이션 카드(50-2)를 수신하는 것은, 상기 서버(100)가 상기 어플리케이션 기능(146-2)을, 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 어플리케이션 기능(146-1)을 사용한 이후에 사용할 수 있는 다음 어플리케이션 기능으로 결정(예측)하였음을 나타낸다. 상기 클라이언트 컴퓨팅 디바이스(140)는 컨텍스트 데이터(160)를 상기 서버(100)로 송신할 수 있다. 상기 서버(100)는 상기 컨텍스트 데이터(160)를 사용하여 상기 어플리케이션 카드들(50) 중 상기 어플리케이션 카드(50-2)를 선택할 수 있다. 상기 서버(100)는 상기 어플리케이션 카드(50-2)를 (일 예로, 자바스크립트 오브젝트 표기법(JavaScript Object Notation: JSON)을 사용하여) 카드 오브젝트(card object)(180)로서 상기 클라이언트 컴퓨팅 디바이스(140)로 송신할 수 있다.
상기 컨텍스트 데이터(160)는 온-스크린(on-screen) 어플리케이션 정보(162)를 포함할 수 있다. 상기 온-스크린 어플리케이션 정보(162)는 상기 클라이언트 컴퓨팅 디바이스(140)에서 표시되고 있는 현재 어플리케이션을 나타내는 어플리케이션 ID(application identifier)(164)를 포함할 수 있다. 일 예로, 상기 어플리케이션 ID(164)는 상기 YELP® 어플리케이션에 대한 어플리케이션 ID를 포함할 수 있다. 상기 온-스크린 어플리케이션 정보(162)는 상기 클라이언트 컴퓨팅 디바이스(140)에서 표시되고 있는 현재 어플리케이션 기능을 나타내는 어플리케이션 기능 ID(166)를 포함할 수 있다. 일 예로, 상기 어플리케이션 기능 ID(166)는 상기 어플리케이션 기능(146-1)에 대한 어플리케이션 기능 ID를 포함할 수 있다. 상기 온-스크린 어플리케이션 정보(162)는 상기 어플리케이션 뷰(46-1)를 나타내는 정보를 포함할 수 있다. 상기 온-스크린 어플리케이션 정보(162)는 상기 클라이언트 컴퓨팅 디바이스(140)에서 표시되는 정보를 포함할 수 있다. 일 예로, 상기 온-스크린 어플리케이션 정보(162)는 상기 클라이언트 컴퓨팅 디바이스(140)가 타이 팰리스라는 이름의 레스토랑에 대한 레스토랑 리뷰를 표시 중임을 나타낼 수 있다.
상기 컨텍스트 데이터(160)는 센서 측정값들(168)을 포함할 수 있다. 상기 클라이언트 컴퓨팅 디바이스(140)는 센서들(예: 위치 센서, 가속도계, 자이로스코프(gyroscope) 등)을 포함할 수 있다. 상기 센서들은 상기 센서 측정값들(168)을 기록(캡처)할 수 있다. 예를 들어, 센서 측정값들(168)은 상기 클라이언트 컴퓨팅 디바이스(140)의 위치, 가속도계 측정값, 자이로스코프 측정값들 등을 포함할 수 있다. 상기 컨텍스트 데이터(160)는 어플리케이션 기능 사용 히스토리(application function usage history)(170)를 포함할 수 있다. 상기 어플리케이션 기능 사용 히스토리(170)는 상기 어플리케이션 기능들(146)이 사용되었던 순서를 나타낼 수 있다. 예를 들어, 상기 어플리케이션 기능 사용 히스토리(170)는 제2 어플리케이션의 어플리케이션 기능(146-2)이 상기 시간의 85%인 상기 제1 어플리케이션의 어플리케이션 기능(146-1) 직후에 사용됨을 나타낼 수 있다. 상기 어플리케이션 기능(146-1) 직후에 사용되는 상기 어플리케이션 기능(146-2)은 상기 어플리케이션 기능(146-1)의 사용으로부터 임계 양의 시간 내(예: 5초 내)에 사용되는 어플리케이션 기능(146-2)을 나타낼 수 있다.
상기 서버(100)는 상기 컨텍스트 데이터(160)를 수신하고, 상기 컨텍스트 데이터(160)에 기반하여 적합한 어플리케이션 카드(50)를 판단(결정)한다. 도 1의 예제에서, 서버(100)는 어플리케이션 카드(50-2)를 가장 적합한 어플리케이션 카드(50)로서 판단(결정)한다. 상기 적합한 어플리케이션 카드(50)를 판단하는 동작은, 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 현재 어플리케이션 기능 후에 사용할 수 있는 다음 어플리케이션 기능을 판단하는 동작을 포함할 수 있다. 도 1의 예제에서, 서버(100)는 상기 현재 어플리케이션 기능인 어플리케이션 기능(146-1)에 기반하여 다음 어플리케이션 기능인 어플리케이션 기능(146-2)을 판단(결정)한다. 상기 서버(100)는 상기 카드 오브젝트(180)를 통해 상기 서버(100)의 다음 어플리케이션 기능의 결정을 나타낸다.
카드 오브젝트(180)는 어플리케이션 ID(182)를 포함할 수 있다. 상기 어플리케이션 ID(182)는 상기 어플리케이션 기능(146-2)를 포함하는 어플리케이션(예: Uber)을 식별할 수 있다. 상기 카드 오브젝트(180)는 어플리케이션 기능 ID(184)를 포함할 수 있다. 상기 어플리케이션 기능 ID(184)은 상기 어플리케이션 기능(146-2)를 식별할 수 있다. 상기 카드 오브젝트(180)는 상기 어플리케이션 카드(50-2)에 대한 레이아웃(layout)(186)을 나타낼 수 있다. 상기 레이아웃(186)은 상기 클라이언트 컴퓨팅 디바이스(140)가 상기 어플리케이션 카드(50-2)의 렌더링을 실행할 수 있는 컴퓨터 판독 가능 지시들을 포함할 수 있다. 상기 레이아웃(186)은 상기 어플리케이션 카드(50-2)에 대한 GUI 엘리먼트들을 나타낼 수 있다. 상기 레이아웃(186)은 상기 어플리케이션 기능(146-2)에 대한 기능 파라미터들을 나타낼 수 있다. 상기 서버(100)는 레이아웃 파일로서 상기 레이아웃(186)을 송신할 수 있다. 상기 클라이언트 컴퓨팅 디바이스(140)는 상기 카드 오브젝트(180)를 수신하고 상기 카드 오브젝트(180)에 포함되어 있는 정보에 기반하여 상기 어플리케이션 카드(50-2)를 렌더링한다.
도 2a는 어플리케이션 기능(146-3)에 대한 어플리케이션 카드(50-3)의 다른 실시예를 나타낸 도면이다. 도 2a의 예제에서, 상기 어플리케이션 기능(146-3)은 “예약 테이블” 기능을 나타내며, 여기서 사용자는 특정 날짜 및 시간에 특정 시설에의 예약을 요청할 수 있다. 어플리케이션 뷰(46-1)는 레스토랑의 레스토랑 리뷰를 표시할 수 있고, 어플리케이션 카드(50-3)는 상기 사용자가 상기 레스토랑의 테이블을 예약할 수 있게 한다. 일 예로, 어플리케이션 뷰(46-1)는 타이 팰리스의 리뷰를 표시할 수 있고, 어플리케이션 카드(50-3)는 사용자가 타이 팰리스의 테이블을 예약할 수 있게 한다. 어플리케이션 뷰(46-1)와 함께 어플리케이션 카드(50-3)를 표시함으로써, 상기 사용자는 상기 어플리케이션 기능(146-3)을 나타내는 어플리케이션 뷰(46-3)로 수동으로 이동할 필요가 없다. 예를 들어, YELP® 어플리케이션에서 타이 팰리스의 리뷰를 보고 있는 사용자는 홈 버튼을 눌러 홈 스크린으로 이동하고, 다른 어플리케이션(예: OPENTABLE® 어플리케이션)을 시작한 후, OPENTABLE® 어플리케이션 내의 예약 테이블로 이동할 필요가 없다.
상기 어플리케이션 카드(50-3)는, 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 어플리케이션 기능(146-3)을 사용할 수 있도록 하는(동작시킬 수 있도록 하는) GUI 엘리먼트들을 포함할 수 있다. 상기 GUI 엘리먼트들은 드롭-다운들(drop-downs)(248, 250, 252) 및 버튼(254)을 포함할 수 있다. 드롭-다운(248)은 사용자가 레스토랑에 갈 손님들의 수를 입력할 수 있게 한다. 드롭-다운(250)은 사용자가 상기 테이블 예약을 위한 날짜를 입력할 수 있게 한다. 드롭-다운(252)은 사용자가 예약 시간을 입력할 수 있게 한다. 버튼(254)은 제출(submit) 버튼일 수 있다. 버튼(254)의 선택을 수신하면, 상기 어플리케이션 기능(146-3)은 주어진 시간 및 날짜(예: 5월 31일 토요일 오후 7시)에 입력된 수의 손님들(예: 2명)을 위해 상기 어플리케이션 카드(50-3)에 의해 나타나는 레스토랑에서의 예약을 위한 요청을 생성할 수 있다.
서버(예: 도 1의 서버(100))는, 클라이언트 컴퓨팅 디바이스(140)의 사용자가 어플리케이션 기능(146-1)을 사용한 후에 사용할 다음 어플리케이션 기능으로서 어플리케이션 기능(146-3)을 판단(예측)할 수 있다. 예를 들어, 상기 서버는 사용자가 어플리케이션 뷰(46-1)를 통해 리뷰를 읽고 있는 레스토랑에서의 테이블을 예약하는 것으로 판단할 수 있다. 서버는 드롭-다운들(248, 250, 252)에 대한 디폴트(default) 값들을 선택할 수 있다. 서버는 클라이언트 컴퓨팅 디바이스(140)로부터 수신된 컨텍스트 데이터에 기반하여 드롭-다운들(248, 250, 252)에 대한 값들을 선택할 수 있다. 일 예로, 컨텍스트 데이터는 사용자가 상기 드롭-다운들(248, 250, 252)에 대해 선택했던 히스토리 값들을 나타낼 수 있다. 사용자는 드롭-다운들(248, 250, 252)의 값들을 변경할 수 있다. 일 예로, 상기 사용자는 사람들의 수를 2로부터 4까지 증가시킬 수 있다.
도 2는 어플리케이션 기능(146-4)을 나타내는 어플리케이션 카드(50-4)의 다른 실시예를 도시한 도면이다. 도 2b에서, 어플리케이션 기능(146-4)은 메시지 기능을 나타낸다. 어플리케이션 뷰(46-1)는 레스토랑의 레스토랑 리뷰를 표시할 수 있고, 어플리케이션 카드(50-4)는 사용자가 상기 레스토랑에 대한 연락처로 메시지를 송신할 수 있도록 한다. 일 예로, 어플리케이션 뷰(46-1)는 타이 팰리스의 리뷰를 표시할 수 있고, 어플리케이션 카드(50-4)는 사용자가 상기 타이 팰리스에 대한 메시지를 송신할 수 있도록 한다. 상기 어플리케이션 뷰(46-1)와 함께 상기 어플리케이션 카드(50-4)를 표시함으로써, 사용자는 어플리케이션 기능(146-4)에 상응하는 어플리케이션 뷰로 수동으로 이동할 필요가 없다. 일 예로, YELP®에서 타이 팰리스의 리뷰를 보고 있는 사용자는 홈 버튼을 눌러서 홈 스크린으로 이동하고, 다른 어플리케이션(예 메신저(Messenger®))을 시작하고, Messenger® 어플리케이션 내의 메시징 기능으로 이동할 필요가 없다.
어플리케이션 카드(50-4)는 클라이언트 컴퓨팅 디바이스(140)의 사용자가 어플리케이션 기능(146-4)를 사용(수행)할 수 있도록 하는 GUI 엘리먼트들을 포함한다. 상기 GUI 엘리먼트들은 드롭-다운(260), 텍스트 필드(262) 및 버튼(264)을 포함할 수 있다. 드롭-다운(260)은 연락처를 나타낼 수 있다. 텍스트 필드(262)는 상기 연락처로 송신될 수 있는 메시지를 수신 및 표시할 수 있다. 버튼(264)은 제출(submit) 버튼일 수 있다. 버튼(264)의 선택을 수신하면, 어플리케이션 기능(146-4)은 상기 연락처로 상기 메시지를 송신할 수 있다.
서버(예: 도 1의 서버(100))는 어플리케이션 기능(146-4)을, 클라이언트 컴퓨팅 디바이스(140)의 사용자가 상기 어플리케이션 기능(146-1)을 사용한 후에 사용할 수 있는 다음 어플리케이션 기능으로서 판단(예측)할 수 있다. 일 예로, 서버는 사용자가 어플리케이션 뷰(46-1)에서 레스토랑의 리뷰를 읽고 있을 때 상기 사용자가 상기 레스토랑에 대한 연락처를 메시지화할 수 있다고 판단할 수 있다. 상기 서버는 드롭-다운(260)의 값을 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 가장 빈번하게 연락하는 연락처가 되도록 선택할 수 있다. 서버는 드롭-다운(260)의 값을, 상기 클라이언트 컴퓨팅 디바이스(140)의 사용자가 연락한 가장 마지막 연락처가 되도록 선택할 수 있다. 서버는 디폴트 메시지를 텍스트 필드(262)의 값으로서 선택할 수 있다. 서버는 클라이언트 컴퓨팅 디바이스(140)로부터 수신된 컨텍스트 데이터에 기반하여 텍스트 필드(262)의 값을 선택할 수 있다. 일 예로, 컨텍스트 데이터는 사용자가 드롭-다운(260)에 의해 나타나는 연락처로 송신할 수 있는 히스토리 메시지들을 나타낼 수 있다. 사용자는 드롭-다운(260) 및 텍스트 필드(262)의 값을 변경할 수 있다. 일 예로, 상기 사용자는 베티(Betty) 대신에 베로니카(Veronica)로 메시지를 송신할 수 있다.
도 3a는 액티브 어플리케이션(active application)의 어플리케이션 기능(146-4)을 나타내는 어플리케이션 뷰(46-4)의 일 예를 나타낸 도면이다. 도 3a에서, 액티브 어플리케이션은 메시징 어플리케이션이고, 어플리케이션 기능(146-4)은 메시징 어플리케이션의 메시징 기능이다. 어플리케이션 기능(146-4)은 클라이언트 컴퓨팅 디바이스(140)의 사용자가 메시지들을 송신 및 수신할 수 있게 한다. 클라이언트 컴퓨팅 디바이스(140)는 어플리케이션 뷰(46-4)와 함께 상기 어플리케이션 카드(50-1)를 표시할 수 있다. 클라이언트 컴퓨팅 디바이스(140)는 메시지(312)에서 감지된 엔터티(310)에 기반하여 어플리케이션 카드(50-1)를 표시할 수 있다. 상기 엔터티(310)는 어플리케이션 기능(146-1)과 연관될 수 있다. 일 예로, 엔터티(310)는 레스토랑이고, 어플리케이션 기능(146-1)은 상기 레스토랑의 리뷰를 표시할 수 있는 레스토랑 리뷰 기능일 수 있다.
서버(예: 도 1의 서버(100))는 컨텍스트 데이터로서 메시지(312)를 수신할 수 있다. 서버는 메시지(312)에서 엔터티(310)를 식별할 수 있다. 서버는 상기 엔터티(310)와 연관되는 어플리케이션 기능을 식별할 수 있다. 서버는 엔터티(310)에 대한 정보를 표시할 수 있는 어플리케이션 기능을 식별함으로써 상기 어플리케이션 기능을 식별할 수 있다. 일 예로, 서버는 타이 팰리스를 엔터티(310)로서 식별하고, YELP®의 레스토랑 리뷰 기능을 어플리케이션 기능(146-1)으로서 식별할 수 있다.
어플리케이션 카드(50-1)는 광고(예: 스폰서 어플리케이션 카드)일 수 있다. 어플리케이션 카드(50-1)는, 일 예로 상기 어플리케이션 카드(50-1)가 광고임을 나타내는 지시자(indicium)(320)를 포함할 수 있다. 액티브 어플리케이션의 개발자는 어플리케이션 카드(50)가 표시될 때 금융 인센티브를 수신할 수 있다. 클라이언트 컴퓨팅 디바이스(140)가 정의되어 있는 액션을 수행하는 것에 대한 응답으로서 개발자는 상기 금융 인센티브를 수신할 수 있다. 일 예로, 사용자가 어플리케이션 카드(50-1)를 클릭할 때(예: 클릭 별 지불) 또는 어플리케이션 카드(50-1)가 상기 어플리케이션의 GUI 상에 오버레이될 때(예: 노출 별 지불), 어플리케이션 기능(146-4)의 개발자는 금융 인센티브를 수신할 수 있다.
서버는 2개의 어플리케이션 기능들이 엔터티(310)에 상응한다고 판단할 수 있다. 서버는 선택된 어플리케이션 기능들 각각과 연관된 금융 인센티브를 판단하고, 더 높은 금융 인센티브를 가지는 어플리케이션 기능을 선택할 수 있다. 일 예로, 서버는 YELP® 어플리케이션의 레스토랑 리뷰 기능 및 트립 어드바이저(TRIPADVISOR®) 어플리케이션(다른 크라우드-소스드 리뷰 어플리케이션)의 레스토랑 리뷰 기능이 레스토랑 엔터티(310) “타이 팰리스”에 상응한다고 판단할 수 있다. 일 예로, TRIP ADVISOR®가 $0.25만을 제공하는데 반해 YELP®가 of $0.37의 금융 인센티브를 제공하므로, 서버는 상기 TRIP ADVISOR® 어플리케이션의 레스토랑 리뷰 기능 대신 YELP® 어플리케이션의 레스토랑 리뷰 기능을 선택할 수 있다.
도 3a에서, 어플리케이션 기능(146-4)은 현재 어플리케이션 기능이라고 칭해질 수 있다. 어플리케이션 기능(146-1)은 일 예로, 어플리케이션 기능(146-1)이 사용자가 어플리케이션 기능(146-4)을 사용하는 것에 이어서 사용할 수 있는 어플리케이션 기능의 예측이 될 수 있으므로, 예측된 다음 어플리케이션 기능이라고 칭해질 수 있다. 유익하게, 클라이언트 컴퓨팅 디바이스(140)의 사용자는 YELP® 어플리케이션을 수동으로 시작하고 상기 YELP® 어플리케이션 내에서 타이 팰리스를 검색할 필요 없이 타이 팰리스의 레스토랑 리뷰를 볼 수 있다. 또한 타이 팰리스의 레스토랑 리뷰를 표시한 상태에서, 사용자는 어플리케이션 카드(50-1)를 누름으로써 YELP® 어플리케이션을 시작할 수 있다.
도 3b는 클라이언트 컴퓨팅 디바이스(140)가 어플리케이션 카드(50-1)를 어플리케이션 뷰(46-4) 변경들에 의해 표시되는 정보인 다른 어플리케이션 카드(50-3)로서 대체하는 일 예를 구현한 도면이다. 도 3b에서, 클라이언트 컴퓨팅 디바이스(140)는 어플리케이션 기능(146-4)에 대한 어플리케이션 뷰(46-4)를 표시한다. 클라이언트 컴퓨팅 디바이스(140)는 어플리케이션 기능(146-4)을 통해 메시지(330)를 수신할 수 있다. 메시지(330)는 날짜(332)와 시간(334)을 나타낼 수 있다. 클라이언트 컴퓨팅 디바이스(140)는 서버(예: 도 1의 서버(100))로 상기 날짜(332)와 시간(334)을 컨텍스트 데이터로서 송신할 수 있다.
서버는 메시지들(312, 330)을 포함하는 컨텍스트 데이터를 수신한다. 서버는 메시지들(312, 330)을 사용하여 클라이언트 컴퓨팅 디바이스(140)의 사용자가 어플리케이션 기능(146-4) 다음에 사용할 수 있는 어플리케이션 기능을 예측할 수 있다. 서버는 엔터티(310)를 레스토랑으로 식별할 수 있다. 서버는 다음 메시지(330)에서 날짜 엔터티(332) 및 시간 엔터티(334)를 식별할 수 있다. 서버는 메시지(330)에 나타난 날짜 및 시간에 사용자가 레스토랑의 테이블을 예약하고자 함을 예측할 수 있다. 서버는 사용자가 상기 레스토랑의 테이블을 예약할 수 있도록 하는 어플리케이션 기능(예: 어플리케이션 기능(146-3))을 식별할 수 있다. 도 3b의 일 예에서, 어플리케이션 기능(146-3)은 OPENTABLE® 어플리케이션의 “테이블 예약(reserve table)” 기능이다. 서버는 어플리케이션 기능(146-3)을 나타내는 어플리케이션 카드(50-3)를 송신한다.
어플리케이션 카드(50-3)는 기능 파라미터들을 수신할 수 있다. 기능 파라미터들은 손님들의 수(예: 드롭-다운(248)), 날짜(예: 드롭-다운(250)) 및 시간(예: 드롭-다운(252))을 포함할 수 있다. 서버는 컨텍스트 데이터에 기반하여 기능 파라미터들의 값들을 판단(결정)할 수 있다. 일 예로, 서버는 메시지(330)에 포함된 날짜 엔터티(332) 및 시간 엔터티(334)를 식별함으로써 날짜 및 시간 기능 파라미터들을 판단(결정)할 수 있다. 어플리케이션 기능(146-3)의 개발자는 어플리케이션 기능(146-3)을 표시하기 위해 어플리케이션 기능(146-4)의 개발자에게 금융 인센티브를 제공할 수 있다. 일 예로, OPENTABLE® 어플리케이션의 개발자는, MESSENGER™를 통해 통신되는 메시지들에 기반하여 상기 OPENTABLE® 어플리케이션의 테이블 예약 기능을 표시하기 위하여 MESSENGER™ 어플리케이션(예: 페이스북(Facebook))의 개발자에게 금융 인센티브를 제공할 수 있다. 어플리케이션 카드(50-3)를 표시함으로써, 클라이언트 컴퓨팅 디바이스(140)의 사용자는 수동으로 OPENTABLE® 어플리케이션을 시작하고, 테이블 예약 기능을 위해 어플리케이션 뷰로 이동하고, 수동으로 상기 기능 파라미터들을 입력할 필요가 없다.
도 4는 서버(400)를 나타낸 도면이다. 서버(400)는 서버(100)의 일 실시예를 구현한 것이다. 서버(400)는 클라이언트 컴퓨팅 디바이스(예: 클라이언트 컴퓨팅 디바이스(140))로부터 컨텍스트 데이터(예: 컨텍스트 데이터(160))를 수신한다. 컨텍스트 데이터는 클라이언트 컴퓨팅 디바이스가 현재 표시하고 있는 현재 어플리케이션 뷰(current application view)를 나타낸다. 서버(400)는 상기 컨텍스트 데이터를 사용하여 상기 현재 어플리케이션 뷰와 함께 상기 클라이언트 컴퓨팅 디바이스에서 표시될 수 있는 어플리케이션 카드(예: 어플리케이션 카드(50))를 판단할 수 있다. 서버(400)는 상기 클라이언트 컴퓨팅 디바이스로 상기 어플리케이션 카드를 송신한다. 서버(400)는 카드 오브젝트(예: 카드 오브젝트(180))를 송신함으로써, 상기 클라이언트 컴퓨팅 디바이스로 상기 어플리케이션 카드를 송신할 수 있다.
서버(400)는 프로세싱 디바이스(402), 저장 디바이스(404) 및 네트워크 통신 디바이스(406)를 포함할 수 있다. 프로세싱 디바이스(402)는 컴퓨터 판독 가능 지시들을 실행하는 하나 이상의 컴퓨팅 프로세서들의 집합을 포함할 수 있다. 프로세싱 디바이스(402)의 컴퓨팅 프로세서들은 독립적으로 동작하거나 또는 분산 방식으로 동작할 수 있다. 컴퓨팅 프로세서들은 버스 및/또는 네트워크를 통해 연결될 수 있다. 컴퓨팅 프로세서들은 동일한 물리 디바이스(예: 동일한 하우징(housing))에 위치할 수 있다. 컴퓨팅 프로세서들은 다른 물리 디바이스들(예: 분산 컴퓨팅 시스템에 포함된 다른 하우징들)에 위치할 수 있다. 컴퓨팅 프로세서는 물리 중앙 프로세싱 유닛(physical central processing unit: pCPU)들을 포함할 수 있다. pCPU는 컴퓨터 판독 가능 지시들을 실행하여 가상 중앙 프로세싱 유닛(virtual central processing unit: vCPU)을 구현할 수 있다. 프로세싱 디바이스(402)는 현재 사용자 의도 ID 판단기(current user intent ID determiner, 416)(이하, 의도 추정기(intent estimator, 416)), 다음 사용자 의도 ID 판단기(subsequent ID determiner, 420)(이하, 의도 예측기(intent predictor, 420)), 어플리케이션 기능 ID 판단기(application function determiner, 424)(이하, 기능 판단기(function determiner, 424)) 및 결과 생성기(result generator, 428)를 실행시킬 수 있다. 프로세싱 디바이스(402)는 저장 디바이스(404)에 저장된 지시들을 실행하여 의도 추정기(416), 의도 예측기(420), 기능 판단기(424) 및 결과 생성기(428)를 실행시킬 수 있다.
저장 디바이스(404)는 데이터를 저장한다. 저장 디바이스(404)는 하나 또는 그 이상의 컴퓨터 판독 가능 저장 매체들을 포함할 수 있다. 일 예로, 저장 디바이스(404)는 솔리드 스테이트 메모리(solid state memory) 디바이스들, 하드 디스크 메모리(hard disk memory) 디바이스들, 광 디스크 드라이브들(optical disk drives), 리드-온니(read-only) 메모리, 나노튜브(nanotube)-기반 저장 디바이스들 등을 포함할 수 있다. 저장 디바이스(404)는 버스 또는 네트워크를 통해 프로세싱 디바이스(402)와 연결될 수 있다. 저장 디바이스(404) 내의 다른 저장 매체들은 동일한 물리 위치(예: 동일한 데이터 센터, 동일한 랙(rack) 또는 동일한 하우징)에 위치할 수 있다. 저장 디바이스(404)의 다른 저장 매체들은 (예를 들어 다른 데이터 센터들, 다른 랙들, 또는 다른 하우징들에) 분산될 수 있다. 저장 디바이스(404)는 사용자 의도 데이터 스토어(user intent data store, 410)(예: 의도 그래프(intent graph), 어플리케이션 기능 데이터 스토어(application function data store, 408)(예: 기능 그래프(function graph)) 및 어플리케이션 카드 데이터 스토어(application card data store, 412)를 구현(예: 저장))할 수 있다.
네트워크 통신 디바이스(406)는 네트워크(예: 도 1에 도시되어 있는 네트워크(190))과 통신할 수 있다. 네트워크 통신 디바이스(406)는 (예를 들어, 이더넷, 범용 직렬 버스(Universal Serial Bus: USB) 또는 광섬유 케이블들을 통해) 유선 통신을 수행하는 하나 이상의 통신 인터페이스들을 포함할 수 있다. 네트워크 통신 디바이스(406)는 (예를 들어, 와이파이(Wi-Fi), 셀룰러 네트워크, 또는 위성들을 통해) 무선 통신을 수행할 수 있다. 네트워크 통신 디바이스(406)는 국제 전기 전자 기술자 협회(Institute of Electrical and Electronics Engineers: IEEE) 규격(예: 이더넷, 무선 근거리 통신 네트워크(Local Area Network: LAN) 등)에 따라 네트워크와 통신하는 송수신기를 포함할 수 있다. 네트워크 통신 디바이스(406)는 3세대 파트너쉽 프로젝트(3rd Generation Partnership Project: 3GPP) 규격(예: 코드 분할 다중 접속(Code Division Multiple Access: CDMA), 롱 텀 에볼루션(Long Term Evolution: LTE), LTE-어드밴스드 등)에 따라 네트워크와 통신하는 송수신기를 포함할 수 있다. 네트워크 통신 디바이스(406)는 범용 직렬 버스(Universal Serial Bus: USB) 규격에 따라 (예를 들어 USB 포트를 통해) 네트워크와 통신하는 송수신기를 포함할 수 있다.
상기 서버(400)는 클라우드 컴퓨팅 플랫폼(cloud computing platform)에 의해 구현될 수 있다. 클라우드 컴퓨팅 플랫폼은 원격 컴퓨팅 서비스들의 집합을 포함할 수 있다. 클라우드 컴퓨팅 플랫폼은 컴퓨팅 자원들(예: 프로세싱 디바이스(402))를 포함할 수 있다. 컴퓨팅 자원들은 서버들(예: 물리 서버들 또는 가상 머신들)을 포함할 수 있다. 클라우드 컴퓨팅 자원들은 저장 자원들(예: 저장 디바이스(404))을 포함할 수 있다. 저장 자원들은 NoSQL, MySQL, Oracle, SQL 서버 등을 지원할 수 있는 데이터베이스 서버들을 포함할 수 있다. 상기 클라우드 컴퓨팅 플랫폼은 자원들(예: 네트워크 통신 디바이스(406))을 포함할 수 있다. 일 예로, 네트워킹 자원들은 다수의 가상 사설 서버들을 통한 이벤트 통지들의 입력 요청들을 분산시킬 수 있다. 일 예로, 클라우드 컴퓨팅 플랫폼들은 아마존 웹 서비스(Amazon Web Services®), 구글 클라우드 플랫폼(Google Cloud Platform™)을 포함한다.
어플리케이션 기능 데이터 스토어(408)는 어플리케이션 기능 ID들(application function identifier)을 저장할 수 있다. 어플리케이션 기능 ID는 해당 어플리케이션 기능을 식별할 수 있다. 어플리케이션 기능 ID는 사용자 의도 ID와 연관될 수 있다. 상기 어플리케이션 기능 ID와 연관된 사용자 의도 ID는 해당 어플리케이션 기능을 현재 사용하고 있는 사용자의 의도를 나타낼 수 있다. 일 예로, 레스토랑 리뷰 기능에 대한 사용자 의도 ID는 다음과 같은 사용자 의도를 나타낼 수 있다: ‘레스토랑에 대해 알아보기(learn about a restaurant)’. 유사하게, 테이블 예약 기능의 사용자 의도 ID는 ‘레스토랑에 테이블 예약(reserve a table at the restaurant)’일 수 있다. 또한 승차 요청 기능의 사용자 의도 ID는 ‘목적지 주소로 이동(travel to a destination address)’일 수 있다. 또한 음식 배달 기능의 사용자 의도 ID는 ‘레스토랑에 음식 주문(order food from a restaurant)’일 수 있다. 도 5는 어플리케이션 기능 데이터 스토어(408)의 일 실시예를 구현한 도면이다. 서버(400)는, 예를 들어 운영자(예: 사람 운영자)로부터의 입력에 기반하여, 어플리케이션 기능 ID들 및 상기 어플리케이션 기능 ID들과 연관된 사용자 의도 ID들을 판단할 수 있다.
사용자 의도 데이터 스토어(410)는 사용자 의도들을 나타내는 사용자 의도 ID들을 저장할 수 있다. 사용자 의도 데이터 스토어(410)는 사용자 의도 ID들 간의 관계들(예: 임시적인 관계들)을 저장할 수 있다. 일 예로, 사용자 의도 데이터 스토어(410)는 사용자 의도 ID들 간의 천이들을 저장할 수 있다. 사용자 의도 데이터 스토어(410)는 주어진 현재 사용자 의도 ID의 다음 사용자 의도 ID의 예측을 나타낼 수 있다. 일 예로, 현재 사용자 의도 ID가 ‘learn about a restaurant’인 경우, 예를 들어, 다음 사용자 의도는 ‘레스토랑 방문(go to a restaurant)’일 수 있다. 일 예로, 현재 사용자 의도 ID가 ‘learn about a restaurant’인 경우, 예를 들어 다음 사용자 의도는 ‘reserve a table at a restaurant’일 수 있다. 도 6은 사용자 의도 데이터 스토어(410)의 실시예들을 구현한 도면이다. 서버(400)는 일 예로, 운영자(예: 사람 운영자)로부터의 입력에 기반하여, 사용자 의도 ID들 간의 천이들을 판단할 수 있다.
어플리케이션 카드 데이터 스토어(412)는 어플리케이션 카드들(50)을 표시하는데 사용될 수 있는 카드 오브젝트들(card objects, 180)을 저장할 수 있다. 어플리케이션 카드 데이터 스토어(412)는 카드 오브젝트들(180)을 카드 기록들(card records)로서 저장할 수 있다. 카드 오브젝트들(180) 각각은 어플리케이션 기능에 상응할 수 있다. 카드 오브젝트(180)는 어플리케이션 카드(50)에 대한 템플릿(template)을 포함할 수 있다. 템플릿은 어플리케이션 카드(50)에 대한 GUI 엘리먼트들을 포함할 수 있다. GUI 엘리먼트들 각각은 어플리케이션 기능의 기능 파라미터에 상응할 수 있다. 카드 오브젝트(180)는 어플리케이션 기능의 기능 파라미터들을 나타내는 URL(uniform resource location)을 포함할 수 있다. 예를 들어, 테이블 예약 가능에 대한 카드 오브젝트(180)는 테이블 예약 기능이 다음과 같은 기능 파라미터들을 수신함을 나타낼 수 있다: 레스토랑 이름, 손님들의 수, 예약 날짜 및 예약 시간. 다른 실시예에 따르면, 레스토랑 리뷰 기능에 대한 카드 오브젝트(180)는 레스토랑 리뷰 기능이 다음과 같은 기능 파라미터들을 수신함을 나타낼 수 있다: 레스토랑 이름 및 위치. 다른 실시예에 따르면, 승차 요청 기능에 대한 카드 오브젝트(180)는 상기 승차 요청 기능이 다음과 같은 기능 파라미터들을 수신함을 나타낼 수 있다: 원래 주소 및 목적지 주소.
카드 오브젝트(180)는 클라이언트 컴퓨팅 디바이스(140)에서 상기 어플리케이션 카드(50)의 렌더링에 관한 클라이언트 컴퓨팅 디바이스(140)의 컴퓨터 판독 가능 지시들을 포함할 수 있다. 카드 오브젝트(180)는, 클라이언트 컴퓨팅 디바이스(140)에 의해 실행될 수 있는 컴퓨터 판독 가능 지시들을 포함하며 해당 어플리케이션 기능을 수행할 수 있다. 카드 오브젝트(180)의 컴퓨터 판독 가능 지시들은 해당 어플리케이션 기능의 API들, 라이브러리들, 및/또는 엔드포인트들을 나타낼 수 있다. 카드 오브젝트(180)의 컴퓨터 판독 가능 지시들이 클라이언트 컴퓨팅 디바이스(140)에 의해 실행되면, 클라이언트 컴퓨팅 디바이스(140)는 API 호들(calls)을 생성하여 해당 어플리케이션 기능을 수행할 수 있다.
서버(400)는 운영자(예: 사람 운영자)로부터 카드 오브젝트들(180)을 수신할 수 있다. 서버(400)는 어플리케이션 기능들의 어플리케이션 기능 파라미터들을 식별함으로써, 카드 오브젝트들(180)을 생성할 수 있다. 일 예로, 서버(400)는 어플리케이션을 분석하여 상기 어플리케이션 내의 어플리케이션 기능들을 판단할 수 있다. 서버(400)는 어플리케이션 기능들을 나타내는 어플리케이션 뷰들을 분석함으로써 어플리케이션 기능의 기능 파라미터들을 판단할 수 있다. 일 예로, 서버(400)는 어플리케이션 뷰들의 텍스트 박스들 및 드롭다운들을 식별함으로써 기능 파라미터들을 식별할 수 있다. 서버(400)는 어플리케이션들과 연관된 웹사이트들을 크롤(crawl) 및/또는 스크랩(scrap)함으로써 기능 파라미터들을 식별한다. 일 예로, 서버(400)는 어플리케이션과 연관된 웹사이트에서 기능 파라미터들을 식별하고, 어플리케이션이 동일한 기능 파라미터들을 포함한다고 판단할 수 있다.
의도 추정기(intent estimator, 416)는 컨텍스트 데이터(160)에 기반하여 현재 사용자 의도 ID(current user intent ID, 418)를 판단(추정)한다. 컨텍스트 데이터(160)는 클라이언트 컴퓨팅 디바이스(140)가 표시하고 있는 중일 수 있는 현재 어플리케이션 뷰(current application view, 46)를 나타낼 수 있다. 의도 추정기(416)는, 예를 들어, (도 1에 도시된 것과 같은) 기능 ID(166)를 식별함으로써 현재 어플리케이션 기능 ID를 식별할 수 있다. 의도 추정기(416)는 어플리케이션 기능 ID(166)와 연관된 사용자 의도 ID 를 판단하기 위해서 어플리케이션 기능 데이터 스토어(408)에 질의(query)할 수 있다. 의도 추정기(416)는 어플리케이션 기능 데이터 스토어(408)에 액세스(access)하여 어플리케이션 기능 ID(166)와 연관된 사용자 의도 ID 를 회신(retrieve)할 수 있다. 어플리케이션 기능 ID(166)와 연관된 사용자 의도 ID는 현재 사용자 의도 ID(418)를 나타낼 수 있다. 현재 사용자 의도 ID는 클라이언트 컴퓨팅 디바이스(140)의 사용자의 현재 의도(current intent)를 나타낼 수 있다.
다양한 실시예들에서, 어플리케이션 기능 ID(166)는 다수의 사용자 의도 ID들과 연관된다. 사용자 의도 ID들 각각은 사용자 의도 ID와 매칭하는 어플리케이션 기능 ID의 우도(likelihood)를 나타내는 신뢰값(confidence value)을 포함할 수 있다. 의도 추정기(416)는 가장 높은 신뢰값을 가지는 사용자 의도 ID를 선택할 수 있다. 일 예로, 어플리케이션 기능 ID(166)은 3개의 다른 사용자 의도 ID들과 연관될 수 있다. 3개의 사용자 의도 ID들 중 하나는 0.6의 신뢰값을 가질 수 있고, 나머지 2개의 사용자 의도 ID들은 0.2의 신뢰 값을 가질 수 있다. 의도 추정기(416)는 0.6의 신뢰값을 가지는 사용자 의도 ID를 선택할 수 있다. 상기 신뢰값들은 미리 결정되어 있을 수 있다(일 예로, 미리 계산되어 있을 수 있다). 일 예로, 운영자(예: 사람 운영자)는 어플리케이션 기능 데이터 스토어(408)에 신뢰값들을 입력할 수 있다.
의도 예측기(420)는 현재 사용자 의도 ID(418)에 기반하여 다음 사용자 의도 ID(422)를 판단(예측)한다. 의도 예측기(420)는 현재 사용자 의도 ID(418)에 대해 가능성 있는 다음 사용자 의도 ID(422)를 판단하기 위해 사용자 의도 데이터 스토어(410)에 질의할 수 있다. 사용자 의도 데이터 스토어(410)는 사용자 의도 ID들을 저장할 수 있다. 다양한 실시예에 따르면, 사용자 의도 ID들에 대해서, 사용자 의도 데이터 스토어(410)는 가능성 있는 다음 사용자 의도 ID(422)를 저장할 수 있다. 의도 예측기(420)는 사용자 의도 데이터 스토어(410)에 액세스하고 현재 사용자 의도 ID(418)와 연관된 다음 사용자 의도 ID를 회신(retrieve)함으로써 다음 사용자 의도 ID(422)를 판단할 수 있다. 의도 예측기(420)는, 일 예로 현재 사용자 의도 ID(418)가 ‘learning about the restaurant’를 나타내고 가속도계 측정값이 상기 사용자가 상기 레스토랑을 향해 걸어가는 중임을 나타낼 경우, 다음 사용자 의도 ID(422)가 ‘'레스토랑 방문(going to the restaurant)’을 나타낸다고 판단(결정)할 수 있다. 의도 예측기(420)는 일 예로, 현재 사용자 의도 ID(418)가 레스토랑 방문 계획(planning to go to the restaurant)'을 나타낼 경우 (도 3b에 도시되어 있는 바와 같이), 다음 사용자 의도 ID(422)가 ‘reserve table at the restaurant’을 나타낸다고 판단할 수 있다.
기능 판단기(function determiner, 424)는 예측된 다음 사용자 의도 ID(422)에 상응하는 어플리케이션 기능(426)을 판단(식별)한다. 기능 판단기(424)는 상기 예측된 다음 사용자 의도 ID(422)에 기반하여 어플리케이션 기능 데이터 스토어(408)를 검색함으로써 어플리케이션 기능(426)을 식별할 수 있다. 기능 판단기(424)는 어플리케이션 기능 데이터 스토어(408)에 액세스하여 상기 예측된 다음 사용자 의도 ID(422)에 상응하는 어플리케이션 기능 ID를 회신(retrieve)할 수 있다. 기능 판단기(424)는 상기 예측된 다음 사용자 의도 ID(422)에 가장 근접하게 매칭된(만족시키는) 어플리케이션 기능을 식별할 수 있다. 기능 판단기(424)는 어플리케이션 기능 데이터 스토어(408)로부터 어플리케이션 기능 ID들의 리스트를 수신할 수 있다. 어플리케이션 기능 ID들 각각은 예측된 다음 사용자 의도 ID(422)에 대한 해당 어플리케이션 기능 ID의 관련성(relevance)을 나타내는 관련성값을 포함할 수 있다. 기능 판단기(424)는 가장 높은 관련성값을 가지는 어플리케이션 기능 ID를 선택할 수 있다. 운영자(예: 사람 운영자)는 상기 관련성값들을 어플리케이션 기능 데이터 스토어(408)에 입력할 수 있다.
결과 생성기(result generator, 428)는 예측된 어플리케이션 기능(426)에 대한 카드 오브젝트(180)를 판단(선택)한다. 결과 생성기(428)는 어플리케이션 카드 데이터 스토어(412)에 액세스하여 예측된 어플리케이션 기능(426)에 상응하는 카드 오브젝트(180)를 회신(retrieve)할 수 있다. 카드 오브젝트(180)는 예측된 어플리케이션 기능(426)에 대한 기능 파라미터들을 포함할 수 있다. 결과 생성기(428)는 컨텍스트 데이터(160)에 기반하여 기능 파라미터들을 판단할 수 있다(또는 채울 수 있다). 일 예로, 결과 생성기(428)는 어플리케이션 뷰(46)에 표시되어 있는 주소에 기반하여 승차 요청 어플리케이션 기능의 목적지 주소 파라미터를 판단(결정)할 수 있다.
어플리케이션 카드 데이터 스토어(412)는 어플리케이션 기능(426)에 대응하는 다수의 해당 카드 오브젝트들(180)을 저장할 수 있다. 어플리케이션 기능(426)을 포함하는 어플리케이션이 클라이언트 컴퓨팅 디바이스(140)에 설치되어 있을 경우에, 카드 오브젝트들(180) 중 일부는 상기 클라이언트 컴퓨팅 디바이스(140)에 적합할 수 있다. 다른 카드 오브젝트들(180)은 상기 클라이언트 컴퓨팅 디바이스(140)가 상기 어플리케이션 기능(426)을 포함하는 어플리케이션을 가지지 않을 경우에 상기 클라이언트 컴퓨팅 디바이스(140)에 대해 적합할 수 있다. 컨텍스트 데이터(160)는 클라이언트 컴퓨팅 디바이스(140)에 설치된 어플리케이션들을 나타낼 수 있다. 어플리케이션 기능(426)이 클라이언트 컴퓨팅 디바이스(140)에 설치되어 있는지 여부를 판단(결정)함에 따라 결과 생성기(428)는 적합한 카드 오브젝트(180)를 선택할 수 있다.
클라이언트 컴퓨팅 디바이스(140)가 어플리케이션 기능(426)을 포함하지 않을 때 선택되는 카드 오브젝트들(180)은 상기 클라이언트 컴퓨팅 디바이스(140)에 의해 상기 어플리케이션 기능(426)을 수행하기에 충분한 컴퓨터 판독 가능 지시들을 포함할 수 있다. 클라이언트 컴퓨팅 디바이스(140)가 상기 어플리케이션 기능(426)을 포함할 때 선택되는 카드 오브젝트들(180)은 클라이언트 컴퓨팅 디바이스(140) 상에 어플리케이션 기능(426)을 호출하고, 어플리케이션 카드(50)가 표시될 때 상기 클라이언트 컴퓨팅 디바이스(140)가 어플리케이션 기능(426)을 실행하도록 하는 약간의 컴퓨터 판독 가능 지시들을 포함할 수 있다.
도 5는 어플리케이션 기능 그래프(500)의 일 예를 나타낸 도면이다. 어플리케이션 기능 그래프(application function graph, 500)는 어플리케이션 기능 데이터 스토어(408)에 저장될 수 있다. 어플리케이션 기능 그래프(500)는 어플리케이션 기능들(146-1, 146-2, …, 146-8)에 대한 정보를 저장하는 그래프 노드(graph nodes)(510)을 포함할 수 있다. 일 예로, 그래프 노드들(510)은 어플리케이션 기능들(146-1, 146-2, …, 146-8)에 대한 어플리케이션 기능 ID들을 저장할 수 있다. 그래프 노드들(510)은 에지들(edges)(520, 530)을 통해 연결될 수 있다. 어플리케이션 기능들(146-1, 146-2, …, 146-8)은 사용자 의도들(148-1, 148-2, …, 148-10)과 연관될 수 있다. 그래프 노드들(510)은 사용자 의도들(148-1, 148-2, …, 148-10)을 나타내는 사용자 의도 ID들을 저장할 수 있다. 도 5에서, 어플리케이션 기능(146-1)은 크라우드-소스드 리뷰 어플리케이션(예: YELP®)의 레스토랑 리뷰 기능일 수 있고, 사용자 의도(148-1)는 ‘learning about the restaurant’일 수 있다. 어플리케이션 기능(146-2)은 승차 공유 어플리케이션(예: UBER®)의 승차 요청 기능(예: request UberX® 기능)일 수 있고, 사용자 의도(148-2)는 ‘going to restaurant’일 수 있다. 어플리케이션 기능(146-3)은 테이블 예약 어플리케이션(예: OPENTABLE®)의 테이블 예약 기능일 수 있고, 사용자 의도(148-3)는 ‘reserving a table at the restaurant’일 수 있다.
어플리케이션 기능 ID는 다수의 사용자 의도 ID들과 연관될 수 있다. 일 예로, 어플리케이션 기능(146-4)(예: 메시징 연락처 기능)은 사용자 의도들(148-4, 148-9, 148-10)과 연관될 수 있다. 사용자 의도(148-4)는 ‘연락처와 채팅(chatting with a contact)’일 수 있다. 일 예로, 메시지가 레스토랑 이름(예: 도 3b의 엔터티(310))을 포함하면 사용자 의도(148-9)는 ‘레스토랑에서 식사 예정(planning to eat from a restaurant)’일 수 있다. 일 예로, 메시지들이 레스토랑 이름, 날짜 및 시간(예: 도 3b의 날짜(332), 시간(334))을 포함하면, 사용자 의도(148-10)는 ‘planning to go to the restaurant’일 수 있다. 어플리케이션 기능(146-5)은 음식 배달 어플리케이션(예: Eat24)의 음식 배달 기능일 수 있고, 사용자 의도(148-5)는 ‘order food from the restaurant’일 수 있다.
에지들(520, 530)은 어플리케이션 기능 ID들 간의 천이들(transitions)을 나타낼 수 있다. 어플리케이션 기능(146-1)로부터 어플리케이션 기능(146-2)로의 천이는 어플리케이션 기능(146-1) 직후에(예: 임계 시간 주기 이내에) 어플리케이션 기능(146-2)의 사용하는 것일 수 있다. 에지들(520)은 개발자가 명시할 수 있는 천이들(예: 어플리케이션 기능에 대해 프로그램 코드에서 프로그래밍되는 천이들)을 나타낼 수 있다. 어플리케이션 기능(146-1)으로부터 어플리케이션 기능들(146-6, 146-7, 146-8)로의 에지(520)는 어플리케이션 기능(146-1)이 어플리케이션 기능들(146-6, 146-7, 146-8)로의 개발자-프로그램된 사용자-선택가능 링크(developer-programmed user-selectable link)들을 포함함을 나타낸다. 일 예로, 레스토랑 리뷰 기능(예: 어플리케이션 기능(146-1))은 레스토랑으로의 방향들을 획득하기 위한 사용자-선택가능 링크(예: 어플리케이션 기능(146-6))를 포함할 수 있다. 또한 상기 레스토랑 리뷰 기능은 상기 레스토랑에 대한 메뉴를 탐색하기 위한 사용자-선택가능 링크(예: 어플리케이션 기능(146-7))를 포함할 수 있다. 또한 상기 레스토랑 리뷰 기능은 상기 레스토랑에 전화하기 위한 사용자-선택가능 링크(예: 어플리케이션 기능(146-8))를 포함할 수 있다.
에지들(530)은 서버(예: 도 4의 서버(400))가 결정(판단)하는 천이들을 나타낼 수 있다. 에지들(530)은 개발자에 의해 명시되지 않는(프로그래밍되지 않는) 천이들을 나타낼 수 있다. 일 예로, 어플리케이션 기능(146-1)은 어플리케이션 기능(146-2)에 대한 개발자-프로그래밍된 사용자-선택가능 링크를 포함하지 않을 수 있다. 서버는 클라이언트 컴퓨팅 디바이스의 사용자가 어플리케이션 기능(146-1)을 사용한 다음에 어플리케이션 기능(146-2)을 사용할 수 있다고 판단할 수 있다. 일 예로, 서버는 상기 YELP® 어플리케이션에서 레스토랑 리뷰를 보고 있는 사용자가 UBER® 어플리케이션을 사용하여 레스토랑으로 이동할 수 있다고 판단할 수 있다. 따라서 서버는 레스토랑 리뷰 기능(예: 어플리케이션 기능(146-1))과 UBER® 어플리케이션의 request UberX® 기능(예: 어플리케이션 기능(146-2)) 간의 천이를 식별할 수 있다.
도 5에 도시되어 있는 바와 같이, 어플리케이션 기능들의 개발자가 사용자-선택가능 링크들을 통해 어플리케이션 기능들을 명시적으로 연결하지 않았을 지라도, 서버는 다른 어플리케이션들로부터의 어플리케이션 기능들을 연결할 수 있다. 일 예로, 어플리케이션 기능(146-1)의 개발자가 어플리케이션 기능(146-2)에 대한 사용자-선택 가능 링크를 프로그래밍하지 않았을 지라도, 서버는 어플리케이션 기능(146-1)을 어플리케이션 기능(146-2)에 연결할 수 있다. 도 5에서, YELP® 어플리케이션이 UberX®를 요청하기 위한 사용자-선택 가능 링크를 포함하지 않을 지라도, 서버는 ‘request UberX’ 기능을 YELP® 어플리케이션의 ‘레스토랑 리뷰 기능’으로 연결할 수 있다.
어플리케이션 기능은 다른 어플리케이션 상태들(application states)을 포함할 수 있다. 어플리케이션 기능의 다른 상태들은 다른 기능 파라미터들을 가질 수 있다. 일 예로, 어플리케이션 기능(146-2)은 원래 주소 파라미터(예: ‘프롬(From)’ 주소)와 목적지 주소 파라미터(예: ‘투(To)’ 주소)를 가질 수 있다. 상기 원래 주소의 파라미터와 목적지 주소 파라미터의 다른 값들은 상기 어플리케이션 기능(146-2)의 다른 어플리케이션 상태들을 발생시킬 수 있다. 어플리케이션 기능 그래프(500)는 어플리케이션 상태 그래프(application state graph)로서 저장될 수 있다. 어플리케이션 상태 그래프에서, 그래프 노드들(510)은 어플리케이션 상태들을 나타낼 수 있고, 에지들(520, 530)은 상기 어플리케이션 상태들 간의 천이들을 나타낼 수 있다. 어플리케이션 기능 그래프(500)는 적합한 데이터 구조(예: 룩업 테이블(look-up table: LUT), 어레이, 다차원 어레이 등)를 사용하여 저장될 수 있다.
도 6은 사용자 의도 그래프(600)의 일 예를 나타낸 도면이다. 사용자 의도 그래프(600)는 사용자 의도들(148-1, 148-2, …, 148-5)을 나타내는 사용자 의도 ID들을 저장하는 그래프 노드들(610)을 포함한다. 사용자 의도 그래프(600)는 그래프 노드들(610)을 연결하는 에지들(620)을 포함한다. 사용자 의도 ID들 각각은 어플리케이션 기능 ID와 연관될 수 있다. 사용자 의도와 연관되는 어플리케이션 기능 ID는, 해당 어플리케이션 기능이 클라이언트 컴퓨팅 디바이스에서 실행될 때 참조되는 사용자 의도를 성취할 수 있게 한다. 일 예로, 레스토랑 리뷰 기능(예: 어플리케이션 기능(146-1))은 사용자가 레스토랑에 대해 알아볼 수 있도록(예: 사용자 의도(148-1))을 도와준다. 유사하게, request UberX® 기능(예: 어플리케이션 기능(146-2))은 사용자가 레스토랑을 방문할 수 있도록(예: 사용자 의도(148-2))을 도와준다.
에지들(620)은 다이렉트 에지들(directed edges)일 수 있다. 에지(620)의 방향은 다음 사용자 의도 ID의 예측을 나타낼 수 있다. 일 예로, 사용자 의도(148-4)로부터 사용자 의도(148-1)로의 에지(620)는 현재 사용자 의도 ID가 사용자 의도(148-4)의 사용자 의도 ID와 매칭될 때(동일할 때) 다음 사용자 의도 ID가 사용자 의도(148-1)의 사용자 의도 ID가 될 수 있음을 나타낼 수 있다. 유사하게, 현재 사용자 의도 ID가 ‘레스토랑에 대한 메시징(messaging about a restaurant)’(예: 사용자 의도(148-4))이면, 다음 사용자 의도 ID는 ‘레스토랑에 대해 알아보기(learning about the restaurant)’(예: 사용자 의도(148-1))일 수 있다. 서버가 사용자 의도(148-1)를 다음 사용자 의도로서 판단하는 것에 대한 응답으로서, 클라이언트 컴퓨팅 디바이스는 사용자 의도(148-1)와 연관된 어플리케이션 기능에 대한 어플리케이션 카드를 표시할 수 있다. 일 예로, 클라이언트 컴퓨팅 디바이스는 어플리케이션 기능(146-4)(예: 도 3a에 도시된 어플리케이션 기능)에 대한 어플리케이션 뷰(46-4)와 함께 상기 어플리케이션 기능(146-1)에 대한 어플리케이션 카드(50-1)를 표시할 수 있다.
현재 사용자 의도 ID는 일부 잠재적인 다음 사용자 의도 ID들로 이어질(나타낼) 수 있다. 일 예로, 사용자 의도(148-4)는 상기 사용자 의도들(148-1, 148-2, 148-3, 148-5) 중 하나로 이어질 수 있다. 에지들(620)은 다음 사용자 의도로 이어지는 현재 사용자 의도의 확률을 나타내는 가중된(weighted) 에지들일 수 있다. 표 1은 사용자 의도들(148-1, 148-2, 148-3, 148-5)로 천이되는 사용자 의도(148-4)의 확률들을 나타낸다.
현재 사용자 의도 다음 사용자 의도 확률
148-4 148-1 0.6
148-2 0.1
148-3 0.1
148-5 0.1
서버는 다른 클라이언트 컴퓨팅 디바이스들로부터의 어플리케이션 사용 데이터에 기반하여 상기 확률들을 판단(결정)할 수 있다. 일 예로, 서버는 상기 확률들을 판단(결정)하기 위해 다른 어플리케이션 기능들 간의 사용자-개시 천이들을 모니터링할 수 있다. 예를 들어, 60%의 사용자들이 어플리케이션 기능(148-4)의 어플리케이션을 본 직후(예: 임계 시간 내에 또는 5초 내에) 어플리케이션 기능(146-1)의 어플리케이션 뷰로 수동으로 이동할 수 있으므로 사용자 의도(148-1)의 확률은 0.6일 수 있다. 도 1을 참조하면, 서버(100)는 클라이언트 컴퓨팅 디바이스(140)의 어플리케이션 사용 히스토리(170)에 기반하여 상기 확률들을 판단할 수 있다. 일 예로, 클라이언트 컴퓨팅 디바이스(140)의 사용자들 중 20%가 어플리케이션 기능(146-4)를 사용한 직후(예: 임계 시간 내에 또는 5초 내에) 어플리케이션 기능(146-5)을 사용할 수 있으므로, 사용자 의도(148-5)의 확률은 0.2일 수 있다.
다양한 실시예에 따르면, 에지들(620)은 센서 측정 트리거(650)를 특정(specify)할 수 있다. 일 예로, 사용자 의도(148-3)으로부터 사용자 의도(148-2)로의 에지는 보행 중인 클라이언트 컴퓨팅 디바이스의 사용자에 상응하는 가속도계를 특정할 수 있다. 도 6에서, 클라이언트 컴퓨팅 디바이스의 사용자는 테이블 예약 기능(예: 어플리케이션 기능(146-3))을 통해 레스토랑에 테이블을 예약하고 있는 중일 수 있다. 상기 사용자는 또한 (예를 들어 가속도계 측정값 및 GPS 위치에 의해 지시되는 바와 같이) 상기 레스토랑을 향해 보행 중일 수 있다. 상기 클라이언트 컴퓨팅 디바이스는 request UberX 기능의 어플리케이션 카드를 표시할 수 있고, 그에 따라 사용자는 레스토랑를 가기 위해 차를 탈 수 있다. request UberX 기능에 대한 어플리케이션 카드는, 도 1의 어플리케이션 기능(146-2)에 대한 어플리케이션 카드(50-2)와 유사할 수 있다.
다양한 실시예에 따르면, 에지들은 기능 파라미터값(660)을 특정할 수 있다. 예를 들어, 사용자 의도(148-2)로부터 사용자 의도(148-3)로의 에지는 Request UberX® 기능의 목적지 주소 필드가 레스토랑의 주소를 포함한다는 조건을 명시할 수 있다. 사용자가 레스토랑으로 가고 있는 중이기 때문에, 서버는 사용자가 레스토랑의 테이블을 예약하는 것을 원할 가능성이 있다고 판단할 수 있다. 따라서 서버는 사용자 의도(148-3)를 다음 사용자 의도로서 식별할 수 있다.
도 7은 다른 어플리케이션 기능의 어플리케이션 뷰와 함께 클라이언트 컴퓨팅 디바이스에서 표시될 수 있는 어플리케이션 기능에 대한 어플리케이션 카드를 판단(선택)하는 방법(700)을 나타낸 도면이다. 동작 702에서, 서버는 클라이언트 컴퓨팅 디바이스로부터 컨텍스트 데이터를 수신한다. 컨텍스트 데이터는 클라이언트 컴퓨팅 디바이스에서 표시되는 현재 어플리케이션 뷰(제1 어플리케이션 뷰)를 나타낼 수 있다. 컨텍스트 데이터는 센서 측정값들을 나타낼 수 있다. 컨텍스트 데이터는 어플리케이션 사용 히스토리(application usage history)를 포함할 수 있다.
동작 704에서, 서버는 컨텍스트 데이터에 기반하여 현재 어플리케이션 뷰(제1 어플리케이션 뷰)에 상응하는 현재 어플리케이션 기능(제1 어플리케이션 기능)을 식별하는 현재 어플리케이션 기능 ID(제1 어플리케이션 ID)를 판단한다. 서버는 데이터 스토어(예: 도 4 및 도 5의 어플리케이션 기능 데이터 스토어)에 저장된 어플리케이션 기능 ID들과 상기 컨텍스트 데이터를 비교하여 상기 현재 어플리케이션 기능 ID(제1 어플리케이션 ID)를 판단할 수 있다.
동작 706에서, 서버는 현재 어플리케이션 기능 ID(제1 어플리케이션 기능 ID)와 연관된 현재 사용자 의도 ID(제1 사용자 의도 ID)를 판단(추정)한다. 서버는 어플리케이션 기능 데이터 스토어(예: 도 4 및 도 5의 어플리케이션 기능 데이터 스토어(408))에 액세스하여 상기 어플리케이션 기능 데이터 스토어로부터 상기 현재 사용자 의도 ID(제1 사용자 의도 ID)를 회신(retrieve)할 수 있다. 상기 현재 사용자 의도 ID(제1 사용자 의도 ID)는 클라이언트 컴퓨팅 디바이스 사용자의 현재 의도를 나타낼 수 있다.
동작 708에서, 서버는 상기 현재 사용자 의도 ID(제1 사용자 의도 ID)로부터 천이하는 다음 사용자 의도 ID(제2 사용자 의도 ID)를 판단(예측)한다. 서버는 사용자 의도 데이터 스토어(예: 도 4 및 도 6의 사용자 의도 데이터 스토어)에 액세스하여 상기 사용자 의도 데이터 스토어로부터 상기 다음 사용자 의도 ID(제2 사용자 의도 ID)를 회신(retrieve)할 수 있다. 현재 사용자 의도 ID(제1 사용자 의도 ID)로부터 다수의 사용자 의도 ID들로 천이되는 경우, 서버는 가장 높은 신뢰값을 가지는 사용자 의도 ID를 상기 다음 사용자 의도 ID(제2 사용자 의도 ID)로서 선택할 수 있다. 도 6을 참조하면, 상기 현재 사용자 의도 ID(제1 사용자 의도 ID)가 사용자 의도(148-4)이면, 서버는 다음 사용자 의도 ID(제2 사용자 의도 ID)로서 사용자 의도(148-1)를 선택할 수 있다. 상기 서버는 센서 측정값들에 기반하여 다음 사용자 의도 ID(제2 사용자 의도 ID)를 판단(결정)할 수 있다. 일 예로, 도 6을 참조하면, 현재 사용자 의도 ID(제1 사용자 의도 ID)가 사용자 의도(148-3)이고 가속도계 측정값이 클라이언트 컴퓨팅 디바이스의 사용자가 보행 중임을 나타내면, 서버는 다음 사용자 의도 ID(제2 사용자 의도 ID)로서 사용자 의도(148-2)를 선택할 수 있다. 서버는 현재 어플리케이션 뷰(제1 어플리케이션 뷰)의 기능 파라미터 값들에 기반하여 상기 다음 사용자 의도 ID(제2 사용자 의도 ID)를 판단할 수 있다. 일 예로, 도 6을 참조하면, 현재 사용자 의도 ID(제1 사용자 의도 ID)가 사용자 의도(148-2)이고, 목적지 주소 파라미터가 레스토랑 주소를 포함하면, 상기 서버는 다음 사용자 의도 ID(제2 사용자 의도 ID)로서 사용자 의도(148-3)를 선택할 수 있다.
동작 710에서, 서버는 다음 사용자 의도 ID(제2 사용자 의도 ID)에 상응하는 어플리케이션 기능 ID(제2 어플리케이션 기능 ID)를 식별한다. 서버는 어플리케이션 기능 데이터 스토어(408) 및/또는 사용자 의도 데이터 스토어(410)를 사용하여 다음 사용자 의도 ID(제2 사용자 의도 ID)에 상응하는 어플리케이션 기능 ID(제2 어플리케이션 기능 ID)를 식별할 수 있다. 예를 들어, 서버는 다음 사용자 의도 ID(제2 사용자 의도 ID)에 적합한 어플리케이션 기능 ID를 찾기 위하여 어플리케이션 기능 데이터 스토어(408)에서의 어플리케이션 기능 검색을 수행할 수 있다. 추가적으로, 또는 상기와는 달리, 서버는 사용자 의도 그래프(600)를 사용하여 다음 사용자 의도 ID(제2 사용자 의도 ID)에 상응하는 어플리케이션 기능 ID(제2 어플리케이션 기능 ID)를 식별할 수 있다. 일 예로, 서버는 사용자 의도 그래프(600)로부터 다음 사용자 의도 ID(제2 사용자 의도 ID)와 관련된 어플리케이션 기능 ID(제2 어플리케이션 기능 ID)를 선택할 수 있다. 다음 사용자 의도 ID(제2 사용자 의도 ID)에 상응하는 어플리케이션 기능 ID(제2 어플리이션 기능 ID)는 예측 어플리케이션 기능 ID(predicted application function ID)로 칭해질 수 있다.
동작 712에서, 서버는 예측 어플리케이션 기능 ID(제2 어플리케이션 기능 ID)에 상응하는 카드 오브젝트를 검출한다. 일 예로, 도 4를 참조하면, 서버는 어플리케이션 카드 데이터 스토어(412)로부터 카드 오브젝트(180)를 회신(검출)할 수 있다. 동작 714에서, 서버는 클라이언트 컴퓨팅 디바이스로 상기 카드 오브젝트를 송신한다.
도 8은 클라이언트 컴퓨팅 디바이스(840)의 일 예를 도시한 도면이다. 클라이언트 컴퓨팅 디바이스(840)는 도 1에 도시되어 있는 클라이언트 컴퓨팅 디바이스(140)의 일 예를 구현한 것이다. 클라이언트 컴퓨팅 디바이스(840)는 센서들(842), 메모리(844)(예: 메모리 하드웨어), 터치스크린 디스플레이(854) 및 컴퓨팅 프로세서(860)(예: 데이터 프로세싱 하드웨어)를 포함할 수 있다.
메모리(844)는 어플리케이션 기능들(846)을 저장할 수 있다. 상기 어플리케이션 기능들(846)은 도 1에 도시되어 있는 어플리케이션 기능들(146)과 유사할 수 있다. 메모리(844)는 컨텍스트 데이터 스토어(850) 및 레이아웃 데이터 스토어(852)를 저장할 수 있다. 컨텍스트 데이터 스토어(850)는 컨텍스트 데이터(예: 도 1의 컨텍스트 데이터(160))를 저장할 수 있다. 레이아웃 데이터 스토어(852)는 어플리케이션 카드들(예: 도 1의 어플리케이션 카드들(50))을 표시하는데 사용될 수 있는 레이아웃들을 저장할 수 있다. 레이아웃들은 레이아웃 파일들로서 저장될 수 있다. 레이아웃들은 어플리케이션 기능(846)의 기능 파라미터들에 상응하는 GUI 엘리먼트들을 포함하는 어플리케이션 카드 템플릿들일 수 있다.
컴퓨팅 프로세서(860)는 온-다이(on-die) 센서(842'), 센서 허브(862), 송수신기(864), 디스플레이 회로(866) 및 중앙 프로세싱 유닛(central processing unit: CPU)(868)을 포함할 수 있다. 센서들(842)은 상기 온-다이 센서(842)를 포함할 수 있다. 센서들(842)은 위치 센서, 예를 들어, 글로벌 측위 시스템(Global Positioning System: GPS) 및/또는 글로벌 네비게이션 위성 시스템(Global Navigation Satellite System: GLONASS)을 포함할 수 있다. 센서들(842)은 가속도계, 자기력계, 자이로스코프 등을 포함할 수 있다.
센서 허브(862)는 센서들(842)을 관리할 수 있다. 센서 허브(862)는 상기 센서들(842)로부터 센서 측정값들을 수신할 수 있다. 센서 허브(862)는 상기 센서들(842)을 언제 턴 온할 지 또는 턴 오프할 지를 판단(결정)할 수 있다. 센서 허브(862)는 센서(842)를 턴 온하고, 상기 센서(842)에게 센서 측정값을 기록할 것을 명령(지시)할 수 있다. 센서 허브(862)는 전력을 절약하기 위해 센서(842)를 턴 오프 할 수 있다. 센서 허브(862)는 주기적으로(예: 매 시간에 한번, 매 분마다 한번 등) 센서 데이터를 수신할 수 있다. 센서 허브(862)는 (예를 들어 송수신기(864)를 통한 서버로부터의) 요청 수신에 응답하여 센서 데이터를 캡처할 수 있다.
송수신기(864)는 네트워크(예: 도 1의 네트워크(190))와의 전자 통신을 가능하게 한다. 송수신기(864)는 셀룰러 송수신기, 예를 들어, LTE 송수신기, LTE-Advanced 송수신기, 또는 5G(5th generation mobile network) 송수신기를 포함할 수 있다. 송수신기(864)는 Wi-Fi 송수신기를 포함할 수 있다. 상기 송수신기(864)는 지그비(ZigBee) 송수신기, 블루투스(Bluetooth) 송수신기(예: 블루투스 저 에너지(Bluetooth Low Energy) 송수신기), NFC 송수신기 등을 포함할 수 있다. 송수신기(864)는 유선 통신을 통해 상기 네트워크와 통신할 수 있다. 일 예로, 송수신기(864)는 이더넷 케이블, 광섬유 케이블, USB 케이블 등을 통해 네트워크와 통신할 수 있다.
디스플레이 회로(866)는 상기 터치스크린 디스플레이(854)가 정보를 표시하도록 할 수 있다. 디스플레이 회로(866)는 터치스크린 디스플레이(854)로부터 사용자 입력(예: 사용자 선택들)을 수신할 수 있다. 디스플레이 회로(866)는 디스플레이 드라이버를 포함할 수 있다. 상기 디스플레이 드라이버는 터치스크린 디스플레이(854)를 구동시킬 수 있다. 일 예로, 디스플레이 회로(866)는 발광 다이오드(Light Emitting Diode: LED) 디스플레이를 구동하는 LED 드라이버를 포함할 수 있다. 디스플레이 회로(866)는 stereoscopic 디스플레이(예: autostereoscopic 3D 디스플레이)를 구동시킬 수 있다.
CPU(868)는 축소 지시어 집합 컴퓨팅(reduced instruction set computing: RISC) 아키텍처를 기반으로 하는 ARM 프로세서를 포함할 수 있다. CPU(868)는 다수의 코어들(예: 듀얼-코어(dual-core), 쿼드-코어(quad-core), 또는 옥타 코어(octa-core))를 포함할 수 있다. CPU(868)는 메모리(844)에 저장된 컴퓨터 판독 가능 지시들을 실행할 수 있다. CPU(868)가 컴퓨터 판독 가능 지시들을 실행할 때, 상기 CPU(868)는 컨텍스트 데이터 기록기(contextual data logger)(870) 및 어플리케이션 카드 제공자(renderer)(872)를 구현할 수 있다. CPU(868)는 어플리케이션 기능들(846-1, 846-2)을 실행할 수 있다. 상기 어플리케이션 기능들은 도 1의 어플리케이션 기능들(146-1, 146-2)과 유사할 수 있다.
컨텍스트 데이터 기록기(870)는 어플리케이션 레이어(application layer)에서 동작하는 어플리케이션을 포함할 수 있다. 추가적으로, 또는 그와는 달리, 컨텍스트 데이터 기록기(870)는 프리젠테이션 레이어(presentation layer)에서 동작되는 운영 시스템 프로세스를 포함할 수 있다. 컨텍스트 데이터 기록기(870)는 컨텍스트 데이터(예: 도 1의 컨텍스트 데이터(160))를 기록할 수 있다. 컨텍스트 데이터 기록기(870)는 컨텍스트 데이터 스토어(850)에 상기 컨텍스트 데이터를 저장할 수 있다. 컨텍스트 데이터 기록기(870)는 센서 허브(862)로부터 센서 측정값들을 수신하고, 상기 센서 측정값들을 컨텍스트 데이터 스토어(850)에 저장할 수 있다. 컨텍스트 데이터 기록기(870)는 터치스크린 디스플레이(854)에서 표시되고 있는 정보를 기록할 수 있다. 일 예로, 컨텍스트 데이터 기록기(870)는 현재 어플리케이션 기능 ID(예: 온-스크린(on-screen) 어플리케이션 기능 ID, 도 1의 어플리케이션 기능 ID(166))를 나타내는 정보를 기록할 수 있다.
컨텍스트 데이터 기록기(870)는 현재 어플리케이션 기능의 기능 파라미터들을 기록할 수 있다. 일 예로, 컨텍스트 데이터 기록기(870)는 레스토랑 리뷰 기능의 레스토랑 이름 파라미터로부터 레스토랑 이름을 기록할 수 있다. 유사하게, 컨텍스트 데이터 기록기(870)는 승차 요청 기능의 목적지 주소 필드로부터 목적지 주소를 기록할 수 있다. 컨텍스트 데이터 기록기(870)는 클라이언트 컴퓨팅 디바이스(840)에서 사용되는 어플리케이션 기능들(예: 모든 어플리케이션 기능들)을 기록함으로써 어플리케이션 사용 히스토리를 기록할 수 있다.
컨텍스트 데이터 기록기(870)는 송수신기(864)를 통해 서버로 컨텍스트 데이터를 송신(전송)할 수 있다. 컨텍스트 데이터 기록기(870)는 주기적으로, 예를 들어, 1분에 한 번씩, 하루에 한 번씩, 또는 1달에 한 번씩, 컨텍스트 데이터를 송신할 수 있다. 어플리케이션, 클라이언트 컴퓨팅 디바이스(840)의 사용자 및/또는 서버로부터 요청을 수신하면, 컨텍스트 데이터 기록기(870)는 컨텍스트 데이터를 송신할 수 있다.
카드 렌더러(application card renderer, 872)는 송수신기(864)를 통해 카드 오브젝트(예: 도 1의 카드 오브젝트(180))를 수신한다. 카드 오브젝트는 컨텍스트 데이터에 기반하여 클라이언트 컴퓨팅 디바이스(840)의 사용자가 사용하기를 원할 수 있는 다음 어플리케이션 기능을 나타낸다. 카드 렌더러(872)는 카드 오브젝트에 포함되어 있는 정보에 기반하여 터치스크린 디스플레이(854) 상에 어플리케이션 카드(예: 도 1의 어플리케이션 카드(50))를 렌더링(표시)한다. 카드 오브젝트는 상기 어플리케이션 카드에 대한 레이아웃을 나타낼 수 있다. 일 예로, 상기 카드 오브젝트는 어플리케이션 카드에 표시하는 GUI 엘리먼트들을 나타낼 수 있다. 카드 렌더러(872)는 카드 오브젝트에 의해 나타나는 레이아웃을 사용하여 상기 어플리케이션 카드를 표시할 수 있다.
카드 오브젝트는 기능 파라미터값들을 포함할 수 있다. 카드 렌더러(872)는 GUI 엘리먼트들이 카드 오브젝트에 포함된 기능 파라미터값들을 표시하도록 상기 어플리케이션 카드의 GUI 엘리먼트들을 채울 수 있다. 추가적으로, 또는 그와는 달리, 상기 카드 렌더러(872)는 컨텍스트 데이터 기록기(870)에 의해 기록되는 컨텍스트 데이터에 기반하여 상기 어플리케이션 카드에 포함된 GUI 엘리먼트들에 대한 기능 파라미터값들을 판단할 수 있다. 일 예로, 카드 렌더러(872)는 메시징 어플리케이션의 메시지에 명시되어 있는 레스토랑 이름을 사용하여 레스토랑 리뷰 기능의 레스토랑 이름 파라미터를 채울 수 있다. 유사하게, 카드 렌더러(872)는 레스토랑 리뷰 기능에 명시되어 있는 레스토랑 주소를 사용하여 승차 요청 기능의 목적지 주소를 채울 수 있다. 카드 렌더러(872)는 컨텍스트 데이터 스토어(850) 및/또는 컨텍스트 데이터 기록기(870)로부터 컨텍스트 데이터를 회신(retrieve) 또는 수신할 수 있다.
카드 오브젝트는 레이아웃 데이터 스토어(852)에 저장된 어플리케이션 카드 레이아웃을 식별하는 레이아웃 식별자를 포함할 수 있다. 카드 렌더러(872)는 레이아웃 데이터 스토어(852)로부터 어플리케이션 카드 레이아웃을 회신(retrieve)할 수 있다. 어플리케이션 카드 제공자(872)는 상기 회신된 어플리케이션 카드 레이아웃을 사용하여 상기 어플리케이션 카드를 표시할 수 있다.
카드 렌더러(872)는 어플리케이션 카드가 현재 어플리케이션 뷰 위에 놓여지도록 상기 어플리케이션 카드를 표시할 수 있다. 카드 렌더러(872)는 상기 어플리케이션 카드가 상기 현재 어플리케이션 뷰를 숨기지 않도록 상기 어플리케이션 카드의 투명도를 제어할 수 있다. 카드 렌더러(872)는 현재 어플리케이션 뷰의 사이즈를 터치스크린 디스플레이(854) 상의 표시 영역의 임계 퍼센티지로 감소시킬 수 있다. 일 예로, 카드 렌더러(872)는 현재 어플리케이션 뷰의 사이즈를 표시 영역의 75%로 감소시킬 수 있다. 카드 렌더러(872)는 표시 영역의 나머지를 사용하여 상기 어플리케이션 카드를 표시할 수 있다. 일 예로, 상기 카드 렌더러(872)는 상기 표시 영역의 나머지 25%를 사용하여 상기 어플리케이션 카드를 표시할 수 있다.
카드 렌더러(872)는 카드 오브젝트에 포함되어 있는 컴퓨터 판독 가능 지시들을 실행하여 어플리케이션 카드를 실행할 수 있다. 카드 렌더러(872)는 상기 카드 오브젝트에 포함되어 있는 컴퓨터 판독 가능 지시들을 실행하여 상기 어플리케이션 카드에 상응하는 어플리케이션 기능을 수행할 수 있다. 카드 렌더러(872)는 상기 어플리케이션 카드에 상응하는 어플리케이션 기능을 백그라운드(background) 동작으로 실행할 수 있다. 일 예로, 도 1을 참조하면, 클라이언트 컴퓨팅 디바이스(140)는 어플리케이션 카드(50-2)가 표시되는 동안에는, 백그라운드에서 어플리케이션 기능(146-2)를 실행할 수 있다.
도 9는 다음 어플리케이션 기능 ID를 나타내는 어플리케이션 카드를 표시하는 방법(900)을 나타낸 도면이다. 동작 902에서, 클라이언트 컴퓨팅 디바이스는 클라이언트 컴퓨팅 디바이스의 디스플레이(예: 터치스크린 디스플레이)에 현재 어플리케이션 기능(제1 어플리케이션 기능)의 현재 어플리케이션 뷰(제1 어플리케이션 뷰)를 표시한다. 일 예로, 도 1을 참조하면, 클라이언트 컴퓨팅 디바이스(140)는 어플리케이션 기능(146-1)을 나타내는 어플리케이션 뷰(46-1)를 표시할 수 있다.
동작 904에서, 클라이언트 컴퓨팅 디바이스는 컨텍스트 데이터(예: 도 1의 컨텍스트 데이터(160))를 기록한다. 클라이언트 컴퓨팅 디바이스는 데이터 스토어(예: 컨텍스트 데이터 스토어(850))에 컨텍스트 데이터를 저장할 수 있다. 컨텍스트 데이터는 현재 어플리케이션 기능 ID(제1 어플리케이션 기능 ID), 센서 측정값들, 및/또는 어플리케이션 사용 히스토리를 나타내는 정보를 포함할 수 있다.
동작 906에서, 클라이언트 컴퓨팅 디바이스는 서버로 컨텍스트 데이터를 송신한다. 클라이언트 컴퓨팅 디바이스는 컨텍스트 데이터 스토어로부터 컨텍스트 데이터를 회신(retrieve)하고 상기 회신된 데이터를 서버로 송신할 수 있다. 클라이언트 컴퓨팅 디바이스는, 예를 들어 배터리 전력을 절약하기 위해, 서버로 컨텍스트 데이터를 송신하는 것보다 높은 빈도로 컨텍스트 데이터를 저장 중일 수 있다. 일 예로, 도 1을 참조하면, 클라이언트 컴퓨팅 디바이스(40)는 컨텍스트 데이터(160)를 서버(100)로 송신할 수 있다.
동작 908에서, 클라이언트 컴퓨팅 디바이스는 다음 어플리케이션 기능(제2 어플리케이션 기능)에 대한 어플리케이션 기능 ID(제2 어플리케이션 기능 ID)에 상응하는 카드 오브젝트를 수신한다. 일 예로, 도 1을 참조하면, 클라이언트 컴퓨팅 디바이스(140)는 서버(100)로부터 카드 오브젝트(180)를 수신할 수 있다. 상기 카드 오브젝트는 클라이언트 컴퓨팅 디바이스가 어플리케이션 카드를 표시하고 해당 어플리케이션 기능을 수행하도록 하는 실행 가능한 지시들을 포함할 수 있다.
동작 910에서, 클라이언트 컴퓨팅 디바이스는 다음 어플리케이션 기능(제2 어플리케이션 기능)을 나타내는 어플리케이션 카드의 렌더링(rendering)을 판단(결정)한다. 일 예로, 클라이언트 컴퓨팅 디바이스는 어플리케이션 카드에 포함된 컴퓨터 판독 가능 지시들을 실행하여 상기 어플리케이션 카드를 표시할 수 있다. 이와는 달리, 클라이언트 컴퓨팅 디바이스는 카드 오브젝트에 의해 나타나는 어플리케이션 카드를 회신(retrieve)할 수 있고, 어플리케이션 카드 레이아웃을 사용하여 현재 어플리케이션 뷰(제1 어플리케이션 뷰)와 함께 상기 어플리케이션 카드를 표시할 수 있다.
동작 912에서, 클라이언트 컴퓨팅 디바이스는 현재 어플리케이션 기능(제1 어플리케이션 기능)의 어플리케이션 뷰(제1 어플리케이션 뷰)와 동시에 예측 어플리케이션 기능(제2 어플리케이션 기능)의 어플리케이션 카드를 표시한다. 상기 어플리케이션 카드는 GUI 엘리먼트들을 포함하여, 어플리케이션들을 스위칭하고 예측 어플리케이션 기능(제2 어플리케이션 기능)의 어플리케이션 뷰(제2 어플리케이션 뷰)로 수동으로 이동하지 않고도 예측 어플리케이션 기능(제2 어플리케이션 기능)이 사용될 수 있도록 한다. 도 1을 참조하면, 어플리케이션 카드(50-2)는 어플리케이션 카드의 일 예이고, 어플리케이션 기능(146-2)는 예측 어플리케이션 기능(제2 어플리케이션 기능)의 일 예이다.
도 10은 본 문서에서 설명되고 있는 시스템들 및 방법들을 구현하기 위해 사용될 수 있는 컴퓨팅 디바이스들(1000)의 일 예의 블록도이다. 예를 들어, 컴퓨팅 디바이스(1000)는 도 1의 서버(100) 및/또는 클라이언트 컴퓨팅 디바이스(140)를 구현하기 위해 사용될 수 있다. 컴퓨팅 디바이스(1000)는 랩탑들, 데스크탑들, 워크스테이션들, 개인용 정보 단말기들, 서버들, 블레이드 서버들(blade servers), 메인 프레임들(mainframes) 및 다른 적합한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들로 나타날 수 있다. 여기에 도시되어 있는 컴포넌트들(components), 그 연결들, 관계들 및 그 기능들은 실시예에 불과하며, 이 문서에서 설명 및/또는 청구되는 발명들의 구현들을 한정하지는 않는다.
컴퓨팅 디바이스(1000)는 프로세서(1002), 메모리(1004), 저장 디바이스(1006), 메모리(1004) 및 고속 확장 포트들(high-speed expansion ports, 1010)에 연결되는 고속 인터페이스(high-speed interface, 1008) 및 저속 버스(low-speed bus, 1014) 및 저장 디바이스(1006)에 연결되는 저속 인터페이스(low-speed interface, 1012)를 포함한다. 상기 컴포넌트들(1002, 1004, 1006, 1008, 1010, 1012) 각각은 다양한 버스들을 사용하여 상호 연결되고, 공통 마더보드(motherboard)에 실장되거나 또는 다른 적합한 방식들로 실장될 수 있다. 프로세서(1002)는 메모리(1004) 또는 저장 디바이스(1006)에 저장되어 있는 지시들을 포함하는, 상기 컴퓨팅 디바이스(1000) 내에서 실행되는 지시들을 처리(processing)하여 고속 인터페이스(1008)에 연결되는 디스플레이(1016)와 같은 외부 입/출력 디바이스 상에 그래픽 사용자 인터페이스(graphical user interface: GUI)에 대한 그래픽 정보를 표시할 수 있다. 다른 실시예에서, 다수의 프로세서들 및/또는 다수의 버스들은 다수의 메모리들 및 다수의 타입들의 메모리와 함께 적합하게 사용될 수 있다. 또한 다수의 컴퓨팅 디바이스들(1000)은 필요한 동작들의 일부분들을 제공하는 디바이스들(예: 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티-프로세서 시스템) 각각과 연결될 수 있다.
메모리(1004)는 컴퓨팅 디바이스(1000) 내에 정보를 저장한다. 일 실시예에 따르면, 메모리(1004)는 컴퓨터 판독 가능 매체이다. 일 실시예에서, 메모리(1004)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 실시예에서, 메모리(1004)는 비휘발성 메모리 유닛 또는 유닛들이다.
저장 디바이스(1006)는 컴퓨팅 디바이스(1000)에 대한 대용량 저장을 제공할 수 있다. 다양한 실시예들에서, 저장 디바이스(1006)는 컴퓨터-판독 가능 매체이다. 다양한 실시예들에서, 저장 디바이스(1006)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 테이프 디바이스, 플래쉬 메모리, 다른 유사한 솔리드 스테이트(solid state) 메모리 디바이스, 저장 영역 네트워크 또는 다른 구성들에 포함되는 디바이스들을 포함하는 디바이스들의 어레이(array)가 될 수 있다. 추가 실시예들에서, 컴퓨터 프로그램 제품은 정보 캐리어(information carrier) 방식으로 현실적으로(tangibly) 실시된다. 컴퓨터 프로그램 제품은 실행될 때 상기에서 설명한 바와 같은 하나 이상의 방법들을 수행하는 지시들을 포함한다. 상기 정보 캐리어는 상기 메모리(1004), 저장 디바이스(1006), 또는 프로세서(1002) 상의 메모리와 같은, 컴퓨터-판독 가능 매체 또는 머신(machine)-판독 가능 매체이다.
고속 제어기(high speed controller, 1008)는 컴퓨팅 디바이스(1000)에 대해 대역폭-집약적(bandwidth-intensive) 동작들을 관리하며, 이에 반해 저속 제어기(low speed controller, 1012)는 더 낮은 대역폭-집중적 동작들을 관리한다. 상기와 같은 역할 할당은 오직 실시예일 뿐이다. 다양한 실시예에 따르면, 고속 제어기(1008)는 (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 메모리(1004), 디스플레이(1016)에 연결되며, 다양한 확장 카드들(미도시)을 수용할 수 있는 고속 확장 포트들(1010)에 연결된다. 일 실시예에 따르면, 저속 제어기(1012)는 저장 디바이스(1006) 및 저속 확장 포트(1014)에 연결된다. 다양한 통신 포트들(예: USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트는, 입/출력 디바이스들, 예를 들어 네트워크 어댑터를 통해 키보드, 포인팅 디바이스(pointing device), 스캐너 및 스위치 또는 라우터와 같은 네트워킹 디바이스에 연결될 수 있다.
컴퓨팅 디바이스(1000)는 도 10에 도시된 바와 같이 다수의 서로 다른 형태들로 구현될 수 있다. 일 예로, 컴퓨팅 디바이스(1000)는 표준 서버 (1020)로 구현되거나, 또는 그러한 서버들의 그룹에서 다수 번 구현될 수 있다. 또한 컴퓨팅 디바이스(1000)는 랙 서버 시스템(rack server system)(1024)의 일부로서 구현될 수 있다. 추가적으로, 컴퓨팅 디바이스(1000)는 랩탑 컴퓨터(1022)와 같은 개인용 컴퓨터에서 구현될 수 있다. 이와는 달리, 컴퓨팅 디바이스(1000)의 컴포넌트들은 이동 디바이스(미도시)에 포함된 다른 컴포넌트들과 결합될 수 있다. 상기와 같은 디바이스들 각각은 하나 또는 그 이상의 컴퓨팅 디바이스(1000)를 포함할 수 있고, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(1000)로 이루어질 수 있다.
본 명세서에서 설명되는 시스템들 및 기술들의 다양한 구현들은 디지털 전자 및/또는 광 회로, 집적 회로, 특별히 설계된 주문형 반도체들(application specific integrated circuits: ASICs), 컴퓨터 하드웨어, 펌웨어(firmware), 소프트웨어 및/또는 그 조합들로 실현될 수 있다. 이런 다양한 구현들은 적어도 하나의 입력 디바이스에서 그리고 적어도 하나의 출력 디바이스에서, 저장 시스템으로부터 데이터 및 지시(명령)들을 수신하고, 상기 저장 시스템으로 데이터 및 지시들을 송신하도록 연결되는, 특수한 또는 범용이 될 수 있는, 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템에서 실행 가능 및/또는 해석 가능한 하나 또는 그 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
이런 컴퓨터 프로그램들(예: 프로그램들, 소프트웨어, 소프트웨어 어플리케이션 또는 코드)은 프로그램 가능 프로세서에 대한 머신 지시들을 포함하고, 또한 상위 레벨 절차 및/또는 객체 지향(object-oriented) 프로그래밍 언어 및/또는 어셈블리(assembly)/머신 언어로 구현될 수 있다. 본 문서에서 사용된 용어들 “머신 판독 가능 매체” 및 “컴퓨터 판독 가능 매체”는 머신 지시들을 머신 판독 가능 신호로서 수신하는 머신 판독 가능 매체를 포함하는 프로그램 가능 프로세서로서, 머신 지시들 및/또는 데이터를 제공하기 위해 사용되는 컴퓨터 프로그램 제품, 비-일시적(non-transitory) 컴퓨터 판독 가능 매체, 장치 및/또는 디바이스(예: 마그네틱 디스크들, 광 디스크들, 메모리, 프로그램 가능 논리 디바이스(Programmable Logic Device: PLD))이다. 용어 “머신 판독 가능 신호”는 머신 지시들 및/또는 데이터를 프로그램 가능 프로세서로 제공하기 위해 사용되는 신호이다.
본 명세서에서 설명되는 주제 및 기능 동작들의 구현들은 디지털 전자 회로로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 본 명세서에 개시되어 있는 구조들 및 그 구조적 균등물들을 포함하는 하드웨어로, 또는 그들 중 하나 또는 그 이상의 결합들로 구현될 수 있다. 또한 본 명세서에서 설명되는 주제는 하나 또는 그 이상의 컴퓨터 프로그램 제품들, 즉 데이터 프로세싱 장치의 동작을 제어하는 것에 의한 또는 제어하는 것을 위한 실행에 대해 컴퓨터 판독 가능 매체에서 인코딩되는 컴퓨터 프로그램 지시들의 하나 또는 그 이상의 모듈들(modules)로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 서브스트레이트(substrate), 메모리 디바이스, 머신 판독 가능 전파 신호에 영향을 주는 물질의 성분, 또는 그들 중 하나 또는 그 이상의 조합이 될 수 있다. 용어들 “데이터 프로세싱 장치”, “컴퓨팅 디바이스” 및 “컴퓨팅 프로세서”는 예를 들어 프로그램 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함하는 모든 장치들, 디바이스들, 데이터를 처리(processing)하는 머신들을 포함한다. 상기 장치는, 하드웨어뿐만 아니라, 논의가 되고 있는 상기 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 또는 그들 중 하나 또는 그 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파 신호는 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하기 위해 생성되는 인위적으로 생성된 신호, 예를 들어 머신-생성 전자, 광, 또는 전기장 신호이다.
컴퓨터 프로그램(또한 어플리케이션, 프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트(script), 또는 코드)은 컴파일된(compiled) 또는 해석된 언어들을 포함하는 프로그래밍 언어의 어떤 형태로라도 쓰여질 수 있으며, 상기 컴퓨터 프로그램은 스탠드-얼론(stand-alone) 프로그램으로, 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 사용되기에 적합한 다른 유닛으로 포함되는 등의 어떤 형태로도 배치될 수 있다. 컴퓨터 프로그램은 파일 시스템에서 파일에 필수적으로 상응하지는 않는다. 프로그램은 다른 프로그램들 또는 데이터(예: 마크업(markup) 언어 문서에 저장되어 있는 하나 또는 그 이상의 스크립트들)를 유지하는 파일의 일부에, 논의되고 있는 프로그램에 전용인 단일 파일에, 또는 다수의 협력 파일들(예: 하나 또는 그 이상의 모듈들, 서브 프로그램들, 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 한 개의 컴퓨터, 하나의 사이트 또는 다수의 사이트들에 걸쳐 분산되어 위치하고 통신 네트워크에 의해 서로 연결되는 다수의 컴퓨터들에서 실행되도록 배치될 수 있다.
본 명세서에서 설명되는 프로세스들 및 논리 플로우들은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하는 하나 또는 그 이상의 컴퓨터 프로그램들을 실행하는 하나 또는 그 이상의 프로그램 가능 프로세서들에 의해 수행될 수 있다. 상기 프로세스들 및 논리 플로우들은 또한 특수 목적 논리 회로, 일 예로 필드 프로그램 가능 게이트 어레이(field programmable gate array: FPGA) 또는 주문형 반도체(application specific integrated circuit: ASIC)에 의해 수행될 수 있고, 장치는 상기 특수 목적 논리 회로, FPGA 또는 ASIC로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은 일 예로 일반 및 특수 목적 마이크로프로세서들 둘 다 및 임의의 종류의 디지털 컴퓨터의 하나 또는 그 이상의 프로세서들을 포함할 수 있다. 일반적으로, 프로세서는 리드-온니(read-only) 메모리, 랜덤 액세스 메모리 또는 둘 다로부터 지시들 및 데이터를 수신할 수 있다. 컴퓨터의 필수 엘리먼트들은 지시들을 수행하는 프로세서와 지시들 및 데이터를 저장하는 하나 또는 그 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는, 데이터를 저장하는 하나 또는 그 이상의 대용량 저장 디바이스들, 예를 들어 마그네틱, 마그네토(magneto) 광 디스크들, 또는 상기 광 디스크들을 포함하거나, 상기 하나 또는 그 이상의 대용량 저장 디바이스들로부터 데이터를 수신하거나, 데이터를 전달하도록 효율적으로 연결되거나, 또는 그 둘 다일 수 있다. 그러나 컴퓨터는 상기와 같은 디바이스들을 반드시 가질 필요는 없다. 또한 실시예들에 따르면 컴퓨터는 다른 디바이스, 예를 들어 이동 전화기, 개인용 정보 단말기(personal digital assistant: PDA), 이동 오디오 플레이어, 글로벌 측위 시스템(Global Positioning System: GPS) 수신기에 내장될 수 있다. 컴퓨터 프로그램 지시들 및 데이터를 저장하는데 적합한 컴퓨터 판독 가능 미디어는, 모든 형태들의 비휘발성 메모리, 예를 들어 반도체 메모리 디바이스들, EPROM, EEPROM 및 플래쉬 메모리 디바이스들을 포함하는 미디어 및 메모리 디바이스들; 마그네틱 디스크들, 예를 들어 내부 하드 디스크들 또는 제거 가능 디스크들; 마그네토 광 디스크들; CD ROM 및 DVD-ROM 디스크들을 포함한다. 상기 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 또는 특수 목적 논리 회로로 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 개시의 하나 또는 그 이상의 측면들은 사용자에게 정보를 표시하기 위한 디스플레이 디바이스, 예를 들어 음극선관(cathode ray tube: CRT), 액정 디스플레이(liquid crystal display: LCD) 모니터, 터치 스크린, 선택적으로 사용자가 컴퓨터로 입력을 제공할 수 있는 키보드 또는 포인팅 디바이스, 일 예로 마우스 또는 트랙볼(trackball)을 가지는 컴퓨터에서 구현될 수 있다. 다른 종류들의 디바이스들이 사용자와의 상호 작용을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자로 제공되는 피드백은 어떤 형태의 감각적 피드백, 일 예로, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백이 될 수 있고; 사용자로부터의 입력은 음향적, 언어, 또는 촉각적 입력을 포함하는 어떤 형태로도 수신될 수 있다. 또한 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서들을 송신함으로써, 그리고 상기 사용자에 의해 사용되는 디바이스로부터 문서들을 수신함으로써, 상기 사용자와 상호 작용할 수 있다. 일 예로, 웹 브라우저로부터 수신되는 요청들에 대한 응답으로서 사용자의 클라이언트 디바이스의 상기 웹 브라우저로 웹 페이지들을 송신한다.
본 개시의 하나 또는 그 이상의 측면들은 백엔드(backend) 컴포넌트, 일 예로, 데이터 서버를 포함하거나, 미들웨어(middleware), 일 예로, 어플리케이션 서버를 포함하거나, 프론트엔드(frontend), 일 예로 그래픽 사용자 인터페이스 또는 사용자가 본 개시에서 설명된 바와 같은 주제의 구현과 상호 작용할 수 있는 웹 브라우저, 또는 하나 또는 그 이상의 상기와 같은 백엔드, 미들웨어, 또는 프론트엔드 컴포넌트들의 조합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 상기 시스템의 컴포넌트들은 디지털 데이터 통신의 어떤 형태 또는 매체, 일 예로 통신 네트워크에 의해 서로 연결될 수 있다. 실시예에 따르면, 통신 네트워크들은 근거리 네트워크(local area network: LAN), 광역 네트워크(wide area network: WAN), 인터-네트워크(inter-network)(예: 인터넷) 및 피어-투-피어 네트워크들(peer-to-peer networks)(예: 애드 혹(ad hoc) 피어-투-피어 네트워크들)을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 이격되어 있으며, 일반적으로 통신 네트워크를 통해서 상호 작용한다. 클라이언트 및 서버의 관계는 실행 중이고 서로 클라이언트-서버 관계를 가지는 컴퓨터 프로그램들로 인해 발생한다. 다양한 실시예에 따르면, 서버는 데이터(예: HTML 페이지)를 클라이언트 디바이스로 (예를 들어, 클라이언트 디바이스와 상호 작용하는 사용자에게 데이터를 표시하고 상기 사용자로부터 사용자 입력을 수신하기 위한 목적을 위해) 송신한다. 클라이언트 디바이스에서 생성된 데이터(예: 상기 사용자 상호 작용의 결과)는 상기 서버에서 상기 클라이언트 디바이스로부터 수신될 수 있다.
본 명세서가 많은 구체적인 사항들을 포함하고 있을 지라도, 이들은 본 개시의 범위 또는 청구하고자 하는 것의 범위를 제한하는 것으로 이해되어서는 안 될 것이며, 그보다는 본 개시의 특정 구현예들에 대한 특정한 설명들 또는 특징들로서 이해되어야만 할 것이다. 개별 구현예들의 컨텍스트에서, 본 명세서에서 설명되는 특정 기능들은 또한 단일 구현의 조합에서 구현될 수 있다. 그와는 반대로, 단일 구현의 컨텍스트에서 설명되는 다양한 특징들은 또한 다수의 구현예들에서 별도로 또는 적합한 서브-조합에서 구현될 수 있다. 또한 특징들이 특정 조합들로 동작하고, 또는 그 자체로 최초에 청구되는 바와 같이 상기에서 설명될 수 있다고 할지라도, 청구된 조합으로부터의 하나 또는 그 이상의 특징들은 일부의 경우들에서는 상기 조합에서 배제될 수 있고, 상기 청구된 조합은 서브-조합 또는 서브-조합의 변경으로 직결될 수 있다.
유사하게, 동작들이 도면들에서 특정 순서로 도시되어 있다고 할지라도, 이는 상기와 같은 동작들이 상기 도시되어 있는 특정한 순서 또는 일련의 순서로 수행된다는 것 또는 바람직한 결과들을 획득하기 위해 도시된 바와 같은 모든 동작들이 수행되어야 한다고 것으로 이해되어서는 안 될 것이다. 특정 실시예들에서, 멀티-태스킹(multi-tasking) 및 병렬 프로세싱이 유리할 수 있다. 또한 상기에서 설명한 바와 같은 실시예들에서의 다양한 시스템 컴포넌트들의 분할이 모든 실시예들에서의 상기와 같은 분할을 필요로 하는 것으로 이해되어서는 안되며, 상기 설명한 바와 같은 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 또는 다수의 소프트웨어 제품들로 패키지화될 수 있다고 이해되어야만 할 것이다.
다수의 구현들이 설명된 바 있다. 그럼에도 불구하고, 다양한 수정들이 본 개시의 사상 및 범위로부터 벗어남이 없이 이루어질 수 있다는 것이 이해될 수 있을 것이다. 따라서 다른 구현들은 다음과 같은 청구항들의 범위 내에 존재한다. 일 예로, 청구항들에서 설명되는 동작들은 다른 순서로 수행될 수 있고 또한 바람직한 결과들을 성취할 수 있다.
46: 어플리케이션 뷰 50: 어플리케이션 카드
140: 클라이언트 컴퓨팅 디바이스 160: 컨텍스트 데이터
180: 카드 오브젝트 400: 서버
402: 프로세싱 디바이스 404: 저장 디바이스
406: 네트워크 통신 디바이스 408: App 기능 데이터 스토어
410: 사용자 의도 데이터 스토어 412: App 카드 데이터 스토어
416: 현재 사용자 의도 ID 판단기 418: 현재 사용자 의도 ID
420: 다음 사용자 의도 ID 판단기 422: 다음 사용자 의도 ID
424: App 기능 판단기 426: App 기능
428: 결과 생성기

Claims (21)

  1. 서버에 있어서,
    네트워크 통신 디바이스;
    저장 디바이스-상기 저장 디바이스는, 어플리케이션 기능들을 식별하는 어플리케이션 기능 ID들(application function identifiers) 및 상기 어플리케이션 기능 ID들에 상응하는 사용자 의도들을 식별하는 사용자 의도 ID들(user intent identifiers)을 저장하는 어플리케이션 기능 데이터 스토어(application function store), 상기 사용자 의도 ID들 및 상기 사용자 의도 ID들 간의 천이들(transitions)을 저장하는 사용자 의도 데이터 스토어 및 상기 어플리케이션 기능 ID들에 상응하는 카드 오브젝트(object)들을 저장하는 카드 데이터 스토어를 저장하고, 카드 오브젝트들 각각은 어플리케이션 기능 ID에 의해 식별되는 어플리케이션 기능을 수행하는 클라이언트 컴퓨팅 디바이스들(client computing devices)에서 컴퓨터 판독 가능한(computer-readable) 지시들을 포함함-; 및
    상기 컴퓨터 판독 가능한 지시들을 실행하는 프로세싱 디바이스;를 포함하고,
    상기 컴퓨터 판독 가능한 지시들이 실행될 때, 상기 프로세싱 디바이스는:
    상기 네트워크 통신 디바이스를 통해, 클라이언트 컴퓨팅 디바이스로부터 컨텍스트 데이터(contextual data)를 수신하고-상기 컨텍스트 데이터는 상기 클라이언트 컴퓨팅 디바이스에 현재 표시되고 있는 제1 어플리케이션 뷰(view)를 나타냄,
    상기 컨텍스트 데이터와 상기 어플리케이션 기능 데이터 스토어에 저장된 상기 어플리케이션 기능 ID들을 비교함으로써, 상기 제1 어플리케이션 뷰에 상응하는 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID를 식별하고,
    상기 제1 어플리케이션 기능 ID에 상응하는 제1 사용자 의도 ID를 판단하고-상기 제1 사용자 의도 ID는 상기 클라이언트 컴퓨팅 디바이스의 사용자의 현재 사용자 의도를 나타냄-,
    상기 제1 사용자 의도 ID로부터 천이되는 제2 사용자 의도 ID를 판단하고-상기 제2 사용자 의도 ID는 상기 현재 사용자 의도에 기반하여 상기 사용자의 다음 사용자 의도의 예측을 나타냄-,
    상기 제2 사용자 의도 ID에 상응하는 제2 어플리케이션 기능 ID를 식별하고-상기 제2 어플리케이션 기능 ID는 제2 어플리케이션 기능을 식별함,
    상기 카드 데이터 스토어로부터 상기 제2 어플리케이션 ID에 상응하는 카드 오브젝트를 회신(retrieve)하고;
    상기 네트워크 통신 디바이스를 통해, 상기 클라이언트 컴퓨팅 디바이스로 상기 카드 오브젝트를 송신하도록 함을 특징으로 하는 서버.
  2. 제1항에 있어서, 상기 컴퓨터 판독 가능 지시들은,
    상기 프로세싱 디바이스가, 상기 어플리케이션 기능 데이터 스토어로부터 상기 제1 사용자 의도 ID를 회신함으로써, 상기 제1 사용자 의도 ID를 판단하도록 함을 특징으로 하는 서버.
  3. 제1항에 있어서, 상기 컴퓨터 판독 가능 지시들은,
    상기 프로세싱 디바이스가, 상기 사용자 의도 데이터 스토어로부터 상기 제2 사용자 의도 ID를 회신함으로써 상기 제2 사용자 의도 ID를 판단하도록 함을 특징으로 하는 서버.
  4. 제1항에 있어서, 상기 컴퓨터 판독 가능 지시들은,
    상기 프로세싱 디바이스가, 상기 제2 사용자 의도 ID에 상응하는 어플리케이션 기능을 찾기 위하여 어플리케이션 기능 데이터 스토어를 검색(search)함으로써, 상기 제2 어플리케이션 기능 ID를 식별하도록 함을 특징으로 하는 서버.
  5. 제1항에 있어서, 상기 카드 오브젝트는,
    상기 제2 어플리케이션 기능에 대한 그래픽 사용자 인터페이스(graphical user interface: GUI) 엘리먼트들을 포함함을 특징으로 하는 서버.
  6. 제5항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 프로세싱 디바이스가:
    상기 컨텍스트 데이터에 기반하여 상기 제2 어플리케이션 기능에 대한 기능 파라미터 값들을 판단하고;
    상기 GUI 엘리먼트들을, 상기 판단된 기능 파라미터 값들로 채우도록 함을 특징으로 하는 서버.
  7. 제5항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 프로세싱 디바이스가:
    상기 제2 어플리케이션 기능과 연관되는 서비스의 어플리케이션 프로그래밍 인터페이스(application programming interface: API), 라이브러리(library) 및/또는 엔드포인트(endpoint)를 사용하여 상기 제2 어플리케이션 기능에 대한 기능 파라미터 값들을 판단하고,
    상기 GUI 엘리먼트들을, 상기 판단된 기능 파라미터 값들로 채우도록 함을 특징으로 하는 서버.
  8. 제1항에 있어서,
    상기 어플리케이션 기능 데이터 스토어는, 상기 어플리케이션 기능 ID들을, 어플리케이션 기능 그래프(application function graph)의 노드들(nodes)로서 저장하는 상기 어플리케이션 기능 그래프를 포함하고;
    상기 사용자 의도 데이터 스토어는, 상기 사용자 의도 ID들을 사용자 의도 그래프(user intent graph)의 노드들로서 저장하고, 상기 사용자 의도 ID들 간의 천이들을, 상기 사용자 의도 그래프의 노드들을 연결하는 에지들(edges)로서 저장하는 상기 사용자 의도 그래프를 포함함을 특징으로 하는 서버.
  9. 제1항에 있어서, 상기 컴퓨터 판독 가능 지시들은 상기 프로세싱 디바이스가:
    다른 클라이언트 컴퓨팅 디바이스들로부터 어플리케이션 기능 사용 데이터를 수신하고;
    상기 어플리케이션 기능 사용 데이터에 기반하여 상기 사용자 의도 데이터 스토어에 저장되어 있는 상기 사용자 의도 ID들 간의 상기 천이들을 업데이트하도록 함을 특징으로 하는 서버.
  10. 제1항에 있어서,
    제1 어플리케이션은 상기 제1 어플리케이션 기능을 포함하고,
    제2 어플리케이션은 상기 제2 어플리케이션 기능을 포함함을 특징으로 하는 서버.
  11. 이동 컴퓨팅 디바이스에 있어서:
    터치 스크린 디스플레이;
    다수의 센서들;
    송수신기;
    메모리; 및
    컴퓨터 판독 가능한 지시들을 실행하는 컴퓨팅 프로세서;를 포함하고,
    상기 컴퓨터 판독 가능한 지시들이 실행될 때, 상기 컴퓨팅 프로세서는:
    상기 터치 스크린 디스플레이 상에, 제1 어플리케이션 기능을 나타내는 제1 어플리케이션 뷰(view)를 표시하고,
    컨텍스트 데이터(contextual data)를 상기 메모리에 저장하고-상기 컨텍스트 데이터는, 상기 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID(identifier), 상기 다수의 센서들에 의해 측정되는 센서 측정값들, 상기 터치 스크린 디스플레이 상에 표시되는 어플리케이션 뷰들의 히스토리(history)를 포함하는 어플리케이션 기능 사용 데이터를 포함함-,
    상기 송수신기를 통해, 상기 컨텍스트 데이터를 서버로 송신하고,
    상기 서버로 상기 컨텍스트 데이터를 송신한 것에 대한 응답으로서, 상기 서버로부터 카드 오브젝트(card object)를 수신하고-상기 카드 오브젝트는 제2 어플리케이션 기능을 식별하는 제2 어플리케이션 기능 ID를 나타냄-,
    상기 카드 오브젝트에 기반하여 상기 제2 어플리케이션 기능을 나타내는 어플리케이션 카드의 렌더링(rendering)을 판단하고,
    상기 제1 어플리케이션 뷰와 동시에 상기 어플리케이션 카드를 표시함을 특징으로 하는 이동 컴퓨팅 디바이스.
  12. 제11항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가,
    상기 제1 어플리케이션 기능을 포함하는 제1 어플리케이션을 실행함으로써, 상기 제1 어플리케이션 뷰를 표시하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  13. 제11항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가,
    상기 제2 어플리케이션 기능을 포함하는 제2 어플리케이션을 실행함으로써, 상기 어플리케이션 카드의 렌더링을 판단하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  14. 제11항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가,
    상기 제2 어플리케이션 기능에 대한 그래픽 사용자 인터페이스(graphical user interface: GUI) 엘리먼트들을 표시함으로써, 상기 어플리케이션 카드를 표시하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  15. 제14항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가,
    상기 GUI 엘리먼트들을 통해, 상기 제2 어플리케이션 기능에 대한 기능 파라미터 값들을 수신하고,
    상기 수신된 기능 파라미터 값들에 기반하여, 상기 제2 어플리케이션 기능과 연관되는 서비스의 어플리케이션 프로그래밍 인터페이스(application programming interface: API), 라이브러리(library) 및/또는 엔드포인트(endpoint)를 호출하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  16. 제11항에 있어서,
    상기 카드 오브젝트는, 실행 시에 상기 제2 어플리케이션 기능을 수행하도록 하는 실행 가능한 지시들을 포함하고,
    상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가, 상기 카드 오브젝트에서 상기 실행 가능한 지시들을 실행함으로써, 상기 어플리케이션 카드의 렌더링을 판단하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  17. 제11항에 있어서, 상기 컴퓨터 판독 가능 지시들은 상기 컴퓨팅 프로세서가,
    상기 카드 오브젝트를 수신하고,
    상기 업데이트들에 기반하여 상기 어플리케이션 카드를 업데이트하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  18. 제11항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가,
    상기 제1 어플리케이션 뷰에서의 변경들에 대한 응답으로서, 상기 서버로부터 제2 카드 오브젝트를 수신하고-상기 제2 카드 오브젝트는 제3 어플리케이션 기능을 식별하는 제3 어플리케이션 기능 ID를 나타냄-,
    상기 제2 카드 오브젝트에 기반하여, 상기 제3 어플리케이션 기능을 나타내는 제2 카드 어플리케이션 카드의 렌더링을 판단하고,
    상기 어플리케이션 카드를 상기 제2 어플리케이션 카드로 교체함-상기 제2 어플리케이션 카드는 상기 제1 어플리케이션 뷰와 함께 표시됨-을 특징으로 하는 이동 컴퓨팅 디바이스.
  19. 제11항에 있어서, 상기 컴퓨터 판독 가능 지시들은, 상기 컴퓨팅 프로세서가,
    상기 어플리케이션 카드가 광고를 포함함을 나타내는 지시자(indicium)를 표시하도록 함을 특징으로 하는 이동 컴퓨팅 디바이스.
  20. 컴퓨터-구현 방법에 있어서,
    어플리케이션 기능 ID들(application function identifiers)을 그래프 노드들(graph nodes)로서 저장하는 어플리케이션 기능 그래프 및 상기 어플리케이션 기능 ID들에 상응하는 사용자 의도들을 식별하는 사용자 의도 ID들을, 서버의 저장 디바이스에 저장하는 동작-상기 어플리케이션 기능 ID들은 어플리케이션 기능들을 식별함;
    상기 저장 디바이스에, 상기 사용자 의도 ID들을 그래프 노드들로서 저장하고, 상기 사용자 의도 ID들 간의 천이들을 에지(edge)들로서 저장하는 사용자 의도 그래프를 저장하는 동작;
    상기 저장 디바이스에, 상기 어플리케이션 기능 ID들에 상응하는 카드 오브젝트들(card object)을 저장하는 카드 데이터 스토어(card data store)를 저장하는 동작-상기 카드 오브젝트들 각각은 클라이언트 컴퓨팅 디바이스(client computing device)들에서 실행 가능하고, 상기 어플리케이션 기능 ID에 의해 식별되는 어플리케이션 기능을 수행하는 컴퓨터 판독 가능(computer-readable) 지시들을 포함함-;
    상기 서버의 네트워크 통신 디바이스를 통해, 클라이언트 컴퓨팅 디바이스로부터 컨텍스트 데이터(contextual data)를 수신하는 동작-상기 컨텍스트 데이터는 상기 클라이언트 컴퓨팅 디바이스 상에 현재 표시되고 있는 제1 어플리케이션 뷰(view)를 나타냄-;
    상기 서버의 프로세싱 디바이스에 의하여, 상기 컨텍스트 데이터와 상기 어플리케이션 기능 데이터 스토어에 저장된 상기 어플리케이션 기능 ID들을 비교함으로써, 상기 제1 어플리케이션 뷰에 상응하는 제1 어플리케이션 기능을 식별하는 제1 어플리케이션 기능 ID를 식별하는 동작;
    상기 프로세싱 디바이스에 의하여, 상기 제1 어플리케이션 기능 ID에 상응하는 제1 사용자 의도 ID를 판단하는 동작-상기 제1 사용자 의도 ID는 상기 클라이언트 컴퓨팅 디바이스의 사용자의 현재 사용자 의도를 나타냄-;
    상기 프로세싱 디바이스에 의하여, 상기 제1 사용자 의도 ID로부터 천이되는 제2 사용자 의도 ID를 판단하는 동작-상기 제2 사용자 의도 ID는 상기 현재 사용자 의도에 기반하여 상기 사용자의 다음 사용자 의도의 예측을 나타냄-;
    상기 프로세싱 디바이스에 의하여, 상기 제2 사용자 의도 ID에 상응하는 제2 어플리케이션 기능 ID를 식별하는 동작-상기 제2 어플리케이션 기능 ID는 제2 어플리케이션 기능을 식별함-;
    상기 프로세싱 디바이스에 의하여, 상기 카드 데이터 스토어로부터 상기 제2 어플리케이션 ID에 상응하는 카드 오브젝트(card object)를 회신(retrieve)하는 동작;
    상기 네트워크 통신 디바이스를 통해, 상기 클라이언트 컴퓨팅 디바이스로 상기 카드 오브젝트를 송신하는 동작;을 포함함을 특징으로 하는 컴퓨터-구현 방법.
  21. 제20항에 있어서,
    상기 프로세싱 디바이스에 의하여, 어플리케이션들, 상기 어플리케이션들과 연관되는 웹사이트들 및/또는 어플리케이션 마켓(marketplace)을 크롤링(crawling)하여 상기 어플리케이션 기능 ID들을 식별하는 과정과;
    상기 프로세싱 디바이스에 의하여, 상기 어플리케이션 기능 ID들을 나타내는 어플리케이션 뷰들에서 표시되는 사용자-선택 가능 그래픽 사용자 인터페이스(graphical user interface: GUI) 엘리먼트들을 선택하는 동작;
    상기 프로세싱 디바이스에 의하여 상기 어플리케이션 기능 ID들 간에 식별된 연결들을 상기 어플리케이션 기능 그래프에 저장하는 동작; 및
    상기 프로세싱 디바이스에 의하여, 운영자로부터의 입력 및/또는 다른 클라이언트 컴퓨팅 디바이스들로부터의 히스토리 어플리케이션 뷰들(historical application views)에 기반하여 상기 사용자 의도 ID들 간의 천이를 식별하는 동작;을 더 포함함을 특징으로 하는 컴퓨터-구현 방법.
KR1020187004082A 2015-08-06 2016-08-05 컨텍스트 데이터를 기반으로 하는 어플리케이션 카드들 KR102558153B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/820,140 2015-08-06
US14/820,140 US10582011B2 (en) 2015-08-06 2015-08-06 Application cards based on contextual data
PCT/IB2016/054759 WO2017021940A1 (en) 2015-08-06 2016-08-05 Application cards based on contextual data

Publications (2)

Publication Number Publication Date
KR20180030105A true KR20180030105A (ko) 2018-03-21
KR102558153B1 KR102558153B1 (ko) 2023-07-24

Family

ID=57942513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187004082A KR102558153B1 (ko) 2015-08-06 2016-08-05 컨텍스트 데이터를 기반으로 하는 어플리케이션 카드들

Country Status (4)

Country Link
US (2) US10582011B2 (ko)
EP (1) EP3332384A1 (ko)
KR (1) KR102558153B1 (ko)
WO (1) WO2017021940A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170034085A1 (en) * 2015-07-30 2017-02-02 Uber Technologies, Inc. Messaging integration in connection with a transportation arrangement service
US10582011B2 (en) 2015-08-06 2020-03-03 Samsung Electronics Co., Ltd. Application cards based on contextual data
US9946437B2 (en) * 2015-11-05 2018-04-17 International Business Machines Corporation Modifying an appearance of a GUI to improve GUI usability
CN108605049A (zh) * 2015-12-29 2018-09-28 三星电子株式会社 用于用户设备的基于应用状态和卡片的消息共享方法
US20170193087A1 (en) * 2015-12-31 2017-07-06 Quixey, Inc. Real-Time Markup of User Text with Deep Links
USD826967S1 (en) 2016-06-07 2018-08-28 Beijing Kingsoft Internet Security Software Co., Ltd. Mobile communication terminal with animated graphical user interface
US10168164B2 (en) 2016-06-11 2019-01-01 Apple Inc. Integrating ride hailing services into a navigation application
US10535005B1 (en) 2016-10-26 2020-01-14 Google Llc Providing contextual actions for mobile onscreen content
US10419412B1 (en) * 2017-01-17 2019-09-17 Allscripts Software, Llc Integrating patient portal access into EHR graphical user interfaces
US11671502B2 (en) * 2017-05-09 2023-06-06 Microsoft Technology Licensing, Llc Transitioning communication sessions across services
KR101950636B1 (ko) 2017-12-27 2019-02-20 주식회사 팍스에스앤티 단말기, 단말기의 신호 처리 방법 및 주소 통합 관리 시스템
KR102599383B1 (ko) * 2018-10-26 2023-11-08 삼성전자 주식회사 분할된 화면 상에서 실행 가능한 어플리케이션 리스트를 디스플레이하는 전자 장치 및 전자 장치의 동작 방법
US10922101B2 (en) * 2019-06-26 2021-02-16 International Business Machines Corporation User interface widget recommendation
US12045572B2 (en) 2020-03-10 2024-07-23 MeetKai, Inc. System and method for handling out of scope or out of domain user inquiries
WO2021183681A1 (en) 2020-03-10 2021-09-16 MeetKai, Inc. Parallel hypothetical reasoning to power a multi-lingual, multi-turn, multi-domain virtual assistant
CN115699036A (zh) 2020-03-17 2023-02-03 梅特凯股份有限公司 支持跨平台、边缘-云混合人工智能服务的智能层
US11995561B2 (en) 2020-03-17 2024-05-28 MeetKai, Inc. Universal client API for AI services
JP2021165886A (ja) * 2020-04-06 2021-10-14 トヨタ自動車株式会社 制御装置、制御装置のプログラム、及び端末装置のプログラム
US20210334116A1 (en) * 2020-04-27 2021-10-28 MeetKai, Inc. Artificially intelligent request and suggestion card
CN112148174B (zh) * 2020-09-30 2022-11-22 维沃移动通信有限公司 应用程序信息显示方法、装置及电子设备
WO2022076471A1 (en) 2020-10-05 2022-04-14 MeetKai, Inc. System and method for automatically generating question and query pairs
USD965623S1 (en) * 2020-12-31 2022-10-04 Snap Inc. Display screen or portion thereof with a graphical user interface
CN116841421A (zh) * 2022-03-24 2023-10-03 深圳市欢太科技有限公司 界面显示方法、装置、终端设备及存储介质
US20230409352A1 (en) * 2022-04-27 2023-12-21 Fotobom Media, Inc. Systems and Methods for Dynamically Generating Context Aware Active Icons on a Mobile Device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040096501A (ko) * 2001-12-12 2004-11-16 밸브 코포레이션 리소스들을 프리로딩 하기 위한 방법 및 시스템
JP2015506617A (ja) * 2011-12-30 2015-03-02 マイクロソフト コーポレーション 状況に基づく機器動作の予測
US20150111603A1 (en) * 2013-10-18 2015-04-23 Apple Inc. Mobile device with applications that use a common place card to display data relating to a location

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130024778A1 (en) * 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US9047102B2 (en) * 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8819705B2 (en) * 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US7313687B2 (en) * 2003-01-10 2007-12-25 Microsoft Corporation Establishing a secure context at an electronic communications end-point
US9146651B1 (en) * 2009-07-14 2015-09-29 Sprint Communications Company L.P. Displaying multiple applications on limited capability devices
US9223590B2 (en) * 2010-01-06 2015-12-29 Apple Inc. System and method for issuing commands to applications based on contextual information
US10276170B2 (en) * 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8468110B1 (en) * 2010-07-22 2013-06-18 Intuit Inc. Real-time user behavior prediction
US9936333B2 (en) * 2010-08-10 2018-04-03 Microsoft Technology Licensing, Llc Location and contextual-based mobile application promotion and delivery
US9262057B2 (en) 2011-03-11 2016-02-16 Microsoft Techology Licensing, Llc Providing item specific functionality via service-assisted applications
US8984071B1 (en) * 2011-03-28 2015-03-17 Symantec Corporation Systems and methods for providing a contextual message for a web-based service
US20150193819A1 (en) * 2011-06-21 2015-07-09 Google Inc. Targeting Content to Meeting Location
US20130178241A1 (en) * 2011-10-31 2013-07-11 Inset, Inc. System and method for context based user intent sensing and content or application delivery on mobile devices
US8611930B2 (en) * 2012-05-09 2013-12-17 Apple Inc. Selecting informative presentations based on navigation cues and user intent
US9047691B2 (en) * 2012-06-05 2015-06-02 Apple Inc. Route display and review
CN102810049B (zh) * 2012-07-17 2015-12-16 华为终端有限公司 一种应用程序切换方法、装置及触摸屏电子设备
US20140337145A1 (en) * 2013-05-07 2014-11-13 Greenstarhub, Inc. Methods, devices and systems for green content management and improving green procurement
US9652782B2 (en) * 2013-05-17 2017-05-16 Apple Inc. Interaction-aware advertising for minimizing banner blindness
US9412275B2 (en) * 2013-06-01 2016-08-09 Apple Inc. Architecture for distributing transit data
US9619824B2 (en) * 2013-07-31 2017-04-11 Adenda Media Inc. Displaying ads on a mobile device outside of a mobile app
CN104423794A (zh) * 2013-09-11 2015-03-18 上海帛茂信息科技有限公司 一种具有双窗口显示功能的智能型移动设备
US9304612B2 (en) * 2014-03-07 2016-04-05 Lenovo (Singapore) Pte. Ltd. Off-screen input capture for mobile device
US9914054B2 (en) * 2014-06-07 2018-03-13 Microsoft Technology Licensing, Llc Display of system-level achievements with real-time updating
ES2873034T3 (es) * 2014-06-20 2021-11-03 Huawei Tech Co Ltd Método y aparato para visualizar la interfaz de aplicación, y el dispositivo electrónico
US9904783B2 (en) * 2015-02-09 2018-02-27 Lenovo (Beijing) Co., Ltd. Information processing method and electronic device
US10217152B2 (en) * 2015-04-16 2019-02-26 Facebook, Inc. Managing ecommerce messages via a social networking system
US10200824B2 (en) * 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10582011B2 (en) 2015-08-06 2020-03-03 Samsung Electronics Co., Ltd. Application cards based on contextual data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040096501A (ko) * 2001-12-12 2004-11-16 밸브 코포레이션 리소스들을 프리로딩 하기 위한 방법 및 시스템
JP2015506617A (ja) * 2011-12-30 2015-03-02 マイクロソフト コーポレーション 状況に基づく機器動作の予測
US20150111603A1 (en) * 2013-10-18 2015-04-23 Apple Inc. Mobile device with applications that use a common place card to display data relating to a location

Also Published As

Publication number Publication date
WO2017021940A1 (en) 2017-02-09
US20170041437A1 (en) 2017-02-09
US20170039291A1 (en) 2017-02-09
US9794374B2 (en) 2017-10-17
EP3332384A4 (en) 2018-06-13
KR102558153B1 (ko) 2023-07-24
US10582011B2 (en) 2020-03-03
EP3332384A1 (en) 2018-06-13

Similar Documents

Publication Publication Date Title
KR102558153B1 (ko) 컨텍스트 데이터를 기반으로 하는 어플리케이션 카드들
US11012392B2 (en) Content delivery control
CN107710157B (zh) 多租户计算系统以及多租户计算系统的计算机实现方法
CN115174733B (zh) 一种界面显示方法、装置及设备
JP6257124B2 (ja) 個人情報のジオコーディングのための方法、媒体及びシステム
RU2678077C2 (ru) Способ отрисовки поисковых результатов на карте, отображаемой на электронном устройстве
US11425763B2 (en) Cloud hosted device instances method and apparatus
CN104520851A (zh) 基于电子表格应用中的数据点生成查询
KR101657379B1 (ko) 원격 환경에 대해 데이터 엔트리 콘텐츠를 제공하기 위한 방법 및 장치
US11093693B2 (en) Hierarchical navigation control
US20190258447A1 (en) User interface and security for coordinated program
CN106462486B (zh) 使用可操作洞察的用户体验诊断
CN106416318A (zh) 确定与邻近计算设备相关联的数据
KR20140052063A (ko) 멀티 레벨 지도 내의 복수의 층 상에 아이템을 디스플레이하기 위한 방법, 장치 및 컴퓨터 프로그램 제품
JP6543774B2 (ja) コンピューティングデバイスのプロパティに基づく情報のランク付け
JP2021120867A (ja) 融合関係ネットワークの構築方法、融合関係ネットワークの構築装置、電子デバイス、記憶媒体及びプログラム
CN110619085A (zh) 信息处理方法和装置
JP2020021219A (ja) 情報処理方法、情報処理装置及びプログラム
CN117033766A (zh) 业务处理行为预测方法、装置、计算机设备和存储介质
US10270671B2 (en) External process user interface isolation and monitoring
CN107431732B (zh) 一种计算机实现的方法、提供扫描选项的系统和存储介质
US20160364909A1 (en) Architecture impact analysis
CN117724780B (zh) 一种信息获取方法
US11736955B2 (en) Systems and methods for identifying a service qualification of a unit in a multi-unit building
US20240094889A1 (en) Overflow application tool for computing devices

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