US20090204597A1 - System and method for preferred services in nomadic environments - Google Patents
System and method for preferred services in nomadic environments Download PDFInfo
- Publication number
- US20090204597A1 US20090204597A1 US12/028,151 US2815108A US2009204597A1 US 20090204597 A1 US20090204597 A1 US 20090204597A1 US 2815108 A US2815108 A US 2815108A US 2009204597 A1 US2009204597 A1 US 2009204597A1
- Authority
- US
- United States
- Prior art keywords
- matching
- node
- spatial index
- user
- vector
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Definitions
- the invention generally relates to a system and method for preferred services in nomadic environments and, more particularly, to a system and method for establishing, searching for, locating and updating preferred services in nomadic environments.
- Nomadic users are characterized by frequent changes in location and how they access services.
- a business traveler may be nomadic when he commutes to work: the traveler switches between a wired network, a wide-area wireless network, a cellular network and finally a wireless LAN back at the office.
- Preferred services are services of interest to the nomadic user.
- a preferred service may include coffee shops, nearest subway stations, photographic film developers, printer services, and restaurants, amongst other preferred services.
- nomadic users face several challenges. It is often difficult to characterize a user's present position, and because of this, it is difficult to identify the user's preferred services near their present position. Moreover, a nomadic user's needs, e.g., currently-sought preferred services, may change with respect to their present position, which affects timely and accurate notification about the preferred services. Additionally, as nomadic users' current location, preferred services and/or currently-sought preferred services may dynamically change, nomadic users need efficient ways to record and manage information about their current location, their preferred services, and their currently-sought preferred services.
- a method for locating preferred services.
- the method comprises searching an augmented spatial index, which is based on a user's determined preferred services. Additionally, the method comprises indicating a location of a currently-sought preferred service.
- a method comprises providing a computer infrastructure.
- the computer infrastructure is operable to create and update an augmented spatial index based on preferred services. Additionally, the computer infrastructure is operable to search the augmented spatial index and indicate a location of a currently-sought preferred service.
- a computer program product comprises a computer usable medium having computer readable program code embodied in the medium.
- the computer readable program code is operable to search an augmented spatial index and indicate a location of a currently-sought preferred service.
- a system comprises a matching vector creation tool configured to create at least one matching vector, an augmenting/updating tool configured to at least one of create and update an augmented spatial index and a user vector creation tool configured to create at least one user vector. Additionally, the system comprises a position-deriving tool configured to determine a current location and a searching tool configured to locate currently-sought preferred services using the augmented spatial index based on the at least one matching vector, the at least one user vector and the current location.
- FIG. 1 shows an illustrative environment for implementing the processes in accordance with the invention
- FIG. 2 shows an exemplary embodiment of a matching vector data table in accordance with the invention
- FIG. 3 shows an R-tree and corresponding data structure
- FIG. 4 shows an exemplary augmented R-tree in accordance with aspects of the invention
- FIG. 5 shows an exemplary mapping of minimum bounded boxes in accordance with aspects of the invention
- FIG. 6 shows a graphical depiction of a matching method in accordance with aspects of the invention.
- FIGS. 7-9 show flow diagrams implementing processes in accordance with aspects of the invention.
- FIGS. 10 and 11 show an exemplary depiction of a resulting pruning of paths of a spatial index in accordance with aspects of the invention.
- the invention generally relates to a system and method for preferred services in nomadic environments and, more particularly, to a system and method for establishing, searching for, locating and updating preferred services in nomadic environments.
- a user By implementing the invention, it is possible for a user to establish and search for preferred services in nomadic environments.
- the exhaustive brute force method operates by, for example, returning as a search result all the, e.g., coffee shops within a two-mile radius.
- the exhaustive brute force method suffers from performance drawbacks that are not acceptable for nomadic users.
- the present invention solves the two-fold challenges of nomadic users, namely location mobility and identification of preferred services, that are not addressed by the known methods. Moreover, by implementing the present invention, improvement upon known search methods of at least 40% (for a sample dataset of 700,000 points) may be achieved. Furthermore, the present invention dynamically adapts to nomadic conditions like changing locations of the user and the preferred services applicable thereto.
- FIG. 1 shows an illustrative environment 10 for managing the processes in accordance with the invention.
- the environment 10 includes a computer infrastructure 12 that can perform the processes described herein.
- the computer infrastructure 12 includes a computing device 14 that comprises a matching vector construction tool 30 operable to construct matching vectors, an augmenting/updating tool 40 operable to augment and/or update a spatial index, e.g., an R-tree, with the matching vectors, a position-deriving tool 50 operable to derive a user's current position, a user vector creation tool 60 operable to create a user vector, and a searching tool 70 operable to search the augmented spatial index, for example, the augmented R-tree, e.g., the process described herein.
- a matching vector construction tool 30 operable to construct matching vectors
- an augmenting/updating tool 40 operable to augment and/or update a spatial index, e.g., an R-tree
- a position-deriving tool 50 operable to
- the computing device 14 includes a processor 20 , a memory 22 A, an input/output (I/O) interface 24 , and a bus 26 . Further, the computing device 14 is in communication with an external I/O device/resource 28 and a storage system 22 B.
- the bus 26 provides a communications link between each of the components in the computing device 14 .
- the I/O device 28 can comprise any device that enables an individual to interact with the computing device 14 or any device that enables the computing device 14 to communicate with one or more other computing devices using any type of communications link.
- the processor 20 executes computer program code (program control 44 ), which is stored in memory 22 A and/or storage system 22 B. While executing computer program code, the processor 20 can read and/or write data to/from memory 22 A, storage system 22 B, and/or I/O interface 24 .
- the computer program control 44 executes the processes of the invention as discussed herein.
- the computing device 14 can comprise any general purpose computing article of manufacture capable of executing computer program code installed thereon (e.g., a personal computer, server, handheld device, etc.). However, it is understood that the computing device 14 is only representative of various possible equivalent-computing devices that may perform the processes described herein. To this extent, in embodiments, the functionality provided by computing device 14 can be implemented by a computing article of manufacture that includes any combination of general and/or specific purpose hardware and/or computer program code. In each embodiment, the program code and hardware can be created using standard programming and engineering techniques, respectively.
- the computer infrastructure 12 is only illustrative of various types of computer infrastructures for implementing the invention.
- the computer infrastructure 12 comprises two or more computing devices (e.g., a Client/Server) that communicate over any type of communications link, such as a network, a shared memory, or the like, to perform the processes described herein.
- a Client/Server e.g., a Client/Server
- any type of communications link such as a network, a shared memory, or the like
- one or more computing devices in the computer infrastructure 12 can communicate one or more other computing devices external to computer infrastructure 12 using any type of communications link.
- the communications link can comprise any combination of wired and/or wireless links; any combination of one or more types of networks (e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.); and/or utilize any combination of transmission techniques and protocols.
- networks e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.
- a service provider can create, maintain, deploy and/or support the infrastructure such as that described in FIG. 1 .
- the service provider such as a Solution Integrator, advertiser, etc., could offer to perform the processes described herein for payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising content to one or more third parties.
- the system and method comprise a creation of a data structure (e.g., an augmented R-tree), a searching of the data structure, and methods to store and update the data structure.
- a data structure e.g., an augmented R-tree
- a user may create a data structure which includes a plurality of matching vectors augmenting a spatial index.
- the matching vector may be created using the matching vector creation tool 30 .
- the matching vector facilitates establishing, searching and updating of preferred services of a user in nomadic environments.
- the user may use the matching vector creation tool 30 to create matching vectors indicating the types of preferred services of the nomadic user and the preferences applicable thereto.
- the matching vector serves as the link between two dimensions of an existing spatial indexing method, such as, for example, an R-tree, an R+-tree (R plus tree), or an R*-tree (R star tree).
- FIG. 2 shows an exemplary tabular representation of a matching vector data table 200 .
- the user may create the matching vector data table 200 using the matching vector creation tool 30 of FIG. 1 .
- the user may utilize an I/O device 28 , for example, a keyboard, a mouse or other pointing device, a voice recognition system, a display or screen (e.g., a touch screen) and/or combinations thereof, amongst other data entry systems, to enter data into the matching vector creation tool 30 and/or the matching vector data table 200 .
- the matching vector data table 200 may be displayed to the user via, e.g., the display or screen.
- the matching vector data table 200 may be stored in a database in, e.g., the storage system 22 B of FIG. 1 .
- the user may configure and/or update in real-time the matching vector data table 200 with additional information using the matching vector creation tool 30 . For example, as a nomadic user travels, the user may discover a preferred service at a particular location. The user, via the matching vector creation tool 30 , may then update the matching vector data table 200 to indicate the newly discovered preferred service. Additionally, the location of this preferred service may be determined and stored in a database, e.g., in the storage system 22 B, using the position-deriving tool 50 (discussed further below).
- the geographical location of the entry 230 is stored in a storage device, e.g., in a database in the storage system 22 B of FIG. 1 .
- the spatial index may be configured/updated, e.g., manually or automatically, to reflect the information contained in the matching vector data table 200 .
- the matching vector data table 200 may include columns for “ID” 205 , “Item” 210 , “Type” 215 , “Distance” 220 , and “Price” 225 , amongst other columns. Additionally, the matching vector data table 200 includes rows 230 for actual instances of the user's preferred services. That is, each row 230 of the matching vector data table 200 corresponds to an actual instance of a preferred service at some location for a particular user. In other words, as explained further below, the “Item” column 210 and “Type” column 215 may be index references (binary) in a linear list of instances, e.g., “Restaurant” or “Coffee shop”.
- the “ID” column 205 may contain a unique identification 235 that identifies the particular item or type of preferred service listed in the “Item” column 210 and/or the “Type” column 215 .
- the unique identification 235 may be designated by a pattern, a color, an alphanumeric character(s), and/or a combination thereof, amongst other unique identifications.
- the unique identification 235 may be, e.g., selected by a user or a service provider, or generated automatically by the matching vector creation tool 30 . Additionally, in embodiments, the unique identification 235 may be utilized by the present invention while remaining hidden to the user.
- the “Item” column 210 may contain indications of the nomadic user's preferred services. As shown in the exemplary matching vector data table 200 of FIG. 2 , this particular nomadic user is interested in restaurants, coffee shops, printers and wireless local area network (LAN) spots. As should be understood, the matching vector data table 200 may contain any number of items of preferred services. Moreover, as described further below, the items of preferred services may be configurable and customizable by the nomadic user.
- the “Type” column 215 may contain further information describing the corresponding preferred service listed in the “Item” column 210 .
- a restaurant may be further described as a Mexican restaurant and a coffee shop may be described as a gourmet coffee shop. Additionally, the invention contemplates that a user may describe, e.g., a restaurant or a coffee shop with its brand name.
- the “Type” column 215 may contain any information that further describes the corresponding preferred service listed in the “Item” column 210 .
- the ID column 205 may identify the “Item” column 210 , the “Type” column 215 , or both. That is, a user may configure the present invention such that the unique ID 235 corresponds to the “Item” column 205 .
- This is shown in the exemplary matching vector data table 200 , wherein the two listings of “Printer” each have the same unique ID 235 .
- the two printers are of different types. That is, one printing service can provide color and black and white prints; whereas the other printing service can only provide black and white prints.
- the unique ID 235 may correspond to the “Type” column 215 instead of or in addition to the “Item” column 210 , such that a user could search specifically for services, e.g., color printing services.
- the “Distance” column 220 may contain a distance the nomadic user is willing to travel from their current position to a location of the preferred service.
- this particular nomadic user is willing to travel two hundred feet from their current position to a restaurant and is willing to travel four hundred-fifty feet from their current position to a printer service.
- the distance shown in FIG. 2 is in feet, it should be understood that the distance may be quantified in any distance unit.
- the distance data is represented as decimals, it should be understood that the distance data may be encoded in binary-coded decimal (BCD) or other acceptable database format.
- the units of distance may be configurable by, e.g., a user or a service provider, amongst others.
- the “Price” column 225 may contain a quantification of price of the corresponding preferred service listed in the “Item” column 210 . While shown in the exemplary matching vector data table 200 as a single price, the invention contemplates that the “Price” column 235 may contain a price range. Moreover, while the price data is represented as decimals, it should be understood that the price data may be encoded in binary-coded decimal (BCD) or other acceptable database format.
- BCD binary-coded decimal
- the data structure of the present invention may be an augmented spatial index.
- the augmented spatial index includes matching vectors as a link between two dimensions of a spatial index, such as, for example, an R-tree, an R+-tree, or an R*-tree.
- FIG. 3 shows an R-tree 310 along with the data structure 300 comprising a plurality of minimum bounding rectangles, or minimum bounding boxes (MBBs) 305 , 305 ′ used to structure the R-tree 310 .
- An R-tree 310 is a tree data structure that may be used for spatial access methods, i.e., for indexing multi-dimensional information, for example, the (X, Y) coordinates of geographical data.
- the data structure 300 splits space with hierarchically nested, and possibly overlapping, MBBs 305 , 305 ′.
- Each node 315 , 315 ′ of an R-tree 310 has a variable number of entries, or data points 325 (in embodiments, up to some pre-defined maximum).
- Each entry 325 within a non-leaf node, or index node 315 stores two pieces of data: a way of identifying a child node, and the bounding box of all entries within this child node.
- Each entry 325 within a leaf node 315 ′ stores the bounding box of all entries within this leaf node 315 ′.
- the insertion and deletion methods use the MBBs from the nodes to allow “nearby” elements to be placed in the same leaf node (in embodiments, a new element may go into the leaf node that requires the least enlargement in its MBB).
- R-tree searching methods for example, intersection, containment, nearest
- MBBs to decide whether or not to search inside a child node. In this way, most of the nodes in the tree are never “touched” during a search.
- R+-tree is another spatial index that is a variant of the R-tree.
- R+-trees are similar to R-trees, but avoid overlapping of internal nodes by inserting an object into multiple leaves if necessary.
- R+-trees differ from R-trees in that: nodes are not guaranteed to be at least half filled; the entries of any internal node do not overlap; and an object ID may be stored in more than one leaf node.
- point query performance may benefit since all spatial regions are covered by at most one node, because nodes are not overlapped with each other. Thus, a single path is followed and fewer nodes are visited than with the R-tree.
- An R*-tree is another spatial index, which is a variant of an R-tree.
- An R*-tree supports point and spatial data at the same time with a slightly higher cost than other R-trees.
- the R*-tree attempts to reduce both coverage and overlap, using a combination of a revised node split method and a concept of forced reinsertion at node overflow, as is understood by one of ordinary skill in the art.
- FIG. 4 shows an exemplary augmented R-tree 400 according to an aspect of the invention.
- a user may augment a spatial index, e.g., an R-tree, R+-tree or R*-tree, with a plurality of matching vectors 405 , which indicate the information contained in the matching vector data table 200 , to create the augmented R-tree 400 .
- Each entry 420 e.g., M 1 , M 2 , M 3 , etc.
- the MBB represented by a parent node contains each MBB of the children nodes.
- the MBB represented by M 6 contains the MBBs represented by M 12 , M 13 and M 14 .
- each node 415 , 415 ′ of the augmented R-tree 400 includes a matching vector 405 indicating the preferred services located in the MBBs represented by the node 415 , 415 ′.
- the node “M6, M7, M8” (containing individual entries 420 of M 6 , M 7 and M 8 ) has associated therewith a matching vector 405 , which indicates each of the preferred services (as defined in the matching vector data table 200 ) that are located within the MBBs represented by the node “M6, M7, M8”.
- the node “M12, M13, M14” has associated therewith a matching vector 405 , which indicates each of the preferred services (as defined in the matching vector data table 200 ) that are located within the minimum bounded boxes represented by the node “M12, M13, M14”.
- the matching vector 405 can indicate up to four different preferred services with unique identifiers 425 . These unique identifiers 425 correspond to the unique identifications 235 of the matching vector data table 200 . As should be understood, the invention contemplates that the matching vector 405 may be used to represent any number of preferred services.
- the matching vector 405 of node “M6, M7, M8” indicates that all of the preferred services are located in the MBBs represented by “M6, M7, M8” (as each of the four quadrants of the matching vector 405 contain unique identifiers 425 )
- the matching vector 405 of node “M12, M13, M14” indicates that only one type of preferred service is located within the MBBs represented by “M12, M13, M14”.
- the one type of service located within the MBBs represented by “M12, M13, M14” is more specifically located in the MBB represented by M 13 , as indicated by the entry matching vector 410 .
- a matching vector 405 indicates that only one type of service is located within a particular node 415 , 415 ′, that type of service may be located in more than one child entry of the particular node.
- the matching vector 405 of node “M15, M16, M17” indicates that only one type of preferred service is located in the MBBs represented by “M15, M16, M17”.
- there are multiple instances of the preferred service e.g., in the MBBs represented by M 15 and M 17 , as indicated by the entry matching vectors 410 .
- the individual entries 420 of the leaf nodes 415 which represent an MBB having at least one preferred service will include an entry matching vector 410 indicating the at least one preferred service. While, in the exemplary embodiment of FIG. 4 , the leaf entries 420 , which represent individual MBBs, are indicated as having a single preferred service (as indicated by the entry matching vectors 410 ), it should be understood that a geographic area represented by an MBB may have any number of preferred services located therein, and thus, any individual entry 420 may have any number of preferred services indicated, as indicated by the entry matching vector 410 .
- the matching vector 405 can indicate up to four different preferred services with unique identifiers 425 . These unique identifiers 425 correspond to the unique identifications 235 of the matching vector data table 200 .
- the invention also contemplates that the matching vector can be used to indicate any number of preferred services.
- FIG. 5 shows an exemplary mapping 500 of MBBs 505 , 505 ′ to a particular geographic area.
- a plurality of MBBs 505 , 505 ′ are mapped to Manhattan Island, N.Y.
- child MBBs 505 ′ are contained within at least one MBB 505 .
- the creation of the MBBs 505 , 505 ′ to form the mapping 500 may performed according to methods for forming R-trees.
- a user may manual set and/or adjust the sizes and/or positions of the MBBs 505 , 505 ′.
- the exemplary mapping 500 may also contain indications 515 of locations of different types of preferred services.
- the indications 515 may correspond to the unique identifications 235 of the matching vector data table 200 and to the unique identifiers 425 of the matching vectors 405 .
- FIG. 5 also shows an indication of a current location of a nomadic user 525 and an indication of a current location of a particular (or currently-sought) preferred service 520 , in which the nomadic user 525 is currently interested and searching for, as discussed further below.
- the mapping 500 may be displayed to a user, e.g., on a screen or display of the computing device 14 via the I/O device 28 of FIG. 1 . This allows a user to visually see the locations of currently-sought preferred services identified by the searching tool 70 .
- the user may derive their current position so that they may search for or update preferred services using the above-described augmented spatial index data structure, e.g., the augmented R-tree 400 .
- the position-deriving tool 50 may include any conventional location detection devices such as global positioning systems (GPS) for, e.g., wireless devices, latitude and longitude for mobile telephones, and/or IP address geo-location, amongst other conventional location detection devices.
- GPS global positioning systems
- the user may utilize the user vector creation tool 60 to create a user vector indicating a preferred service the user is currently seeking (i.e., the currently-sought preferred service) and use the position-deriving tool 50 to indicate the current location of the nomadic user 525 .
- the user vector may take a similar form to the above described matching vector 405 .
- FIG. 6 generally shows an exemplary pictorial representation of a user vector 605 and a matching vector 405 , and how a resultant match 615 of a preferred service is determined based on the user vector 605 and the matching vector 405 .
- the user vector 605 has a similar form as the matching vector 405 .
- the user vector 605 may indicate any number (e.g., one or more) of currently-sought preferred services from amongst any number of preferred services.
- the resultant match 615 may be determined by superimposing, or performing a logical AND operation, of the user vector 605 and the matching vector 405 .
- a user has indicated, via the user vector creation tool 60 , that they are currently seeking the preferred service designated by the unique identification 620 shown in the user vector 605 .
- the unique identification 620 of the user vector 605 corresponds with the unique ID 235 of the matching vector data table 200 and with the unique identification 425 of the matching vector 405 .
- the searching tool 70 may search the augmented R-tree 400 (now having matching vectors 405 for the different nodes 415 , 415 ′ and entity matching vectors 410 for the different entries, as described in FIG. 4 ) by comparing the user vector 605 with the plurality of matching vectors 405 .
- the resultant match 615 indicates that the preferred service designated by the unique identification 620 is present in the geographical region represented by an MBB associated with that particular matching vector 405 .
- FIGS. 7-9 are flow diagrams for implementing processes of the invention, which may be implemented in the environment of FIG. 1 .
- FIGS. 7-9 equally represent high-level block diagrams of the invention. Additionally, the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements.
- the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
- the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
- the software and/or computer program product can be implemented in the environment of FIG. 1 .
- a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- the medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
- Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
- Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
- a nomadic user may use the flow 700 to search the augmented spatial index data structure, e.g., the augmented R-tree 400 , to identify locations of currently-sought preferred services (as indicated by the user vector 605 ). It should be understood that with this flow 700 , the augmented spatial index data structure, e.g., the augmented R-tree 400 , has already been created, as described further below.
- the user derives their current position using the position-deriving tool 50 .
- the position-deriving tool 50 may include any conventional method or system, including, for example, IP address geo-location, GPS for wireless devices, latitude-longitude for mobile telephones, amongst other methods for determining a current position.
- the user constructs a user vector using the user vector creation tool 60 .
- the searching tool starts at the root of the spatial index, e.g., the augmented R-tree.
- the searching tool determines a distance from the user's current position to the top right of a minimum bounded box (MBB).
- MBB minimum bounded box
- the searching tool determines if the user is within the bounds of the determined top-right of the MBB. If, at step 725 , the searching tool determines that the user is within the bounds of the determined top-right of the MBB, at step 730 , the searching tool determines a distance from the user's current position to the bottom-left of the MBB. At step 735 , the searching tool determines if the user is within the bounds of the determined bottom-left of the MBB.
- the searching tool determines that the user is within the bounds of the determined bottom-left of the MBB. If, at step 735 , the searching tool determines that the user is within the bounds of the determined bottom-left of the MBB, at step 740 , the searching tool performs the matching method of the user vector with the matching vector for that MBB. Put another way, at steps 720 , 725 , 730 and 735 , the MBBs are scanned sequentially and checked for spatial bounds, according to an R-tree searching method. When a spatial bound of an MBB is within the bounds of a user, the searching tool performs the matching method in accordance with the present invention. That is, as described in regard to FIG. 6 , the searching tool performs a logical AND of the user vector and the matching vector for that MBB. It is to be noted that the matching vector and the corresponding user vector may be computed with basic arithmetic capabilities. This contributes to the efficiency of the overall system.
- the searching tool determines if a match was indicated by the matching method. If, at step 745 , the searching tool determines that there is a match between the user vector and the matching vector for that MBB, at step 750 , the searching tool stores the result in a database, e.g., in the storage system 22 B of FIG. 1 .
- the searching tool determines that there is not a match between the user vector and the matching vector for that MBB, at step 755 , the entire MBB may be pruned. That is, as the searching tool has determined that there are no currently-sought preferred services (as indicated by the user vector) located anywhere in the area designated by the MBB, the searching tool can eliminate any further searching for currently-sought preferred services in the area designated by that MBB. Moreover, if the searching tool eliminates an MBB, then the entire set of descendant MBBs are discarded because they contain no currently-sought preferred services for the present position of the nomadic user.
- the searching tool eliminates irrelevant preferred services, e.g., those item/type pairs within MBBs not located within the bounds of the user's current location, and uses the comparison property to determine a set of acceptable preferred services, e.g., those located within MBBs within the bounds of the user's current location.
- the searching tool determines that the user is not within the bounds of the top-right or bottom-left of the MBB. Additionally, from either step 750 or step 755 , the process continues at step 760 .
- the searching tool determines if the end of the augmented R-tree has been reached. If, at step 760 , the searching tool determines that the end of the R-tree has not been reached, then at step 765 , the searching tool proceeds to the next MBB, and the process continues at step 720 .
- the searching tool determines that the end of the R-tree has been reached, then at step 770 , the searching tool reports or indicates to the user the location(s) of currently-sought preferred services based on the user's current location.
- step 720 may occur prior to step 730 .
- step 770 may occur prior to step 750 .
- the search tool may compute the distance to the top-left and bottom-right of the MBB, respectively.
- steps may be implied or omitted while still remaining true to this invention.
- FIG. 8 shows an exemplary flow 800 for indicating or creating a preferred service in an augmented spatial index, e.g., the augmented R-tree.
- a user may manually or automatically create the augmented spatial index using flow 800 .
- a user or another, e.g., a service provider or an advertiser
- the user may represent the preferred service as a matching vector (as shown in FIG. 6 ) using the matching vector creation tool 30 and the matching vector data table 200 , as described above.
- the augmenting/updating tool calculates a space quantification co-efficient (SQC) for the location of the preferred service.
- SQC is a quantitative representation of the location on a space filling curve. Any suitable space filling curve (e.g., a Hilbert curve or z-order curve) may be used, wherein the resulting values, e.g., Hilbert value, will form the SQC.
- the augmenting/updating tool sorts the location(s), or service-point(s), of the preferred service(s).
- the augmenting/updating tool starts with the service-point having the smallest SQC.
- the augmenting/updating tool inserts the service-point into a spatial data structure (e.g., an R-tree) using well known R-tree insertion methods.
- the augmenting/updating tool determines if the created node is a leaf node, i.e., has no dependent nodes. If, at step 830 , the augmenting/updating tool determines that the created node is a leaf node, then at step 835 , the augmenting/updating tool performs a logical OR of matching vectors of the node's service-point entries. At step 840 , the augmenting/updating tool sets the result of the logical OR determined in step 835 as the matching vector of the node.
- the augmenting/updating tool determines that the created node is not a leaf node, e.g., is an index node
- the augmenting/updating tool performs a logical OR of the matching vectors of the current node's child nodes. Then, the process proceeds to step 840 , wherein the augmenting/updating tool sets the result of the logical OR determined in step 845 as the matching vector of the node.
- the augmenting/updating tool determines if all service-points are loaded. If, at step 850 , the augmenting/updating tool determines that all service-points have not been loaded into the augmented R-tree, then the process proceeds at step 825 , such that these steps are applied iteratively to all the service-points to be loaded. If, at step 850 , the augmenting/updating tool determines that all service-points have been loaded, then the process ends at step 855 . It should be understood that, in embodiments, flow 800 can be applied to augmented R-trees being initially created as well as existing R-trees where the data points are to be converted to service-points.
- FIG. 9 shows an exemplary flow 900 for updating preferred services and their associated preferences.
- a user may manually or automatically update the spatial index using flow 900 .
- a user inputs a preferred service update, e.g., a service-point update.
- the user may use flow 700 to perform a search of the augmented R-tree, which returns a list of nodes starting with the leaf nodes leading to the service-point.
- the result of the search includes the full traversal, i.e., all the nodes from the root of the R-tree to the leaf that contains the preferred service to be updated.
- the augmenting/updating tool starts with the first node in the list.
- the augmenting/updating tool determines if the node is a leaf node.
- the first node is usually the leaf node itself, thus the augmenting/updating tool may first perform the update in the leaf node. If, at step 920 , the augmenting/updating tool determines that the node is a leaf node, at step 925 , the augmenting/updating tool retrieves the entry matching vector of the service-point to be updated. At step 930 , the augmenting/updating tool unsets the old preferred service in the service-point.
- the augmenting/updating tool updates the service-point with the new preferred service.
- the augmenting/updating tool performs a logical OR of the entry matching vectors for all the service-point entries for that leaf node.
- the augmenting/updating tool updates the matching vector of the current leaf node with the logical OR result determined at step 940 .
- the augmenting/updating tool determines that the current node is not a leaf node
- the augmenting/updating tool retrieves the matching vector of all child nodes for this current index node.
- the augmenting/updating tool performs a logical OR of the matching vectors of the child nodes.
- the augmenting/updating tool updates the matching vector of the current node with the logical OR result determined at step 950 . That is, the preferred services update is propagated to the containing index node by combining the matching vectors of all the leaf nodes beneath the index node.
- the augmenting/updating tool determines whether there are more nodes. If, at step 960 , the augmenting/updating tool determines that there are more nodes, the process continues at step 920 . The augmenting/updating tool progresses upward through the R-tree and updates all the matching vectors for all the index nodes at each level.
- step 965 the user manually or the augmenting/updating tool automatically determines if there are more preferred services to update. If, at step 965 , the user or the augmenting/updating tool determines that there are more preferred services to update, the process continues at step 910 . If, at step 965 , the user or the augmenting/updating tool determines that there are no more preferred services to update, then the process ends at step 970 .
- FIGS. 10 and 11 illustrate how utilizing the present invention eliminates up to 60% of irrelevant spatial results. As discussed above, this is a 40% improvement (at least) over known methods.
- FIG. 10 shows an exemplary spatial index 1000 in accordance with the present invention.
- the spatial index 1000 includes a root node 1005 , a plurality of index nodes 1010 and a plurality of leaf nodes 1015 .
- the exemplary spatial index 1000 only two types of preferred services are shown. Moreover, these two types of preferred services are indicated by the connecting lines between the nodes, wherein the dashed-dot lines 1025 indicate the presence of preferred service “A” and dashed lines 1030 indicate the presence of preferred service “B”. Additionally, if a parent node is connected to children nodes that have both preferred service “A” and preferred service “B”, solid line 1020 connects the nodes. As shown in FIG. 10 , the spatial index 1000 includes 28 leaf nodes.
- the user may indicate this interest utilizing the user vector 405 , as described above. Moreover, using the positioning-deriving tool 50 , the user can determine their current location. Then, by implementing aspects of the present invention, those irrelevant paths in the spatial index may be removed. Thus, as described above, those nodes representing MBBs that are not within a particular distance of the user and those nodes representing MBBs that do not have the currently-sought preferred services may be removed from consideration.
- FIG. 11 shows a modified spatial index 1000 ′, wherein those irrelevant paths have been removed. That is, those nodes representing MBBs that are not within a particular distance of the user and/or that do not have the currently-sought preferred services, and their paths have been pruned or removed from the modified spatial index 1000 ′.
- a large number of nodes e.g., those containing preferred service “B”, have been removed.
- each of the remaining nodes contain the preferred service “A”
- each of the lines are now dashed-dot lines 1025 ′.
- a user may only need to search or consider the nine leaf nodes 1015 ′ of the spatial index 1000 ′ shown in FIG. 11 .
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
- The invention generally relates to a system and method for preferred services in nomadic environments and, more particularly, to a system and method for establishing, searching for, locating and updating preferred services in nomadic environments.
- In an increasingly interconnected world, nomadic users require efficient and accurate ways to identify preferred services. Nomadic users are characterized by frequent changes in location and how they access services. For example, a business traveler may be nomadic when he commutes to work: the traveler switches between a wired network, a wide-area wireless network, a cellular network and finally a wireless LAN back at the office.
- Preferred services are services of interest to the nomadic user. For example, a preferred service may include coffee shops, nearest subway stations, photographic film developers, printer services, and restaurants, amongst other preferred services.
- However, nomadic users face several challenges. It is often difficult to characterize a user's present position, and because of this, it is difficult to identify the user's preferred services near their present position. Moreover, a nomadic user's needs, e.g., currently-sought preferred services, may change with respect to their present position, which affects timely and accurate notification about the preferred services. Additionally, as nomadic users' current location, preferred services and/or currently-sought preferred services may dynamically change, nomadic users need efficient ways to record and manage information about their current location, their preferred services, and their currently-sought preferred services.
- Accordingly, there exists a need in the art to overcome the deficiencies and limitations described hereinabove.
- In a first aspect of the invention, a method is provided for locating preferred services. The method comprises searching an augmented spatial index, which is based on a user's determined preferred services. Additionally, the method comprises indicating a location of a currently-sought preferred service.
- In a further aspect of the invention, a method comprises providing a computer infrastructure. The computer infrastructure is operable to create and update an augmented spatial index based on preferred services. Additionally, the computer infrastructure is operable to search the augmented spatial index and indicate a location of a currently-sought preferred service.
- In an additional aspect of the invention, a computer program product comprises a computer usable medium having computer readable program code embodied in the medium. The computer readable program code is operable to search an augmented spatial index and indicate a location of a currently-sought preferred service.
- In a further aspect of the invention, a system comprises a matching vector creation tool configured to create at least one matching vector, an augmenting/updating tool configured to at least one of create and update an augmented spatial index and a user vector creation tool configured to create at least one user vector. Additionally, the system comprises a position-deriving tool configured to determine a current location and a searching tool configured to locate currently-sought preferred services using the augmented spatial index based on the at least one matching vector, the at least one user vector and the current location.
- The present invention is described in the detailed description which follows, in reference to the noted plurality of drawings by way of non-limiting examples of exemplary embodiments of the present invention.
-
FIG. 1 shows an illustrative environment for implementing the processes in accordance with the invention; -
FIG. 2 shows an exemplary embodiment of a matching vector data table in accordance with the invention; -
FIG. 3 shows an R-tree and corresponding data structure; -
FIG. 4 shows an exemplary augmented R-tree in accordance with aspects of the invention; -
FIG. 5 shows an exemplary mapping of minimum bounded boxes in accordance with aspects of the invention; -
FIG. 6 shows a graphical depiction of a matching method in accordance with aspects of the invention; -
FIGS. 7-9 show flow diagrams implementing processes in accordance with aspects of the invention; and -
FIGS. 10 and 11 show an exemplary depiction of a resulting pruning of paths of a spatial index in accordance with aspects of the invention. - The invention generally relates to a system and method for preferred services in nomadic environments and, more particularly, to a system and method for establishing, searching for, locating and updating preferred services in nomadic environments. By implementing the invention, it is possible for a user to establish and search for preferred services in nomadic environments. Moreover, it is possible for a user to search for preferred services in nomadic environments faster and more efficiently as compared to conventional methods, which utilize, e.g., an exhaustive brute force method. The exhaustive brute force method operates by, for example, returning as a search result all the, e.g., coffee shops within a two-mile radius. Thus, the exhaustive brute force method suffers from performance drawbacks that are not acceptable for nomadic users.
- The present invention solves the two-fold challenges of nomadic users, namely location mobility and identification of preferred services, that are not addressed by the known methods. Moreover, by implementing the present invention, improvement upon known search methods of at least 40% (for a sample dataset of 700,000 points) may be achieved. Furthermore, the present invention dynamically adapts to nomadic conditions like changing locations of the user and the preferred services applicable thereto.
-
FIG. 1 shows anillustrative environment 10 for managing the processes in accordance with the invention. To this extent, theenvironment 10 includes acomputer infrastructure 12 that can perform the processes described herein. In particular, thecomputer infrastructure 12 includes acomputing device 14 that comprises a matchingvector construction tool 30 operable to construct matching vectors, an augmenting/updatingtool 40 operable to augment and/or update a spatial index, e.g., an R-tree, with the matching vectors, a position-deriving tool 50 operable to derive a user's current position, a user vector creation tool 60 operable to create a user vector, and asearching tool 70 operable to search the augmented spatial index, for example, the augmented R-tree, e.g., the process described herein. - The
computing device 14 includes aprocessor 20, amemory 22A, an input/output (I/O)interface 24, and abus 26. Further, thecomputing device 14 is in communication with an external I/O device/resource 28 and astorage system 22B. Thebus 26 provides a communications link between each of the components in thecomputing device 14. The I/O device 28 can comprise any device that enables an individual to interact with thecomputing device 14 or any device that enables thecomputing device 14 to communicate with one or more other computing devices using any type of communications link. - The
processor 20 executes computer program code (program control 44), which is stored inmemory 22A and/orstorage system 22B. While executing computer program code, theprocessor 20 can read and/or write data to/frommemory 22A,storage system 22B, and/or I/O interface 24. Thecomputer program control 44 executes the processes of the invention as discussed herein. - The
computing device 14 can comprise any general purpose computing article of manufacture capable of executing computer program code installed thereon (e.g., a personal computer, server, handheld device, etc.). However, it is understood that thecomputing device 14 is only representative of various possible equivalent-computing devices that may perform the processes described herein. To this extent, in embodiments, the functionality provided bycomputing device 14 can be implemented by a computing article of manufacture that includes any combination of general and/or specific purpose hardware and/or computer program code. In each embodiment, the program code and hardware can be created using standard programming and engineering techniques, respectively. - Similarly, the
computer infrastructure 12 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in embodiments, thecomputer infrastructure 12 comprises two or more computing devices (e.g., a Client/Server) that communicate over any type of communications link, such as a network, a shared memory, or the like, to perform the processes described herein. Further, while performing the processes described herein, one or more computing devices in thecomputer infrastructure 12 can communicate one or more other computing devices external tocomputer infrastructure 12 using any type of communications link. The communications link can comprise any combination of wired and/or wireless links; any combination of one or more types of networks (e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.); and/or utilize any combination of transmission techniques and protocols. - A service provider can create, maintain, deploy and/or support the infrastructure such as that described in
FIG. 1 . The service provider, such as a Solution Integrator, advertiser, etc., could offer to perform the processes described herein for payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising content to one or more third parties. - According to the invention, the system and method comprise a creation of a data structure (e.g., an augmented R-tree), a searching of the data structure, and methods to store and update the data structure.
- According to an aspect of the invention, a user may create a data structure which includes a plurality of matching vectors augmenting a spatial index. The matching vector may be created using the matching
vector creation tool 30. As described herein, the matching vector facilitates establishing, searching and updating of preferred services of a user in nomadic environments. The user may use the matchingvector creation tool 30 to create matching vectors indicating the types of preferred services of the nomadic user and the preferences applicable thereto. Moreover, as described further below, in the data structure, the matching vector serves as the link between two dimensions of an existing spatial indexing method, such as, for example, an R-tree, an R+-tree (R plus tree), or an R*-tree (R star tree). -
FIG. 2 shows an exemplary tabular representation of a matching vector data table 200. The user may create the matching vector data table 200 using the matchingvector creation tool 30 ofFIG. 1 . In embodiments, the user may utilize an I/O device 28, for example, a keyboard, a mouse or other pointing device, a voice recognition system, a display or screen (e.g., a touch screen) and/or combinations thereof, amongst other data entry systems, to enter data into the matchingvector creation tool 30 and/or the matching vector data table 200. Moreover, in embodiments, the matching vector data table 200 may be displayed to the user via, e.g., the display or screen. The matching vector data table 200 may be stored in a database in, e.g., thestorage system 22B ofFIG. 1 . - In embodiments, the user may configure and/or update in real-time the matching vector data table 200 with additional information using the matching
vector creation tool 30. For example, as a nomadic user travels, the user may discover a preferred service at a particular location. The user, via the matchingvector creation tool 30, may then update the matching vector data table 200 to indicate the newly discovered preferred service. Additionally, the location of this preferred service may be determined and stored in a database, e.g., in thestorage system 22B, using the position-deriving tool 50 (discussed further below). That is, while not shown in the matching vector data table 200, for eachentry 230 in the matching vector data table 200, the geographical location of theentry 230 is stored in a storage device, e.g., in a database in thestorage system 22B ofFIG. 1 . Additionally, as discussed further below, upon configuring/updating the matching vector data table 200, the spatial index may be configured/updated, e.g., manually or automatically, to reflect the information contained in the matching vector data table 200. - As shown in
FIG. 2 , the matching vector data table 200 may include columns for “ID” 205, “Item” 210, “Type” 215, “Distance” 220, and “Price” 225, amongst other columns. Additionally, the matching vector data table 200 includesrows 230 for actual instances of the user's preferred services. That is, eachrow 230 of the matching vector data table 200 corresponds to an actual instance of a preferred service at some location for a particular user. In other words, as explained further below, the “Item”column 210 and “Type”column 215 may be index references (binary) in a linear list of instances, e.g., “Restaurant” or “Coffee shop”. - The “ID”
column 205 may contain aunique identification 235 that identifies the particular item or type of preferred service listed in the “Item”column 210 and/or the “Type”column 215. In embodiments, theunique identification 235 may be designated by a pattern, a color, an alphanumeric character(s), and/or a combination thereof, amongst other unique identifications. Moreover, in embodiments, theunique identification 235 may be, e.g., selected by a user or a service provider, or generated automatically by the matchingvector creation tool 30. Additionally, in embodiments, theunique identification 235 may be utilized by the present invention while remaining hidden to the user. - The “Item”
column 210 may contain indications of the nomadic user's preferred services. As shown in the exemplary matching vector data table 200 ofFIG. 2 , this particular nomadic user is interested in restaurants, coffee shops, printers and wireless local area network (LAN) spots. As should be understood, the matching vector data table 200 may contain any number of items of preferred services. Moreover, as described further below, the items of preferred services may be configurable and customizable by the nomadic user. - The “Type”
column 215 may contain further information describing the corresponding preferred service listed in the “Item”column 210. For example, a restaurant may be further described as a Mexican restaurant and a coffee shop may be described as a gourmet coffee shop. Additionally, the invention contemplates that a user may describe, e.g., a restaurant or a coffee shop with its brand name. As should be understood, the “Type”column 215 may contain any information that further describes the corresponding preferred service listed in the “Item”column 210. - Moreover, as mentioned above, the
ID column 205 may identify the “Item”column 210, the “Type”column 215, or both. That is, a user may configure the present invention such that theunique ID 235 corresponds to the “Item”column 205. This is shown in the exemplary matching vector data table 200, wherein the two listings of “Printer” each have the sameunique ID 235. It should be noted, however, as indicated in the “Type”column 215, that the two printers are of different types. That is, one printing service can provide color and black and white prints; whereas the other printing service can only provide black and white prints. Thus, the invention contemplates that theunique ID 235 may correspond to the “Type”column 215 instead of or in addition to the “Item”column 210, such that a user could search specifically for services, e.g., color printing services. - The “Distance”
column 220 may contain a distance the nomadic user is willing to travel from their current position to a location of the preferred service. Thus, as shown in the exemplary matching vector data table 200 ofFIG. 2 , this particular nomadic user is willing to travel two hundred feet from their current position to a restaurant and is willing to travel four hundred-fifty feet from their current position to a printer service. While the distance shown inFIG. 2 is in feet, it should be understood that the distance may be quantified in any distance unit. Moreover, while the distance data is represented as decimals, it should be understood that the distance data may be encoded in binary-coded decimal (BCD) or other acceptable database format. Furthermore, in embodiments, the units of distance may be configurable by, e.g., a user or a service provider, amongst others. - The “Price”
column 225 may contain a quantification of price of the corresponding preferred service listed in the “Item”column 210. While shown in the exemplary matching vector data table 200 as a single price, the invention contemplates that the “Price”column 235 may contain a price range. Moreover, while the price data is represented as decimals, it should be understood that the price data may be encoded in binary-coded decimal (BCD) or other acceptable database format. - As described above, the data structure of the present invention may be an augmented spatial index. The augmented spatial index includes matching vectors as a link between two dimensions of a spatial index, such as, for example, an R-tree, an R+-tree, or an R*-tree.
-
FIG. 3 shows an R-tree 310 along with thedata structure 300 comprising a plurality of minimum bounding rectangles, or minimum bounding boxes (MBBs) 305, 305′ used to structure the R-tree 310. An R-tree 310 is a tree data structure that may be used for spatial access methods, i.e., for indexing multi-dimensional information, for example, the (X, Y) coordinates of geographical data. Thedata structure 300 splits space with hierarchically nested, and possibly overlapping, 305, 305′. EachMBBs 315, 315′ of an R-node tree 310 has a variable number of entries, or data points 325 (in embodiments, up to some pre-defined maximum). Eachentry 325 within a non-leaf node, orindex node 315, stores two pieces of data: a way of identifying a child node, and the bounding box of all entries within this child node. Eachentry 325 within aleaf node 315′ stores the bounding box of all entries within thisleaf node 315′. - The insertion and deletion methods use the MBBs from the nodes to allow “nearby” elements to be placed in the same leaf node (in embodiments, a new element may go into the leaf node that requires the least enlargement in its MBB). Similarly, R-tree searching methods (for example, intersection, containment, nearest) use the MBBs to decide whether or not to search inside a child node. In this way, most of the nodes in the tree are never “touched” during a search.
- An R+-tree is another spatial index that is a variant of the R-tree. R+-trees are similar to R-trees, but avoid overlapping of internal nodes by inserting an object into multiple leaves if necessary. In other words, R+-trees differ from R-trees in that: nodes are not guaranteed to be at least half filled; the entries of any internal node do not overlap; and an object ID may be stored in more than one leaf node. With R+-trees, point query performance may benefit since all spatial regions are covered by at most one node, because nodes are not overlapped with each other. Thus, a single path is followed and fewer nodes are visited than with the R-tree.
- An R*-tree is another spatial index, which is a variant of an R-tree. An R*-tree supports point and spatial data at the same time with a slightly higher cost than other R-trees. The R*-tree attempts to reduce both coverage and overlap, using a combination of a revised node split method and a concept of forced reinsertion at node overflow, as is understood by one of ordinary skill in the art.
-
FIG. 4 shows an exemplary augmented R-tree 400 according to an aspect of the invention. As shown inFIG. 4 , using the augmenting/updatingtool 40, a user may augment a spatial index, e.g., an R-tree, R+-tree or R*-tree, with a plurality of matchingvectors 405, which indicate the information contained in the matching vector data table 200, to create the augmented R-tree 400. Each entry 420 (e.g., M1, M2, M3, etc.) in the augmented R-tree 400 represents a MBB for a defined geographical region. Additionally, the MBB represented by a parent node contains each MBB of the children nodes. For example, the MBB represented by M6 contains the MBBs represented by M12, M13 and M14. - According to an aspect of the invention, each
415, 415′ of the augmented R-node tree 400 includes a matchingvector 405 indicating the preferred services located in the MBBs represented by the 415, 415′. For example, the node “M6, M7, M8” (containingnode individual entries 420 of M6, M7 and M8) has associated therewith a matchingvector 405, which indicates each of the preferred services (as defined in the matching vector data table 200) that are located within the MBBs represented by the node “M6, M7, M8”. Likewise, the node “M12, M13, M14” has associated therewith a matchingvector 405, which indicates each of the preferred services (as defined in the matching vector data table 200) that are located within the minimum bounded boxes represented by the node “M12, M13, M14”. - With this example, the matching
vector 405 can indicate up to four different preferred services withunique identifiers 425. Theseunique identifiers 425 correspond to theunique identifications 235 of the matching vector data table 200. As should be understood, the invention contemplates that the matchingvector 405 may be used to represent any number of preferred services. - As can be observed with the exemplary augmented R-
tree 400 ofFIG. 4 , while the matchingvector 405 of node “M6, M7, M8” indicates that all of the preferred services are located in the MBBs represented by “M6, M7, M8” (as each of the four quadrants of the matchingvector 405 contain unique identifiers 425), the matchingvector 405 of node “M12, M13, M14” indicates that only one type of preferred service is located within the MBBs represented by “M12, M13, M14”. Further, with this exemplary embodiment, it can be observed that the one type of service located within the MBBs represented by “M12, M13, M14” is more specifically located in the MBB represented by M13, as indicated by theentry matching vector 410. - However, it should be understood that even if a matching
vector 405 indicates that only one type of service is located within a 415, 415′, that type of service may be located in more than one child entry of the particular node. For example, the matchingparticular node vector 405 of node “M15, M16, M17” indicates that only one type of preferred service is located in the MBBs represented by “M15, M16, M17”. However, as can be observed, there are multiple instances of the preferred service, e.g., in the MBBs represented by M15 and M17, as indicated by theentry matching vectors 410. - Moreover, the
individual entries 420 of the leaf nodes 415 (i.e., those nodes that have no children nodes) which represent an MBB having at least one preferred service will include anentry matching vector 410 indicating the at least one preferred service. While, in the exemplary embodiment ofFIG. 4 , theleaf entries 420, which represent individual MBBs, are indicated as having a single preferred service (as indicated by the entry matching vectors 410), it should be understood that a geographic area represented by an MBB may have any number of preferred services located therein, and thus, anyindividual entry 420 may have any number of preferred services indicated, as indicated by theentry matching vector 410. - With this example, the matching
vector 405 can indicate up to four different preferred services withunique identifiers 425. Theseunique identifiers 425 correspond to theunique identifications 235 of the matching vector data table 200. The invention also contemplates that the matching vector can be used to indicate any number of preferred services. -
FIG. 5 shows anexemplary mapping 500 of 505, 505′ to a particular geographic area. As shown in theMBBs exemplary mapping 500 ofFIG. 5 , a plurality of 505, 505′ are mapped to Manhattan Island, N.Y. Additionally, as shown inMBBs FIG. 5 ,child MBBs 505′ are contained within at least oneMBB 505. The creation of the 505, 505′ to form theMBBs mapping 500 may performed according to methods for forming R-trees. Furthermore, in embodiments, a user may manual set and/or adjust the sizes and/or positions of the 505, 505′.MBBs - The
exemplary mapping 500 may also containindications 515 of locations of different types of preferred services. In embodiments, theindications 515 may correspond to theunique identifications 235 of the matching vector data table 200 and to theunique identifiers 425 of the matchingvectors 405.FIG. 5 also shows an indication of a current location of anomadic user 525 and an indication of a current location of a particular (or currently-sought)preferred service 520, in which thenomadic user 525 is currently interested and searching for, as discussed further below. - In embodiments, the
mapping 500 may be displayed to a user, e.g., on a screen or display of thecomputing device 14 via the I/O device 28 ofFIG. 1 . This allows a user to visually see the locations of currently-sought preferred services identified by the searchingtool 70. - According to a further aspect of the invention, using the position-deriving
tool 50, the user may derive their current position so that they may search for or update preferred services using the above-described augmented spatial index data structure, e.g., the augmented R-tree 400. The position-derivingtool 50 may include any conventional location detection devices such as global positioning systems (GPS) for, e.g., wireless devices, latitude and longitude for mobile telephones, and/or IP address geo-location, amongst other conventional location detection devices. - The user may utilize the user vector creation tool 60 to create a user vector indicating a preferred service the user is currently seeking (i.e., the currently-sought preferred service) and use the position-deriving
tool 50 to indicate the current location of thenomadic user 525. In embodiments, the user vector may take a similar form to the above described matchingvector 405. -
FIG. 6 generally shows an exemplary pictorial representation of auser vector 605 and a matchingvector 405, and how aresultant match 615 of a preferred service is determined based on theuser vector 605 and the matchingvector 405. As shown inFIG. 6 , theuser vector 605 has a similar form as the matchingvector 405. Thus, with thisexemplary user vector 605, while shown as indicating one currently-sought preferred service of four total preferred services, it should be understood that the invention contemplates that theuser vector 605 may indicate any number (e.g., one or more) of currently-sought preferred services from amongst any number of preferred services. - Additionally, as shown in
FIG. 6 , theresultant match 615 may be determined by superimposing, or performing a logical AND operation, of theuser vector 605 and the matchingvector 405. Thus, as shown in the example ofFIG. 6 , a user has indicated, via the user vector creation tool 60, that they are currently seeking the preferred service designated by theunique identification 620 shown in theuser vector 605. Theunique identification 620 of theuser vector 605 corresponds with theunique ID 235 of the matching vector data table 200 and with theunique identification 425 of the matchingvector 405. - According to the invention, as described further below, the searching
tool 70 may search the augmented R-tree 400 (now having matchingvectors 405 for the 415, 415′ anddifferent nodes entity matching vectors 410 for the different entries, as described inFIG. 4 ) by comparing theuser vector 605 with the plurality of matchingvectors 405. Thus, as shown in the example ofFIG. 6 , as the matchingvector 405 also has the preferred service designated by theunique identification 620, theresultant match 615 indicates that the preferred service designated by theunique identification 620 is present in the geographical region represented by an MBB associated with thatparticular matching vector 405. -
FIGS. 7-9 are flow diagrams for implementing processes of the invention, which may be implemented in the environment ofFIG. 1 .FIGS. 7-9 equally represent high-level block diagrams of the invention. Additionally, the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. - In an embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. The software and/or computer program product can be implemented in the environment of
FIG. 1 . For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. - Referring to
FIG. 7 , a nomadic user may use theflow 700 to search the augmented spatial index data structure, e.g., the augmented R-tree 400, to identify locations of currently-sought preferred services (as indicated by the user vector 605). It should be understood that with thisflow 700, the augmented spatial index data structure, e.g., the augmented R-tree 400, has already been created, as described further below. - At
step 705, the user derives their current position using the position-derivingtool 50. As described above, the position-derivingtool 50 may include any conventional method or system, including, for example, IP address geo-location, GPS for wireless devices, latitude-longitude for mobile telephones, amongst other methods for determining a current position. Atstep 710, the user constructs a user vector using the user vector creation tool 60. Atstep 715, the searching tool starts at the root of the spatial index, e.g., the augmented R-tree. Atstep 720, the searching tool determines a distance from the user's current position to the top right of a minimum bounded box (MBB). Atstep 725, the searching tool determines if the user is within the bounds of the determined top-right of the MBB. If, atstep 725, the searching tool determines that the user is within the bounds of the determined top-right of the MBB, atstep 730, the searching tool determines a distance from the user's current position to the bottom-left of the MBB. Atstep 735, the searching tool determines if the user is within the bounds of the determined bottom-left of the MBB. - If, at
step 735, the searching tool determines that the user is within the bounds of the determined bottom-left of the MBB, atstep 740, the searching tool performs the matching method of the user vector with the matching vector for that MBB. Put another way, at 720, 725, 730 and 735, the MBBs are scanned sequentially and checked for spatial bounds, according to an R-tree searching method. When a spatial bound of an MBB is within the bounds of a user, the searching tool performs the matching method in accordance with the present invention. That is, as described in regard tosteps FIG. 6 , the searching tool performs a logical AND of the user vector and the matching vector for that MBB. It is to be noted that the matching vector and the corresponding user vector may be computed with basic arithmetic capabilities. This contributes to the efficiency of the overall system. - At
step 745, the searching tool determines if a match was indicated by the matching method. If, atstep 745, the searching tool determines that there is a match between the user vector and the matching vector for that MBB, atstep 750, the searching tool stores the result in a database, e.g., in thestorage system 22B ofFIG. 1 . - If, at
step 745, the searching tool determines that there is not a match between the user vector and the matching vector for that MBB, atstep 755, the entire MBB may be pruned. That is, as the searching tool has determined that there are no currently-sought preferred services (as indicated by the user vector) located anywhere in the area designated by the MBB, the searching tool can eliminate any further searching for currently-sought preferred services in the area designated by that MBB. Moreover, if the searching tool eliminates an MBB, then the entire set of descendant MBBs are discarded because they contain no currently-sought preferred services for the present position of the nomadic user. Thus, using the matching method, the searching tool eliminates irrelevant preferred services, e.g., those item/type pairs within MBBs not located within the bounds of the user's current location, and uses the comparison property to determine a set of acceptable preferred services, e.g., those located within MBBs within the bounds of the user's current location. - If, at
725 or 735, the searching tool determines that the user is not within the bounds of the top-right or bottom-left of the MBB, the process continues atsteps step 760. Additionally, from either step 750 or step 755, the process continues atstep 760. Atstep 760, the searching tool determines if the end of the augmented R-tree has been reached. If, atstep 760, the searching tool determines that the end of the R-tree has not been reached, then atstep 765, the searching tool proceeds to the next MBB, and the process continues atstep 720. If, atstep 760, the searching tool determines that the end of the R-tree has been reached, then atstep 770, the searching tool reports or indicates to the user the location(s) of currently-sought preferred services based on the user's current location. - It should be understood, that while the steps have been described as occurring in a particular order, the invention contemplates that the steps may be performed in other orders. For example, step 720 may occur prior to step 730. Additionally, for example, step 770 may occur prior to step 750. Moreover, it should be understood that at
720 and 730, the search tool may compute the distance to the top-left and bottom-right of the MBB, respectively. Furthermore, the invention contemplates that, in embodiments, steps may be implied or omitted while still remaining true to this invention.steps -
FIG. 8 shows anexemplary flow 800 for indicating or creating a preferred service in an augmented spatial index, e.g., the augmented R-tree. Upon creating the matching vector data table 200, a user may manually or automatically create the augmented spatialindex using flow 800. At step 805 a user (or another, e.g., a service provider or an advertiser) may input a representation or description a preferred service (or a list of preferred services). More specifically, the user may determine the location of the preferred service using the position-derivingtool 50, as discussed above. Moreover, the user may represent the preferred service as a matching vector (as shown inFIG. 6 ) using the matchingvector creation tool 30 and the matching vector data table 200, as described above. - At
step 810, the augmenting/updating tool calculates a space quantification co-efficient (SQC) for the location of the preferred service. The SQC is a quantitative representation of the location on a space filling curve. Any suitable space filling curve (e.g., a Hilbert curve or z-order curve) may be used, wherein the resulting values, e.g., Hilbert value, will form the SQC. - At
step 815, the augmenting/updating tool sorts the location(s), or service-point(s), of the preferred service(s). Atstep 820, the augmenting/updating tool starts with the service-point having the smallest SQC. Atstep 825, the augmenting/updating tool inserts the service-point into a spatial data structure (e.g., an R-tree) using well known R-tree insertion methods. - At
step 830, the augmenting/updating tool determines if the created node is a leaf node, i.e., has no dependent nodes. If, atstep 830, the augmenting/updating tool determines that the created node is a leaf node, then atstep 835, the augmenting/updating tool performs a logical OR of matching vectors of the node's service-point entries. Atstep 840, the augmenting/updating tool sets the result of the logical OR determined instep 835 as the matching vector of the node. - If, at
step 830, the augmenting/updating tool determines that the created node is not a leaf node, e.g., is an index node, atstep 845, the augmenting/updating tool performs a logical OR of the matching vectors of the current node's child nodes. Then, the process proceeds to step 840, wherein the augmenting/updating tool sets the result of the logical OR determined instep 845 as the matching vector of the node. - At
step 850, the augmenting/updating tool determines if all service-points are loaded. If, atstep 850, the augmenting/updating tool determines that all service-points have not been loaded into the augmented R-tree, then the process proceeds atstep 825, such that these steps are applied iteratively to all the service-points to be loaded. If, atstep 850, the augmenting/updating tool determines that all service-points have been loaded, then the process ends atstep 855. It should be understood that, in embodiments, flow 800 can be applied to augmented R-trees being initially created as well as existing R-trees where the data points are to be converted to service-points. - It should be understood, that while the steps have been described as occurring in a particular order, the invention contemplates that the steps may be performed in other orders. Furthermore, the invention contemplates that, in embodiments, steps may be implied or omitted while still remaining true to this invention.
-
FIG. 9 shows anexemplary flow 900 for updating preferred services and their associated preferences. Upon updating the matching vector data table 200, a user may manually or automatically update the spatialindex using flow 900. Atstep 905, a user inputs a preferred service update, e.g., a service-point update. Atstep 910, the user may useflow 700 to perform a search of the augmented R-tree, which returns a list of nodes starting with the leaf nodes leading to the service-point. The result of the search includes the full traversal, i.e., all the nodes from the root of the R-tree to the leaf that contains the preferred service to be updated. - At
step 915, the augmenting/updating tool starts with the first node in the list. Atstep 920, the augmenting/updating tool determines if the node is a leaf node. The first node is usually the leaf node itself, thus the augmenting/updating tool may first perform the update in the leaf node. If, atstep 920, the augmenting/updating tool determines that the node is a leaf node, atstep 925, the augmenting/updating tool retrieves the entry matching vector of the service-point to be updated. Atstep 930, the augmenting/updating tool unsets the old preferred service in the service-point. Atstep 935, the augmenting/updating tool updates the service-point with the new preferred service. Atstep 940, the augmenting/updating tool performs a logical OR of the entry matching vectors for all the service-point entries for that leaf node. Atstep 955, the augmenting/updating tool updates the matching vector of the current leaf node with the logical OR result determined atstep 940. - If, at
step 920, the augmenting/updating tool determines that the current node is not a leaf node, atstep 945, the augmenting/updating tool retrieves the matching vector of all child nodes for this current index node. Atstep 950, the augmenting/updating tool performs a logical OR of the matching vectors of the child nodes. Atstep 955, the augmenting/updating tool updates the matching vector of the current node with the logical OR result determined atstep 950. That is, the preferred services update is propagated to the containing index node by combining the matching vectors of all the leaf nodes beneath the index node. - At
step 960, the augmenting/updating tool determines whether there are more nodes. If, atstep 960, the augmenting/updating tool determines that there are more nodes, the process continues atstep 920. The augmenting/updating tool progresses upward through the R-tree and updates all the matching vectors for all the index nodes at each level. - If, at
step 960, the augmenting/updating tool determines that there are no more nodes, atstep 965, the user manually or the augmenting/updating tool automatically determines if there are more preferred services to update. If, atstep 965, the user or the augmenting/updating tool determines that there are more preferred services to update, the process continues atstep 910. If, atstep 965, the user or the augmenting/updating tool determines that there are no more preferred services to update, then the process ends atstep 970. -
FIGS. 10 and 11 illustrate how utilizing the present invention eliminates up to 60% of irrelevant spatial results. As discussed above, this is a 40% improvement (at least) over known methods.FIG. 10 shows an exemplaryspatial index 1000 in accordance with the present invention. Thespatial index 1000 includes aroot node 1005, a plurality ofindex nodes 1010 and a plurality ofleaf nodes 1015. In order to facilitate an explanation of the invention, with the exemplaryspatial index 1000, only two types of preferred services are shown. Moreover, these two types of preferred services are indicated by the connecting lines between the nodes, wherein the dashed-dot lines 1025 indicate the presence of preferred service “A” and dashedlines 1030 indicate the presence of preferred service “B”. Additionally, if a parent node is connected to children nodes that have both preferred service “A” and preferred service “B”,solid line 1020 connects the nodes. As shown inFIG. 10 , thespatial index 1000 includes 28 leaf nodes. - If a user was only interested in preferred service “A”, the user may indicate this interest utilizing the
user vector 405, as described above. Moreover, using the positioning-derivingtool 50, the user can determine their current location. Then, by implementing aspects of the present invention, those irrelevant paths in the spatial index may be removed. Thus, as described above, those nodes representing MBBs that are not within a particular distance of the user and those nodes representing MBBs that do not have the currently-sought preferred services may be removed from consideration. -
FIG. 11 shows a modifiedspatial index 1000′, wherein those irrelevant paths have been removed. That is, those nodes representing MBBs that are not within a particular distance of the user and/or that do not have the currently-sought preferred services, and their paths have been pruned or removed from the modifiedspatial index 1000′. As shown inFIG. 11 , using the present invention, a large number of nodes, e.g., those containing preferred service “B”, have been removed. Moreover, as shown inFIG. 11 , as each of the remaining nodes contain the preferred service “A”, each of the lines are now dashed-dot lines 1025′. Now, rather than searching or considering the twenty-eightleaf nodes 1015 ofspatial index 1000 shown inFIG. 10 , a user may only need to search or consider the nineleaf nodes 1015′ of thespatial index 1000′ shown inFIG. 11 . - While the invention has been described in terms of embodiments, those skilled in the art will recognize that the invention can be practiced with modifications and in the spirit and scope of the appended claims.
Claims (21)
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/028,151 US8234264B2 (en) | 2008-02-08 | 2008-02-08 | System and method for preferred services in nomadic environments |
| TW098103548A TWI441538B (en) | 2008-02-08 | 2009-02-04 | System and method for preferred services in nomadic environments |
| US13/453,325 US8688680B2 (en) | 2008-02-08 | 2012-04-23 | System and method for preferred services in nomadic environments |
| US14/217,836 US9378291B2 (en) | 2008-02-08 | 2014-03-18 | System and method for preferred services in nomadic environments |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/028,151 US8234264B2 (en) | 2008-02-08 | 2008-02-08 | System and method for preferred services in nomadic environments |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/453,325 Division US8688680B2 (en) | 2008-02-08 | 2012-04-23 | System and method for preferred services in nomadic environments |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20090204597A1 true US20090204597A1 (en) | 2009-08-13 |
| US8234264B2 US8234264B2 (en) | 2012-07-31 |
Family
ID=40939767
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/028,151 Expired - Fee Related US8234264B2 (en) | 2008-02-08 | 2008-02-08 | System and method for preferred services in nomadic environments |
| US13/453,325 Expired - Fee Related US8688680B2 (en) | 2008-02-08 | 2012-04-23 | System and method for preferred services in nomadic environments |
| US14/217,836 Expired - Fee Related US9378291B2 (en) | 2008-02-08 | 2014-03-18 | System and method for preferred services in nomadic environments |
Family Applications After (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/453,325 Expired - Fee Related US8688680B2 (en) | 2008-02-08 | 2012-04-23 | System and method for preferred services in nomadic environments |
| US14/217,836 Expired - Fee Related US9378291B2 (en) | 2008-02-08 | 2014-03-18 | System and method for preferred services in nomadic environments |
Country Status (2)
| Country | Link |
|---|---|
| US (3) | US8234264B2 (en) |
| TW (1) | TWI441538B (en) |
Cited By (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100127933A1 (en) * | 2008-11-27 | 2010-05-27 | Industrial Technology Research Institute | Algorithm of collecting and constructing training location data in a positioning system and the positioning method therefor |
| US8219564B1 (en) * | 2008-04-29 | 2012-07-10 | Netapp, Inc. | Two-dimensional indexes for quick multiple attribute search in a catalog system |
| WO2014042702A1 (en) * | 2012-09-14 | 2014-03-20 | Bentley Systems, Incorporated | Efficiently finding spatially scored best entities |
| WO2012134627A3 (en) * | 2011-03-31 | 2014-04-17 | Strava, Inc. | Defining and matching athletic performance segments |
| US8718927B2 (en) | 2012-03-12 | 2014-05-06 | Strava, Inc. | GPS data repair |
| US20150026190A1 (en) * | 2013-07-19 | 2015-01-22 | Salesforce.Com, Inc. | Geo-location custom indexes |
| US8983637B2 (en) | 2012-07-30 | 2015-03-17 | Mapmyfitness, Inc. | Determining authenticity of reported fitness-related activities |
| US20150347478A1 (en) * | 2014-06-03 | 2015-12-03 | Xerox Corporation | Systems and methods for context-aware and personalized access to visualizations of road events |
| US9291713B2 (en) | 2011-03-31 | 2016-03-22 | Strava, Inc. | Providing real-time segment performance information |
| US9664518B2 (en) | 2010-08-27 | 2017-05-30 | Strava, Inc. | Method and system for comparing performance statistics with respect to location |
| US9700241B2 (en) | 2012-12-04 | 2017-07-11 | Under Armour, Inc. | Gait analysis system and method |
| US10042893B2 (en) | 2012-10-31 | 2018-08-07 | Under Armour, Inc. | System and method for personal and peer performance ranking of outdoor activities |
| US20210049519A1 (en) * | 2019-08-13 | 2021-02-18 | Honda Motor Co., Ltd. | Electric vehicle (ev) charging station management |
| US20210086651A1 (en) * | 2019-08-13 | 2021-03-25 | Honda Motor Co., Ltd. | Systems and methods for electric vehicle (ev) charging station management |
| US20210158269A1 (en) * | 2019-11-08 | 2021-05-27 | Toyota Jidosha Kabushiki Kaisha | Information processing apparatus, recording medium and information processing method |
| US20210295224A1 (en) * | 2020-03-23 | 2021-09-23 | Lyft, Inc. | Utilizing a requestor device forecasting model with forward and backward looking queue filters to pre-dispatch provider devices |
| US20230342874A1 (en) * | 2022-04-25 | 2023-10-26 | Toyota Motor North America, Inc. | Prioritizing access to shared vehicles based on need |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10657669B2 (en) | 2015-03-25 | 2020-05-19 | Beijing Kuangshi Technology Co., Ltd. | Determination of a geographical location of a user |
| CN109889993B (en) * | 2019-01-31 | 2021-03-16 | 北京永安信通科技有限公司 | Method and device for determining positioning object in predetermined area and electronic equipment |
| CN110232067B (en) * | 2019-06-10 | 2020-08-07 | 长安大学 | Co-generation group discovery method based on BHR-Tree index |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6252605B1 (en) * | 1997-08-01 | 2001-06-26 | Garmin Corporation | System and method for packing spatial data in an R-tree |
| US6868410B2 (en) * | 2000-06-05 | 2005-03-15 | Stephen E. Fortin | High-performance location management platform |
| US20050165788A1 (en) * | 2003-11-19 | 2005-07-28 | Chaowei Yang | Geographic information system |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| BR9808014B1 (en) | 1997-03-12 | 2013-06-25 | “Computer-readable, non-transient media and external networking” | |
| US6751459B1 (en) | 1999-04-20 | 2004-06-15 | Nortel Networks Limited | Nomadic computing with personal mobility domain name system |
| US7079499B1 (en) | 1999-09-08 | 2006-07-18 | Nortel Networks Limited | Internet protocol mobility architecture framework |
| US20040036611A1 (en) | 2001-03-30 | 2004-02-26 | Kidney Nancy G. | Notification service on transportation network |
| US7155425B2 (en) | 2001-05-15 | 2006-12-26 | Nokia Corporation | Mobile web services |
| US7813937B1 (en) * | 2002-02-15 | 2010-10-12 | Fair Isaac Corporation | Consistency modeling of healthcare claims to detect fraud and abuse |
| AU2003253765A1 (en) | 2002-06-27 | 2004-01-19 | Small World Productions, Inc. | System and method for locating and notifying a user of a person, place or thing having attributes matching the user's stated prefernces |
| US20050152305A1 (en) | 2002-11-25 | 2005-07-14 | Fujitsu Limited | Apparatus, method, and medium for self-organizing multi-hop wireless access networks |
| US20040249826A1 (en) * | 2003-06-05 | 2004-12-09 | International Business Machines Corporation | Administering devices including creating a user reaction log |
| US7239989B2 (en) | 2003-07-18 | 2007-07-03 | Oracle International Corporation | Within-distance query pruning in an R-tree index |
| US8027330B2 (en) * | 2004-06-23 | 2011-09-27 | Qualcomm Incorporated | Efficient classification of network packets |
| US8948026B2 (en) | 2005-06-10 | 2015-02-03 | Adaptive Spectrum And Signal Alignment, Inc. | User-preference-based DSL system |
| WO2008016634A2 (en) * | 2006-08-02 | 2008-02-07 | Tellytopia, Inc. | System, device, and method for delivering multimedia |
| US20090037403A1 (en) * | 2007-07-31 | 2009-02-05 | Microsoft Corporation | Generalized location identification |
| US9453741B2 (en) * | 2010-03-31 | 2016-09-27 | Telenav, Inc. | Navigation system with indexed term searching and method of operation thereof |
-
2008
- 2008-02-08 US US12/028,151 patent/US8234264B2/en not_active Expired - Fee Related
-
2009
- 2009-02-04 TW TW098103548A patent/TWI441538B/en not_active IP Right Cessation
-
2012
- 2012-04-23 US US13/453,325 patent/US8688680B2/en not_active Expired - Fee Related
-
2014
- 2014-03-18 US US14/217,836 patent/US9378291B2/en not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6252605B1 (en) * | 1997-08-01 | 2001-06-26 | Garmin Corporation | System and method for packing spatial data in an R-tree |
| US6868410B2 (en) * | 2000-06-05 | 2005-03-15 | Stephen E. Fortin | High-performance location management platform |
| US20050165788A1 (en) * | 2003-11-19 | 2005-07-28 | Chaowei Yang | Geographic information system |
Cited By (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8219564B1 (en) * | 2008-04-29 | 2012-07-10 | Netapp, Inc. | Two-dimensional indexes for quick multiple attribute search in a catalog system |
| US8102315B2 (en) * | 2008-11-27 | 2012-01-24 | Industrial Technology Research Institute | Algorithm of collecting and constructing training location data in a positioning system and the positioning method therefor |
| US20100127933A1 (en) * | 2008-11-27 | 2010-05-27 | Industrial Technology Research Institute | Algorithm of collecting and constructing training location data in a positioning system and the positioning method therefor |
| US9664518B2 (en) | 2010-08-27 | 2017-05-30 | Strava, Inc. | Method and system for comparing performance statistics with respect to location |
| US9291713B2 (en) | 2011-03-31 | 2016-03-22 | Strava, Inc. | Providing real-time segment performance information |
| US9208175B2 (en) | 2011-03-31 | 2015-12-08 | Strava, Inc. | Defining and matching segments |
| WO2012134627A3 (en) * | 2011-03-31 | 2014-04-17 | Strava, Inc. | Defining and matching athletic performance segments |
| US9116922B2 (en) | 2011-03-31 | 2015-08-25 | Strava, Inc. | Defining and matching segments |
| US8996301B2 (en) | 2012-03-12 | 2015-03-31 | Strava, Inc. | Segment validation |
| US8718927B2 (en) | 2012-03-12 | 2014-05-06 | Strava, Inc. | GPS data repair |
| US8983637B2 (en) | 2012-07-30 | 2015-03-17 | Mapmyfitness, Inc. | Determining authenticity of reported fitness-related activities |
| US8965900B2 (en) | 2012-09-14 | 2015-02-24 | Bentley Systems, Incorporated | Efficiently finding spatially scored best entities |
| WO2014042702A1 (en) * | 2012-09-14 | 2014-03-20 | Bentley Systems, Incorporated | Efficiently finding spatially scored best entities |
| US10042893B2 (en) | 2012-10-31 | 2018-08-07 | Under Armour, Inc. | System and method for personal and peer performance ranking of outdoor activities |
| US11093513B2 (en) | 2012-10-31 | 2021-08-17 | Under Armour, Inc. | System and method for personal and peer performance ranking of outdoor activities |
| US9700241B2 (en) | 2012-12-04 | 2017-07-11 | Under Armour, Inc. | Gait analysis system and method |
| US9875321B2 (en) * | 2013-07-19 | 2018-01-23 | Salesforce.Com, Inc. | Geo-location custom indexes |
| US20150026190A1 (en) * | 2013-07-19 | 2015-01-22 | Salesforce.Com, Inc. | Geo-location custom indexes |
| US11010427B2 (en) | 2013-07-19 | 2021-05-18 | Salesforce.Com, Inc. | Geo-location custom indexes |
| US20150347478A1 (en) * | 2014-06-03 | 2015-12-03 | Xerox Corporation | Systems and methods for context-aware and personalized access to visualizations of road events |
| US9934249B2 (en) * | 2014-06-03 | 2018-04-03 | Conduent Business Machines Services, Llc | Systems and methods for context-aware and personalized access to visualizations of road events |
| US20210049519A1 (en) * | 2019-08-13 | 2021-02-18 | Honda Motor Co., Ltd. | Electric vehicle (ev) charging station management |
| US20210086651A1 (en) * | 2019-08-13 | 2021-03-25 | Honda Motor Co., Ltd. | Systems and methods for electric vehicle (ev) charging station management |
| US20210158269A1 (en) * | 2019-11-08 | 2021-05-27 | Toyota Jidosha Kabushiki Kaisha | Information processing apparatus, recording medium and information processing method |
| US20210295224A1 (en) * | 2020-03-23 | 2021-09-23 | Lyft, Inc. | Utilizing a requestor device forecasting model with forward and backward looking queue filters to pre-dispatch provider devices |
| US20230342874A1 (en) * | 2022-04-25 | 2023-10-26 | Toyota Motor North America, Inc. | Prioritizing access to shared vehicles based on need |
Also Published As
| Publication number | Publication date |
|---|---|
| US20140207816A1 (en) | 2014-07-24 |
| US8688680B2 (en) | 2014-04-01 |
| US8234264B2 (en) | 2012-07-31 |
| US20120208565A1 (en) | 2012-08-16 |
| TW200948098A (en) | 2009-11-16 |
| TWI441538B (en) | 2014-06-11 |
| US9378291B2 (en) | 2016-06-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9378291B2 (en) | System and method for preferred services in nomadic environments | |
| Li et al. | An optimisation model for linear feature matching in geographical data conflation | |
| US10102564B2 (en) | System for adjusting map navigation path in retail store and method of using same | |
| Kothuri et al. | Pro oracle spatial for oracle database 11g | |
| AU2017200055B2 (en) | Integrated developer workflow for data visualization development | |
| Tong et al. | A linear road object matching method for conflation based on optimization and logistic regression | |
| JP5914349B2 (en) | Method and apparatus for cross-referencing and deduplicating objects in multiple map building blocks | |
| US10331631B2 (en) | Apparatus, systems, and methods for analyzing characteristics of entities of interest | |
| JP6602774B2 (en) | Method and apparatus for geofence provisioning | |
| CN107092623B (en) | Method and device for querying a point of interest | |
| US20190095536A1 (en) | Method and device for content recommendation and computer readable storage medium | |
| Zhu et al. | Data integration to create large-scale spatially detailed synthetic populations | |
| JP2019160320A (en) | Location based information search method and system | |
| US9710839B2 (en) | System for embedding maps within retail store search results and method of using same | |
| US10134074B2 (en) | System for snap and pan of embedded maps within retail store search results and method of using same | |
| US9959268B2 (en) | Semantic modeling of geographic information in business intelligence | |
| US9449110B2 (en) | Geotiles for finding relevant results from a geographically distributed set | |
| CN118779376B (en) | Social media data analysis and presentation method and device based on geographic position | |
| CN109299165A (en) | Massive spatial data WebGIS based on OpenLayers4 visualizes solution | |
| JP6817385B1 (en) | Map information sharing device, map information sharing method, map information sharing program | |
| Rahmawati et al. | MOBILE APPLICATION FOR HALAL FOOD PRODUCT INFORMATION WITH GEOFENCING TECHNOLOGY BASED ON QR CODE | |
| HK40080885A (en) | Apparatus, systems, and methods for providing location information | |
| KR20230120541A (en) | Control method of electronic device providing search result for each keywords and search result for spell contaning keyword | |
| KR101532697B1 (en) | Apparatus and method for providing search result | |
| Ferreira et al. | Online geodatabases as a source of data for a smart city world model building |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MANI, KUMAR;NARAYANAN, PURUSHOTHAMAN KUNNATH;VENKATA, HEMA;REEL/FRAME:020483/0054;SIGNING DATES FROM 20080118 TO 20080120 Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MANI, KUMAR;NARAYANAN, PURUSHOTHAMAN KUNNATH;VENKATA, HEMA;SIGNING DATES FROM 20080118 TO 20080120;REEL/FRAME:020483/0054 |
|
| REMI | Maintenance fee reminder mailed | ||
| LAPS | Lapse for failure to pay maintenance fees | ||
| STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
| FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20160731 |