Visual data importer
Claim Score by NHIP
Abstract
Techniques for visual data import into an object model are described. A graphical user interface concurrently displays a first icon that represents a first object type and a second icon that represents a second object type. Input defining object-to-data mappings between properties of the object types and structured data of one or more data sources is received. Further input defining a relationship type for relationships between the first object type and the second object type is also received. In response to the second input, a graphical representation of the relationship type is displayed, visually linking the first icon to the second icon. Based at least on the object-to-data mappings, the definition of the relationship type, and the structured data, an object model is created, comprising first objects of the first object type, second objects of the second object type, and relationships between the first objects and the second objects.
Term
5 yearsleft in the term
Expires 30 September 2031.
- Priority
- Filed
- Granted
- Today
- Expires
28 claims: 3 independent, 25 dependent
- 1Broadest claimClaim Score 13, narrow(NHIP)A method of generating object structures by importing structured data from one or more data sources into an object model based on an ontology that categorizes objects, relationships, and properties according to various defined types , comprising:concurrently displaying, in a graphical user interface of a computer display unit, a first icon that graphically represents a first object associated with a first object type and a second icon that graphically represents a second object associated with a second object type, wherein the first object type is a category of object structures that are comprised of first properties, wherein the second object type is a different category of object structures that are comprised of second properties at least partly different than the first properties second object type is different from the first object type ;receiving a first input defining at least a portion of a first mapping between the first properties of the first object type and the structured data of the one or more data sources;receiving a second input defining at least a portion of a second mapping between the second properties of the second object type and the structured data of the one or more data sources;wherein at least one of the first input or the second input originates from an analysis and comparison component that automatically identifies predicted mappings, and not from user input in the graphical user interface;receiving, in the graphical user interface, a third input defining a relationship type, wherein the relationship type characterizes relationship structures that specify relationships between object structures of the first object type and object structures of the second object type , wherein the relationship is associated with a relationship type ;in response to the third input, displaying in the graphical user interface a graphical representation of the relationship type that visually links the first icon to the second icon;based at least on the first mapping, the second mapping, the relationship type, and the structured data, automatically creating a plurality of first object structures of the first object type, a plurality of second object structures of the second object type, and a plurality of relationship structures between the first object structures and the second object structures including automatically adding one or more of the first object type and the second object type based on comparisons of the object types to available schema elements, a history of previously created schema maps by the same or a different user, and/or specified user or system rules ;wherein the creating comprises creating the first object structures and the second object structures using the ontology and in which the relationship structures are of the relationship type;storing the plurality of first object structures, the plurality of second object structures, and the plurality of relationship structures in a database that persists data in the object model;wherein the method is performed by one or more computing devices.
- 12One or more non-transitory computer-readable media storing instructions for generating object structures by importing structured data from one or more data sources into an object model based on an ontology that categorizes objects, relationships, and properties according to various defined types , wherein the instructions, when executed by one or more computing devices, cause performance of:concurrently displaying, in a graphical user interface of a computer display unit, a first icon that graphically represents a first object associated with a first object type and a second icon that graphically represents a second object associated with a second object type, wherein the first object type is a category of object structures that are comprised of first properties, wherein the second object type is a different category of object structures that are comprised of second properties at least partly different than the first properties second object type is different from the first object type ;receiving , in the graphical user interface, a first input defining at least a portion of a first mapping between the first properties of the first object type and the structured data of the one or more data sources;receiving first input defining at least a portion of a first mapping between the first properties of the first object type and the structured data of the one or more data sources;receiving a second input defining at least a portion of a second mapping between the second properties of the second object type and the structured data of the one or more data sources;receiving, in the graphical user interface, a third input defining a relationship between the first object and the second object, wherein the relationship is associated with a relationship type;wherein at least one of the first input or the second input originates from an analysis and comparison component that automatically identifies predicted mappings, and not from user input in the graphical user interface;in response to the third input, displaying a in the graphical user interface a graphical representation of the relationship type that visually links the first icon to the second icon;based at least on the first mapping, the second mapping, the relationship type, and the structured data, automatically creating a plurality of first object structures of the first object type, a plurality of second object structures of the second object type, and a plurality of relationship structures between the first object structures and the second object structures including automatically adding one or more of the first object type and the second object type based on comparisons of the object types to available schema elements, a history of previously created schema maps by the same or a different user, and/or specified user or system rules;wherein the creating comprises creating the first object structures and the second object structures using the ontology and in which the relationship structures are of the relationship type;storing the plurality of first object structures, the plurality of second object structures, and the plurality of relationship structures in a database that persists data in the object model .
- 23A computer system comprising:one or more processors;an analysis and comparison component, implemented in part by the one or more processors, that automatically identifies predicted mappings between object properties and structured data;a definition component, implemented in part one or more non-transitory computer-readable media storing instructions for importing structured data from one or more data sources into an object model based on an ontology that categorizes objects, relationships, and properties according to various defined types, wherein the instructions, when executed by the one or more processors, configured to cause performance of: concurrently displaying, in a graphical user interface of a computer display unit, a first icon that graphically represents a first object associated with a first object type and a second icon that graphically represents a second object associated with a second object type, wherein the first object type is a category of object structures that are comprised of first properties, wherein the second object type is a different category of object structures that are comprised of second properties at least partly different than the first properties ;receiving a first input defining at least a portion of a first mapping between the first properties of the first object type and the structured data of the one or more data sources;receiving a second input defining at least a portion of a second mapping between the second properties of the second object type and the structured data of the one or more data sources;wherein at least one of the first input or the second input originates from the analysis and comparison component, and not from user input in the graphical user interface;receiving, in the graphical user interface, third input defining a relationship type, wherein the relationship type categorizes relationship structures that specify relationships between object structures of the first object type and object structures of the second object type , wherein the relationship is associated with a relationship type;in response to the third input, displaying a graphical representation of the relationship type that visually links the first icon to the second icon;a translation component, implemented in part by the one or more processors, configured to cause performance of: based at least on the first mapping, the second mapping, the relationship type, and the structured data, automatically creating a plurality of first object structures of the first object type, a plurality of second object structures of the second object type, and a plurality of relationship structures between the first object structures and the second object structures including automatically adding one or more of the first object type and the second object type based on comparisons of the object types to available schema elements, a history of previously created schema maps by the same or a different user, and/or specified user or system rules;storing the plurality of first object structures, the plurality of second object structures, and the plurality of relationship structures in a database that persists data in the object model .
Independent claims3
91 paragraphs in 12 sections, as filed
TECHNICAL FIELD
0001Embodiments relate generally to techniques for facilitating the creation and/or manipulation of data in one or more data stores.
BACKGROUND
0002The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
0003Data is commonly stored in computer-based systems in fixed, rigidly structured data stores. For example, one common type of data store is a “flat” file such as a spreadsheet, plain-text document, or XML document. Another common type of data store is a relational database comprising one or more tables. Other examples of data stores that comprise structured data include, without limitation, files systems, object collections, record collections, arrays, hierarchical trees, linked lists, stacks, and combinations thereof.
0004Often, the underlying structure of such data stores is poorly suited to data analysis. One approach for facilitating a more efficient analysis of data in such data stores is to reorganize that data according to an object model that defines object structures and relationships between the object structures. To create the object model, data elements in underlying data stores, such as table rows or cells, may be mapped to properties of the objects in the model. The semantics, or “meanings,” of the various components of the object model are defined by an ontology that categorizes objects, relationships, and/or properties according to various defined types. For example, an ontology might categorize objects as being of one of the following types: person, entity, or event. The example ontology might further define different properties for each object type, such as names, dates, locations, documents, media, and so forth. The example ontology might further define relationships between objects, such as employee, participant, sibling, and so forth.
0005One approach for generating an ontology-based object model is described in U.S. Pat. No. 7,962,495 B2, issued Jun. 14, 2011, the entire contents of which are hereby incorporated by reference for all purposes. The '495 patent describes a dynamic ontology, in which both the object model and the semantics of the ontology may change and evolve over time as needed for analysis.
BRIEF DESCRIPTION OF THE DRAWINGS
In the drawings:
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a system in which the techniques described herein may be practiced;
<figref idref="DRAWINGS">FIG. 2</figref> illustrates a process flow for creating objects and relationships in an object model;
<figref idref="DRAWINGS">FIG. 3</figref> illustrates a graphical user interface (“GUI”) for practicing the techniques described herein; and
<figref idref="DRAWINGS">FIG. 4</figref> is block diagram of a computer system upon which embodiments of the invention may be implemented.
DETAILED DESCRIPTION
0011In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
0012Embodiments are described herein according to the following outline: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0013">1.0. General Overview</li><li id="ul0002-0002" num="0014">2.0. Structural Overview</li><li id="ul0002-0003" num="0015">3.0. Functional Overview <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0016">3.1. Creating Objects and Relationships</li><li id="ul0003-0002" num="0017">3.2. Updating the Dynamic Ontology</li></ul></li><li id="ul0002-0004" num="0018">4.0. Example Interface <ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0019">4.1. Identifying Data Sources</li><li id="ul0004-0002" num="0020">4.2. Visual Workspace</li><li id="ul0004-0003" num="0021">4.3. Manipulating Objects and Relationships</li><li id="ul0004-0004" num="0022">4.4. Object Previews</li></ul></li><li id="ul0002-0005" num="0023">5.0. Automatic Mappings</li><li id="ul0002-0006" num="0024">6.0. Implementation Mechanism—Hardware Overview</li><li id="ul0002-0007" num="0025">7.0. Extensions and Alternatives</li></ul></li></ul>
1.0. GENERAL OVERVIEW
0026Approaches, techniques, and mechanisms are disclosed for visual data import into an object model. According to one embodiment, a computing device concurrently displays, in a GUI of a computer display unit, a first object icon that graphically represents a first object type and a second object icon that graphically represents a second object type. The computing device receives, via the GUI, first input defining at least a portion of one or both of a first object-to-data mapping between first properties of the first object type and structured data of one or more data sources, and a second object-to-data mapping between second properties of the second object type and the structured data of the one or more data sources. The computing device further receives, in the GUI, second input defining a relationship type for relationships between the first object type and the second object type. In response to the second input, the computing device displays a graphical representation of the relationship type that visually links the first object icon to the second object icon. Based at least on the first object-to-data mapping, the second-object-to-data mapping, the relationship type, and the structured data, the computing device creates a plurality of first objects of the first object type, a plurality of second objects of the second object type, and a plurality of relationships between the first objects and the second objects.
0027In an embodiment, creating the object model comprises creating the first objects and the second objects in a revisioning database having a dynamic ontology.
0028In an embodiment, the computing device further receives one or more updates to one or more of the first properties or the second properties in a dynamic ontology that includes the first object type and the second object type. The computing device then repeats the displaying, the receiving, and the creating using one or more of the updated first properties or updated second properties.
0029In an embodiment, the computing device concurrently displays the first object icon, the second object icon, and the graphical representation of the relationship type in a visual workplace. The plurality of first objects, the plurality of second objects, and the plurality of relationships are subsequently displayed as part of a graph of interconnected nodes that is arranged similarly to the visual workspace.
0030In an embodiment, the computing device identifies one or more schemas for the structured data of the one or more data sources. The computing device provides mapping controls for selecting, for each particular property of the first properties and the second properties, one or more elements of the one or more schemas to map to the particular property. The computing device receives the first input, in part, via the mapping controls.
0031In an embodiment, while concurrently displaying the first object icon and the second object icon the computing device displays object and relationship previews. For example, the computing device displays a representation of a sample object that would be created from a sample data set based on the first object type definition and the first object-to-data mapping. As another example, the computing device displays one or more representations of one or more sample relationships that would be created for the sample object based on the relationship type definition.
0032In an embodiment, the computing device performs an import operation or translation operation on the one or more data sources. The import operation or translation operation includes the above-described creation of the plurality of first objects, the plurality of second objects, and the plurality of relationships.
0033In an embodiment, at least one of the first input and the second input originates from an analysis and comparison component that “guesses” mappings, as opposed to originating from a user via the GUI.
0034In an embodiment, the computing device receives input identifying conditions to be met by the one or more data sources prior to creation of a relationship of the relationship type.
0035In other aspects, the invention encompasses a computer apparatus and a computer-readable medium configured to carry out the foregoing steps.
2.0. STRUCTURAL OVERVIEW
0036<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a system <b>100</b> in which the techniques described herein may be practiced, according to an embodiment. System <b>100</b> facilitates translation of one or more data sources, such as data sources <b>130</b>, into an object model <b>160</b> whose semantics are defined by an ontology <b>150</b>. The translation may be performed for a variety of reasons. For example, a database administrator may wish to import data from data sources <b>130</b> into a database <b>170</b> for persistently storing object model <b>160</b>. As another example, a data presentation component (not depicted) may translate data from data sources <b>130</b> “on the fly” into object model <b>160</b>. The object model <b>160</b> can then be utilized, in conjunction with ontology <b>150</b>, for analysis through graphs and/or other data visualization techniques.
0037System <b>100</b> comprises a definition component <b>110</b> and a translation component <b>120</b>, both implemented by one or more processors on one or more computing devices executing hardware and/or software-based logic for providing various functionality described herein. System <b>100</b> may comprise fewer or additional components that provide various functionalities described herein. These components are, for clarity, omitted from <figref idref="DRAWINGS">FIG. 1</figref>. The component(s) of system <b>100</b> responsible for providing various functionalities may further vary from embodiment to embodiment.
0038Definition component <b>110</b> generates and/or modifies ontology <b>150</b> and a schema map <b>140</b>. Schema map <b>140</b> defines how various elements of schemas <b>135</b> for data sources <b>130</b> map to various elements of ontology <b>150</b>. Definition component <b>110</b> receives, calculates, extracts, or otherwise identifies schemas <b>135</b> for data sources <b>130</b>. Schemas <b>135</b> define the structure of data sources <b>130</b>—for example, the names and other characteristics of tables, files, columns, fields, properties, and so forth. Definition component <b>110</b> furthermore optionally identifies sample data <b>136</b> from data sources <b>130</b>. Definition component <b>110</b> may further identify object type, relationship, and property definitions from ontology <b>150</b>, if any already exist. Definition component <b>110</b> may further identify pre-existing mappings from schema map <b>140</b>, if such mappings exist.
0039Based on the identified information, definition component <b>110</b> generates a graphical interface <b>115</b>. Graphical interface <b>115</b> may be presented to users of a computing device via any suitable output mechanism, and may further accept input from users of the computing device via any suitable input mechanism. Graphical interface <b>115</b> features a visual workspace that visually depicts representations of the elements of ontology <b>150</b> for which mappings are defined in schema map <b>140</b>. Graphical interface <b>115</b> also includes controls for adding new elements to schema map <b>140</b> and/or ontology <b>150</b>, including objects, properties of objects, and relationships, via the visual workspace. Once elements of ontology <b>150</b> are represented in the visual workspace, graphical interface <b>115</b> further provides controls in association with the representations that allow for modifying the elements of ontology <b>150</b> and identifying how the elements of ontology <b>150</b> correspond to elements of schemas <b>135</b>. Optionally, the graphical interface <b>115</b> may further utilize the sample data <b>136</b> to provide the user with a preview of object model <b>160</b> as the user defines schema map <b>140</b>. In response to the input via the various controls of graphical interface <b>115</b>, definition component <b>110</b> generates and/or modifies ontology <b>150</b> and a schema map <b>140</b>. An example graphical interface <b>115</b> is described in subsequent sections.
0040Translation component <b>120</b> may be invoked once schema map <b>140</b> and ontology <b>150</b> have been defined or redefined. Translation component <b>120</b> identifies schema map <b>140</b> and ontology <b>150</b>. Translation component further reads data sources <b>130</b> and identifies schemas <b>135</b> for data sources <b>130</b>. For each element of ontology <b>150</b> described in schema map <b>140</b>, translation component <b>120</b> iterates through some or all of the data items of data sources <b>130</b>, generating elements of object model <b>160</b> in the manner specified by schema map <b>140</b>. Depending on the embodiment, translation component <b>120</b> may store a representation of each generated element of object model <b>160</b> in a database <b>170</b>. In an embodiment, translation component <b>120</b> is further configured to synchronize changes in object model <b>160</b> back to data sources <b>130</b>.
0041Data sources <b>130</b> may be one or more sources of data, including, without limitation, spreadsheet files, databases, email folders, document collections, media collections, contact directories, and so forth. Data sources <b>130</b> may include data structures stored persistently in non-volatile memory. Data sources <b>130</b> may also or instead include temporary data structures generated from underlying data sources via data extraction components, such as a result set returned from a database server executing an database query.
0042Schema map <b>140</b>, ontology <b>150</b>, and schemas <b>135</b> may be stored in any suitable structures, such as XML files, database tables, and so forth. Ontology <b>150</b> is maintained persistently. Schema map <b>140</b> may or may not be maintained persistently, depending on whether the translation process is perpetual or a one-time event. Schemas <b>135</b> need not be maintained in persistent memory, but may be cached for optimization.
0043Object model <b>160</b> comprises collections of elements such as typed objects, properties, and relationships. The collections may be structured in any suitable manner. In an embodiment, a database <b>170</b> stores the elements of object model <b>160</b>, or representations thereof. In an embodiment, the elements of object model <b>160</b> are stored within database <b>170</b> in a different underlying format, such as in a series of object, property, and relationship tables in a relational database.
3.0. FUNCTIONAL OVERVIEW
00443.1. Creating Objects and Relationships
0045<figref idref="DRAWINGS">FIG. 2</figref> illustrates a process flow <b>200</b> for creating objects and relationships in an object model, according to an embodiment. For simplicity, process flow <b>200</b> is described as being performed by a single computing device, such as a special purpose computing device executing instructions for a data import utility comprising definition component <b>110</b> and translation component <b>120</b>. However, the elements of flow <b>200</b> may in fact be performed by two or more computing devices, such as a first computing device executing instructions for creating a visual schema map and a separate computing device executing instructions for a data import, viewing, or synchronization utility.
0046At block <b>210</b>, a computing device identifies one or more schemas for one or more data sources, such as data sources <b>130</b>. The one or more schemas define the structure(s) of the one or more data sources. A schema need not be complete or formal, rather a schema need only describe the organization of the data within a data source with enough specificity that the data of interest may be located and retrieved from the data source. For example, the schema for a relational database may define tables and columns, while the schema for a comma separated values file may simply define columns.
0047The computing device may identify the schema by retrieving the schema directly from the data source, if possible. Otherwise, the computing device may analyze the data source with or without user assistance to determine a schema. The computing device may begin the schema identification process in response to a number of events that identify possible data sources or sample data sets to import into an object model. For example, a user may identify the location of a data source to be imported, or the computing device may load a pre-existing schema map that describes a mapping for a specific data source.
0048At block <b>220</b>, the computing device displays a first object icon that graphically represents a first object type in an ontology, such as ontology <b>150</b>. The computing device displays the first object icon in a GUI, such as GUI <b>115</b>. In an embodiment, the computing device displays the first object icon in a visual workspace of the GUI. The visual workspace is a specific portion of the GUI that graphically indicates to the user elements of the ontology that are described in a schema map, such as schema map <b>140</b>.
0049The computing device may display an object icon in response to a number of events. For example, the user may have selected to add the first object type to a schema map by selecting the first object type from a list of pre-defined object types in the ontology. As another example, the user may have selected to add a new object type from the ontology. As another example, the computing device may have received input that identifies a pre-defined schema map to manipulate, in which the first object type is described. As another example, the computing device may have automatically determined to add the first object type without prompting from the user, based on characteristics of a schema and/or set of an example data.
0050In an embodiment, the computing device selects the first object icon based upon the object type, so that the first object icon indicates characteristics of the first object type to the user. For example, the first object icon may include an image of a person for a person object type, a cell phone for a phone call event object type, or a building for a location object type. In an embodiment, the first object icon may further portray, or be displayed with, additional information such as a label for the first object type, one or more properties, and/or controls for selecting or modifying the first object type. In an embodiment, the first object icon is selectable. The computing device may display additional controls for defining or manipulating the first object type and its mappings while the first object icon is selected.
0051At block <b>230</b>, the computing device displays a second object icon that graphically represents a second object type in the ontology. The computing device displays the second object icon at least partially concurrently with displaying the first object icon in block <b>210</b>. For example, after adding the first object icon to a visual workspace, the computing device may have received instructions to add the second object icon to the visual workspace in the vicinity of the first object icon. Depending on the second object type, the second object icon may be the same as or different from the first object icon. Display of the second object icon is otherwise similar to that of the first object icon.
0052At block <b>240</b>, the computing device receives, via the GUI, first input defining one or more mappings between elements of the one or more schemas and the first or second object type. For example, a user may specify that a first column of a first table corresponds to a certain property of the first object type, while a second column of a particular spreadsheet is to be parsed for several properties of the second object type. In this manner, the user specifies how the structured data of the one or more data sources will be translated into the object model.
0053The first input may take any suitable form. For example, the properties of a selected object may be displayed in a first area of the GUI. The available elements of the one or more schemas may be displayed in a second area of the GUI. Mappings may be accomplished by dragging and dropping a schema element over a property, or vice versa. As another example, a pull-down menu may be displayed next to each property, from which a user may select a corresponding schema element. As another example, a schema element may be dragged to the first object type icon, and the computing device may in response automatically choose or create a property to map to the schema element.
0054At block <b>250</b>, the computing device receives, via the GUI, second input defining a relationship type between the first object type and the second object type. The second input may take a variety of forms. For example, the user may hold a button down while dragging a pointer from object type to another. As another example, the user may select the second object type from a pull-down list of object types in a control for defining new relationships associated with the first object icon.
0055In an embodiment, the second input includes input that further defines the relationship type. For example, upon a user requesting to create a new relationship, the computing device may display a menu that lists available relationship types in the ontology, such as “Appears in” or “Child of.” As another example, the computing device may present controls that allow the user to select one or more properties of the first object type and second object type that should match for a relationship of the relationship type to exist. As another example, the computing device may present controls that allow the user to select one or more schema elements whose values indicate the existence of a relationship of the relationship type.
0056At block <b>260</b>, in response to the second input, the computing device displays a connection between the first object icon and the second object icon to indicate that the relationship type has been defined. For example, the computing device may display a line connecting the first object icon to the second object icon. The graphical representation of the connection may vary depending on the relationship type. For example, the graphical representation may vary in line width, line type, color, label, and/or associated icon(s). In an embodiment, the connection is selectable by the user. In response to selection of the connection, the computing device may present controls such as described above with respect to the first object icon for further defining the relationship.
0057At block <b>270</b>, the computing device receives input requesting to create an object model based at least on the first object-to-data mapping, the second-object-to-data mapping, the relationship type, and one or more specified structured data sources. The input may take a variety of forms. For example, the input may comprise a user selection of a “Generate Now” button from within the GUI.
0058As another example, the input may comprise multiple input events. For example, the user may instruct the computing device via the GUI to save mappings, object type definitions, and relationships to a schema map file and, if necessary, to an ontology file. The user may then invoke another interface of the computing device, such as a command line interface, by which the user may provide instructions to the computing device to use the schema map to import data from one or more specified data sources into an object model. The specified one or more data sources may be the same as those from which the one or more schemas were identified in block <b>210</b>. Or, the specified one or more data sources may be different from the data sources of block <b>210</b>, but have the same one or more schemas. Such may be the case, for example, if one or more data sources of block <b>210</b> were sample data sets of larger data repositories.
0059At block <b>280</b>, in response to the input of block <b>270</b>, the computing device creates a plurality of first objects of the first object type, a plurality of second objects of the second object type, and a plurality of relationships between the first objects and the second objects, of the defined relationship type. The first objects, second objects, and relationships are generated based at least on the first object-to-data mapping, the second-object-to-data mapping, the relationship, and one or more structured data sources. The properties of the first object and second objects, as well as the generated relationships, thus reflect the data of the structured data sources. Performance of block <b>280</b> may comprise, for instance, the computing device iterating through each data item of a data source. For each iterated data item, the computing device may create one or more objects and relationships based on applying the mappings to the iterated data item. The computing device may utilize any suitable mapping, translation, and/or conversion technique for the process.
0060In an embodiment, creating the first objects, second objects, and relationships comprises storing data representative of the first objects, second objects, and relationships in a revisioning database having a dynamic ontology. However, in other embodiments, the data may be stored in other formats and locations, including temporary structures in volatile memory.
0061At block <b>290</b>, the computing device optionally displays a graph of the object model, based upon the ontology. The graph may be, for example, a network of interconnected nodes. The nodes may include first objects and second objects connected according to the generated relationships.
0062In an embodiment, the arrangement of the graph is similar to that of the visual workspace in which the first icon and the second icon were displayed. For example, first objects may be displayed with the first object icon, second objects may be displayed with the second object icons, and relationships may be indicated with connections similar to those displayed in block <b>260</b>. The layout of the first objects and second objects may also mirror the layout of the first object icon and the second object icon. In other words, the GUI for defining the mappings used to create the object model is visually similar and structurally isomorphic to a manner in which the object model will be graphed. The computing device thereby provides an intuitive interface for describing how data source(s) will be represented in an object model, in which a user can see how a graph such as that of block <b>290</b> might look while the user is defining the schema map.
0063Flow <b>200</b> is an example process flow. Other embodiments may involve fewer or additional elements in potentially varying arrangements. For example, the computing device may display a number of other icons, each representative of other object types. The computing device may further receive input defining additional relationships between the first object type, the second object type, and/or other object types. Thus, the computing device may display any number of interconnected icons representing any number of object types and relationships. Mappings may be defined for these object types via various controls of the GUI. Objects and/or relationships may be generated based thereon, per block <b>280</b>.
0064As another example, the object model generated as a result of block <b>280</b> may be used for many purposes other than displaying the graph of block <b>290</b>. For example, the object model may be searched, aggregated, mined, or visualized using any suitable data analysis technique.
00653.2. Updating the Schema Map
0066In an embodiment, the schema map generated via flow <b>200</b> is dynamic, in that the computing device allows the user to return to the GUI after having generated the object model in block <b>290</b>. The embodiment presumes that the schema map and ontology have been stored in a suitable format, such as in an XML file or a database, from which they can be reconstructed. The computing device reads the stored schema map and ontology and recreates the GUI with the first object icon connected to the second object icon. The computing device further displays controls associated with the icons that allow the user to select the first object type, the second object type, and/or relationship type. Once selected, the user may update the first properties, the second properties, and or the relationship type. The user may make changes both to schemas (for example, the names and types of properties) and the schema map (for example, the mappings to the one or more schemas). The user may then instruct the computing device to update the object model based on the changes. Thus, the first objects, second objects, and relationships generated in block <b>280</b> may be updated with new properties and/or data. Moreover, the graph displayed in block <b>290</b> may be reorganized based upon changes to the ontology.
0067For example, after the object model has been deployed for a few weeks, a user may decide that the ontology is not optimal for analysis. The user may, for instance, wish to add a certain property to the first object type, model the relationship as a distinct object type linked to both the first object type and the second object type, or split the properties of the second object type amongst several interconnected but separate object types. The user may update the ontology and, if necessary, relaunch the GUI to modify the schema map for the updated ontology, as discussed above.
0068As another example, the user may decide to import into the object model additional data fields that have newly become available in a data source. The user may cause the computing device to re-identify the schema for the data source, thus resulting in a schema that includes the additional data fields. The user may then utilize the GUI, as discussed above, to update mappings or create new mappings for the new data fields.
4.0. EXAMPLE INTERFACE
0069<figref idref="DRAWINGS">FIG. 3</figref> illustrates a GUI <b>300</b> for practicing the techniques described herein, according to an embodiment. GUI <b>300</b> is but one example of a GUI suitable for practicing the described techniques. Other interfaces may include fewer or different elements with potentially different representations in potentially different arrangements.
00704.1. Identifying Data Sources
0071GUI <b>300</b> comprises a data source section <b>330</b> that identifies data sources <b>331</b> and <b>332</b>. Data source section <b>330</b> indicates data sources whose schemas are available for mapping to elements of an ontology. The depictions of each data source <b>331</b> and <b>332</b> include information to assist the user in recognizing the data source, such as icons, data source names, and numbers of rows. As depicted in <figref idref="DRAWINGS">FIG. 3</figref>, data source <b>331</b> is currently selected. The selected data source may be changed by any suitable mechanisms, such as clicking on the desired data source or clicking on control <b>333</b> at the bottom of GUI <b>300</b>.
0072Data sources <b>331</b> and <b>332</b> may have been identified by, for instance, a user dragging and dropping files into section <b>330</b> or otherwise inputting data source locations. The data sources may also have been identified automatically by an application that searches for data sources in specified locations in a file system or over a network. Although two data sources <b>331</b> and <b>332</b> are depicted, data source section <b>330</b> may identify fewer or additional data sources as well. Moreover, data sources <b>331</b> and <b>332</b> are not constrained in format to the depicted CSV files, but may adhere to a variety of other data formats, such as databases, query result sets, XML files, web directories, and so forth.
0073GUI <b>300</b> comprises additional elements, which may change depending on which of data sources <b>331</b>, <b>332</b> is currently selected. These elements include a schema section <b>335</b> and a data sample section <b>336</b>. Schema sections <b>335</b> depicts some or all of a schema that has been identified for the selected data source. For example, because selected data source <b>331</b> is a spreadsheet, schema section <b>335</b> lists columns from data source <b>331</b>. As another example, for a database, schema section <b>335</b> may include a multi-level tree of database, table, and field names.
0074Schema section <b>335</b> need not necessarily depict all identified schema elements for a data source. For example, the computing device may be configured to automatically map columns having certain names to certain inherent or otherwise designated properties. Thus, the automatically mapped columns may be omitted from schema section <b>335</b>.
0075Data sample section <b>336</b> displays a preview of some or all of the data in the currently selected data source, using whatever format may be appropriate. For example, for data in a table or spreadsheet format, data sample <b>336</b> may display a scrollable table of a certain number of columns and rows in the selected data source. As another example, data sample <b>336</b> may display a document if the data source is a structured document. In this manner, data sample section <b>336</b> provides a user with a better idea of the type of data stored for each schema element of the selected data source.
00764.2. Visual Workspace
0077GUI <b>300</b> comprises a workspace <b>340</b> that indicates elements of an ontology for which mappings have been defined in a schema map. Workspace <b>340</b> includes object icons <b>321</b>-<b>323</b> and connections <b>324</b> and <b>325</b>. Object icons <b>321</b>-<b>323</b> represent object types in an ontology. Connections <b>324</b> and <b>325</b> represent relationship types. As depicted, object icons <b>321</b> and <b>322</b> both represent a “Person” object type. Object icon <b>323</b> represents a “Phone Call” event object type. Connections <b>324</b> and <b>325</b> both represent an “Appears in” relationship type.
00784.3. Manipulating Objects and Relationships
0079Icons <b>321</b>-<b>323</b> and connections <b>324</b>-<b>325</b> are selectable to facilitate manipulation of their respectively represented object types and relationship types. Once an icon <b>321</b>-<b>323</b> or connection <b>324</b>-<b>325</b> is selected, element manipulation component <b>327</b> appears in GUI <b>300</b>. Element manipulation component <b>327</b> comprises object type selector <b>328</b>, property mappers <b>329</b>, and object type manipulator <b>326</b>.
0080Object type selector <b>328</b> is a pull-down menu that allows the user to select between different object types that are already defined in the ontology. The computing device may access such information about the ontology from a global ontology file, or from a specialized ontology file identified elsewhere by the user. To the far right of the pull-down menu is a custom object type control <b>328</b>a. Upon activation of the control, GUI <b>300</b> may launch an interface (not depicted) for defining a new object type for selection, or for renaming the currently selected object type. Object type manipulator <b>326</b> allows for further customization of the object type, such as the creation of new properties or the identification of schema elements whose values determine whether an object should be created for any given data item. Note that, had one of connections <b>324</b> or <b>325</b> been selected instead of object icon <b>323</b>, object type selector <b>328</b> would have instead allowed selection of a defined relationship type, custom object type control <b>328</b>a would have instead permitted creation of a custom relationship type, and object type manipulator <b>326</b> would have permitted further customization of the relationship type.
0081Element manipulation component <b>327</b> comprises property mappers <b>329</b> for some or all schema elements listed in schema section <b>335</b>. Each property manipulator <b>329</b> includes the name of a schema element, as well as a pull-down menu from which a property may be selected to map to the schema element. The pull-down menu lists property elements that are defined for the currently selected object. Additionally, to the far right of the pull-down menu is a custom property control <b>329</b>a. Upon activation of the control, GUI <b>300</b> may launch an interface (not depicted) for defining a new property for selection, or for renaming the currently selected property. Custom property control <b>329</b>a may also feature advanced property mapping components that include capabilities such as restricting a mapping to only a portion of a schema element, defining a mapping to a specified combination of schema elements, or defining a mapping as a functions of one or more schema elements.
0082Workspace <b>340</b> includes a control <b>351</b> for adding additional object types to the schema map. In response to the user selecting the control, an icon for the added object type is added to the workspace. An added object type may be initially set to a default type. However, the object type may be manipulated using object type manipulator <b>328</b> as described above.
0083Control <b>341</b> allows for saving the schema map represented in the workspace <b>340</b> to, for instance, a file. Control <b>342</b> allows for loading the schema map from a file into workspace <b>340</b>. A saved schema map may also be identified to a translation or importation component when generating an object model. In an embodiment, GUI <b>300</b> may also include controls for saving changes to an ontology. In an embodiment, changes to the ontology are saved automatically and/or with a schema map file.
00844.4. Object Previews
0085GUI <b>300</b> includes an object preview section <b>360</b>. Object preview section <b>360</b> allows a user to view data that would be assigned to sample objects, relationships, and properties, based on the schema map being defined in workspace <b>340</b>. Object preview section <b>360</b> may be updated at regular intervals, in response to a trigger event, or in response to any change to workspace <b>340</b>. As depicted, object preview section <b>360</b> displays a preview for only one object, but other embodiments may allow previews of multiple objects. Additionally, the manner in which the data in a sample object is previewed may vary from embodiment to embodiment.
0086Sample object selector <b>361</b> lists each sample object available for viewing. In an embodiment, sample object selector <b>361</b> allows a user to view objects created based on a small subset of the sample data depicted in sample data area <b>336</b>, such as the first 10 rows. In an embodiment, sample object selector <b>361</b> allows a user to view objects created for each and every data item in a data source.
0087Object preview section <b>360</b> includes a property preview table <b>363</b>. Table <b>363</b> includes labels for some or all properties of the sample object, along with an indication of at least a portion of their respective values. Object preview section <b>360</b> also includes a related entities table <b>363</b>. Each relationship that would be created for the sample object is listed in table <b>363</b>, along with an indication of the objects to which the sample object is related.
5.0. AUTOMATIC MAPPINGS
0088In an embodiment, input that identifies a mapping between an ontology element and a schema element may be received from, at least in part, an analysis and comparison component of the computing device. That is, when the user adds an object, relationship, or property to a visual schema map, the computing device automatically creates certain mappings without the user's input. For example, upon adding a predefined object type to the schema map, the analysis and comparison component may perform a lexical comparison between property labels and schema elements to guess which property labels should be mapped to which schema elements. For instance, if the schema includes an element named “First name,” and the ontology includes a property named “FIRST NAME,” the computing device may automatically map the schema element to the property. As another example, the computing device may maintain history of previous mappings for other schema maps, system preference data, and/or user-specified rules that allow the computing device to guess an appropriate mapping for a property. Any of a variety of algorithms are suitable for automatically identifying such mappings.
0089The input that defines relationship types may also originate from an analysis and comparison component as opposed to a user. For example, a relationship may be automatically created between certain objects have similar properties or properties that are mapped to the same or similar schema elements. In an embodiment, both object types and property types may also be added to a schema map automatically based on comparisons of the object types to the available schema elements, a history of previously created schema maps by the same or a different user, and/or specified user or system rules.
0090The user may accept an automatic mapping without further input, or the user may modify certain automatic mappings using other techniques as described herein.
6.0. IMPLEMENTATION MECHANISM
HARDWARE OVERVIEW
0091According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hardwired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
0092For example, <figref idref="DRAWINGS">FIG. 4</figref> is a block diagram that illustrates a computer system <b>400</b>. Computer system <b>400</b> includes a bus <b>402</b> or other communication mechanism for communicating information, and a hardware processor <b>404</b> coupled with bus <b>402</b> for processing information. Hardware processor <b>404</b> may be, for example, a general purpose microprocessor.
0093Computer system <b>400</b> also includes a main memory <b>406</b>, such as a random access memory (RAM) or other dynamic storage device, coupled to bus <b>402</b> for storing information and instructions to be executed by processor <b>404</b>. Main memory <b>406</b> also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor <b>404</b>. Such instructions, when stored in non-transitory storage media accessible to processor <b>404</b>, render computer system <b>400</b> into a special-purpose machine that is customized to perform the operations specified in the instructions.
0094Computer system <b>400</b> further includes a read only memory (ROM) <b>408</b> or other static storage device coupled to bus <b>402</b> for storing static information and instructions for processor <b>404</b>. A storage device <b>410</b>, such as a magnetic disk or optical disk, is provided and coupled to bus <b>402</b> for storing information and instructions.
0095Computer system <b>400</b> may be coupled via bus <b>402</b> to a display <b>412</b>, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device <b>414</b>, including alphanumeric and other keys, is coupled to bus <b>402</b> for communicating information and command selections to processor <b>404</b>. Another type of user input device is cursor control <b>416</b>, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor <b>404</b> and for controlling cursor movement on display <b>412</b>. The input device typically has two degrees of freedom in two axes, a first axis (for example, x) and a second axis (for example, y), that allows the device to specify positions in a plane.
0096Computer system <b>400</b> may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system <b>400</b> to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system <b>400</b> in response to processor <b>404</b> executing one or more sequences of one or more instructions contained in main memory <b>406</b>. Such instructions may be read into main memory <b>406</b> from another storage medium, such as storage device <b>410</b>. Execution of the sequences of instructions contained in main memory <b>406</b> causes processor <b>404</b> to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.
0097The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operation in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device <b>410</b>. Volatile media includes dynamic memory, such as main memory <b>406</b>. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
0098Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus <b>402</b>. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
0099Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor <b>404</b> for execution. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system <b>400</b> can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus <b>402</b>. Bus <b>402</b> carries the data to main memory <b>406</b>, from which processor <b>404</b> retrieves and executes the instructions. The instructions received by main memory <b>406</b> may optionally be stored on storage device <b>410</b> either before or after execution by processor <b>404</b>.
0100Computer system <b>400</b> also includes a communication interface <b>418</b> coupled to bus <b>402</b>. Communication interface <b>418</b> provides a two-way data communication coupling to a network link <b>420</b> that is connected to a local network <b>422</b>. For example, communication interface <b>418</b> may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface <b>418</b> may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface <b>418</b> sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
0101Network link <b>420</b> typically provides data communication through one or more networks to other data devices. For example, network link <b>420</b> may provide a connection through local network <b>422</b> to a host computer <b>424</b> or to data equipment operated by an Internet Service Provider (ISP) <b>426</b>. ISP <b>426</b> in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” <b>428</b>. Local network <b>422</b> and Internet <b>428</b> both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link <b>420</b> and through communication interface <b>418</b>, which carry the digital data to and from computer system <b>400</b>, are example forms of transmission media.
0102Computer system <b>400</b> can send messages and receive data, including program code, through the network(s), network link <b>420</b> and communication interface <b>418</b>. In the Internet example, a server <b>430</b> might transmit a requested code for an application program through Internet <b>428</b>, ISP <b>426</b>, local network <b>422</b> and communication interface <b>418</b>.
0103The received code may be executed by processor <b>404</b> as it is received, and/or stored in storage device <b>410</b>, or other non-volatile storage for later execution.
7.0. EXTENSIONS AND ALTERNATIVES
0104In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Contents12
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US12124513B2 | Cited by | United States of America | Search report |
| WO0034895A1 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| DE102014103482A1 | Cites | Germany | Applicant |
| HK1194178A1 | Cites | Hong Kong, China | Applicant |
| EP1647908A2 | Cites | European Patent Office (EPO) | Applicant |
| US2002184111A1 | Cites | United States of America | Applicant |
| US2003004770A1 | Cites | United States of America | Applicant |
| US2003023620A1 | Cites | United States of America | Applicant |
| US2003105833A1 | Cites | United States of America | Applicant |
| US2004088177A1 | Cites | United States of America | Applicant |
| US2004098731A1 | Cites | United States of America | Applicant |
| US2004103088A1 | Cites | United States of America | Applicant |
| US2004126840A1 | Cites | United States of America | Applicant |
| US2004139212A1 | Cites | United States of America | Applicant |
| US2004193608A1 | Cites | United States of America | Applicant |
| US2004216030A1 | Cites | United States of America | Search report |
| US2004236737A1 | Cites | United States of America | Search report |
| US2005004911A1 | Cites | United States of America | Applicant |
| US2005015623A1 | Cites | United States of America | Search report |
| US2005021397A1 | Cites | United States of America | Applicant |
| US2005120080A1 | Cites | United States of America | Applicant |
| US2005183005A1 | Cites | United States of America | Applicant |
| US2005226473A1 | Cites | United States of America | Applicant |
| US2005278286A1 | Cites | United States of America | Applicant |
| US2005289134A1 | Cites | United States of America | Search report |
| US2006004740A1 | Cites | United States of America | Applicant |
| US2006053098A1 | Cites | United States of America | Search report |
| US2006053099A1 | Cites | United States of America | Search report |
| US2006053135A1 | Cites | United States of America | Search report |
| US2006053151A1 | Cites | United States of America | Search report |
| US2006053170A1 | Cites | United States of America | Search report |
| US2006053171A1 | Cites | United States of America | Search report |
| US2006053172A1 | Cites | United States of America | Search report |
| US2006053173A1 | Cites | United States of America | Search report |
| US2006053174A1 | Cites | United States of America | Search report |
| US2006053175A1 | Cites | United States of America | Search report |
| US2006053382A1 | Cites | United States of America | Search report |
| US2006070046A1 | Cites | United States of America | Applicant |
| US2006074832A1 | Cites | United States of America | Search report |
| US2006074833A1 | Cites | United States of America | Search report |
| US2006074836A1 | Cites | United States of America | Search report |
| US2006074967A1 | Cites | United States of America | Applicant |
| US2006080616A1 | Cites | United States of America | Applicant |
| US2006116991A1 | Cites | United States of America | Applicant |
| US2006142949A1 | Cites | United States of America | Applicant |
| US2006209085A1 | Cites | United States of America | Applicant |
| US2006271884A1 | Cites | United States of America | Applicant |
| US2006288046A1 | Cites | United States of America | Applicant |
| US2007005582A1 | Cites | United States of America | Applicant |
| US2007011175A1 | Cites | United States of America | Search report |
| US2007027851A1 | Cites | United States of America | Applicant |
| US2007094248A1 | Cites | United States of America | Applicant |
| US2007113164A1 | Cites | United States of America | Applicant |
| US2007143327A1 | Cites | United States of America | Search report |
| US2007150805A1 | Cites | United States of America | Applicant |
| US2007168336A1 | Cites | United States of America | Applicant |
| US2007178501A1 | Cites | United States of America | Search report |
| US2007192281A1 | Cites | United States of America | Applicant |
| US2007203923A1 | Cites | United States of America | Search report |
| US2007260582A1 | Cites | United States of America | Applicant |
| US2008082574A1 | Cites | United States of America | Search report |
| US2008126344A1 | Cites | United States of America | Applicant |
| US2008126951A1 | Cites | United States of America | Applicant |
| US2008155440A1 | Cites | United States of America | Applicant |
| US2008196016A1 | Cites | United States of America | Applicant |
| US2008201313A1 | Cites | United States of America | Applicant |
| US2008215543A1 | Cites | United States of America | Applicant |
| US2008267386A1 | Cites | United States of America | Applicant |
| US2008320012A1 | Cites | United States of America | Search report |
| US2009006150A1 | Cites | United States of America | Applicant |
| US2009007056A1 | Cites | United States of America | Applicant |
| US2009024590A1 | Cites | United States of America | Search report |
| US2009043762A1 | Cites | United States of America | Applicant |
| US2009055487A1 | Cites | United States of America | Applicant |
| US2009083275A1 | Cites | United States of America | Applicant |
| US2009094184A1 | Cites | United States of America | Search report |
| US2009094217A1 | Cites | United States of America | Applicant |
| US2009144747A1 | Cites | United States of America | Applicant |
| US2009161147A1 | Cites | United States of America | Applicant |
| US2009172674A1 | Cites | United States of America | Applicant |
| US2009187556A1 | Cites | United States of America | Applicant |
| US2009193012A1 | Cites | United States of America | Applicant |
| US2009228507A1 | Cites | United States of America | Search report |
| US2009248721A1 | Cites | United States of America | Applicant |
| US2009282068A1 | Cites | United States of America | Search report |
| US2009299830A1 | Cites | United States of America | Applicant |
| US2010011282A1 | Cites | United States of America | Applicant |
| WO2010030917A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| US2010031240A1 | Cites | United States of America | Search report |
| US2010073315A1 | Cites | United States of America | Applicant |
| US2010082671A1 | Cites | United States of America | Applicant |
| US2010121885A1 | Cites | United States of America | Search report |
| US2010145902A1 | Cites | United States of America | Search report |
| US2010161646A1 | Cites | United States of America | Applicant |
| US2010169376A1 | Cites | United States of America | Applicant |
| US2010169405A1 | Cites | United States of America | Applicant |
| US2010199167A1 | Cites | United States of America | Applicant |
| US2010313119A1 | Cites | United States of America | Applicant |
| US2011035396A1 | Cites | United States of America | Applicant |
| US2011040805A1 | Cites | United States of America | Search report |
4 members in 1 office
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 201113250629 | United States of America | A | |
| 201113250629 | United States of America | A | |
| 201514883280 | United States of America | A | |
| 13250629 | – | – | – |
| US201113250629 | – | – | – |
| US201514883280 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| US8560494B1 | United States of America | B1 | |
| US2014012886A1 | United States of America | A1 | |
| US9330120B2 | United States of America | B2 | |
| USRE47594EThis record | United States of America | E |
75 transactions on the USPTO file
Allowed after 2 non-final rejections, 1 final rejection and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail PUB Notice of non-compliant IDSMM327-B | MM327-B | |
| PUB Notice of non-compliant IDSM327-B | M327-B | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Advisory Action (PTOL - 303)MCTAV | MCTAV | |
| Advisory Action (PTOL-303)CTAV | CTAV | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Affidavit(s) (Rule 131 or 132) or Exhibit(s) ReceivedAF/D | AF/D | |
| Response after Final ActionA.NE | A.NE | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic request for Examiner InterviewM865E | M865E | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Terminal Disclaimer FiledDIST | DIST | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Notice of Reissue Published in Official GazetteNRE. | NRE. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Application Dispatched from OIPEOIPE | OIPE | |
| FITF set to NO - revise initial settingFTFI | FTFI | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Preliminary AmendmentA.PE | A.PE | |
| Oath or Declaration Filed (Including Supplemental)C602 | C602 | |
| Preliminary AmendmentA.PE | A.PE | |
| Cleared by OIPE CSRL194 | L194 | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- RE047594
- Publication, DOCDB
- RE47594
- Publication, EPODOC
- USRE47594E
- Application
- 14883280
- Application, DOCDB
- 201514883280
- Application, EPODOC
- US201514883280
Titles
- English
- Visual data importer
Classification
- CPC, 3
- G06F16/212
- G06F16/211
- G06F16/258
- IPC, 5
- G06F7 00
- G06F17 00
- G06F17 30
- G06F16 21
- G06F16 25