U.S. patent application number 14/729644 was filed with the patent office on 2017-12-21 for graph-driven authoring in productivity tools.
The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Pradeep CHILAKAMARRI, Bernhard S.J. KOHLMEIER, Ashok KUPPUSAMY, Bjorn OLSTAD.
Application Number | 20170364575 14/729644 |
Document ID | / |
Family ID | 56131643 |
Filed Date | 2017-12-21 |
United States Patent
Application |
20170364575 |
Kind Code |
A9 |
KOHLMEIER; Bernhard S.J. ;
et al. |
December 21, 2017 |
GRAPH-DRIVEN AUTHORING IN PRODUCTIVITY TOOLS
Abstract
Systems and techniques for graph-driven authoring in
productivity applications can include using context of a user of a
productivity application, the existing content of the user's
document or an expression input with a command for finding relevant
documents, and a date/time to obtain a set of results of relevant
documents. The relevant documents include documents associated with
people known to the user that contain content relevant to the
topic(s) and/or entities from the context and that are current.
Inventors: |
KOHLMEIER; Bernhard S.J.;
(Seattle, WA) ; CHILAKAMARRI; Pradeep; (Seattle,
WA) ; OLSTAD; Bjorn; (Oslo, NO) ; KUPPUSAMY;
Ashok; (Issaquah, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Prior
Publication: |
|
Document Identifier |
Publication Date |
|
US 20160357842 A1 |
December 8, 2016 |
|
|
Family ID: |
56131643 |
Appl. No.: |
14/729644 |
Filed: |
June 3, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14499195 |
Sep 28, 2014 |
|
|
|
14729644 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/2477 20190101;
G06F 16/285 20190101; G06F 16/24578 20190101; G06Q 10/10 20130101;
G06F 16/24575 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30; G06Q 10/10 20120101 G06Q010/10; G06F 3/0481 20130101
G06F003/0481; G06F 17/27 20060101 G06F017/27; G06F 17/21 20060101
G06F017/21; G06F 7/08 20060101 G06F007/08; G06F 3/0484 20130101
G06F003/0484; G06T 11/20 20060101 G06T011/20; G06F 17/22 20060101
G06F017/22 |
Claims
1. A system comprising: a processing system; a storage system
comprising one or more computer readable storage media; a display;
and a productivity application stored on the storage system that
when executed by the processing system directs the processing
system to: generate a request for reusable content, the request
comprising a user identifier of a user of the productivity
application and at least one identifiable entity; communicate the
request to a service; and receive a set of ranked results
identifying documents comprising at least one relevant document
having an associated related user identifier of a related user
having a connection to the user of the productivity application,
wherein content of the documents are relevant to the at least one
identifiable entity.
2. The system of claim 1, wherein the documents identified in the
set of ranked results comprise documents of at least two file
types.
3. The system of claim 2, wherein the at least two file types
comprise two or more of a word processing document format type, a
spread sheet document format type, and a presentation document
format type.
4. The system of claim 2, wherein the at least two file types
comprise at least a file format for the productivity
application.
5. The system of claim 1, wherein the documents are current based
on a timestamp associated with the request.
6. The system of claim 5, wherein the timestamp is communicated
with the request to the service.
7. The system of claim 1, wherein the productivity application
further directs the processing system to identify the at least one
identifiable entity by analyzing content in an expression received
via a search bar of a graphical user interface of the productivity
application.
8. The system of claim 1, wherein the productivity application
further directs the processing system to identify the at least one
identifiable entity by analyzing content in a document of the user
of the productivity application.
9. A method for graph-driven authoring in productivity
applications, the method comprising: communicating a request for
reusable content to a service, the request comprising a user
identifier of a user of a productivity application, content having
at least one identifiable entity, and a timestamp; and receiving a
set of ranked results identifying documents comprising at least one
relevant document having an associated related user identifier of a
related user having a connection to the user of the productivity
application, wherein content of the documents including the at
least one relevant document are relevant to the at least one
identifiable entity, and wherein the documents are current based on
the timestamp.
10. The method of claim 9, further comprising identifying the at
least one identifiable entity by analyzing content in an expression
received via a search bar of a graphical user interface of the
productivity application.
11. The method of claim 9, further comprising identifying the at
least one identifiable entity by analyzing content in the document
of the user.
12. The method of claim 9, wherein the documents identified in the
set of ranked results comprise documents of at least two file
types.
13. The method of claim 12, wherein the at least two file types
comprise two or more of a word processing document format type, a
spread sheet document format type, and a presentation document
format type.
14. The method of claim 9, further comprising: receiving the
content having the at least one identifiable entity via a search
bar of the productivity application.
15. One or more computer readable storage media having instructions
stored thereon that when executed by a processing system, direct
the processing system to: display a graphical user interface for a
productivity application; in response to receiving, via the
graphical user interface, a command for finding relevant documents,
generate and communicate a request for reusable content to a
service, the request comprising a user identifier of a user of the
productivity application and at least one identifiable entity; and
in response to receiving ranked results identifying relevant
documents for the reusable content, display a representation of one
or more of the relevant documents in an information pane of the
graphical user interface, wherein at least one of the relevant
documents has an associated related user identifier of a related
user having a connection to the user of the productivity
application.
16. The media of claim 15, wherein the relevant documents comprise
documents of at least two file types.
17. The media of claim 16, wherein the at least two file types
comprise two or more of a word processing document format type, a
spread sheet document format type, and a presentation document
format type.
18. The media of claim 15, wherein the instructions to generate and
communicate the request for reusable content to the service
comprise instructions that direct the processing system to: extract
content from a document opened with the productivity application to
provide the at least one identifiable entity with the request;
wherein the relevant documents are received from the service and
comprise documents having user identifiers associated therewith
that correspond to people having connections to the user of the
productivity application and content therein that are relevant to
at least one entity, at least one topic, or both from the content
from the document.
19. The media of claim 15, wherein the instructions to generate and
communicate the request for reusable content to the service
comprise instructions that direct the processing system to: extract
content from an expression received via a search bar of the
graphical user interface; wherein the relevant documents are
received from the service and comprise documents having user
identifiers associated therewith that correspond to people having
connections to the user of the productivity application and content
therein that are relevant to at least one entity, at least one
topic, or both from the expression received via the search bar.
20. The media of claim 19, further comprising instructions that
direct the processing system to identify the at least one
identifiable entity by analyzing content in the expression received
via the search bar of the graphical user interface of the
productivity application.
Description
BACKGROUND
[0001] Productivity applications can include a variety of tools and
information that facilitate the accomplishment of a variety of
tasks related to producing content, including creating and editing
content within different types of documents such as word processing
documents, spreadsheets, and presentations. In some cases,
productivity applications can be considered to be, or to include,
content authoring applications.
[0002] While creating and editing content within a productivity
application, a user may start with a blank page, information
"borrowed" from other sources, or from an existing document.
Finding relevant information from online, remote, or local sources
can be a challenge.
BRIEF SUMMARY
[0003] Techniques and systems for facilitating content authoring
are presented. Content from previously prepared documents can be
easily reused and incorporated into a user's document to initiate,
supplement, and/or enhance the creation process.
[0004] Documents that are relevant to a topic for a user's
document, that were prepared or modified by the user or a related
user, and that are determined to be current can be provided to the
user of a productivity application for possible reuse in the user's
document.
[0005] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used to limit the scope of the claimed
subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] FIGS. 1A and 1B illustrate data structure representing
relationships between people; FIG. 1A illustrates an example
company hierarchy and FIG. 1B illustrates a representative graph
data structure based on the example hierarchy that may be used to
drive authoring in productivity tools.
[0007] FIGS. 2A-2C illustrate a graphical user interface and
corresponding actions taken by a productivity application providing
a graph-driven content authoring experience in which the
productivity application determines relevant content for use within
the productivity application.
[0008] FIGS. 3A and 3B illustrate example processes for finding
relevant references for graph-driven authoring in productivity
tools.
[0009] FIGS. 4A-4E illustrate a graphical user interface and
corresponding actions taken by a productivity application to
provide a graph-driven content authoring experience.
[0010] FIG. 5 illustrates an operating environment in which
graph-driven authoring for productivity applications may be carried
out.
[0011] FIG. 6 illustrates components of a computing device that may
be used in certain implementations described herein.
[0012] FIG. 7 illustrates components of a computing system that may
be used to implement certain methods and services described
herein.
DETAILED DESCRIPTION
[0013] Techniques and systems for facilitating content authoring
are presented. Content from previously prepared documents can be
easily reused and incorporated into a user's document to initiate,
supplement, and/or enhance the creation process. It can be
difficult to recall documents that may be relevant to a content
authoring task (e.g., the purpose for using a productivity
application) because a user may not be aware of or remember if
relevant content has been previously prepared by that user or
another user (whose content the original user has access).
[0014] Graph-driven authoring in a productivity application can
provide assistance for a user of the productivity application with
finding relevant information as well as handling the "cold start"
scenario, where there is insufficient information for a system to
use to draw inferences for providing a recommendation of content to
a user.
[0015] In the context of the graph-driven authoring, the
relationship between authors of content provides a primary
indicator of relevance. For example, if someone who is a peer, a
student in the same class, or a colleague in the user's
organization authored content, this content would be considered to
have a higher likelihood of being relevant to the user's own work.
Relevant documents are those that the user is most likely to want
to re-use or re-purpose as part of their own document. In this
manner a known source (in this case, known by the user) can be
considered a credible source and have a higher likelihood of being
a useful and relevant source for documents.
[0016] A graph structure may be used to represent relationships
between people and things. The graph structure may be implemented
in any system with users that can be identified within the system
and have the relationships between them identified. For example, a
company may have employees that can be identified by unique user
identifiers and may further include a company hierarchy where the
employees are assigned groups and managers and/or are assigned
roles. Another example includes students who may be identified in a
school system with unique identifiers and have information that can
be used to group students and faculty together such as class
schedules, majors, and departments.
[0017] FIGS. 1A and 1B illustrate data structure representing
relationships between people; FIG. 1A illustrates an example
company hierarchy and FIG. 1B illustrates a representative graph
data structure based on the example hierarchy that may be used to
drive authoring in productivity tools. Referring to FIG. 1A, a
company may have a hierarchy that contains Manager 1 who oversees a
group of User 1, User 2, User 3, and User 4; and Manager 2 who
oversees a group of User 5 and User 6. As shown in FIG. 1B, a graph
structure representing relationships between these people shows a
connection between Manager 1 and each of the members of that group,
a connection between each of the members of the group, a connection
between Manager 2 and each of the members of that group, and a
connection between each of the members of that group.
[0018] The illustrated graph structure also shows connections
between the people and some of the documents that they authored or
co-authored. For example, User 1 is shown connected to Doc 1, Doc
2, and Doc 5; User 2 is shown connected to Doc 2, User 3 is
connected to Doc 3, User 4 is connected to Doc 4, and User 5 is
connected to Doc 5, Doc 6, and Doc 7. Here, the graph shows User 1
connected to User 5 even though these two users are not in the same
work group. This connection may have been generated in the graph
because User 1 and User 5 co-authored Doc 5. Accordingly, the
described graph structure encompasses both documents as well as
people. Thus, the graph contains information about the
relationships between people and their interactions with
documents.
[0019] Although the described techniques are specifically described
with respect to taking advantage of graph structures, the data may
alternatively be stored in other structures. In such alternative
embodiments, any suitable mechanism for searching may be used where
the data about user relationships, documents associated with those
users (by the users creating, modifying, or suitably interacting
with those documents), and the dates/times the users created,
modified, or suitably interacted with those documents are
available.
[0020] FIGS. 2A-2C illustrate a graphical user interface and
corresponding actions taken by a productivity application providing
a graph-driven content authoring experience in which the
productivity application determines relevant content for use within
the productivity application.
[0021] Referring to FIG. 2A, a user may have authored content 200
within a document 201. Content 200 may be input to the document 201
from a graphical user interface 210 of a productivity application
as well as through input mechanisms available from the productivity
application (e.g., copy and paste, input of text via a keyboard,
input via a web clipper, and speech recognition as some examples).
The graphical user interface 210 can be rendered on a display
screen associated with a computing device (which can be a computing
system 600 such as described with respect to FIG. 6). In some
cases, the display screen may be physically connected to a
processing system of the computing device, for example, by cables
or by being built into a package containing the processing system
of the computing device. In some cases, the display screen may be
wirelessly connected to the processing system. In some cases, the
display screen is any surface on which the graphical user interface
is projected. Such surfaces include a wall, an object surface, a
body surface, or even what appears to be in space (e.g., a
"hovering display" using a projector and prism or a virtual retinal
display).
[0022] In the example illustrated in FIG. 2A, the user, C.B. 202
has written something to do with the Chateau company and the
service principles that the staff exhibited. According to an
implementation, the productivity application can include a search
bar 203 as part of the graphical user interface 210 for editing a
document (such as document 201).
[0023] The search bar 203 can be a simple search bar that accepts
text queries, a "smart" search bar that attempts to predict the
text being input, and/or further include a drop down menu of
options for quick selection. The search bar 203 provides an input
field for a user to make a request to the productivity application
or express some form of intent for using the productivity
application. The search bar 203 can receive the user's
expression/request via a typing keyboard, a touch keyboard or
display, a motion gesture, a touch gesture, a stylus (e.g.,
"inking"), head, eye and gaze tracking, brain activity, or voice
input. In some cases, the input field can be provided as part of a
menu, tool bar, task bar/pane, or other graphical user interface
element located on a same or different visual display as a content
authoring surface of a productivity application. Although specific
implementations are described with respect to graphical user
interfaces, it should be understood that natural user interface
(NUI) components may be used in addition to or in place of
graphical user interface components.
[0024] In this example case, if the user indicates that the search
bar 203 is being used, for example, by touching (215) the search
bar or clicking in the search bar input field, a drop down menu 220
as shown in FIG. 2B may appear. An option for finding relevant
documents (named in the example as "documents around me") can be
provided.
[0025] As shown in FIG. 2B, the drop down menu 220 can include a
selection of "documents around me" 221. It should be understood
that the use of a drop down menu 220 from a search bar 203 and the
text "documents around me" 221 are not intended to be limiting.
Indeed, the specific words or icon or entry point for this command
may vary depending on implementation. Commands may be initiated by
a user via, for example, selection of an icon, voice input,
gestural or touch input, and the like. The availability of such a
command enables the productivity application to perform certain
techniques in response to a user's explicit request.
[0026] Thus, in response to receiving an indication of a command
(through any suitable input) for "documents around me" (e.g., by an
indication of a selection 225), the productivity application can
perform the process illustrated in FIG. 3A or FIG. 3B and reflected
in the graphical user interface illustrated in FIG. 2C.
[0027] FIGS. 3A and 3B illustrate example processes for finding
relevant references for graph-driven authoring in productivity
tools. Referring to FIG. 3A, in response to receiving the
indication of a command for relevant documents (300), which in the
case illustrated in FIGS. 2A-2C is a request for content that may
be relevant to the user's own document's content, the productivity
application can generate a request to a service to retrieve
relevant documents. In the example process illustrated in FIG. 3A,
to generate the request, the productivity application performs
extractions of the document to determine context (301); and
formulates one or more queries (302). Here, at least the user's
information (e.g., user identifier for C.B. 202) and the content
200 of the user's document 201 are used to provide context and
refine the query formulated by the productivity application. In
some cases, there is no content in the document itself and the
productivity application uses the content of an expression entered
via a search bar 203 to extract any identifiable entities or
topics.
[0028] The productivity application then communicates the query (or
queries) to a service that can search a graph or other connected
data structure for documents relevant to the user (303). After
communicating the request, the productivity application receives
ranked relevant documents from the service (304).
[0029] Alternatively, referring to FIG. 3B, in response to
receiving the indication of a command for relevant documents (310),
which in the case illustrated in FIGS. 2A-2C is a request for
content that may be relevant to the user's own document's content,
the productivity application generates a request from the content
and information associated with the user's document, and
communicates the request containing at least the user's information
(e.g., user identifier for C.B. 202) and the content 200 of the
user's document 201 and/or an expression entered into the search
bar 203 to a service that formulates queries and can search a graph
or other connected data structure for documents relevant to the
user (311). After generating and communicating the request, the
productivity application receives ranked relevant documents from
the service (312). Here, the productivity application may simply
communicate the user's information 202 and text in the document
and/or the search bar to the service so the service performs
extractions, query formulations, and graph search. In some of such
cases, the service may also return information indicating the
extracted entities and topics.
[0030] As described with respect to FIG. 1B, a graph involves a
searchable data structure that indicates (and connects) to a user
the people that have a relationship to that user and the documents
with which those people have had interactions (e.g., modified,
created, etc.). As an illustration, the user, C.B. 202, may be
considered "close" to Pradeep 232 by being close in the company's
organization structure (e.g., by being part of a same group and/or
have a same manager--see also FIG. 1A) and in their interactions
(e.g., by both having worked on same documents, such as in a
reviewing capacity or co-authoring--see also User 1 and User 5 in
FIG. 1B). Based on these indicators for closeness, it can be
expected that there is a relatively high likelihood that a document
Pradeep 232 worked on (or interacted with to a certain extent) is
relevant to something on which C.B. 202 is working.
[0031] To improve the relevancy of the documents returned by the
search, a temporal aspect is included. For example, the
productivity application can provide timestamp information so that
the service can use the date and/or time of the request to search
for current content. In this manner, the most current relevant
documents can be returned to a user.
[0032] The temporal aspect (by providing the timestamp or other
mechanism for indicating the date), enables current information
from the credible sources to be provided. Current does not require
a date within a particular amount of time from that indicated by
the timestamp (although that may be the case); rather, the
information can be current if it is the most recent version or the
document most recently accessed or modified.
[0033] In many cases, the ability to identify relevant documents
relies on a graph structure where the user can be authenticated and
people, documents, and other bits of information with a connection
to the user can be identified by traversing the graph. For example,
relevant people can be connected to the user in the graph structure
based on their relationship determined (with permission) from email
communications (e.g., who is a common recipient or sender, who is a
contact), from social media connections, and activity on
servers.
[0034] In a corporate environment, relevant people can be
identified from organizational structures and hierarchies (often
managed by human resource and/or rights management software). In an
academic environment, students may be mapped to majors, classes,
etc. and students may be associated with each other based on common
subject areas and interests. A combination of hierarchical
relationships and message interactions (e.g., people who are
senders or recipients of communications with the user) may be used
to identify relevant people (or those more closely connected on the
graph).
[0035] In some cases, the service can identify relevant content
without using a graph structure, for example by performing a search
at a search engine using the context to refine the search
query.
[0036] There could also be people who the user does not have any
interactions with, but who would have materials useful for the
user's document. For example, the user may be putting together a
presentation about solving a certain problem. Someone in customer
support may have a presentation with some slides that are relevant
even though the user does not know person from customer support.
However, since the person in customer support belongs to the user's
company (e.g., is part of the hierarchy) and the content is found
to be relevant to the context of the user's document, the customer
support person's presentation may return as part of the
results.
[0037] Accordingly, the results do not only contain documents
authored or edited (or otherwise sufficiently interacted with) by a
person closely associated with the user, but also documents that
are relevant in other ways (e.g., significant context
relevance--and which could be authored or edited by someone in the
hierarchical organization to which the user belongs).
[0038] It should be noted that in an enterprise, there may be
documents that not all users have access to based on their assigned
roles (rights management). Projects that may be given limited
access in the organization can still be protected from being
returned in the results since the user's identifier is part of the
query and can be used to authenticate access to certain documents
when that user has access rights to those documents or sources.
[0039] Returning to FIG. 2C and the graphical user interface 210 at
the client, it can be seen that certain terms and phrases may be
extracted from the content 200 in the user's document 201 during
the step of determining context (301). The terms here are
"Chateau", "phone to complain", "best service", "TripAdvisor", and
"luxury". These terms and phrases can be identified by the
productivity application when determining context (301), for
example by the application analyzing documents for key words and
using disambiguation to recognize terms and phrases. In some cases,
the productivity application can, via any suitable machine learning
technique, learn enterprise-specific terminology and acronyms. Of
course, in some implementations, the context extraction (and
associated techniques) can be carried out by the service instead of
by the client. For example, after the productivity application
communicates the user id and content to the service (311).
[0040] The content (and the structure such as headings) of the
document can be analyzed to identify entities, topics, and key
phrase extractions. In the example shown in FIG. 2C, "phone to
complain" is a key phrase and "TripAdvisor" is an entity.
[0041] The extraction of key phrases is trained on the enterprise
graph. The system (providing the service) can automatically and in
an unsupervised manner train on a corporation specific corpus. A
corpus of an enterprise has different specific entities,
abbreviations, and concepts (e.g., code or project names) than a
publicly available corpus. Therefore, a training system may be
provided inside the enterprise firewall to train on documents in an
unsupervised fashion to learn to recognize the entities with the
appropriate concepts understood and tied to the terms.
[0042] The content in the document may contain various entries,
such as text, words, strings, numbers, symbols, images and the
like. An entry may be recognizable as an entity based on various
characteristics.
[0043] The analysis of the document can include searching for
recognizable entities and/or domains, for example by named entity
recognizers and dictionary look-ups. A domain is a category for a
series of entities (or items). For example, a domain may be books.
An entity refers to a concept (person, organization, location,
service, temporal, numeric, monetary etc.) that a document (or
other file) is discussing or describing. In the book domain
example, they entity may be a specific book. The aspects are the
properties or attributes of the entity that are mentioned about the
entity and which may be of interest to the user. In the case of a
book as an entity, the genre or the premise/plot are examples of
the aspects. It should be understood that the term "entity" should
not be restricted to specific named entities and may refer to broad
concepts such as "sales data" or "pitch deck".
[0044] A topic is a distribution of words and that can correspond
to an aspect of an entity (and sometimes the entity itself). A
topic serves as a subject or category of related information. The
topic of an expression can be used for entity disambiguation (e.g.,
using Latent Dirichlet Allocation (LDA) and its hierarchical
variants). Entity disambiguation refers to the identifying of
entities from text and their labeling with one of several entity
type labels. The text can be referred to as a surface form. An
entity can be referred to by multiple surface forms, and a surface
form can refer to multiple entities. For example, the entity
Michael Jordan may be referred to as "No. 23" and "MJ"; and the
surface form "No. 23" may refer to multiple entities such as the
two basketball players (Michael Jordan and Lebron James), the
number 23, and the movies (23 and The Number 23). In some cases,
Wikipedia may be used as a comprehensive reference catalog for
large-scale entity disambiguation. In other cases, the enterprise
corpus can be used to facilitate the entity disambiguation.
[0045] The identified terms and phrases can then be used to
formulate the one or more queries communicated with the user
information to the service (302, 303), for example using key words,
entities and/or topics. The service then returns the results from
the various sources it searches within the enterprise and, in some
cases, outside the enterprise. The results can be provided in the
form of a set of ranked results that identify the relevant
documents.
[0046] The ranking provided by the system searching the graph for
relevant content may involve identifying how close the source of
the document is to the user and potentially the amount of content
or similarity of the content to the topic of the user's content.
Documents authored by people that the user knows (as understood by
the system) can be ranked higher than documents authored by people
the user does not know.
[0047] Identifying, via the service, the people that the user knows
in view of the context and the context itself (e.g., "phone to
complain", "best service", "TripAdvisor") in view of other
documents available within the enterprise results in relevant
information being retrieved and presented to the user, for example
in an information pane 230 of the productivity application
graphical user interface 210. The productivity application may
receive a certain number of results or all of the results that fit
a particular criteria. In some cases there may be more results
received than the graphical user interface 210 is able to show in a
space provided by the information pane 230. Additional
functionality may be provided to enable scrolling or access to more
results than fit on a page when that occurs.
[0048] Returning to the illustration in FIG. 2C, a paper 231
written by Pradeep 232, a member of the same group in the
organization and a frequent co-author and instant messenger with
C.B. 202, is shown as a top result in the information pane 230
within the productivity application graphical user interface 210.
This paper may be presented as a high ranked result because of the
relationship between C.B. 202 and Pradeep 232 and the relevancy of
the content of Pradeep's document 231 to the content 200 of C.B.'s
document 201.
[0049] The temporal aspect can also be reflected in the information
displayed in the information pane, for example by indicating the
date of an activity performed with respect to the document. In the
illustrated example, the information pane 230 indicates that
Pradeep modified the document yesterday 233.
[0050] In the optional use of external sources, the illustrated
example shows that the terms "Chateau" and "luxury" may have been
used to return information from the Chateau's website 235. The
result of the external search (e.g., information from website 235)
can also be provided to the user, for example in the same pane 230
as the ranked relevant documents from internal sources (e.g.,
document 231). This scenario can be useful when the user is
referencing something outside the company.
[0051] For the external search, the user identifier may not be
included in the queries that the server conducts because there may
not be a source with a relationship to the user. However, in those
cases, the query includes the context terms and, optionally, the
date/time information so that the results can be ranked not only by
content, but also by temporal relationship (e.g., how current the
information is).
[0052] It should be understood that the graphical user interface
for the productivity application (and the information pane) may be
implemented in more than one window (but as part of the same
instance) and even across more than one device, for example where a
user is accessing the document and/or the productivity application
using multiple screens or multiple devices. One example of multiple
devices can entail a command menu interface on a first device such
as a watch or mobile phone (e.g., which displays a search field
and/or the information pane) and an authoring surface on a second
device such as a tablet or desktop computer (or docked laptop
computer) with monitor(s) (e.g., which displays the document).
[0053] FIGS. 4A-4E illustrate a graphical user interface and
corresponding actions taken by a productivity application to
provide a graph-driven content authoring experience. Referring to
FIG. 4A, in a graphical user interface 400 of a presentation
productivity application, an initial state may be a blank or new
presentation (e.g., a default state for a "new" document). For this
illustrative scenario, the user, C.B. 401, of the presentation
productivity application is writing a new Contoso company sales
memo on a presentation slide 402. The graphical user interface for
the presentation productivity application can include a search bar
403 such as described with respect to the search bar 203 of FIGS.
2A-2C.
[0054] In particular, the search bar 403 provides an input field
for a user to make a request to the productivity application or
express some form of intent for using the productivity application.
The search bar 403 can receive the user's expression/request via a
typing keyboard, a touch keyboard or display, a motion gesture, a
touch gesture, a stylus (e.g., "inking"), head, eye and gaze
tracking, brain activity, or voice input. In some cases, the input
field can be provided as part of a menu, tool bar, task bar/pane,
or other graphical user interface element located on a same or
different visual display as a content authoring surface of a
productivity application. Although specific implementations are
described with respect to graphical user interfaces, it should be
understood that natural user interface (NUI) components may be used
in addition to or in place of graphical user interface
components.
[0055] In this example case, the user inputs "New contoso sales
memo" 405 in the input field of the search bar 403. The input of
such a phrase may be sufficient as a command to obtain relevant
documents or a separate command such as via selection of an icon,
voice input, gestural or touch input and the like may initiate a
process by the productivity application for the graph-driven
authoring experience. For example, a drop down menu 420 can provide
a number of actions available to the user, including a selection of
seeing related documents 421, which may be selected (430) as shown
in FIG. 4B in order to initiate a command for the productivity
application to perform a process similar to that illustrated in
FIG. 3A or 3B. Since there is no content in the presentation
document to obtain context, in response to receiving the indication
of a command for relevant documents, the terms input to the search
bar 403 are used to generate the request to the service. The terms
may be directly provided to a service (e.g., as in step 311), which
determines context and formulates queries to search a graph or
other connected data structure, or the productivity application
determines the context (e.g., as in step 301). In either case,
terms and phrases are identified from the input through entity and
topic disambiguation.
[0056] Here, at least the user's information (e.g., user identifier
for C.B. 401) and the content, "New contoso sales memo" 405 input
to the search bar 403 are used to provide context and refine the
query formulated by the productivity application. In some cases
where the productivity application determines the context (e.g., as
in step 301), the context is provided to the service (and may also
include some direct content). In other cases where the productivity
application determines the context (e.g., as in step 301), the
productivity application formulates the query or queries (e.g., as
in step 302) and then communicates the query (or queries) to the
service that can search a graph or other connected data structure
for documents relevant to the user (303). After the request for
documents has been sent to the service, the productivity
application receives ranked relevant documents from the service
(304, 312).
[0057] For example, the productivity application may have
determined that the input "New contoso sales memo" 405 is about the
company "Contoso" and a sales memo, and such entities/topics (the
context) can be communicated to the service to obtain relevant
documents from various sources within the enterprise. Date/time
information can also be included in order to facilitate the
temporal aspect of the results.
[0058] In some cases, the productivity application can send the
input directly from the user to the service and the service
determines one or more topics from the content of the search
bar.
[0059] Identifying, via the service, the people that the user C.B.
401 knows in view of the context and the context itself (e.g.,
"Contoso" and "sales memo") in view of other documents available
within the enterprise results in relevant information being
retrieved and presented to the user, for example in an information
pane 440 of the productivity application graphical user interface
400. It should be further understood that the process may be
initiated without an explicit user query (e.g., by an expression
input to the search box or highlighted from the content in the
document). For instance, a user may be able to directly access the
information pane 440 while in the middle of their authoring
process. The application may then generate a set of relevant
results based on the content that is in the document at the time of
the user's access of the information pane 440.
[0060] In the example illustrated in FIG. 4C, the information pane
440 indicates the topic 441 for the results and lists the
identified ranked results that were returned by the service. Here,
two documents are shown, one presentation document 442 from Pradeep
443 and one spread sheet document 444 from Bernhard 445. These
results may have been selected by the service based on the
relationship of Pradeep and Bernhard to the user C.B. combined with
the relevancy of the documents to "Contoso Sales Memo". The
temporal aspect is reflected in the indication that the FY14
Contoso Report 442 was modified by Pradeep yesterday 446 and that
the Sales overview metrics 444 was modified by Bernhard today 447.
It should be understood that the documents of the FY14 Contoso
Report 442 and the Sales overview metrics 444 do not necessarily
need to be owned by or originally authored by Pradeep or Bernhard,
only that they had a sufficient interaction with those documents to
indicate a relationship on the graph.
[0061] From the information pane 440 of FIG. 4C, the user may
select (450) the FY14 Contoso report 442 for insertion of all or
some of the content of that slide deck. After inserting selected
slides from the FY14 Contoso report 442, for example, slides 454,
455, and 456 from the FY14 Contoso report 442, the user may select
(470) the Sales overview metrics 444 for insertion of some or all
of the content of that spread sheet as illustrated in FIG. 4D. The
user may insert selected charts from the spreadsheet into one or
more slides, resulting in slide 474, for example, as illustrated in
FIG. 4E.
[0062] As shown, the productivity application enables the user to
reuse content from a variety of content and application types (file
types). A "file type" or "file format type" refers to the different
file formats available for encoding information for storage in a
computer file. Examples of file types for "documents" include
publishing document file formats, word processing document file
formats, graphics file formats, presentation document file formats,
spreadsheet document file formats, and webpage document file
formats.
[0063] FIG. 5 illustrates an operating environment in which
graph-driven authoring for productivity applications may be carried
out. Referring to FIG. 5, operating environment 500 may be involve
a service architecture with an application platform 501 and a
service platform 511. Local application 502 is executed within the
context of application platform 501, while service 512 is hosted by
and runs within the context of service platform 511.
[0064] Local application 502 is representative of any software
application, module, component, or collection thereof, capable of
implementing a graphical user interface 503 such as graphical user
interfaces 210 and 400 (and corresponding productivity
applications) and performing processes 300 and 310. Examples of
applications in which the described graph-driven authoring
techniques may be provided include, but are not limited to, word
processing applications, spreadsheet applications, presentation
applications, web browsers, email applications, blogging and
micro-blogging applications, social networking applications, and
gaming applications. Indeed, the described techniques are suitable
for a variety of productivity applications.
[0065] Examples of productivity applications include the Microsoft
Office.RTM. suite of applications from Microsoft Corp., including
Microsoft Word.RTM., Microsoft Excel.RTM., Microsoft
PowerPoint.RTM., as well as the web application components thereof,
all registered trademarks of Microsoft Corp.; Google Docs (and
Google Drive.TM.); the Apache OpenOffice.TM. available from the
Apache Software Foundation; the LibreOffice.RTM. suite of
applications available from The Document Foundation, registered
trademarks of The Document Foundation; and the Apple iWork.RTM.
suite of applications from Apple Inc, including Apple Pages.RTM.,
Apple Keynote.RTM., and Apple Numbers.RTM., all registered
trademarks of Apple Inc.
[0066] The term "productivity application" may in some cases by
synonymous with "content authoring application" or "content
authoring tool". Since the described systems and techniques focus
on applications and tools through which content is being authored,
there is no distinction intended between these terms and such terms
may be used interchangeably herein.
[0067] Local application 502 may be a browser-based application
that executes in the context of a browser application. In some
implementations, local application 502 may execute in the context
of or in association with a web page, web site, web service, or the
like. However, local application 502 may also be a locally
installed and executed application, a streamed application, a
mobile application, or any combination or variation thereof. Local
application 502 may be implemented as a standalone application or
may be distributed across multiple applications.
[0068] Application platform 501 with local application 502 can
represent a client computing device with a productivity application
providing a graph-driven authoring experience as described herein.
Application platform 501 is representative of any physical or
virtual computing system, device, or collection thereof capable of
hosting local application 502 (and capable of employing processes
300 described with respect to FIG. 3A and processes 310 described
with respect to 3B). Examples include, but are not limited to,
smart phones, laptop computers, tablet computers, desktop
computers, hybrid computers, gaming machines, smart televisions,
entertainment devices, Internet appliances, virtual machines,
wearable computers (e.g., watch, glasses), as well as any variation
or combination thereof, of which computing system 600 illustrated
in FIG. 6 is representative.
[0069] Service platform 511 with service 512 can represent the
service that carries out the queries of a graph on behalf of the
productivity application in order to provide relevant documents to
the user of the productivity application. For example, the
productivity application, executing processes 300, can communicate
a query 520 to the service 512 on the service platform 511. The
query 520 may be a search query or a graph query.
[0070] A document graph storing the information about connected
people and documents may be stored in a resource 521 accessible by
the service platform 511. In addition service platform 511 can
host, be integrated with, or be in communication with enterprise
resources 522 (including cloud-based resources 523) such as
contacts databases, Active Directory database, file storage, and
the like. Example resource include, but are not limited to
Microsoft SharePoint, Microsoft OneDrive, and Dropbox. By
communication between service platform 511 and application platform
501, Service 512 may also be able to carry out a search of
resources local to the application platform 501. In some cases,
service platform 511 can further be in communication with Internet
resources 524 such as resources 525, 526, and 527 available through
a search service 527, containing, for example, web sites, web
pages, contacts databases, Active Directory database, lists, maps,
accounts, and the like.
[0071] Accordingly, service 512 can carry out processes to search
the available resources for relevant documents (and in some cases
other content) based on the user and the content (having
identifiable entity and topic) provided from the productivity
application (as well as the date) and provide ranked results 530 to
the local application 502. Service 512 may be able to search (with
permission) any database that contains content that a user may want
to reuse.
[0072] Service platform 511 is representative of any physical or
virtual computing system, device, or collection thereof capable of
hosting all or a portion of service 512. Examples of service
platform 511 include, but are not limited to, web servers,
application servers, rack servers, blade servers, virtual machine
servers, or tower servers, as well as any other type of computing
system, of which computing system 700 of FIG. 7 is representative.
In some scenarios, service platform 511 may be implemented in a
data center, a virtual data center, or some other suitable
facility. In some cases, service platform 511 may be implemented
similarly to computing system 600.
[0073] In some cases, local application 502 may be considered
remote from service 512 in that each are implemented on separate
computing platforms. In such situations, local application 502 and
service 512 may communicate by way of data and information
exchanged between application platform 501 and service platform 511
over a suitable communication link or links (not shown). In other
cases, the features and functionality provided by local application
502 and service 512 can be co-located or even integrated as a
single application.
[0074] FIG. 6 illustrates components of a computing device that may
be used in certain implementations described herein; and FIG. 7
illustrates components of a computing system that may be used to
implement certain methods and services described herein.
[0075] Referring to FIG. 6, system 600 may represent a computing
device such as, but not limited to, a personal computer, a reader,
a mobile device, a personal digital assistant, a wearable computer,
a smart phone, a tablet, a laptop computer (notebook or netbook), a
gaming device or console, an entertainment device, a hybrid
computer, a desktop computer, or a smart television. Accordingly,
more or fewer elements described with respect to system 600 may be
incorporated to implement a particular computing device.
[0076] System 600 includes a processing system 605 of one or more
processors to transform or manipulate data according to the
instructions of software 610 stored on a storage system 615.
Examples of processors of the processing system 605 include general
purpose central processing units, application specific processors,
and logic devices, as well as any other type of processing device,
combinations, or variations thereof. The processing system 605 may
be, or is included in, a system-on-chip (SoC) along with one or
more other components such as network connectivity components,
sensors, video display components.
[0077] The software 610 can include an operating system and
application programs such as a productivity application 620
providing a graph-driven authoring experience such as described
herein. Device operating systems generally control and coordinate
the functions of the various components in the computing device,
providing an easier way for applications to connect with lower
level interfaces like the networking interface. Non-limiting
examples of operating systems include Windows.RTM. from Microsoft
Corp., Apple.RTM. iOS.TM. from Apple, Inc., Android.RTM. OS from
Google, Inc., and the Ubuntu variety of the Linux OS from
Canonical.
[0078] It should be noted that the operating system may be
implemented both natively on the computing device and on software
virtualization layers running atop the native device operating
system (OS). Virtualized OS layers, while not depicted in FIG. 6,
can be thought of as additional, nested groupings within the
operating system space, each containing an OS, application
programs, and APIs.
[0079] Storage system 615 may comprise any computer readable
storage media readable by the processing system 605 and capable of
storing software 610 including the productivity application
620.
[0080] Storage system 615 may include volatile and nonvolatile,
removable and non-removable media implemented in any method or
technology for storage of information, such as computer readable
instructions, data structures, program modules, or other data.
Examples of storage media of storage system 615 include random
access memory, read only memory, magnetic disks, optical disks,
CDs, DVDs, flash memory, magnetic cassettes, magnetic tape,
magnetic disk storage or other magnetic storage devices, or any
other suitable storage media. In no case is the storage medium a
propagated signal or carrier wave.
[0081] Storage system 615 may be implemented as a single storage
device but may also be implemented across multiple storage devices
or sub-systems co-located or distributed relative to each other.
Storage system 615 may include additional elements, such as a
controller, capable of communicating with processing system
605.
[0082] Software 610 may be implemented in program instructions and
among other functions may, when executed by system 600 in general
or processing system 605 in particular, direct system 600 or the
one or more processors of processing system 605 to operate as
described herein.
[0083] In general, software may, when loaded into processing system
605 and executed, transform computing system 600 overall from a
general-purpose computing system into a special-purpose computing
system customized to retrieve and process the information for
facilitating content authoring as described herein for each
implementation. Indeed, encoding software on storage system 615 may
transform the physical structure of storage system 615. The
specific transformation of the physical structure may depend on
various factors in different implementations of this description.
Examples of such factors may include, but are not limited to the
technology used to implement the storage media of storage system
615 and whether the computer-storage media are characterized as
primary or secondary storage.
[0084] The system can further include user interface system 630,
which may include input/output (I/O) devices and components that
enable communication between a user and the system 600. User
interface system 630 can include input devices such as a mouse 631,
track pad (not shown), keyboard 632, a touch device 633 for
receiving a touch gesture from a user, a motion input device 634
for detecting non-touch gestures and other motions by a user, a
microphone for detecting speech (not shown), and other types of
input devices and their associated processing elements capable of
receiving user input.
[0085] The user interface system 630 may also include output
devices such as display screen(s) 635, speakers (not shown), haptic
devices for tactile feedback (not shown), and other types of output
devices. In certain cases, the input and output devices may be
combined in a single device, such as a touchscreen display which
both depicts images and receives touch gesture input from the user.
A touchscreen (which may be associated with or form part of the
display) is an input device configured to detect the presence and
location of a touch. The touchscreen may be a resistive
touchscreen, a capacitive touchscreen, a surface acoustic wave
touchscreen, an infrared touchscreen, an optical imaging
touchscreen, a dispersive signal touchscreen, an acoustic pulse
recognition touchscreen, or may utilize any other touchscreen
technology. In some embodiments, the touchscreen is incorporated on
top of a display as a transparent layer to enable a user to use one
or more touches to interact with objects or other information
presented on the display.
[0086] Visual output may be depicted on the display 635 in myriad
ways, presenting graphical user interface elements, text, images,
video, notifications, virtual buttons, virtual keyboards, or any
other type of information capable of being depicted in visual
form.
[0087] The user interface system 630 may also include user
interface software and associated software (e.g., for graphics
chips and input devices) executed by the OS in support of the
various user input and output devices. The associated software
assists the OS in communicating user interface hardware events to
application programs using defined mechanisms. The user interface
system 630 including user interface software may support a
graphical user interface, a natural user interface, or any other
type of user interface. For example, the interfaces for the
productivity application and/or the productivity tool for assisted
content authoring (and corresponding functionality) described
herein may be presented through user interface system 630.
[0088] Communications interface 640 may include communications
connections and devices that allow for communication with other
computing systems over one or more communication networks (not
shown). Examples of connections and devices that together allow for
inter-system communication may include network interface cards,
antennas, power amplifiers, RF circuitry, transceivers, and other
communication circuitry. The connections and devices may
communicate over communication media (such as metal, glass, air, or
any other suitable communication media) to exchange communications
with other computing systems or networks of systems. Transmissions
to and from the communications interface are controlled by the OS,
which informs applications of communications events when
necessary.
[0089] Computing system 600 is generally intended to represent a
computing system with which software is deployed and executed in
order to implement an application, component, or service for a
productivity tool as described herein. In some cases, aspects of
computing system 600 may also represent a computing system on which
software may be staged and from where software may be distributed,
transported, downloaded, or otherwise provided to yet another
computing system for deployment and execution, or yet additional
distribution.
[0090] Certain aspects described herein, such as those carried out
at service platform 511 may be performed on a system such as shown
in FIG. 7. Referring to FIG. 7, system 700 may be implemented
within a single computing device or distributed across multiple
computing devices or sub-systems that cooperate in executing
program instructions. The system 700 can include one or more blade
server devices, standalone server devices, personal computers,
routers, hubs, switches, bridges, firewall devices, intrusion
detection devices, mainframe computers, network-attached storage
devices, and other types of computing devices. The system hardware
can be configured according to any suitable computer architectures
such as a Symmetric Multi-Processing (SMP) architecture or a
Non-Uniform Memory Access (NUMA) architecture.
[0091] The system 700 can include a processing system 710, which
may include one or more processors and/or other circuitry that
retrieves and executes software 720 from storage system 730.
Processing system 710 may be implemented within a single processing
device but may also be distributed across multiple processing
devices or sub-systems that cooperate in executing program
instructions.
[0092] Storage system(s) 730 can include any computer readable
storage media readable by processing system 710 and capable of
storing software 720. Storage system 730 may be implemented as a
single storage device but may also be implemented across multiple
storage devices or sub-systems co-located or distributed relative
to each other. Storage system 730 may include additional elements,
such as a controller, capable of communicating with processing
system 710. Storage system 730 may also include storage devices
and/or sub-systems on which data such as entity-related information
is stored.
[0093] Software 720, including service 745, may be implemented in
program instructions and among other functions may, when executed
by system 700 in general or processing system 710 in particular,
direct the system 700 or processing system 710 to operate as
described herein for a service receiving the productivity
application's query and generating results.
[0094] System 700 may represent any computing system on which
software 720 may be staged and from where software 720 may be
distributed, transported, downloaded, or otherwise provided to yet
another computing system for deployment and execution, or yet
additional distribution.
[0095] In embodiments where the system 700 includes multiple
computing devices, the server can include one or more
communications networks that facilitate communication among the
computing devices. For example, the one or more communications
networks can include a local or wide area network that facilitates
communication among the computing devices. One or more direct
communication links can be included between the computing devices.
In addition, in some cases, the computing devices can be installed
at geographically distributed locations. In other cases, the
multiple computing devices can be installed at a single geographic
location, such as a server farm or an office.
[0096] A communication interface 750 may be included, providing
communication connections and devices that allow for communication
between system 700 and other computing systems (not shown) over a
communication network or collection of networks (not shown) or the
air.
[0097] Certain techniques set forth herein with respect to
graph-driven authoring in productivity tools may be described in
the general context of computer-executable instructions, such as
program modules, executed by one or more computing devices.
Generally, program modules include routines, programs, objects,
components, and data structures that perform particular tasks or
implement particular abstract data types.
[0098] Alternatively, or in addition, the functionality, methods
and processes described herein can be implemented, at least in
part, by one or more hardware modules (or logic components). For
example, the hardware modules can include, but are not limited to,
application-specific integrated circuit (ASIC) chips, field
programmable gate arrays (FPGAs), system-on-a-chip (SoC) systems,
complex programmable logic devices (CPLDs) and other programmable
logic devices now known or later developed. When the hardware
modules are activated, the hardware modules perform the
functionality, methods and processes included within the hardware
modules.
[0099] Embodiments may be implemented as a computer process, a
computing system, or as an article of manufacture, such as a
computer program product or computer-readable medium. Certain
methods and processes described herein can be embodied as software,
code and/or data, which may be stored on one or more storage media.
Certain embodiments of the invention contemplate the use of a
machine in the form of a computer system within which a set of
instructions, when executed, can cause the system to perform any
one or more of the methodologies discussed above. Certain computer
program products may be one or more computer-readable storage media
readable by a computer system and encoding a computer program of
instructions for executing a computer process.
[0100] Computer-readable media can be any available
computer-readable storage media or communication media that can be
accessed by the computer system.
[0101] Communication media include the media by which a
communication signal containing, for example, computer-readable
instructions, data structures, program modules, or other data, is
transmitted from one system to another system. The communication
media can include guided transmission media, such as cables and
wires (e.g., fiber optic, coaxial, and the like), and wireless
(unguided transmission) media, such as acoustic, electromagnetic,
RF, microwave and infrared, that can propagate energy waves.
Although described with respect to communication media, carrier
waves and other propagating signals that may contain data usable by
a computer system are not considered computer-readable "storage
media."
[0102] By way of example, and not limitation, computer-readable
storage media may include volatile and non-volatile, removable and
non-removable media implemented in any method or technology for
storage of information such as computer-readable instructions, data
structures, program modules or other data. Examples of
computer-readable storage media include volatile memory such as
random access memories (RAM, DRAM, SRAM); non-volatile memory such
as flash memory, various read-only-memories (ROM, PROM, EPROM,
EEPROM), phase change memory, magnetic and
ferromagnetic/ferroelectric memories (MRAM, FeRAM), and magnetic
and optical storage devices (hard drives, magnetic tape, CDs,
DVDs). As used herein, in no case does the term "storage media"
consist of carrier waves or propagating signals.
[0103] Certain aspects of the invention provide the following
non-limiting embodiments:
Example 1
[0104] A system comprising: a processing system; a storage system
comprising one or more computer readable storage media; a display;
and a productivity application stored on the storage system that
when executed by the processing system directs the processing
system to: generate a request for reusable content, the request
comprising a user identifier of a user of the productivity
application and at least one identifiable entity; communicate the
request to a service; and receive a set of ranked results
identifying documents comprising at least one relevant document
having an associated related user identifier of a related user
having a connection to the user of the productivity application,
wherein content of the documents are relevant to the at least one
identifiable entity.
Example 2
[0105] The system of example 1, wherein the documents identified in
the set of ranked results comprise documents of at least two file
types.
Example 3
[0106] The system of example 2, wherein the at least two file types
comprise two or more of a word processing document format type, a
spread sheet document format type, and a presentation document
format type.
Example 4
[0107] The system of example 2 or 3, wherein the at least two file
types comprise at least a file format for the productivity
application.
Example 5
[0108] The system of any of examples 1-4, wherein the documents are
current based on a timestamp associated with the request.
Example 6
[0109] The system of example 5, wherein the timestamp is
communicated with the request to the service.
Example 7
[0110] The system of any of examples 1-6, wherein the productivity
application further directs the processing system to identify the
at least one identifiable entity by analyzing content in an
expression received via a search bar of a graphical user interface
of the productivity application.
Example 8
[0111] The system of any of examples 1-7, wherein the productivity
application further directs the processing system to identify the
at least one identifiable entity by analyzing content in a document
of the user of the productivity application.
Example 9
[0112] A method for graph-driven authoring in productivity
applications, the method comprising: communicating a request for
reusable content to a service, the request comprising a user
identifier of a user of a productivity application, content having
at least one identifiable entity, and a timestamp; and receiving a
set of ranked results identifying documents comprising at least one
relevant document having an associated related user identifier of a
related user having a connection to the user of the productivity
application, wherein content of the documents including the at
least one relevant document are relevant to the at least one
identifiable entity, and wherein the documents are current based on
the timestamp.
Example 10
[0113] The method of example 9, further comprising identifying the
at least one identifiable entity by analyzing content in an
expression received via a search bar of a graphical user interface
of the productivity application.
Example 11
[0114] The method of example 9 or 10, further comprising
identifying the at least one identifiable entity by analyzing
content in the document of the user.
Example 12
[0115] The method of any of examples 9-11, wherein the documents
identified in the set of ranked results comprise documents of at
least two file types.
Example 13
[0116] The method of example 12, wherein the at least two file
types comprise two or more of a word processing document format
type, a spread sheet document format type, and a presentation
document format type.
Example 14
[0117] The method of any of examples 9-13, further comprising:
receiving the content having the at least one identifiable entity
via a search bar of the productivity application.
Example 15
[0118] One or more computer readable storage media having
instructions stored thereon that when executed by a processing
system, direct the processing system to: display a graphical user
interface for a productivity application; in response to receiving,
via the graphical user interface, a command for finding relevant
documents, generate and communicate a request for reusable content
to a service, the request comprising a user identifier of a user of
the productivity application and at least one identifiable entity;
and in response to receiving ranked results identifying relevant
documents for the reusable content, display a representation of one
or more of the relevant documents in an information pane of the
graphical user interface, wherein at least one of the relevant
documents has an associated related user identifier of a related
user having a connection to the user of the productivity
application.
Example 16
[0119] The media of example 15, wherein the relevant documents
comprise documents of at least two file types.
Example 17
[0120] The media of example 16, wherein the at least two file types
comprise two or more of a word processing document format type, a
spread sheet document format type, and a presentation document
format type.
Example 18
[0121] The media of any of examples 15-17, wherein the instructions
to generate and communicate the request for reusable content to the
service comprise instructions that direct the processing system to:
extract content from a document opened with the productivity
application to provide the at least one identifiable entity with
the request; wherein the relevant documents are received from the
service and comprise documents having user identifiers associated
therewith that correspond to people having connections to the user
of the productivity application and content therein that are
relevant to at least one entity, at least one topic, or both from
the content from the document.
Example 19
[0122] The media any of examples 15-18, wherein the instructions to
generate and communicate the request for reusable content to the
service comprise instructions that direct the processing system to:
extract content from an expression received via a search bar of the
graphical user interface; wherein the relevant documents are
received from the service and comprise documents having user
identifiers associated therewith that correspond to people having
connections to the user of the productivity application and content
therein that are relevant to at least one entity, at least one
topic, or both from the expression received via the search bar.
Example 20
[0123] The media of example 19, further comprising instructions
that direct the processing system to identify the at least one
identifiable entity by analyzing content in the expression received
via the search bar of the graphical user interface of the
productivity application.
[0124] It should be understood that the examples and embodiments
described herein are for illustrative purposes only and that
various modifications or changes in light thereof will be suggested
to persons skilled in the art and are to be included within the
spirit and purview of this application.
[0125] Although the subject matter has been described in language
specific to structural features and/or acts, it is to be understood
that the subject matter defined in the appended claims is not
necessarily limited to the specific features or acts described
above. Rather, the specific features and acts described above are
disclosed as examples of implementing the claims and other
equivalent features and acts are intended to be within the scope of
the claims.
* * * * *