Provision of a graphical layout of semi-structured data based on properties of the semi-structured data and user input

In an embodiment, a method is provided for organizing semi-structured data having properties. In this method, the semi-structured data are accessed and rendered on a graphical user interface. A user input defining a first graphical layout of a first subset of the semi-structured data is received. A second subset of the semi-structured data is identified as having properties similar to the properties of the first subset of the semi-structured data. A second graphical layout of the second subset of the semi-structured data is then provided. The second graphical layout matches the first graphical layout.

FIELD

The present disclosure relates generally to data visualization. In an example embodiment, the disclosure relates to graphical layout of semi-structured data.

BACKGROUND

Currently, users access a variety of different applications that provide the users with a large amount of data to digest. One type of data that is often presented to the users is semi-structured data that have properties similar to structured data, but these properties cannot be predicted by means of a predefined schema. Semi-structured data are often used in the Web, the data exchange of which cannot be constrained by a schema. Particularly, semi-structured data provide a flexible format for data exchange between, for example, disparate databases. Semi-structured data therefore cannot be managed by a predefined schema. Without a predefined schema, users may have a more difficult time reading and understanding semi-structured data when compared to structured data.

To make semi-structured data more easily understood, applications can visually present the semi-structured data in graphical form by applying various generic layout algorithms to the semi-structured data. For example, an application can apply a particular layout algorithm to generate a force directed graph of semi-structured data. However, all these generic layout algorithms produce predefined graphical layouts of semi-structured data, and many users may not find that such predefined graphical layouts are easy to understand.

SUMMARY

In one example, a method of organizing semi-structured data is provided. In this method, semi-structured data that have properties are accessed. The semi-structured data are rendered on a graphical user interface and a user input defining, from the graphical user interface, a first graphical layout of a first number of the semi-structured data is received. A second number of the semi-structured data having properties similar to the properties of the first number of the semi-structured data is identified. A second graphical layout of the identified second number of the semi-structured data is rearranged to match the first graphical layout. In one example, the identification of the second number of the semi-structured data comprises: associating the first number of the semi-structured data with a data model of a frame that comprises slots, each slot having a constraint based on at least one of the properties; searching within the semi-structured data for at least one semi-structured data having a property that meets the constraint of the each slot; and assigning the at least one semi-structured data that meets the constraint to the each slot. In one example, the properties define an association between the semi-structured data, and wherein the searching within the semi-structured data comprises following the association to locate at least one of the semi-structured data. In one example, the rearrangement of the second graphical layout comprises: identifying, from the first graphical layout, relative positions between a first number of graphical items that represents the first number of the semi-structured data; and positioning, in the second graphical layout, a second number of graphical items that represents the second number of semi-structured data to correspond to the identified relative positions. In one example, the properties define an association between the first number of the semi-structured data. Here, the method further comprises rendering a graphical representation of the association between the identified second number of the semi-structured data. In one example, the semi-structured data are rendered in a graphical layout that is different from the first graphical layout. In one example, the semi-structured data comprise Extensible Markup Language (XML) data. In one example, the first and second graphical layouts comprise graphical items that represent the first and second numbers of the semi-structured data.

In one example, a non-transitory machine-readable medium that stores instructions is provided. The instructions, when performed by a machine, cause the machine to perform operations comprising: accessing semi-structured data that have properties; rendering the semi-structured data on a graphical user interface; receiving a user input defining, from the graphical user interface, a first graphical layout of a first number of the semi-structured data; identifying a second number of the semi-structured data having properties similar to the properties of the first number of the semi-structured data; and rearranging a second graphical layout of the identified second number of the semi-structured data to match the first graphical layout. In one example, the identification of the second number of the semi-structured data comprises: associating the first number of the semi-structured data with a data model of a frame that comprises slots, each slot having a constraint based on at least one of the properties; searching within the semi-structured data for at least one semi-structured data having a property that meets the constraint of the each slot; and assigning the at least one semi-structured data that meets the constraint to the each slot. In one example, the properties define an association between the semi-structured data, and wherein the searching within the semi-structured data comprises following the association to locate at least one of the semi-structured data. In one example, the rearrangement of the second graphical layout comprises: identifying, from the first graphical layout, relative positions between a first number of graphical items that represents the first number of the semi-structured data; and positioning, in the second graphical layout, a second number of graphical items that represents the second number of semi-structured data to correspond to the identified relative positions. In one example, the properties define an association between the first number of the semi-structured data. Here, the method further comprises rendering a graphical representation of the association between the identified second number of the semi-structured data.

In one example, a computing device is provided. This computing device comprises at least one processor and a memory in communication with the at least one processor. The memory is configured to store a data exploration module that is executable by the at least one processor. The data exploration module has instructions that when executed by the at least one processor, cause operations to be performed. Such operations comprise accessing semi-structured data that have properties; rendering the semi-structured data on a graphical user interface; receiving a user input defining, from the graphical user interface, a first graphical layout of a first number of the semi-structured data; identifying a second number of the semi-structured data having properties similar to the properties of the first number of the semi-structured data; and rearranging a second graphical layout of the identified second number of the semi-structured data to match the first graphical layout. In one example, the identification of the second number of the semi-structured data comprises: associating the first number of the semi-structured data with a data model of a frame that comprises slots, each slot having a constraint based on at least one of the properties; searching within the semi-structured data for at least one semi-structured data having a property that meets the constraint of the each slot; and assigning the at least one semi-structured data that meets the constraint to the each slot. In one example, the properties define an association between the semi-structured data, and wherein the searching within the semi-structured data comprises following the association to locate at least one of the semi-structured data. In one example, the rearrangement of the second graphical layout comprises: identifying, from the first graphical layout, relative positions between a first number of graphical items that represents the first number of the semi-structured data; and positioning, in the second graphical layout, a second number of graphical items that represents the second number of semi-structured data to correspond to the identified relative positions. In one example, the properties define an association between the first number of the semi-structured data, the method further comprising rendering a graphical representation of the association between the identified second number of the semi-structured data. In one example, the semi-structured data are a form of data having an irregular schema.

DETAILED DESCRIPTION

The embodiments described herein provide various techniques for organizing semi-structured data in a graphical layout. In one example, semi-structured data are rendered on a graphical user interface, and a user can define a particular graphical layout of a subset of the semi-structured data within the graphical user interface. As explained in more detail below, all the other semi-structured data having similar properties are then rearranged to match the particular graphical layout defined by the user.

FIG. 1is a diagram depicting a rendering of semi-structured data on a graphical user interface100, consistent with one example embodiment. Generally, “semi-structured data,” as used herein, refer to a form of data that have no fixed schema (or structure), but their schema is implicit and irregular. In other words, semi-structured data are a form of data that do not conform with the formal structure of tables and data models associated with relational databases. In contrast, structured data have a predefined schema. Semi-structured data have properties, which is described in more detail below, but these properties may not be defined by a predefined schema (or predefined data structure). Particularly, semi-structured data can have a schema, but such schema is not known in advance and can be different for each instance. In one example, semi-structured data may include tags or other markers to separate semantic elements and hierarchies of records and fields within the data. In one form, information that is normally associated with a schema is instead included within the data, which is called “self-describing.” In another form, a schema can exist but it places loose constraints on the semi-structured data. Examples of semi-structured data include email messages and markup languages, such as Extensible Markup Language (XML), Extensible HyperText Markup Language (XHTML), and HyperText Markup Language (HTML). It should be noted that semi-structured data can include a value, a variable, a function, a data structure, or other semi-structured data that represent, quantify, or embody any suitable thing. As an example, a physical thing (e.g., a car, a person, or a computer) may be defined or embodied in semi-structured data. In another example, an object of thought or concept (e.g., a business plan or an architectural design) may also be defined or embodied in semi-structured data. In yet another example, a non-tangible thing (e.g., work to be done or video file) may also be defined or embodied in semi-structured data.

As depicted inFIG. 1, semi-structured data110-118,120-128, and130-133can be visualized as graphical items. In other words, the semi-structured data110-118,120-128, and130-133can be rendered as or represented by one or more graphical items in the graphical user interface100. The graphical items are images having a variety of different shapes, colors, and sizes. For example, semi-structured data110can be represented by a graphical item in the form of a triangle while semi-structured data132can be represented by a different graphical item in the form of a circle.

In the example graphical user interface100, the graphical layout of the semi-structured data110-118,120-128, and130-133is such that the semi-structured data are positioned randomly. As used herein, a “graphical layout” refers to an arrangement of graphical items that represents the semi-structured data, as rendered graphically on a display. Given that the structured data are positioned randomly on the example graphical user interface100, it may be difficult for a user to visually identify from the graphical layout of the semi-structured data110-118,120-128, and130-133any particular relationships between the semi-structured data or any discernible patterns. However, in the graphical user interface100, a user may define a particular graphical layout for a number of semi-structured data based on the user's own preferences. As explained in more detail below, techniques are described below that automatically rearrange the graphical layouts of all the other semi-structured data to match the graphical layout defined by the user.

FIG. 2is a block diagram depicting a data exploration module206, consistent with an example embodiment, that is embodied in a computing device200. It should be appreciated that the computing device200may be deployed in the form of, for example, a personal computer, a laptop computer, a server computer, a tablet personal computer, a smart phone, a personal digital assistant, or other computing devices. In various embodiments, the computing device200may be used to implement computer programs, logic, applications, methods, processes, or software to organize the semi-structured data, as described in more detail below.

In the example depicted inFIG. 2, the computing device200executes an operating system202that manages other software processes and/or services executing on the computing device200. In one embodiment, the software processes and/or services may include a collaborative tool module204, which allows users to share documents and other data and provides various structure and tools used in brainstorming and decision making processes. Here, the collaborative tool module204may include a data exploration module206and a database208that is configured to or structured to store, in one embodiment, semi-structured data and properties associated with the semi-structured data. A “property,” as used herein, refers to a characteristic of semi-structured data. In one example, the property refers to an association and an attribute. An “association” refers to a connection between two or more semi-structured data. For example, a particular semi-structured object may include a tag that identifies or points to a different semi-structured object. The tag may include a variety of different identifiers, such as a name of the different semi-structured object or a pointer to the different semi-structured object. An “attribute” refers to a quality or feature belonging to one or more semi-structured data. Examples of attributes include size, shape, color, category, and other attributes. It should be appreciated that in addition to the database208, the semi-structured data and their properties may also be stored in other files, such as an Extensible Markup Language (XML) document, spreadsheet, and other files.

The data exploration module206provides a graphical user interface that functions to provide a user with the ability to manipulate semi-structured data and/or properties of the semi-structured data, as stored in the database208. For example, as explained in more detail below, the data exploration module206can display representations of semi-structured data in the form of graphical items, such as the graphical items depicted inFIG. 1, and through interactions with these graphical items, one or more users in a collaborative session using the collaborative tool module204can define the graphical layout of semi-structured data.

In addition to the collaborative tool module204, the data exploration module206may be embodied in a variety of other applications or services. In another example embodiment, the data exploration module206may be embodied within a molecular modeling software for use in, for example, visualizing molecules. In an alternate example embodiment, the data exploration module206may be embodied within an investigative case management application for use in, for example, detecting patterns from various crime related data. Accordingly, it should be appreciated that in other embodiments, the computing device200may include fewer, more, or different modules apart from those shown inFIG. 2. For example, in yet another embodiment, the database208may be excluded from the collaborative tool module204. Instead, the database208may be stored at a different computing device or storage system.

FIG. 3depicts a flow diagram of a general overview of a method300, in accordance with an example embodiment, for organizing semi-structured data in a graphical layout. In an example embodiment, the method300may be implemented by the data exploration module206and employed in the computing device200depicted inFIG. 2. Referring toFIG. 3, the data exploration module, for example, accesses the semi-structured data at302from, for example, a database or other data sources. The semi-structured data is then rendered at304on a graphical user interface. As illustrated inFIG. 1, the semi-structured data is represented by graphical items, which are rendered or displayed in the graphical user interface.

Using the graphical user interface, a user can define a graphical layout (referred herein as “user-defined” graphical layout) of a number of semi-structured data (referred herein as a “first” number of semi-structured data). Particularly, the user can define the user-defined graphical layout by repositioning the first number of semi-structured data in a particular pattern of his preference. The user can reposition the first number of semi-structured data using a variety of input methodologies, such as by dragging the graphical items with a mouse to new positions or by inputting the coordinates of the graphical items by way of a keyboard.

At306, the data exploration module receives this user input defining the user-defined graphical layout. Upon receipt of the user input, the data exploration module identifies a different number of semi-structured data (or referred herein as a “second” number of semi-structured data) that have properties similar to properties of the first number of semi-structured data. Two or more properties can be similar to each other based on a variety of different constraints. In one example embodiment, one property can be identified as similar to another property if the properties are identical. For example, a number of semi-structured data can have identical attributes and/or associations. In another example embodiment, one property can be identified as similar to another property if the properties fall within a certain range. For example, a number of semi-structured data can be identified as similar if they have attribute values that fall within a predefined range. In yet another example embodiment, one property can be identified as similar to another property if the properties share a common characteristic. For example, a number of semi-structured data can be similar because they have attributes comprised of words having the same or nearly the same meaning. As explained in detail below, the identification of similar properties can be based on the application of constraints to filter the semi-structured data.

Still referring toFIG. 3, with this second number of semi-structured data identified, the graphical layout of the second number of semi-structured data may then be rearranged to match the user-defined graphical layout. This process is repeated until all other semi-structured data having similar properties are identified and their graphical layouts are then reorganized accordingly to match the user-defined graphical layout.

FIGS. 4A and 4Bare graphical user interfaces400illustrating the automatic organization of semi-structured data based on a user-defined graphical layout, consistent with one example embodiment. As depicted inFIG. 4A, semi-structured data110-118,120-128, and130-133are represented by graphical items in a graphical user interface400. Initially, the graphical layout of the semi-structured data110-118,120-128, and130-133is such that the semi-structured data110-118,120-128, and130-133are randomly positioned. However, a user using the graphical user interface400can define a particular graphical layout402of a number of semi-structured data. In this example, the user can reposition the semi-structured data110-112and120-122such that they are aligned along three rows and two columns, as depicted in the graphical layout402. A user may define this particular graphical layout402because, for example, the user may be able to more easily identify particular associations between semi-structured data110-112and120-122or easily identify patterns within the semi-structured data110-112and120-122using this graphical layout402.

In addition to repositioning semi-structured data110-112and120-122, the user may further define associations between this selected number of semi-structured data110-112and120-122, consistent with an example embodiment. As depicted inFIG. 4A, the user may define an association between semi-structured data110and120, between semi-structured data111and121, and between semi-structured data112and122. The lines connecting the semi-structured data110and120,111and121, and112and122are graphical representations of the associations between the semi-structured data110and120,111and121, and112and122.

With the receipt of the user input, which defines the graphical layout402, a number of other semi-structured data126-128,116-118,123-125, and113-115are identified as having similar properties as the semi-structured data110-112and120-122defined in the user input.

Upon identification of this other number of semi-structured data126-128,116-118,123-125, and113-115, the data exploration module, for example, then rearranges the graphical layouts of these semi-structured data126-128,116-118,123-125, and113-115to match the graphical layout402of the semi-structured data120-122and110-112defined in the user input. In the rearrangement, the relative positions between the graphical items representing the number of semi-structured data110-112and120-122are identified. As depicted inFIG. 4B, the graphical items representing semi-structured data126-128,116-118,123-125, and113-115are then positioned to correspond to the relative positions such that the graphical layouts403and404of semi-structured data126-128,116-118,123-125, and113-115match the user-defined graphical layout402.

In a further embodiment, associations between the semi-structured data110-112and120-122are stored as properties of the semi-structured data110-112and120-122. The data exploration module, which can access such properties, can render graphical representations of the associations between these other number of semi-structured data126-128,116-118,123-125, and113-115to match the associations between semi-structured data110-112and120-122. In the embodiment depicted inFIG. 4B, the graphical representations are lines connecting the semi-structured data110-112,120-122,126-128,116-118,123-125, and113-115.

As a result, by simply defining the graphical layout402of a relatively small subset of semi-structured data110-112and120-122, the data exploration module can automatically organize all other semi-structured data126-128,116-118,123-125, and113-115having similar properties to match the graphical layout402. As a result, almost all of the semi-structured data110-112,120-122,126-128,116-118,123-125, and113-115are automatically diagramed according to the user's preference, and therefore, may possibly allow the user to more easily spot or identify certain associations between or patterns in the semi-structured data110-118,120-128, and130-133that otherwise would not be identified had the semi-structured data110-118,120-128, and130-133been arranged randomly or arranged in a different predefined graphical layout.

FIGS. 5A and 5Bare graphical user interfaces500illustrating the automatic organization of semi-structured data based on a user-defined graphical layout, consistent with another example embodiment. As depicted inFIG. 5A, semi-structured data110-118,120-128, and130-133are represented by graphical items in a graphical user interface500. Initially, the graphical layout of the semi-structured data110-118,120-128, and130-133is such that the semi-structured data110-118,120-128, and130-133is randomly positioned. However, a user using the graphical user interface500can define a particular graphical layout502of a number of semi-structured data. In this example, the user can reposition the semi-structured data110-111,120-122, and130such that they are aligned along three rows and two columns, as depicted in the graphical layout502.

In addition to repositioning semi-structured data110-111,120-122, and130, the user may further define associations between this selected number of semi-structured data110-111,120-122, and130, consistent with an example embodiment. As depicted inFIG. 5A, the user may define an association between semi-structured data110and120, between semi-structured data111and121, between semi-structured data111and122, and between semi-structured data130and122. The lines connecting the semi-structured data110and120,111and121,111and122, and130and122, are graphical representations of the associations between the semi-structured data110and120,111and121,111and122, and130and122.

With the receipt of the user input, which defines the graphical layout502, a number of other semi-structured data126-128,116-117,131,123-125,113-114, and132are identified as having similar properties as the semi-structured data110-111,120-122, and130defined in the user input.

Upon identification of these other number of semi-structured data126-128,116-117,131,123-125,113-114, and132, the data exploration module, for example, then rearranges the graphical layouts of these semi-structured data126-128,116-117,131,123-125,113-114, and132to match the graphical layout502of the semi-structured data110-111,120-122, and130defined in the user input. In the rearrangement, the relative positions between the graphical items representing the number of semi-structured data110-111,120-122, and130are identified. As depicted inFIG. 5B, the graphical items representing semi-structured data126-128,116-117,131,123-125,113-114, and132are then positioned to correspond to the relative positions such that the graphical layouts503and504of semi-structured data126-128,116-117,131,123-125,113-114, and132match the graphical layout502defined by the user.

In a further embodiment, associations between the semi-structured data110-111,120-122, and130are stored as properties of the semi-structured data110-111,120-122, and130. The data exploration module, which can access such properties, can render a graphical representation of the associations between the other number of semi-structured data126-128,116-117,131,123-125,113-114, and132to match the associations between semi-structured data110-111,120-122, and130. In the embodiment depicted inFIG. 5B, the graphical representations are lines connecting the semi-structured data110-111,120-122,130,126-128,116-117,131,123-125,113-114, and132.

As a result, by simply defining the graphical layout502of a relatively small subset of semi-structured data110-111,120-122, and130, the data exploration module can automatically organize all other semi-structured data126-128,116-117,131,123-125,113-114, and132having similar properties to match the graphical layout502. As a result, almost all of the semi-structured data110-111,120-122,130,126-128,116-117,131,123-125,113-114, and132are automatically diagramed according to the user's preference, and therefore, may possibly allow the user to more easily spot or identify certain associations between or patterns in the semi-structured data110-118,120-128, and130-133that otherwise would not be identified had the semi-structured data110-118,120-128, and130-133been arranged randomly or arranged in a different predefined graphical layout.

FIG. 6depicts a flow diagram of a detailed method600, in accordance with one example embodiment, for identifying a different number of semi-structured data having similar properties. In an example embodiment, the method600may be implemented by the data exploration module206and employed in the computing device200depicted inFIG. 2. Initially, an input from a user defining a graphical layout of a number of semi-structured objects is received. Referring to602ofFIG. 6, the data exploration module, for example, associates the number of semi-structured data defined by the user with a data model of a frame that is comprised of slots. As used herein, a “frame” is a data-structure for representing a graphical layout of a number of semi-structured data defined by a user. Such a frame may be comprised of a network of nodes and relations. In one example, the upper nodes of a frame may be fixed, and such nodes may represent things that are true about the graphical layout. The lower nodes may have “slots” that are filled by the number of semi-structured data defined by a user. As used herein, a “slot” refers to a node of the frame that is associated with one or more semi-structured data. Each slot in a frame can have or specify one or more constraints, which define limitations of semi-structured data that can be associated with the slots. That is, a constraint can be assigned to a slot specifying a condition that the semi-structured data needs to fulfill in order to fill the slot.

In one embodiment, the constraints can be based on one or more properties of the semi-structured data. One example of a constraint can specify that only semi-structured data having certain properties that match the constraint can be associated with a particular slot. As an example, the constraint can specify only semi-structured data having values X equal to the value “1” (or X=1). Another example of a constraint may specify that only semi-structured data having properties exceeding a certain threshold can be associated with a particular slot. As an example, such a constraint can specify only semi-structured data having values X greater than the value of “1” (or X>1). Yet another example of a constraint may specify that only semi-structured data having properties below a certain threshold can be associated with a particular slot. As an example, such a constraint can specify only semi-structured data having values X less than the value of “1” (or X<1).

At604, a search is conducted for one or more semi-structured data having one or more properties that meet the constraint assigned to each slot. In one embodiment, the search may be conducted by crawling within the semi-structured data. Particularly, each object may have association with one or more other semi-structured data. In the search, the association of one semi-structured data can be followed to identify the other semi-structured data that are associated with the semi-structured data. By crawling through the semi-structured data, many or all the properties of semi-structured data can be found and tested to identify whether the semi-structured data can be associated with a particular slot in the frame.

Once one or more semi-structured data are found that meet the constraint for a particular slot, the semi-structured data are then assigned to the slot at606. This process is repeated by crawling through all the semi-structured data such that each semi-structured data is tested to identify whether it can be associated with a particular slot in the frame.

FIG. 7is a diagram depicting a data model of a frame700having a number of slots, in accordance with an example embodiment. The frame700can be depicted as a network of nodes702-707and relations. The nodes702-707can be associated with a variety of information regarding the graphical layout defined by a user. In the example embodiment depicted inFIG. 7, each lower node705,706, or707has a slot that is filled by one or more semi-structured data. Each slot in the frame700can have or specify one or more constraints. The upper nodes702-704of the frame700define the conditions assigned to the slots. In particular, the constraint defined in node702is assigned to the slot associated with node705. The constraint defined in node703is assigned to the slot associated with node706. The constraint defined in node704is assigned to the slot associated with node707.

Accordingly, the constraint assigned to node702specifies a particular condition that the semi-structured data need to fulfill in order to fill the slot associated with node705. Similarly, the constraint assigned to node703specifies a particular condition that the semi-structured data need to fulfill in order to fill the slot associated with node705. The constraint assigned to node704specifies a particular condition that the semi-structured data need to fulfill in order to fill the slot associated with node707.

In addition to conditions and slots, the frame700can have additional nodes (not shown) that are associated with other information, such as associations between the semi-structured data, relative positions of the graphical items, types of graphical items assigned to semi-structured data, properties of graphical items (e.g., color, size, line width, and other properties), and other information associated with a graphical layout.

FIG. 8depicts a block diagram of a machine in the example form of a processing system200within which may be executed a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

The machine is capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.

The example of the processing system200includes a processor802(e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory804(e.g., random access memory), and static memory806(e.g., static random-access memory), which communicate with each other via bus808. The processing system200may further include video display unit810(e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)). The processing system200also includes an alphanumeric input device812(e.g., a keyboard), a user interface (UI) navigation device814(e.g., a mouse), a disk drive unit816, a signal generation device818(e.g., a speaker), and a network interface device820.

The disk drive unit816(a type of non-volatile memory storage) includes a machine-readable medium822on which is stored one or more sets of data structures and instructions824(e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The data structures and instructions824may also reside, completely or at least partially, within the main memory804and/or within the processor802during execution thereof by processing system200, with the main memory804and processor802also constituting machine-readable, tangible media.

The data structures and instructions824may further be transmitted or received over a computer network850via network interface device820utilizing any one of a number of well-known transfer protocols (e.g., HyperText Transfer Protocol (HTTP)).

Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors802or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors802, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors802may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors802may be distributed across a number of locations.

While the embodiment(s) is (are) described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the embodiment(s) is not limited to them. In general, techniques for graphical layout of semi-structured data may be implemented with facilities consistent with any hardware system or hardware systems defined herein. Many variations, modifications, additions, and improvements are possible.