US20050172217A1 - System and method for schemaless data mapping with nested tables - Google Patents
System and method for schemaless data mapping with nested tables Download PDFInfo
- Publication number
- US20050172217A1 US20050172217A1 US10/805,896 US80589604A US2005172217A1 US 20050172217 A1 US20050172217 A1 US 20050172217A1 US 80589604 A US80589604 A US 80589604A US 2005172217 A1 US2005172217 A1 US 2005172217A1
- Authority
- US
- United States
- Prior art keywords
- path
- parent
- spreadsheet
- payload data
- mapping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/131—Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Definitions
- the present invention relates, generally, to data mapping systems and methods, and, more particularly, to data mapping systems and methods without the use of a schema.
- XML extensible markup language
- XML lists were introduced to display XML payload data conforming to a predetermined schema.
- the relationship between the XML payload data and the makeup of an XML list is defined by an XML map, which is part of the spreadsheet workbook definition.
- the XML map may determine the location of an XML list in the workbook, the number of columns that will be mapped, and the type of element or attribute associated with each column.
- An XML Spreadsheet (XMLSS) file describes the spreadsheet workbook, including all XML lists that the workbook contains. Elements of the predetermined schema are mapped onto a grid to create a mapped XML list, with each row representing a node instance of the payload data. Generally, the schema defines the shape of the XML payload data.
- mapping payload data to a spreadsheet list without the use of a schema may be difficult because of the complexity of mapping nested tables.
- Nested tables are often used to display intricate payload data so that a table may comprise multiple tables (e.g., sub-tables). The recursive nature of nested tables allows for the display of interrelated payload data.
- the present invention comprises a system and method for mapping payload data to a spreadsheet list (e.g., XML list) of spreadsheet data. More particularly, the present invention comprises a system for mapping payload data to a spreadsheet list while supporting the implementation of nested tables, without the use of a schema.
- the present invention After receiving a spreadsheet list, the present invention generates the parent path of each field path defined in the spreadsheet list. The longest parent path (e.g., bottom path) may be used to generate a set of bind nodes from the payload data.
- the present invention may map each bind node to a row in the spreadsheet list. By traversing from each bind node using the bottom path and the field paths, the present invention may obtain the values of all of the other fields in the rows of the spreadsheet list.
- parent patents may be designated as branch bottom paths. All other parent paths may then be associated with an appropriate branch bottom path. During the binding process, each branch bottom path may be evaluated to generate result nodes, which may be used to obtain the values of the fields of the spreadsheet list.
- the present invention maps payload data to a spreadsheet list without the use of a schema.
- the present invention provides a result substantially similar to one generated by using a schema.
- the present invention supports the implementation of nested tables within a spreadsheet list. Accordingly, the present invention eliminates a dependency on the schema to map payload data to a spreadsheet list and, therefore, reduces the potential of data mapping failure. Additionally, the elimination of such a dependency (e.g., processor-intensive data mapping) frees the valuable resources of the computer processing unit for more important tasks.
- FIG. 1 displays a block diagram representation of a spreadsheet data mapping system in accordance with an exemplary embodiment of the present invention.
- FIG. 2 displays a block diagram representation of a computing environment and computer systems thereof which the present invention may utilize in accordance with an exemplary embodiment thereof.
- FIG. 3 displays a pseudo-code representation of spreadsheet data including a spreadsheet list in accordance with an exemplary embodiment of the present invention.
- FIG. 4 displays a pseudo-code representation of payload data in accordance with an exemplary embodiment of the present invention.
- FIG. 5 displays a block diagram of payload data in accordance with an exemplary embodiment of the present invention.
- FIG. 6 displays a block diagram of a mapped spreadsheet list in accordance with an exemplary embodiment of the present invention.
- FIGS. 7A-7C display a flowchart representation of a method of mapping payload data to a spreadsheet list in accordance with an exemplary embodiment of the present invention.
- FIG. 1 displays a block diagram representation of a spreadsheet data mapping system 100 in accordance with an exemplary embodiment of the present invention.
- the spreadsheet data mapping system 100 may comprise a communication device 103 including, but not limited to, a spreadsheet storage unit 109 , a payload data storage unit 105 , and a mapping unit 106 .
- the communication device 103 may be supported by hardware and software components similar to those found in well-known computing systems, environments, and/or configurations, described more fully below with reference to FIG. 2 .
- the spreadsheet storage unit 109 communicatively connects to the mapping unit 106 .
- the spreadsheet storage unit 109 stores spreadsheet data including spreadsheet lists such as, but not limited to, extensible markup language (XML) lists 112 , described more fully below with reference to FIG. 3 .
- the spreadsheet storage unit 109 comprises a memory device capable of storing and retrieving data including, but not limited to, random access memory (RAM), flash memory, magnetic memory devices, optical memory devices, hard disk drives, removable volatile or non-volatile memory devices, optical storage mediums, magnetic storage mediums, or RAM memory cards.
- the spreadsheet storage unit 109 may comprise a remote storage facility accessible through a wired and/or wireless network system.
- the spreadsheet storage unit 109 may comprise a memory system including a multi-stage system of primary and secondary memory devices, as described above.
- the primary memory device and secondary memory device may operate as a cache for each other or the second memory device may serve as a backup to the primary memory device.
- the spreadsheet storage unit 109 may comprise a memory device configured as a simple database file or as a searchable, relational database using a query language, such as SQL.
- the payload data storage unit 115 communicatively connects to the mapping unit 106 .
- the payload data storage unit 115 stores payload data, wherein the payload data may be mapped to a corresponding XML list 112 of the spreadsheet data. Payload data is described more fully below with reference to FIG. 4 .
- the payload data storage unit 115 comprises a memory device similar to the memory devices described above with reference to the spreadsheet storage unit 109 .
- the mapping unit 106 communicatively connects to the spreadsheet storage unit 109 and the payload data storage unit 115 .
- the mapping unit 106 is configured with hardware and software (see FIG. 2 ) appropriate to perform tasks and provide capabilities and functionality as described herein.
- the mapping unit 106 may be adapted to map payload data stored on the payload data storage unit 115 to XML lists 112 stored on the spreadsheet storage unit 109 .
- the mapping unit 106 receives spreadsheet data from the spreadsheet storage unit 109 and receives payload data from the payload data storage unit 115 .
- the spreadsheet data may include XML lists 112 that may generally be defined by a group of fields (also referred to herein as “columns”). Typically, a field may be calculated or mapped. Calculated fields may be defined by a formula or constant value, while mapped fields may be defined by a “path” or “pointer” to payload data.
- the mapping unit 106 may utilize the field paths to obtain a list of nodes (e.g., sometimes referred to as “bind nodes”) from the payload data, whereby each node may then be mapped by the mapping unit 106 to a row in an XML list 112 .
- the mapping unit 106 may obtain values from the payload data for all the fields within the XML list 112 by following a path from the nodes to the desired fields.
- the communication device 103 further comprises a user interface 118 that may be adapted to display data to a user and receive user input.
- the user interface 118 communicatively connects to the mapping unit 106 .
- the mapping unit 106 may provide mapped XML lists 112 to the user interface 118 , which may display the mapped XML lists 112 to the user via a display (not shown).
- the user interface 118 may be designed in a variety of embodiments and formats and may range from a simple to a more complex configuration.
- the user interface 118 may comprise a keypad, display, touch screen or other convenient device, and may also comprise program modules or machine instructions that perform the predetermined tasks, which instructions may be executed on a processing unit 212 .
- the communication device 103 may comprise a network interface 121 for facilitating communication from the communication device 103 to a network 124 .
- the network interface 121 communicatively connects to the mapping unit 106 and a network 124 .
- the mapping unit 106 may provide mapped XML lists 112 to the network interface 121 , which may provide the mapped XML lists 112 to another communication device within the network 124 .
- the network interface 121 typically may be a hardware device, such as a network interface card or an expansion card of the communication device 103 , which facilitates connectivity between the communication device 103 and the network 124 .
- the network interface 121 may comprise a radio transmitter and receiver which enable wireless communication between the communication device 103 and an access point (not shown) of the network 124 .
- a network 124 typically comprises the infrastructure and facilities appropriate to connect a group of two or more communication devices 103 (including, without limitation, a plurality of servers or client devices). Such a network 124 , communication device 103 , and servers may be configured in multiple topologies including, but not limited to, star, bus, or ring configurations. Also, a network 124 , communication device 103 , and servers may be broadly categorized as belonging to a particular architecture including, but not limited to, peer-to-peer or client/server architectures. The network 124 may additionally be classified by the geographical location of the communication devices 103 or servers and the types thereof.
- a network 124 connecting a plurality of computer systems or servers located proximate to each other, such as within a building, is referred to as a local-area network (LAN); if the computer systems are located farther apart, the network 124 is generally referred to as a wide-area network (WAN), such as the Internet; if the computer systems are located within a limited geographical area, such as a university campus or military establishment, the network 124 is referred to as a campus-area network (CAN); if the computer systems are connected together within a city or town, the network 124 is referred to as a metropolitan-area network (MAN); and if the computer systems are connected together within a user's home, the network 124 is referred to as a home-area network (HAN).
- LAN local-area network
- WAN wide-area network
- CAN campus-area network
- MAN metropolitan-area network
- HAN home-area network
- connecting communicatively may include or require any appropriate type of connection for the bi-directional communication of signals and/or media including, but not limited to, analog, digital, wired and wireless communication channels.
- Such communication channels may utilize, but not be limited to, copper wire, optical fiber, radio frequency, infrared, satellite, or other facilities and media.
- FIG. 2 displays a block diagram representation of a computing environment 200 and computer systems 210 , 280 thereof which the present invention may utilize in accordance with an exemplary embodiment thereof.
- the computing environment 200 and computer systems 210 , 280 thereof represent only one example of a suitable computing environment and computer systems for the practice of the present invention and are not intended to suggest any limitation as to the scope of use or functionality of the invention.
- the computer systems 210 , 280 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing environment 200 .
- the present invention is operational with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well-known communication devices 103 , computing systems, environments, and/or configurations that may be appropriate or suitable for use with the present invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network personal computers, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- the present invention may also be described in the general context of comprising computer-executable instructions, such as program modules, being executed by a computer system.
- program modules include routines, programs, programming, objects, components, data, and/or data structures that perform particular tasks or implement particular abstract data types.
- the present invention may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media, including, without limitation, in memory storage devices.
- an exemplary computing environment 200 of the present invention includes a general purpose computing device in the form of a computer system 210 .
- Components of computer system 210 may include, but are not limited to, a processing unit 220 , a system memory 230 , and a system bus 221 that couples various system components including the system memory 230 to the processing unit 220 for bi-directional data and/or instruction communication.
- the system bus 221 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- such architectures include the Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (i.e., also known as the “Mezzanine bus”).
- ISA Industry Standard Architecture
- MCA Micro Channel Architecture
- EISA Enhanced ISA
- VESA Video Electronics Standards Association
- PCI Peripheral Component Interconnect
- Computer system 210 typically includes a variety of computer-readable media.
- Computer-readable media may comprise any available media that may be accessed by, read from, or written to by computer system 210 and may include both volatile and nonvolatile, removable and non-removable media.
- Computer-readable media may comprise computer storage media and communication media.
- Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data, data structures, program modules, programs, programming, or routines.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magneto-optical storage devices, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed by computer system 210 .
- Communication media typically embodies computer-readable instructions, data, data structures, program modules, programs, programming, or routines in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer-readable media.
- the system memory 230 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 231 and random access memory (RAM) 232 .
- ROM read only memory
- RAM random access memory
- BIOS basic input/output system 233
- RAM 232 typically stores data and/or program instructions that are immediately accessible to and/or presently being operated on by processing unit 220 .
- FIG. 2 illustrates operating system 234 , application programs 235 , other program modules 236 , and program data 237 which may be resident in RAM 232 , in whole or in part, from time-to-time.
- the computer 210 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
- FIG. 2 illustrates a hard disk drive 241 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 251 that reads from or writes to a removable, nonvolatile magnetic disk 252 , and an optical disk drive 255 that reads from or writes to a removable, nonvolatile optical disk 256 such as a CD ROM or other optical media.
- removable/non-removable, volatile/nonvolatile computer storage media that may be included in the exemplary computing environment 200 include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
- the hard disk drive 241 is typically connected to the system bus 221 through a non-removable memory interface such as interface 240 , and magnetic disk drive 251 and optical disk drive 255 are typically connected to the system bus 221 by a removable memory interface, such as interface 250 .
- the drives 241 , 251 , 255 and their associated computer storage media described above and illustrated in FIG. 2 provide storage of computer-readable instructions, data, data structures, program modules, programs, programming, or routines for computer system 210 .
- hard disk drive 241 is illustrated as storing operating system 244 , application programs 245 , other program modules 246 , and program data 247 . Note that these components may either be the same as or different from operating system 234 , application programs 235 , other program modules 236 , and program data 237 .
- Operating system 244 , application programs 245 , other program modules 246 , and program data 247 are given different numbers to illustrate that, at a minimum, they are different copies of operating system 234 , application programs 235 , other program modules 236 , and program data 237 .
- a user may enter commands and information into computer system 210 through connected input devices such as a keyboard 262 and pointing device 261 , commonly referred to as a mouse, trackball or touch pad.
- Other connected input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
- a user input interface 260 that is coupled to the system bus 221 , but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
- a monitor 291 or other type of display device is also connected to the system bus 221 via an interface, such as a video interface 290 .
- computer system 210 may also include other peripheral output devices such as speakers 297 and printer 296 , which may be connected through an output peripheral interface 295 .
- the computer system 210 may operate in a networked environment using bi-directional communication connection links to one or more remote computer systems, such as a remote computer system 280 .
- the remote computer system 280 may be a personal computer, a laptop computer, a server computer, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer system 210 , although only a memory storage device 281 of remote computer system 280 has been illustrated in FIG. 2 .
- the bi-directional communication connection links depicted in FIG. 2 include a local area network (LAN) 271 and a wide area network (WAN) 273 , but may also include other networks. Such networks are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
- LAN local area network
- WAN wide area network
- the computer system 210 When communicatively connected to a LAN 271 , the computer system 210 connects to the LAN 271 through a network interface or adapter 270 .
- the computer system 210 When communicatively connected to a WAN 273 , the computer system 210 typically includes a modem 272 or other means for establishing a communication link over the WAN 273 , such as the Internet.
- the modem 272 which may be internal or external, may be connected to the system bus 221 via the user input interface 260 , or other appropriate mechanism.
- program modules depicted relative to the computer system 210 may be stored in the remote memory storage device 281 .
- FIG. 2 illustrates remote application programs 285 as residing in memory storage device 281 . It will be appreciated that the network connections shown are exemplary and other means of establishing a bi-directional communication link between the computers may be used.
- FIG. 3 displays a pseudo-code representation 300 of spreadsheet data including a spreadsheet list 112 in accordance with an exemplary embodiment of the present invention.
- the spreadsheet storage unit 109 includes spreadsheet lists 112 that may be mapped with payload data by the mapping unit 106 .
- the spreadsheet lists 112 are configured in XML code and, therefore, are hereinafter referred to as XML lists 112 .
- XML provides customizable tags that permit the definition, validation, transmission, and interpretation of data between a plurality of systems.
- XML is derived from standard generalized markup language (SGML) and provides a widely-accepted code format for the configuration of data.
- SGML generalized markup language
- XML tags are commands used within a document or code that indicate how the portion of a document or code should be formatted or interpreted.
- XML tags are typically paired and include a beginning tag and an ending tag.
- the beginning tag is often represented by a tag name between a less than (“ ⁇ ”) and greater than (“>”) symbol.
- the ending tag is usually identical to the beginning tag except that after the less than symbol (“ ⁇ ”) there is a forward slash (“/”).
- the range element 306 begins with a “ ⁇ range>” tag and ends with a “ ⁇ /range>” tag. All of the text or code between the beginning “ ⁇ range>” tag and the ending “ ⁇ /range>” tag may be interpreted as part of the range element 306 .
- FIG. 3 displays a portion of an XML spreadsheet (XMLSS), which describes a spreadsheet workbook, including the XML list 112 contained therein.
- the XML list 112 may be defined by a group of columns referred to as fields, which may be represented in the XML list 112 by the field element 312 A- 312 F (e.g., ⁇ field> . . . ⁇ /field>).
- the field elements 312 A- 312 F therefore, represent the columns resulting from the mapping of payload data to the XML list 112 by the mapping unit 106 .
- a field may be calculated or mapped.
- a calculated field may be defined by either a formula or a constant value.
- a mapped field may be defined by a path to the payload data.
- a field path may be represented in the XML list 112 by the xpath element 309 B- 309 G (e.g., ⁇ xpath> . . . ⁇ /xpath>).
- the entry element 303 may also have a path (e.g., sometimes referred to as the “root path”) and may also be represented by an xpath element 309 A.
- the field path is a relative xpath 309 B- 309 G to the entry path and, therefore, the full path to a field requires concatenating the entry path with the field path.
- the field path represented by xpath element 309 C of field element 312 B is “DEPARTMENTID”.
- the full path of the field represented by field element 312 B requires combining the entry xpath represented by xpath element 309 A with the field path represented by xpath element 309 C and, therefore, results in a full path of “/CORP/DEPARTMENT/DEPARTMENTID”.
- a field may also be associated with a particular data or definition type such as, but not limited to, a string, a variable, or an integer.
- a field's data or definition type may be represented, as shown in FIG. 3 , by an xsdtype element 315 A- 315 F.
- the data or definition type represented by xsdtype 315 B of the field represented by field element 312 B is “STRING”.
- an XML list 112 may be configured in numerous arrangements and may comprise a variety of fields and paths. Accordingly, the spreadsheet data displayed in FIG. 3 is for illustrative purposes only and does not limit the scope of the present invention.
- FIG. 4 displays a pseudo-code representation 400 of payload data in accordance with an exemplary embodiment of the present invention.
- the payload data storage unit 115 includes payload data that may be mapped to an XML list 112 of the spreadsheet data.
- the payload data is configured in XML code.
- Payload data generally, corresponds to the fields defined or described in the XML list 112 . Accordingly, the paths defined in an XML list 112 may correlate to XML tags within the payload data.
- the payload data displayed in FIG. 4 relates to the XML list defined in FIG. 3 .
- the payload elements 403 , 406 , 409 , 410 , 412 , 415 shown in FIG. 4 correspond to the full field paths shown in FIG. 3 .
- TABLE 1 displays the correlation between the full field paths of FIG. 3 with the payload elements of FIG. 4 .
- the department name elements 403 A, 403 B correspond to the full field path of “/CORP/DEPARTMENT/@NAME”; the departmentid elements 406 A, 406 B correspond to the full field path of “/CORP/DEPARTMENT/DEPARTMENTID”; the person name elements 412 A- 412 F correspond to the full field paths of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME” and “/CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME”; and the personid elements 415 A- 415 F correspond to the full field paths of “/CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID” and “CORP/DEPARTMENT/CONTRACTORS/PERSON/PERSONID”.
- the “/@” symbols in a field path indicate that the field is an attribute, while the “/” symbol in a field path indicates that the field is an element.
- “NAME” is an attribute of “DEPARTMENT” as indicated by the path “/CORP/DEPARTMENT/@NAME”
- “DEPARTMENTID” is an element of “DEPARTMENT” as indicated by the path “/CORP/DEPARTMENT/DEPARTMENTID”.
- the configuration of the payload data may depend on or conform to the configuration of the XML lists 112 . Accordingly, the payload data represented in FIG. 4 is for illustrative purposes only and does not limit the scope of the present invention.
- FIG. 5 displays a block diagram of payload data in accordance with an exemplary embodiment of the present invention.
- the payload data displayed in FIG. 5 resembles the payload data discussed above with reference to FIG. 4 , except without XML element tags. More specifically, FIG. 5 illustrates the hierarchical characteristics of the field paths of the spreadsheet data (see FIG. 3 ) and the payload data associated therewith.
- the mapping unit 106 may determine the “parent” path of each field path in an XML list 112 (described more fully below with reference to FIG. 7 ).
- a parent path of a particular field path may be determined by following the field path one step back in the path. In other words, the parent path is one step back in the hierarchy than the field path.
- the field path “/CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID/” may have a parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON”.
- a parent path may be calculated for attribute and element fields.
- an attribute field path of “/a/b/@c” and an element field path of “/a/b/c” may have the same parent path of “/a/b”.
- FIG. 5 also illustrates how a field path may be followed to the corresponding payload data.
- the mapping unit 106 may follow the field path of “/CORP/DEPARTMENT/DEPARTMENTID” and discover the corresponding values of “1001” and “1002”.
- a field path may be determined from payload data.
- the payload data “John” may have a corresponding field path of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME”.
- FIG. 6 displays a block diagram of a mapped spreadsheet list 112 in accordance with an exemplary embodiment of the present invention.
- the mapping unit 106 may map the payload data to an XML list 112 of the spreadsheet data.
- the resulting mapped spreadsheet list 112 substantially resembles that of a “schema-mapped” spreadsheet list.
- the mapping unit 106 may designate a “bottom” path for the XML list 112 (described more fully below with reference to FIG. 7 ).
- the bottom path is the longest path of the previously generated parent paths (described above with reference to FIG. 5 ). If more than one parent path qualifies as the longest path, then either the parent path that was generated first may be designated as the bottom path or each of the parent paths that may qualify as the longest path may be designated as a branch bottom path (described more fully below with reference to FIG. 7 ).
- the mapping unit 106 may use the bottom path to designate the nodes, such as bind nodes, of the XML list 112 .
- the nodes may be assigned to a row in the mapped XML list 112 .
- the nodes may act as the index for each row of the XML list 112 . More specifically, the nodes may indicate the number of rows that exist in the mapped XML list 112 .
- the parent paths of the fields illustrated in FIG. 3 are “/CORP/DEPARTMENT” (e.g., the parent path of “/CORP/DEPARTMENT/@NAME”), “/CORP/DEPARTMENT” (e.g., the parent path of “/CORP/DEPARTMENT/DEPARTMENTID”), “/CORP/DEPARTMENT/MANAGERS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME”), “/CORP/DEPARTMENT/MANAGERS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID”), “CORP/DEPARTMENT/CONTRACTORS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME”), and “/CORP/DEPARTMENT/CONTRACTORS/PERSON” (e.g., the parent path of
- the mapping unit 106 may designate “/CORP/DEPARTMENT/MANAGERS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME”) and “/CORP/DEPARTMENT/CONTRACTORS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME”) as the branch bottom paths, because they are the longest parent paths generated and neither is a subset or equal to the other. For each branch bottom path, the mapping unit 106 follows a branch bottom path to determine the result nodes.
- the values of the rows 624 , 627 , 630 , 633 , 636 , 639 and columns 603 , 606 , 609 , 612 , 615 , 618 of the mapped XML list 112 may be determined by following each branch bottom path to each corresponding field path.
- FIGS. 7A-7C display a flowchart representation of a method 700 of mapping payload data to a spreadsheet list 112 in accordance with an exemplary embodiment of the present invention.
- the mapping unit 106 maps payload data received from the payload storage unit 115 to an XML list received from the spreadsheet storage unit 109 without the use of a schema.
- the mapping unit 106 proceeds to step 703 where the mapping unit 703 receives spreadsheet data from the spreadsheet storage unit 109 .
- the spreadsheet data may include XML lists 112 .
- the mapping unit 106 determines whether any XML lists 112 need to be evaluated. If, at step 706 , the mapping unit 106 determines that no XML lists 112 need to be evaluated, then the mapping unit 106 halts operation in accordance with method 700 at step 715 . If, however, at step 706 the mapping unit 106 determines that there exist XML lists 112 to be evaluated, then the mapping unit 106 proceeds to step 709 where the mapping unit 106 determines whether any field paths within an XML list 112 needs to be evaluated.
- mapping unit 106 determines that no field paths need to be evaluated, then the mapping unit 106 proceeds to step 718 , described below. If, however, at step 709 the mapping unit 106 determines that field paths exist that need to be evaluated, then the mapping unit 106 proceeds to step 712 where the mapping unit 106 generates a parent path for a field path. The mapping unit 106 then proceeds to step 709 , described above.
- the mapping unit 106 determines whether any parent paths were generated from the field paths of the XML list 112 . If, at step 718 the mapping unit 106 determines that no parent paths were generated, then the mapping unit 106 proceeds to step 706 described above. Otherwise, if at step 718 the mapping unit 106 determines that parent paths were generated, then the mapping unit proceeds to step 721 where the mapping unit 106 identifies (makes a list of) the longest parent paths that are not subsets of each other. Next, at step 724 , the mapping unit 106 determines if any duplicates exist within the list of longest parent paths.
- mapping unit 106 determines that no duplicates exist within the list of longest parent paths, then the mapping unit 106 proceeds to step 730 , described below. If, however, at 724 the mapping unit 106 determines that duplicates exist within the list of longest parent paths, then the mapping unit 106 proceeds to step 727 where the mapping unit 106 removes all duplicates within the list of longest parent paths.
- the mapping unit 106 designates each of the longest parent paths as bottom paths (also referred to herein as “branch bottom paths”), wherein each bottom path represents a different branch. Then, at 733 , the mapping unit 106 associates each field of the XML list with one or more branch bottom path, such that the parent path of the field is a subset of the associated branch bottom path. The parent path of a field may be a subset of more than one branch bottom path. The mapping unit 106 then proceeds to step 736 where the mapping unit 106 determines whether any branch bottom path still needs to be evaluated.
- mapping unit 106 determines that no branches bottom paths need to be evaluated, then the mapping unit 106 halts operation in accordance with method 700 at 745 . Otherwise, if at 736 the mapping unit 106 determines that a branch bottom path exists that still needs to be evaluated, then the mapping unit 106 proceeds to 739 where the mapping unit 106 evaluates the branch bottom path on the payload data to generate a list of bind nodes. By grouping each parent path with one or more branch bottom path, the value, if any, of each field (column) of the XML list may be obtained from the payload data by traversing from the bind node.
- the mapping unit 106 obtains values from the payload data of all the fields (columns) associated with the branch bottom path within a row by following the path from the bind node for that row to each corresponding field path. If a field belongs to a parent path that is not associated with the branch bottom path, then the field value remains empty. The mapping unit 106 then proceeds to step 736 , described above.
Abstract
A system and method for mapping payload data to a spreadsheet list. The present invention comprises a system for mapping payload data to a spreadsheet list while supporting the implementation of nested tables, without the use of a schema. After receiving a spreadsheet list, the present invention generates the parent path of each field path defined in the spreadsheet list. The longest parent path may be used to generate a set of nodes from the payload data. If more than one unique parent path qualifies as the longest parent path, then such parent patents may be designated as branch bottom paths. All other parent paths may then be associated with an appropriate branch bottom path. During the binding process, each branch bottom path may be evaluated to generate result nodes, which may be used to obtain the values of the fields of the spreadsheet list.
Description
- The present application is a continuation-in-part of co-pending U.S. application Ser. No. 10/772,001, filed on Feb. 4, 2004 and entitled “System and Method for Schemaless Data Mapping.”
- The present invention relates, generally, to data mapping systems and methods, and, more particularly, to data mapping systems and methods without the use of a schema.
- As extensible markup language (XML) becomes more prevalent for moving data between applications, particularly over the Internet, popular applications have implemented web-related capabilities (e.g., document publishing to the web) through the use of XML. One such application is MICROSOFT EXCEL offered by Microsoft Corporation of Redmond, Wash. XML lists were introduced to display XML payload data conforming to a predetermined schema. Typically, the relationship between the XML payload data and the makeup of an XML list is defined by an XML map, which is part of the spreadsheet workbook definition. The XML map may determine the location of an XML list in the workbook, the number of columns that will be mapped, and the type of element or attribute associated with each column. An XML Spreadsheet (XMLSS) file describes the spreadsheet workbook, including all XML lists that the workbook contains. Elements of the predetermined schema are mapped onto a grid to create a mapped XML list, with each row representing a node instance of the payload data. Generally, the schema defines the shape of the XML payload data.
- In order for a spreadsheet application to provide effective interactivity over the Internet, the spreadsheet application must ensure that a given workbook is loaded and displayed over a network as it would be on a stand-alone system. A critical part of this fidelity is the mapping of payload data into XML lists. Such mapping requires the use of a predetermined schema.
- Unfortunately, the reliance of a predetermined schema to map XML payload data to an XML list may be problematic. For example, if the schema is unavailable or corrupt the data may not be properly mapped. Additionally, applying a schema to payload data and XML lists may require intensive processing by a computer processing unit (CPU). Such a burden to the processor may be impractical or disadvantageous for computing systems such as servers or hand-held devices.
- Mapping payload data to a spreadsheet list without the use of a schema may be difficult because of the complexity of mapping nested tables. Nested tables are often used to display intricate payload data so that a table may comprise multiple tables (e.g., sub-tables). The recursive nature of nested tables allows for the display of interrelated payload data.
- Accordingly, there is a need in the art for a system and method for mapping payload data to a spreadsheet list without the use of a schema.
- There is also a need in the art for a system and method for mapping payload data to a spreadsheet list without the use of a schema, wherein the result is substantially similar to data mapping with a schema.
- Further, there is a need in the art for a system and method for mapping payload data to a spreadsheet list while supporting the implementation of nested tables, without the use of a schema.
- Broadly described, the present invention comprises a system and method for mapping payload data to a spreadsheet list (e.g., XML list) of spreadsheet data. More particularly, the present invention comprises a system for mapping payload data to a spreadsheet list while supporting the implementation of nested tables, without the use of a schema. After receiving a spreadsheet list, the present invention generates the parent path of each field path defined in the spreadsheet list. The longest parent path (e.g., bottom path) may be used to generate a set of bind nodes from the payload data. The present invention may map each bind node to a row in the spreadsheet list. By traversing from each bind node using the bottom path and the field paths, the present invention may obtain the values of all of the other fields in the rows of the spreadsheet list. Alternatively, if more than one parent path qualifies as the longest parent path and such parent paths are not equal to or a subset of each other, then such parent patents may be designated as branch bottom paths. All other parent paths may then be associated with an appropriate branch bottom path. During the binding process, each branch bottom path may be evaluated to generate result nodes, which may be used to obtain the values of the fields of the spreadsheet list.
- Advantageously, the present invention maps payload data to a spreadsheet list without the use of a schema. The present invention provides a result substantially similar to one generated by using a schema. Additionally, the present invention supports the implementation of nested tables within a spreadsheet list. Accordingly, the present invention eliminates a dependency on the schema to map payload data to a spreadsheet list and, therefore, reduces the potential of data mapping failure. Additionally, the elimination of such a dependency (e.g., processor-intensive data mapping) frees the valuable resources of the computer processing unit for more important tasks.
- Other features and advantages of the present invention will become apparent upon reading and understanding the present specification when taken in conjunction with the appended drawings.
-
FIG. 1 displays a block diagram representation of a spreadsheet data mapping system in accordance with an exemplary embodiment of the present invention. -
FIG. 2 displays a block diagram representation of a computing environment and computer systems thereof which the present invention may utilize in accordance with an exemplary embodiment thereof. -
FIG. 3 displays a pseudo-code representation of spreadsheet data including a spreadsheet list in accordance with an exemplary embodiment of the present invention. -
FIG. 4 displays a pseudo-code representation of payload data in accordance with an exemplary embodiment of the present invention. -
FIG. 5 displays a block diagram of payload data in accordance with an exemplary embodiment of the present invention. -
FIG. 6 displays a block diagram of a mapped spreadsheet list in accordance with an exemplary embodiment of the present invention. -
FIGS. 7A-7C display a flowchart representation of a method of mapping payload data to a spreadsheet list in accordance with an exemplary embodiment of the present invention. - Referring now to the drawings, in which like numerals represent like components or steps throughout the several views,
FIG. 1 displays a block diagram representation of a spreadsheet data mapping system 100 in accordance with an exemplary embodiment of the present invention. The spreadsheet data mapping system 100 may comprise acommunication device 103 including, but not limited to, aspreadsheet storage unit 109, a payload data storage unit 105, and amapping unit 106. Thecommunication device 103 may be supported by hardware and software components similar to those found in well-known computing systems, environments, and/or configurations, described more fully below with reference toFIG. 2 . - The
spreadsheet storage unit 109 communicatively connects to themapping unit 106. Thespreadsheet storage unit 109 stores spreadsheet data including spreadsheet lists such as, but not limited to, extensible markup language (XML) lists 112, described more fully below with reference toFIG. 3 . Thespreadsheet storage unit 109 comprises a memory device capable of storing and retrieving data including, but not limited to, random access memory (RAM), flash memory, magnetic memory devices, optical memory devices, hard disk drives, removable volatile or non-volatile memory devices, optical storage mediums, magnetic storage mediums, or RAM memory cards. Alternatively, thespreadsheet storage unit 109 may comprise a remote storage facility accessible through a wired and/or wireless network system. Additionally, thespreadsheet storage unit 109 may comprise a memory system including a multi-stage system of primary and secondary memory devices, as described above. The primary memory device and secondary memory device may operate as a cache for each other or the second memory device may serve as a backup to the primary memory device. In yet another arrangement, thespreadsheet storage unit 109 may comprise a memory device configured as a simple database file or as a searchable, relational database using a query language, such as SQL. - The payload
data storage unit 115 communicatively connects to themapping unit 106. The payloaddata storage unit 115 stores payload data, wherein the payload data may be mapped to a corresponding XMLlist 112 of the spreadsheet data. Payload data is described more fully below with reference toFIG. 4 . The payloaddata storage unit 115 comprises a memory device similar to the memory devices described above with reference to thespreadsheet storage unit 109. - The
mapping unit 106 communicatively connects to thespreadsheet storage unit 109 and the payloaddata storage unit 115. Themapping unit 106 is configured with hardware and software (seeFIG. 2 ) appropriate to perform tasks and provide capabilities and functionality as described herein. Themapping unit 106 may be adapted to map payload data stored on the payloaddata storage unit 115 to XML lists 112 stored on thespreadsheet storage unit 109. - In operation, the
mapping unit 106 receives spreadsheet data from thespreadsheet storage unit 109 and receives payload data from the payloaddata storage unit 115. The spreadsheet data may include XML lists 112 that may generally be defined by a group of fields (also referred to herein as “columns”). Typically, a field may be calculated or mapped. Calculated fields may be defined by a formula or constant value, while mapped fields may be defined by a “path” or “pointer” to payload data. Themapping unit 106 may utilize the field paths to obtain a list of nodes (e.g., sometimes referred to as “bind nodes”) from the payload data, whereby each node may then be mapped by themapping unit 106 to a row in anXML list 112. Themapping unit 106 may obtain values from the payload data for all the fields within theXML list 112 by following a path from the nodes to the desired fields. - In an alternative embodiment of the present invention, the
communication device 103 further comprises auser interface 118 that may be adapted to display data to a user and receive user input. Theuser interface 118 communicatively connects to themapping unit 106. Themapping unit 106 may provide mapped XML lists 112 to theuser interface 118, which may display the mapped XML lists 112 to the user via a display (not shown). One skilled in the art will recognize that theuser interface 118 may be designed in a variety of embodiments and formats and may range from a simple to a more complex configuration. In an exemplary embodiment of the present invention, theuser interface 118 may comprise a keypad, display, touch screen or other convenient device, and may also comprise program modules or machine instructions that perform the predetermined tasks, which instructions may be executed on a processing unit 212. - Additionally, the
communication device 103 may comprise anetwork interface 121 for facilitating communication from thecommunication device 103 to anetwork 124. Thenetwork interface 121 communicatively connects to themapping unit 106 and anetwork 124. Themapping unit 106 may provide mapped XML lists 112 to thenetwork interface 121, which may provide the mapped XML lists 112 to another communication device within thenetwork 124. Thenetwork interface 121 typically may be a hardware device, such as a network interface card or an expansion card of thecommunication device 103, which facilitates connectivity between thecommunication device 103 and thenetwork 124. Although not shown inFIG. 1 , thenetwork interface 121 may comprise a radio transmitter and receiver which enable wireless communication between thecommunication device 103 and an access point (not shown) of thenetwork 124. - One skilled in the art will recognize that a
network 124 typically comprises the infrastructure and facilities appropriate to connect a group of two or more communication devices 103 (including, without limitation, a plurality of servers or client devices). Such anetwork 124,communication device 103, and servers may be configured in multiple topologies including, but not limited to, star, bus, or ring configurations. Also, anetwork 124,communication device 103, and servers may be broadly categorized as belonging to a particular architecture including, but not limited to, peer-to-peer or client/server architectures. Thenetwork 124 may additionally be classified by the geographical location of thecommunication devices 103 or servers and the types thereof. For example, anetwork 124 connecting a plurality of computer systems or servers located proximate to each other, such as within a building, is referred to as a local-area network (LAN); if the computer systems are located farther apart, thenetwork 124 is generally referred to as a wide-area network (WAN), such as the Internet; if the computer systems are located within a limited geographical area, such as a university campus or military establishment, thenetwork 124 is referred to as a campus-area network (CAN); if the computer systems are connected together within a city or town, thenetwork 124 is referred to as a metropolitan-area network (MAN); and if the computer systems are connected together within a user's home, thenetwork 124 is referred to as a home-area network (HAN). - One skilled in the art will recognize that connecting communicatively may include or require any appropriate type of connection for the bi-directional communication of signals and/or media including, but not limited to, analog, digital, wired and wireless communication channels. Such communication channels may utilize, but not be limited to, copper wire, optical fiber, radio frequency, infrared, satellite, or other facilities and media.
- While several embodiments of the present invention refer to XML spreadsheet data, XML lists, and XML payload data, one skilled in the art will recognize that other types of data configurations may be used within the scope of the invention and, therefore, the present invention is not limited to data configured in XML.
-
FIG. 2 displays a block diagram representation of acomputing environment 200 andcomputer systems computing environment 200 andcomputer systems computer systems exemplary computing environment 200. - Hence, it should be understood that the present invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known
communication devices 103, computing systems, environments, and/or configurations that may be appropriate or suitable for use with the present invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network personal computers, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. - The present invention may also be described in the general context of comprising computer-executable instructions, such as program modules, being executed by a computer system. Generally, program modules include routines, programs, programming, objects, components, data, and/or data structures that perform particular tasks or implement particular abstract data types. The present invention may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media, including, without limitation, in memory storage devices.
- With reference to
FIG. 2 , anexemplary computing environment 200 of the present invention includes a general purpose computing device in the form of acomputer system 210. Components ofcomputer system 210 may include, but are not limited to, aprocessing unit 220, asystem memory 230, and asystem bus 221 that couples various system components including thesystem memory 230 to theprocessing unit 220 for bi-directional data and/or instruction communication. Thesystem bus 221 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include the Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (i.e., also known as the “Mezzanine bus”). -
Computer system 210 typically includes a variety of computer-readable media. Computer-readable media may comprise any available media that may be accessed by, read from, or written to bycomputer system 210 and may include both volatile and nonvolatile, removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data, data structures, program modules, programs, programming, or routines. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magneto-optical storage devices, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed bycomputer system 210. Communication media typically embodies computer-readable instructions, data, data structures, program modules, programs, programming, or routines in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer-readable media. - The
system memory 230 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 231 and random access memory (RAM) 232. A basic input/output system 233 (BIOS), containing the basic routines that direct the transfer of information between elements withincomputer 210, such as during start-up, is typically stored inROM 231.RAM 232 typically stores data and/or program instructions that are immediately accessible to and/or presently being operated on by processingunit 220. By way of example, and not limitation,FIG. 2 illustratesoperating system 234,application programs 235,other program modules 236, andprogram data 237 which may be resident inRAM 232, in whole or in part, from time-to-time. - The
computer 210 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 2 illustrates ahard disk drive 241 that reads from or writes to non-removable, nonvolatile magnetic media, amagnetic disk drive 251 that reads from or writes to a removable, nonvolatilemagnetic disk 252, and anoptical disk drive 255 that reads from or writes to a removable, nonvolatileoptical disk 256 such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that may be included in theexemplary computing environment 200 include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. Thehard disk drive 241 is typically connected to thesystem bus 221 through a non-removable memory interface such asinterface 240, andmagnetic disk drive 251 andoptical disk drive 255 are typically connected to thesystem bus 221 by a removable memory interface, such asinterface 250. - The
drives FIG. 2 , provide storage of computer-readable instructions, data, data structures, program modules, programs, programming, or routines forcomputer system 210. InFIG. 2 , for example,hard disk drive 241 is illustrated as storingoperating system 244,application programs 245,other program modules 246, andprogram data 247. Note that these components may either be the same as or different fromoperating system 234,application programs 235,other program modules 236, andprogram data 237.Operating system 244,application programs 245,other program modules 246, andprogram data 247 are given different numbers to illustrate that, at a minimum, they are different copies ofoperating system 234,application programs 235,other program modules 236, andprogram data 237. A user may enter commands and information intocomputer system 210 through connected input devices such as akeyboard 262 andpointing device 261, commonly referred to as a mouse, trackball or touch pad. Other connected input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to theprocessing unit 220 through auser input interface 260 that is coupled to thesystem bus 221, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). Amonitor 291 or other type of display device is also connected to thesystem bus 221 via an interface, such as avideo interface 290. In addition to themonitor 291,computer system 210 may also include other peripheral output devices such asspeakers 297 andprinter 296, which may be connected through an outputperipheral interface 295. - The
computer system 210 may operate in a networked environment using bi-directional communication connection links to one or more remote computer systems, such as aremote computer system 280. Theremote computer system 280 may be a personal computer, a laptop computer, a server computer, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to thecomputer system 210, although only amemory storage device 281 ofremote computer system 280 has been illustrated inFIG. 2 . The bi-directional communication connection links depicted inFIG. 2 include a local area network (LAN) 271 and a wide area network (WAN) 273, but may also include other networks. Such networks are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. - When communicatively connected to a
LAN 271, thecomputer system 210 connects to theLAN 271 through a network interface oradapter 270. When communicatively connected to aWAN 273, thecomputer system 210 typically includes amodem 272 or other means for establishing a communication link over theWAN 273, such as the Internet. Themodem 272, which may be internal or external, may be connected to thesystem bus 221 via theuser input interface 260, or other appropriate mechanism. In a networked environment, program modules depicted relative to thecomputer system 210, or portions thereof, may be stored in the remotememory storage device 281. By way of example, and not limitation,FIG. 2 illustratesremote application programs 285 as residing inmemory storage device 281. It will be appreciated that the network connections shown are exemplary and other means of establishing a bi-directional communication link between the computers may be used. -
FIG. 3 displays apseudo-code representation 300 of spreadsheet data including aspreadsheet list 112 in accordance with an exemplary embodiment of the present invention. As discussed above, thespreadsheet storage unit 109 includes spreadsheet lists 112 that may be mapped with payload data by themapping unit 106. In an exemplary embodiment of the present invention, the spreadsheet lists 112 are configured in XML code and, therefore, are hereinafter referred to as XML lists 112. - XML provides customizable tags that permit the definition, validation, transmission, and interpretation of data between a plurality of systems. One skilled in the art will recognize that XML is derived from standard generalized markup language (SGML) and provides a widely-accepted code format for the configuration of data. Generally, XML tags are commands used within a document or code that indicate how the portion of a document or code should be formatted or interpreted. XML tags are typically paired and include a beginning tag and an ending tag. The beginning tag is often represented by a tag name between a less than (“<”) and greater than (“>”) symbol. The ending tag is usually identical to the beginning tag except that after the less than symbol (“<”) there is a forward slash (“/”). For example, and not limitation, the
range element 306 begins with a “<range>” tag and ends with a “</range>” tag. All of the text or code between the beginning “<range>” tag and the ending “</range>” tag may be interpreted as part of therange element 306. - More specifically,
FIG. 3 displays a portion of an XML spreadsheet (XMLSS), which describes a spreadsheet workbook, including theXML list 112 contained therein. The entry element 303 (e.g., <entry x2:id=“list1”> . . . </entry>) represents asingle XML list 112 within the spreadsheet data. TheXML list 112 may be defined by a group of columns referred to as fields, which may be represented in theXML list 112 by thefield element 312A-312F (e.g., <field> . . . </field>). Thefield elements 312A-312F, therefore, represent the columns resulting from the mapping of payload data to theXML list 112 by themapping unit 106. - A field may be calculated or mapped. A calculated field may be defined by either a formula or a constant value. A mapped field may be defined by a path to the payload data. As shown in
FIG. 3 , a field path may be represented in theXML list 112 by thexpath element 309B-309G (e.g., <xpath> . . . </xpath>). Theentry element 303 may also have a path (e.g., sometimes referred to as the “root path”) and may also be represented by anxpath element 309A. The field path is arelative xpath 309B-309G to the entry path and, therefore, the full path to a field requires concatenating the entry path with the field path. For example and not limitation, the field path represented byxpath element 309C offield element 312B is “DEPARTMENTID”. The full path of the field represented byfield element 312B, however, requires combining the entry xpath represented byxpath element 309A with the field path represented byxpath element 309C and, therefore, results in a full path of “/CORP/DEPARTMENT/DEPARTMENTID”. - A field may also be associated with a particular data or definition type such as, but not limited to, a string, a variable, or an integer. A field's data or definition type may be represented, as shown in
FIG. 3 , by anxsdtype element 315A-315F. Using the example above, the data or definition type represented byxsdtype 315B of the field represented byfield element 312B is “STRING”. - One skilled in the art will recognize that an
XML list 112 may be configured in numerous arrangements and may comprise a variety of fields and paths. Accordingly, the spreadsheet data displayed inFIG. 3 is for illustrative purposes only and does not limit the scope of the present invention. -
FIG. 4 displays apseudo-code representation 400 of payload data in accordance with an exemplary embodiment of the present invention. As discussed above, the payloaddata storage unit 115 includes payload data that may be mapped to anXML list 112 of the spreadsheet data. In an exemplary embodiment of the present invention, the payload data is configured in XML code. Payload data, generally, corresponds to the fields defined or described in theXML list 112. Accordingly, the paths defined in anXML list 112 may correlate to XML tags within the payload data. - For example and not limitation, the payload data displayed in
FIG. 4 relates to the XML list defined inFIG. 3 . More specifically, the payload elements 403, 406, 409, 410, 412, 415 shown inFIG. 4 correspond to the full field paths shown inFIG. 3 . TABLE 1 displays the correlation between the full field paths ofFIG. 3 with the payload elements ofFIG. 4 .TABLE 1 /CORP/DEPARTMENT/@NAME <CORP> <DEPARTMENT NAME=“ENGINEERING”> ... </DEPARTMENT> <DEPARTMENT NAME=“HR”> ... </DEPARTMENT> </CORP> /CORP/DEPARTMENT/DEPARTMENTID <CORP> <DEPARTMENT...> <DEPARTMENTID>1001</DEPARTMENTID> ... </DEPARTMENT> <DEPARTMENT...> <DEPARTMENTID>1002</DEPARTMENTID> ... </DEPARTMENT> </CORP> /CORP/DEPARTMENT/MANAGERS/PERSON/@NAME <CORP> <DEPARTMENT...> ... <MANAGERS> <PERSON NAME=“JOHN”>...</PERSON> <PERSON NAME=“PETER”>...</PERSON> </MANAGERS> </DEPARTMENT> <DEPARTMENT...> ... <MANAGERS> <PERSON NAME=“COREY”>...</PERSON> <PERSON NAME=“PAT”>...</PERSON> </MANAGERS> </DEPARTMENT> </CORP> /CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID <CORP> <DEPARTMENT...> ... <MANAGERS> <PERSON...><PERSONID>20001</PERSONID></PERSON> <PERSON...><PERSONID>20002</PERSONID></PERSON> </MANAGERS> </DEPARTMENT> <DEPARTMENT...> ... <MANAGERS> <PERSON...><PERSONID>20002</PERSONID></PERSON> <PERSON...><PERSONID>20003</PERSONID></PERSON> </MANAGERS> </DEPARTMENT> </CORP> /CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME <CORP> <DEPARTMENT...> ... <CONTRACTORS> <PERSON NAME=“DARREN”>...</PERSON> </CONTRACTORS> </DEPARTMENT> <DEPARTMENT...> ... <CONTRACTORS> <PERSON NAME=“DENISE”>...</PERSON> </CONTRACTORS> </DEPARTMENT> </CORP> /CORP/DEPARTMENT/CONTRACTORS/PERSON/PERSONID <CORP> <DEPARTMENT...> ... <CONTRACTORS> <PERSON...><PERSONID>20005</PERSONID></PERSON> </CONTRACTORS> </DEPARTMENT> <DEPARTMENT...> ... <CONTRACTORS> <PERSON...><PERSONID>20006</PERSONID></PERSON> </CONTRACTORS> </DEPARTMENT> </CORP> - As shown in Table 1, the
department name elements departmentid elements person name elements 412A-412F correspond to the full field paths of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME” and “/CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME”; and thepersonid elements 415A-415F correspond to the full field paths of “/CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID” and “CORP/DEPARTMENT/CONTRACTORS/PERSON/PERSONID”. In an exemplary embodiment of the present invention, the “/@” symbols in a field path indicate that the field is an attribute, while the “/” symbol in a field path indicates that the field is an element. Thus, “NAME” is an attribute of “DEPARTMENT” as indicated by the path “/CORP/DEPARTMENT/@NAME”, while “DEPARTMENTID” is an element of “DEPARTMENT” as indicated by the path “/CORP/DEPARTMENT/DEPARTMENTID”. - One skilled in the art will recognize that the configuration of the payload data may depend on or conform to the configuration of the XML lists 112. Accordingly, the payload data represented in
FIG. 4 is for illustrative purposes only and does not limit the scope of the present invention. -
FIG. 5 displays a block diagram of payload data in accordance with an exemplary embodiment of the present invention. The payload data displayed inFIG. 5 resembles the payload data discussed above with reference toFIG. 4 , except without XML element tags. More specifically,FIG. 5 illustrates the hierarchical characteristics of the field paths of the spreadsheet data (seeFIG. 3 ) and the payload data associated therewith. - In an exemplary embodiment of the present invention, the
mapping unit 106 may determine the “parent” path of each field path in an XML list 112 (described more fully below with reference toFIG. 7 ). A parent path of a particular field path may be determined by following the field path one step back in the path. In other words, the parent path is one step back in the hierarchy than the field path. For example and not limitation, the field path “/CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID/” may have a parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON”. Additionally, a parent path may be calculated for attribute and element fields. Thus, an attribute field path of “/a/b/@c” and an element field path of “/a/b/c” may have the same parent path of “/a/b”. -
FIG. 5 also illustrates how a field path may be followed to the corresponding payload data. For example and not limitation, themapping unit 106 may follow the field path of “/CORP/DEPARTMENT/DEPARTMENTID” and discover the corresponding values of “1001” and “1002”. Conversely, a field path may be determined from payload data. For example and not limitation, the payload data “John” may have a corresponding field path of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME”. -
FIG. 6 displays a block diagram of a mappedspreadsheet list 112 in accordance with an exemplary embodiment of the present invention. As described above, themapping unit 106 may map the payload data to anXML list 112 of the spreadsheet data. Although such mapping does not rely on a schema, the resulting mappedspreadsheet list 112 substantially resembles that of a “schema-mapped” spreadsheet list. - In an exemplary embodiment of the present invention, the
mapping unit 106 may designate a “bottom” path for the XML list 112 (described more fully below with reference toFIG. 7 ). Typically, the bottom path is the longest path of the previously generated parent paths (described above with reference toFIG. 5 ). If more than one parent path qualifies as the longest path, then either the parent path that was generated first may be designated as the bottom path or each of the parent paths that may qualify as the longest path may be designated as a branch bottom path (described more fully below with reference toFIG. 7 ). - The
mapping unit 106 may use the bottom path to designate the nodes, such as bind nodes, of theXML list 112. Typically, the nodes may be assigned to a row in the mappedXML list 112. The nodes may act as the index for each row of theXML list 112. More specifically, the nodes may indicate the number of rows that exist in the mappedXML list 112. - For example and not limitation, the parent paths of the fields illustrated in
FIG. 3 are “/CORP/DEPARTMENT” (e.g., the parent path of “/CORP/DEPARTMENT/@NAME”), “/CORP/DEPARTMENT” (e.g., the parent path of “/CORP/DEPARTMENT/DEPARTMENTID”), “/CORP/DEPARTMENT/MANAGERS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME”), “/CORP/DEPARTMENT/MANAGERS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON/PERSONID”), “CORP/DEPARTMENT/CONTRACTORS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME”), and “/CORP/DEPARTMENT/CONTRACTORS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/CONTRACTORS/PERSON/PERSONID”). Themapping unit 106 may designate “/CORP/DEPARTMENT/MANAGERS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/MANAGERS/PERSON/@NAME”) and “/CORP/DEPARTMENT/CONTRACTORS/PERSON” (e.g., the parent path of “/CORP/DEPARTMENT/CONTRACTORS/PERSON/@NAME”) as the branch bottom paths, because they are the longest parent paths generated and neither is a subset or equal to the other. For each branch bottom path, themapping unit 106 follows a branch bottom path to determine the result nodes. The values of therows columns XML list 112 may be determined by following each branch bottom path to each corresponding field path. -
FIGS. 7A-7C display a flowchart representation of amethod 700 of mapping payload data to aspreadsheet list 112 in accordance with an exemplary embodiment of the present invention. Themapping unit 106 maps payload data received from thepayload storage unit 115 to an XML list received from thespreadsheet storage unit 109 without the use of a schema. - After starting at
step 701, themapping unit 106 proceeds to step 703 where themapping unit 703 receives spreadsheet data from thespreadsheet storage unit 109. The spreadsheet data may include XML lists 112. Next, atstep 706 themapping unit 106 determines whether any XML lists 112 need to be evaluated. If, atstep 706, themapping unit 106 determines that no XML lists 112 need to be evaluated, then themapping unit 106 halts operation in accordance withmethod 700 atstep 715. If, however, atstep 706 themapping unit 106 determines that there exist XML lists 112 to be evaluated, then themapping unit 106 proceeds to step 709 where themapping unit 106 determines whether any field paths within anXML list 112 needs to be evaluated. If atstep 709, themapping unit 106 determines that no field paths need to be evaluated, then themapping unit 106 proceeds to step 718, described below. If, however, atstep 709 themapping unit 106 determines that field paths exist that need to be evaluated, then themapping unit 106 proceeds to step 712 where themapping unit 106 generates a parent path for a field path. Themapping unit 106 then proceeds to step 709, described above. - At
step 718, themapping unit 106 determines whether any parent paths were generated from the field paths of theXML list 112. If, atstep 718 themapping unit 106 determines that no parent paths were generated, then themapping unit 106 proceeds to step 706 described above. Otherwise, if atstep 718 themapping unit 106 determines that parent paths were generated, then the mapping unit proceeds to step 721 where themapping unit 106 identifies (makes a list of) the longest parent paths that are not subsets of each other. Next, atstep 724, themapping unit 106 determines if any duplicates exist within the list of longest parent paths. If atstep 724 themapping unit 106 determines that no duplicates exist within the list of longest parent paths, then themapping unit 106 proceeds to step 730, described below. If, however, at 724 themapping unit 106 determines that duplicates exist within the list of longest parent paths, then themapping unit 106 proceeds to step 727 where themapping unit 106 removes all duplicates within the list of longest parent paths. - Next, at 730, the
mapping unit 106 designates each of the longest parent paths as bottom paths (also referred to herein as “branch bottom paths”), wherein each bottom path represents a different branch. Then, at 733, themapping unit 106 associates each field of the XML list with one or more branch bottom path, such that the parent path of the field is a subset of the associated branch bottom path. The parent path of a field may be a subset of more than one branch bottom path. Themapping unit 106 then proceeds to step 736 where themapping unit 106 determines whether any branch bottom path still needs to be evaluated. If, at 736, themapping unit 106 determines that no branches bottom paths need to be evaluated, then themapping unit 106 halts operation in accordance withmethod 700 at 745. Otherwise, if at 736 themapping unit 106 determines that a branch bottom path exists that still needs to be evaluated, then themapping unit 106 proceeds to 739 where themapping unit 106 evaluates the branch bottom path on the payload data to generate a list of bind nodes. By grouping each parent path with one or more branch bottom path, the value, if any, of each field (column) of the XML list may be obtained from the payload data by traversing from the bind node. Next, at 742, themapping unit 106 obtains values from the payload data of all the fields (columns) associated with the branch bottom path within a row by following the path from the bind node for that row to each corresponding field path. If a field belongs to a parent path that is not associated with the branch bottom path, then the field value remains empty. Themapping unit 106 then proceeds to step 736, described above. - Whereas the present invention has been described in detail it is understood that variations and modifications may be effected within the spirit and scope of the invention, as described herein before and as defined in the appended claims. The corresponding structures, materials, acts, and equivalents of all mean-plus-function elements, if any, in the claims below are intended to include any structure, material, or acts for performing the functions in combination with other claimed elements as specifically claimed.
Claims (21)
1. A system for mapping payload data to spreadsheet lists, the system comprising:
a spreadsheet storage unit adapted to store spreadsheet data including at least one spreadsheet list;
a payload data storage unit adapted to store payload data; and
a mapping unit adapted to receive spreadsheet data from said spreadsheet storage unit, receive payload data from said payload data storage unit, and map said payload data to said at least one spreadsheet list.
2. The system of claim 1 , wherein said at least one spreadsheet list includes extensible markup language (XML) lists.
3. The system of claim 1 , wherein the system further comprises:
a user interface adapted to receive said at least one mapped spreadsheet list from said mapping unit and display said at least one mapped spreadsheet list to a user.
4. The system of claim 1 , wherein the system further comprises:
a network interface adapted to receive said at least one mapped spreadsheet list from said mapping unit and provide said at least one mapped spreadsheet list to a network.
5. The system of claim 1 , wherein said at least one spreadsheet list includes at least one field path associated with said payload data, and wherein said mapping unit is further adapted to determine at least one parent path from said at least one field path.
6. The system of claim 5 , wherein said mapping unit is further adapted to designate at lest one branch bottom path from said at least one parent path, wherein said at least one branch bottom path includes a longest path of said at least one parent path.
7. The system of claim 6 , wherein said mapping unit is further adapted to designate at least one result node from said at least one branch bottom path by applying said at least one branch bottom path to said payload data.
8. The system of claim 7 , wherein said mapping unit is further adapted to map said at least one result node to a row in a spreadsheet list.
9. The system of claim 8 , wherein said row includes a plurality of fields, and wherein said mapping unit is further adapted to obtain values for said plurality of fields by using said at least one branch bottom path and said at least one result node with said payload data.
10. A method for mapping payload data to spreadsheet lists, the method comprising the steps of:
receiving spreadsheet data including at least one spreadsheet list, wherein said at least one spreadsheet list includes at least one path associated with a field;
receiving payload data, wherein said payload data is associated with said spreadsheet data; and
mapping said payload data to said at least one spreadsheet list by using said at least one path.
11. The method of claim 10 , wherein mapping said payload data to said at least one spreadsheet list by using said at least one path further comprises the steps of:
generating a set of parent paths for said at least one path;
designating at least one parent path of said set of parent paths as at least one branch bottom path; and
generating a set of nodes from payload data, wherein said set of nodes is generated by evaluating said at least one branch bottom path on said payload data.
12. The method of claim 11 , wherein mapping said payload data to said at least one spreadsheet list by using said at least one path further comprises the steps of:
mapping a node of said set of nodes to a row of said at least one spreadsheet list; and
retrieving a value of said field within said row by tracing said at least one branch bottom path to said at least one path associated with said field within said spreadsheet data.
13. The method of claim 11 , wherein generating a set of parent paths for said at least one path comprises the steps of:
enumerating said at least one path of said spreadsheet data;
following enumerated said at least one path back to a previous field; and
inserting a path associated with said previous field into said set of parent paths.
14. The method of claim 11 , wherein designating at least one parent path of said set of parent paths as at least one branch bottom path comprises the steps of:
determining at least one longest parent path of said set of parent paths; and
designating said at least one longest parent path as at least one branch bottom path, if a first parent path of said at least one longest parent path is not a subset of a second parent path of said at least one longest parent path.
15. The method of claim 11 , the method further comprising the steps of:
associating a third parent path of said set of parent paths with said at least one branch bottom path, wherein said third parent path is a subset of said at least one branch bottom path.
16. A computer-readable medium comprising computer-executable instructions for mapping payload data to spreadsheet lists, the computer-executable instructions performing the steps of:
receiving spreadsheet data including at least one spreadsheet list, wherein said at least one spreadsheet list includes at least one path associated with a field;
receiving payload data, wherein said payload data is associated with said spreadsheet data; and
mapping said payload data to said at least one spreadsheet list by using said at least one path.
17. The computer-readable medium of claim 16 , wherein mapping said payload data to said at least one spreadsheet list by using said at least one path further comprises the steps of:
generating a set of parent paths for said at least one path;
designating at least one parent path of said set of parent paths as at least one branch bottom path; and
generating a set of nodes from payload data, wherein said set of nodes is generated by evaluating said at least one branch bottom path on said payload data.
18. The computer-readable medium of claim 17 , wherein mapping said payload data to said at least one spreadsheet list by using said at least one path further comprises the steps of:
mapping a node of said set of nodes to a row of said at least one spreadsheet list; and
retrieving a value of said field within said row by tracing said at least one branch bottom path to said at least one path associated with said field within said spreadsheet data.
19. The computer-readable medium of claim 17 , wherein generating a set of parent paths for said at least one path comprises the steps of:
enumerating said at least one path of said spreadsheet data;
following enumerated said at least one path back to a previous field; and
inserting a path associated with said previous field into said set of parent paths.
20. The computer-readable medium of claim 17 , wherein designating at least one parent path of said set of parent paths as at least one branch bottom path comprises the steps of:
determining at least one longest parent path of said set of parent paths; and
designating said at least one longest parent path as at least one branch bottom path, if a first parent path of said at least one longest parent path is not a subset of a second parent path of said at least one longest parent path.
21. The computer-readable medium of claim 17 , the computer-executable instructions further performing the steps of:
associating a third parent path of said set of parent paths with said at least one branch bottom path, wherein said third parent path is a subset of said at least one branch bottom path.
Priority Applications (19)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/805,896 US20050172217A1 (en) | 2004-02-04 | 2004-03-22 | System and method for schemaless data mapping with nested tables |
AU2005200999A AU2005200999B2 (en) | 2004-03-22 | 2005-03-04 | System and method for schemaless data mapping with nested tables |
TW094106847A TWI353527B (en) | 2004-03-22 | 2005-03-07 | System and method for schemaless data mapping with |
IL167313A IL167313A (en) | 2004-03-22 | 2005-03-08 | System and method for schemaless data mapping with nested tables |
SG200501674A SG115773A1 (en) | 2004-03-22 | 2005-03-09 | System and method for schemaless data mapping with nested tables |
MYPI20051103A MY154396A (en) | 2004-03-22 | 2005-03-16 | System and method for schemaless data mapping with nested tables. |
CO05025183A CO5680122A1 (en) | 2004-03-22 | 2005-03-17 | SYSTEM AND METHOD FOR DATA MAPPING WITHOUT A SCHEME WITH NESTED BOARDS |
MXPA05003138A MXPA05003138A (en) | 2004-03-22 | 2005-03-18 | System and method for schemaless data mapping with nested tables. |
JP2005080091A JP4711708B2 (en) | 2004-03-22 | 2005-03-18 | System and method for schemaless data mapping using nested tables |
NZ538934A NZ538934A (en) | 2004-03-22 | 2005-03-18 | System for mapping payload data using a XML list into a spreadsheet |
EP05102141A EP1580671A3 (en) | 2004-03-22 | 2005-03-18 | Data mapping with nested tables |
ZA200502315A ZA200502315B (en) | 2004-03-22 | 2005-03-18 | System and method for schemaless data mapping with nested tables |
CNB2005100590955A CN100435143C (en) | 2004-03-22 | 2005-03-21 | System and method for modeless data mapping with nested tables |
RU2005107873/02A RU2370808C2 (en) | 2004-03-22 | 2005-03-21 | System and method for data display with enclosed tables without circuit diagram |
NO20051482A NO333083B1 (en) | 2004-03-22 | 2005-03-21 | System and method for mapping data without using nested table form |
CA002501608A CA2501608A1 (en) | 2004-03-22 | 2005-03-21 | System and method for schemaless data mapping with nested tables |
KR1020050023677A KR101122841B1 (en) | 2004-03-22 | 2005-03-22 | System and method for schemaless data mapping with nested tables |
BR0501150-7A BRPI0501150A (en) | 2004-03-22 | 2005-03-22 | System and method for schemaless data mapping with nested tables |
US11/649,460 US8584003B2 (en) | 2004-02-04 | 2007-01-03 | System and method for schemaless data mapping with nested tables |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US77200104A | 2004-02-04 | 2004-02-04 | |
US10/805,896 US20050172217A1 (en) | 2004-02-04 | 2004-03-22 | System and method for schemaless data mapping with nested tables |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US77200104A Continuation-In-Part | 2004-02-04 | 2004-02-04 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/649,460 Continuation US8584003B2 (en) | 2004-02-04 | 2007-01-03 | System and method for schemaless data mapping with nested tables |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050172217A1 true US20050172217A1 (en) | 2005-08-04 |
Family
ID=34862024
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/805,896 Abandoned US20050172217A1 (en) | 2004-02-04 | 2004-03-22 | System and method for schemaless data mapping with nested tables |
US11/649,460 Expired - Fee Related US8584003B2 (en) | 2004-02-04 | 2007-01-03 | System and method for schemaless data mapping with nested tables |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/649,460 Expired - Fee Related US8584003B2 (en) | 2004-02-04 | 2007-01-03 | System and method for schemaless data mapping with nested tables |
Country Status (18)
Country | Link |
---|---|
US (2) | US20050172217A1 (en) |
EP (1) | EP1580671A3 (en) |
JP (1) | JP4711708B2 (en) |
KR (1) | KR101122841B1 (en) |
CN (1) | CN100435143C (en) |
AU (1) | AU2005200999B2 (en) |
BR (1) | BRPI0501150A (en) |
CA (1) | CA2501608A1 (en) |
CO (1) | CO5680122A1 (en) |
IL (1) | IL167313A (en) |
MX (1) | MXPA05003138A (en) |
MY (1) | MY154396A (en) |
NO (1) | NO333083B1 (en) |
NZ (1) | NZ538934A (en) |
RU (1) | RU2370808C2 (en) |
SG (1) | SG115773A1 (en) |
TW (1) | TWI353527B (en) |
ZA (1) | ZA200502315B (en) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277163A1 (en) * | 2005-06-03 | 2006-12-07 | Eric Schemer | Demonstration tool for a business information enterprise system |
US20070124318A1 (en) * | 2004-02-04 | 2007-05-31 | Microsoft Corporation | System and method for schemaless data mapping with nested tables |
US20090158251A1 (en) * | 2007-12-18 | 2009-06-18 | Rohan Angrish | Techniques for query and dml over relational tables using spreadsheet applications |
US20090327213A1 (en) * | 2008-06-25 | 2009-12-31 | Microsoft Corporation | Document index for handheld application navigation |
US7782254B2 (en) | 2004-10-15 | 2010-08-24 | Telecommunication Systems, Inc. | Culled satellite ephemeris information based on limiting a span of an inverted cone for locating satellite in-range determinations |
US7825780B2 (en) | 2005-10-05 | 2010-11-02 | Telecommunication Systems, Inc. | Cellular augmented vehicle alarm notification together with location services for position of an alarming vehicle |
US7899450B2 (en) * | 2006-03-01 | 2011-03-01 | Telecommunication Systems, Inc. | Cellular augmented radar/laser detection using local mobile network within cellular network |
US20110060767A1 (en) * | 2009-09-08 | 2011-03-10 | Oracle International Corporation | Leveraging xml capabilities of a database to enhance handling of document data |
CN102067111A (en) * | 2008-06-20 | 2011-05-18 | 微软公司 | Hierarchically presenting tabular data |
US8126889B2 (en) | 2002-03-28 | 2012-02-28 | Telecommunication Systems, Inc. | Location fidelity adjustment based on mobile subscriber privacy profile |
US8315599B2 (en) | 2010-07-09 | 2012-11-20 | Telecommunication Systems, Inc. | Location privacy selector |
US8525681B2 (en) | 2008-10-14 | 2013-09-03 | Telecommunication Systems, Inc. | Location based proximity alert |
US8892128B2 (en) | 2008-10-14 | 2014-11-18 | Telecommunication Systems, Inc. | Location based geo-reminders |
US9167553B2 (en) | 2006-03-01 | 2015-10-20 | Telecommunication Systems, Inc. | GeoNexus proximity detector network |
US9198054B2 (en) | 2011-09-02 | 2015-11-24 | Telecommunication Systems, Inc. | Aggregate location dynometer (ALD) |
US9460129B2 (en) | 2013-10-01 | 2016-10-04 | Vmware, Inc. | Method for tracking a schema in a schema-less database |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8365066B2 (en) * | 2010-02-09 | 2013-01-29 | Konica Minolta Laboratory U.S.A., Inc. | Systems and methods for processing markup language specified spreadsheet styles |
US8359308B2 (en) * | 2010-04-01 | 2013-01-22 | Microsoft Corporation | Inline data correlation and hierarchical datasets |
US10546057B2 (en) * | 2011-10-28 | 2020-01-28 | Microsoft Technology Licensing, Llc | Spreadsheet program-based data classification for source target mapping |
US20130311864A1 (en) * | 2012-05-16 | 2013-11-21 | N. Nagaraj | Intelligent and robust context based XML data parsing from spreadsheets |
US10191955B2 (en) * | 2013-03-13 | 2019-01-29 | Microsoft Technology Licensing, Llc | Detection and visualization of schema-less data |
CN105069542A (en) * | 2015-06-25 | 2015-11-18 | 中铁四局集团有限公司 | Responsibility cost budget drafting method and system |
CN104978307A (en) * | 2015-06-25 | 2015-10-14 | 中铁四局集团有限公司 | List processing method and apparatus |
CN104881762A (en) * | 2015-06-25 | 2015-09-02 | 中铁四局集团有限公司 | Engineering quantity list decomposition method and system |
CN116050362B (en) * | 2023-03-23 | 2023-07-04 | 青岛诺亚信息技术有限公司 | Web form dynamic data binding method, medium and system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020120598A1 (en) * | 2001-02-26 | 2002-08-29 | Ori Software Development Ltd. | Encoding semi-structured data for efficient search and browse |
US6502101B1 (en) * | 2000-07-13 | 2002-12-31 | Microsoft Corporation | Converting a hierarchical data structure into a flat data structure |
US6631497B1 (en) * | 1999-07-19 | 2003-10-07 | International Business Machines Corporation | Binding data from data source to cells in a spreadsheet |
US20030212664A1 (en) * | 2002-05-10 | 2003-11-13 | Martin Breining | Querying markup language data sources using a relational query processor |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NZ239657A (en) | 1991-09-03 | 1995-07-26 | Norman Michael Rorke | Transferring data from database to spreadsheet file cells |
WO2000023915A1 (en) | 1998-10-16 | 2000-04-27 | Commontown Pte Ltd | A virtual space |
US6920608B1 (en) * | 1999-05-21 | 2005-07-19 | E Numerate Solutions, Inc. | Chart view for reusable data markup language |
US6766330B1 (en) * | 1999-10-19 | 2004-07-20 | International Business Machines Corporation | Universal output constructor for XML queries universal output constructor for XML queries |
US6941510B1 (en) * | 2000-06-06 | 2005-09-06 | Groove Networks, Inc. | Method and apparatus for efficient management of XML documents |
US6941511B1 (en) * | 2000-08-31 | 2005-09-06 | International Business Machines Corporation | High-performance extensible document transformation |
US6947947B2 (en) * | 2001-08-17 | 2005-09-20 | Universal Business Matrix Llc | Method for adding metadata to data |
AU2002334721B2 (en) * | 2001-09-28 | 2008-10-23 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
US6925470B1 (en) * | 2002-01-25 | 2005-08-02 | Amphire Solutions, Inc. | Method and apparatus for database mapping of XML objects into a relational database |
US20030188264A1 (en) * | 2002-03-29 | 2003-10-02 | Full Degree, Inc. | Method and apparatus for XML data normalization |
US7017112B2 (en) * | 2003-02-28 | 2006-03-21 | Microsoft Corporation | Importing and exporting markup language data in a spreadsheet application document |
US7421646B1 (en) * | 2004-02-04 | 2008-09-02 | Microsoft Corporation | System and method for schemaless data mapping |
US20050172217A1 (en) * | 2004-02-04 | 2005-08-04 | Yiu-Ming Leung | System and method for schemaless data mapping with nested tables |
-
2004
- 2004-03-22 US US10/805,896 patent/US20050172217A1/en not_active Abandoned
-
2005
- 2005-03-04 AU AU2005200999A patent/AU2005200999B2/en not_active Ceased
- 2005-03-07 TW TW094106847A patent/TWI353527B/en not_active IP Right Cessation
- 2005-03-08 IL IL167313A patent/IL167313A/en not_active IP Right Cessation
- 2005-03-09 SG SG200501674A patent/SG115773A1/en unknown
- 2005-03-16 MY MYPI20051103A patent/MY154396A/en unknown
- 2005-03-17 CO CO05025183A patent/CO5680122A1/en not_active Application Discontinuation
- 2005-03-18 MX MXPA05003138A patent/MXPA05003138A/en active IP Right Grant
- 2005-03-18 EP EP05102141A patent/EP1580671A3/en not_active Ceased
- 2005-03-18 NZ NZ538934A patent/NZ538934A/en not_active IP Right Cessation
- 2005-03-18 JP JP2005080091A patent/JP4711708B2/en not_active Expired - Fee Related
- 2005-03-18 ZA ZA200502315A patent/ZA200502315B/en unknown
- 2005-03-21 CA CA002501608A patent/CA2501608A1/en not_active Abandoned
- 2005-03-21 RU RU2005107873/02A patent/RU2370808C2/en not_active IP Right Cessation
- 2005-03-21 NO NO20051482A patent/NO333083B1/en not_active IP Right Cessation
- 2005-03-21 CN CNB2005100590955A patent/CN100435143C/en not_active Expired - Fee Related
- 2005-03-22 BR BR0501150-7A patent/BRPI0501150A/en not_active IP Right Cessation
- 2005-03-22 KR KR1020050023677A patent/KR101122841B1/en not_active IP Right Cessation
-
2007
- 2007-01-03 US US11/649,460 patent/US8584003B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631497B1 (en) * | 1999-07-19 | 2003-10-07 | International Business Machines Corporation | Binding data from data source to cells in a spreadsheet |
US6502101B1 (en) * | 2000-07-13 | 2002-12-31 | Microsoft Corporation | Converting a hierarchical data structure into a flat data structure |
US20020120598A1 (en) * | 2001-02-26 | 2002-08-29 | Ori Software Development Ltd. | Encoding semi-structured data for efficient search and browse |
US20030212664A1 (en) * | 2002-05-10 | 2003-11-13 | Martin Breining | Querying markup language data sources using a relational query processor |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8126889B2 (en) | 2002-03-28 | 2012-02-28 | Telecommunication Systems, Inc. | Location fidelity adjustment based on mobile subscriber privacy profile |
US20070124318A1 (en) * | 2004-02-04 | 2007-05-31 | Microsoft Corporation | System and method for schemaless data mapping with nested tables |
US8584003B2 (en) | 2004-02-04 | 2013-11-12 | Yiu-Ming Leung | System and method for schemaless data mapping with nested tables |
US7782254B2 (en) | 2004-10-15 | 2010-08-24 | Telecommunication Systems, Inc. | Culled satellite ephemeris information based on limiting a span of an inverted cone for locating satellite in-range determinations |
US7836104B2 (en) * | 2005-06-03 | 2010-11-16 | Sap Ag | Demonstration tool for a business information enterprise system |
US20060277163A1 (en) * | 2005-06-03 | 2006-12-07 | Eric Schemer | Demonstration tool for a business information enterprise system |
US20110041048A1 (en) * | 2005-06-03 | 2011-02-17 | Eric Schemer | Demonstration tool for a business information enterprise system |
US8032567B2 (en) * | 2005-06-03 | 2011-10-04 | Sap Ag | Demonstration tool for a business information enterprise system |
US7825780B2 (en) | 2005-10-05 | 2010-11-02 | Telecommunication Systems, Inc. | Cellular augmented vehicle alarm notification together with location services for position of an alarming vehicle |
US7899450B2 (en) * | 2006-03-01 | 2011-03-01 | Telecommunication Systems, Inc. | Cellular augmented radar/laser detection using local mobile network within cellular network |
US9167553B2 (en) | 2006-03-01 | 2015-10-20 | Telecommunication Systems, Inc. | GeoNexus proximity detector network |
US9330149B2 (en) * | 2007-12-18 | 2016-05-03 | Oracle International Corporation | Techniques for query and DML over relational tables using spreadsheet applications |
US20090158251A1 (en) * | 2007-12-18 | 2009-06-18 | Rohan Angrish | Techniques for query and dml over relational tables using spreadsheet applications |
CN102067111A (en) * | 2008-06-20 | 2011-05-18 | 微软公司 | Hierarchically presenting tabular data |
US20090327213A1 (en) * | 2008-06-25 | 2009-12-31 | Microsoft Corporation | Document index for handheld application navigation |
US8892128B2 (en) | 2008-10-14 | 2014-11-18 | Telecommunication Systems, Inc. | Location based geo-reminders |
US8525681B2 (en) | 2008-10-14 | 2013-09-03 | Telecommunication Systems, Inc. | Location based proximity alert |
US20110060767A1 (en) * | 2009-09-08 | 2011-03-10 | Oracle International Corporation | Leveraging xml capabilities of a database to enhance handling of document data |
US8423512B2 (en) | 2009-09-08 | 2013-04-16 | Oracle International Corporation | Leveraging XML capabilities of a database to enhance handling of document data |
US9204294B2 (en) | 2010-07-09 | 2015-12-01 | Telecommunication Systems, Inc. | Location privacy selector |
US8315599B2 (en) | 2010-07-09 | 2012-11-20 | Telecommunication Systems, Inc. | Location privacy selector |
US9198054B2 (en) | 2011-09-02 | 2015-11-24 | Telecommunication Systems, Inc. | Aggregate location dynometer (ALD) |
US9402158B2 (en) | 2011-09-02 | 2016-07-26 | Telecommunication Systems, Inc. | Aggregate location dynometer (ALD) |
US9460129B2 (en) | 2013-10-01 | 2016-10-04 | Vmware, Inc. | Method for tracking a schema in a schema-less database |
Also Published As
Publication number | Publication date |
---|---|
TWI353527B (en) | 2011-12-01 |
NO20051482D0 (en) | 2005-03-21 |
EP1580671A3 (en) | 2006-06-28 |
ZA200502315B (en) | 2006-12-27 |
IL167313A (en) | 2014-01-30 |
KR20060044561A (en) | 2006-05-16 |
BRPI0501150A (en) | 2005-11-01 |
JP4711708B2 (en) | 2011-06-29 |
NO333083B1 (en) | 2013-02-25 |
MY154396A (en) | 2015-06-15 |
MXPA05003138A (en) | 2005-10-05 |
JP2005302008A (en) | 2005-10-27 |
US20070124318A1 (en) | 2007-05-31 |
TW200540651A (en) | 2005-12-16 |
CA2501608A1 (en) | 2005-09-22 |
NZ538934A (en) | 2007-05-31 |
KR101122841B1 (en) | 2012-03-22 |
AU2005200999B2 (en) | 2010-05-20 |
AU2005200999A1 (en) | 2005-10-06 |
CN100435143C (en) | 2008-11-19 |
SG115773A1 (en) | 2005-10-28 |
RU2005107873A (en) | 2006-10-10 |
RU2370808C2 (en) | 2009-10-20 |
CN1677398A (en) | 2005-10-05 |
EP1580671A2 (en) | 2005-09-28 |
NO20051482L (en) | 2005-09-23 |
CO5680122A1 (en) | 2006-09-29 |
US8584003B2 (en) | 2013-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8584003B2 (en) | System and method for schemaless data mapping with nested tables | |
KR101086567B1 (en) | System and method for storing and retrieving xml data encapsulated as an object in a database store | |
US7555707B1 (en) | Method and system for data binding in a block structured user interface scripting language | |
US8935575B2 (en) | Test data generation | |
US7805474B2 (en) | Method and apparatus for mapping between XML and relational representations | |
CN100541493C (en) | The apparatus and method that are used for structured document management | |
US20080082571A1 (en) | System and Method for Transforming Tabular Form Date into Structured Document | |
JP2008052662A (en) | Structured document management system and program | |
US20100223240A1 (en) | System and method for composite record keys ordered in a flat key space for a distributed database | |
US7395271B2 (en) | Mechanism to enable evolving XML schema | |
US8117186B2 (en) | Database processing apparatus, information processing method, and computer program product | |
US8756208B2 (en) | Encoded data processing | |
US20060184554A1 (en) | System and method for extensible metadata architecture for digital images using in-place editing | |
US20060184576A1 (en) | System and method for extensible metadata architecture for digital images | |
US7421646B1 (en) | System and method for schemaless data mapping | |
US9367642B2 (en) | Flexible storage of XML collections within an object-relational database | |
US20060242169A1 (en) | Storing and indexing hierarchical data spatially | |
US8407209B2 (en) | Utilizing path IDs for name and namespace searches | |
JP2007293874A (en) | Method and apparatus for compressed storage of document | |
CN108427664A (en) | A kind of document analysis method and device | |
JP2003091535A (en) | Data management method, program and device | |
WO2019150510A1 (en) | Specification program, information processing device, and specification method | |
CN115168303A (en) | Storage algorithm model based on complex data serialization | |
JP2004348593A (en) | Apparatus and method for retrieving storage, storage retrieval program, and storage retrieval program recording medium | |
US20080147615A1 (en) | Xpath based evaluation for content stored in a hierarchical database repository using xmlindex |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LEUNG, YIU-MING;REEL/FRAME:015128/0296 Effective date: 20040319 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |