Examples set forth in the present disclosure relate to the field of electronic records and data analysis, including user-provided content. More particularly, but not by way of limitation, the present disclosure describes evaluating crowdsourced field reports based on user credibility.
Maps and map-related applications include data about points of interest. Data about points of interest can be obtained through crowdsourcing.
Crowdsourcing involves a large, relatively open, and evolving pool of users who can participate and gather real-time data without special skills or training. The quality of crowdsourced place data varies widely, depending on the accuracy of the field reports and the credibility of the users.
Users have access to many types of computers and electronic devices today, such as mobile devices (e.g., smartphones, tablets, and laptops) and wearable devices (e.g., smartglasses, digital eyewear), which include a variety of cameras, sensors, wireless transceivers, input systems, and displays.
Features of the various examples described will be readily understood from the following detailed description, in which reference is made to the figures. A reference numeral is used with each element in the description and throughout the several views of the drawing. When a plurality of similar elements is present, a single reference numeral may be assigned to like elements, with an added lower-case letter referring to a specific element.
The various elements shown in the figures are not drawn to scale unless otherwise indicated. The dimensions of the various elements may be enlarged or reduced in the interest of clarity. The several figures depict one or more implementations and are presented by way of example only and should not be construed as limiting. Included in the drawing are the following figures:
Maps and map-related applications frequently include incorrect or stale data about points of interest. Various implementations and details are described with reference to examples for evaluating the validity of user-submitted labels from crowd-sourced field reports, e.g., for updating data about points of interest. For example, a mathematical model generates a set of tentatively accepted labels iteratively, by submission timestamp, for a subset of field reports. Each tentatively accepted label is based on a user credibility score and a decay factor associated with the relative age of each user-submitted label. The model repeats iteratively, by place attribute and by place identifier, to generate supersets of tentatively accepted labels and to update the user credibility scores. When the values converge, the model identifies an accepted label for each place attribute in the subset. The probabilistic model evaluates the validity of user-submitted field reports, and the relative credibility of the users, without using expert moderators or ground truth data sets.
Example methods include identifying a subset of stored field reports according to an evaluation time period and identifying one or more distinct place identifiers in the subset, wherein each identified distinct place identifier is associated with a set of place attributes. The method includes establishing one or more place-attribute pairs, each comprising one of the distinct place identifiers and its associated set of place attributes. Using a mathematical model, the method includes generating a set of tentatively accepted labels, each associated with one of the user-submitted labels and its associated submission timestamp, from a first timestamp to a reference timestamp. Each tentatively accepted label is based on the global user credibility score, a decay factor, and a cumulative candidate label score. The method includes repeating this generating process iteratively, by submission timestamp, until the reference timestamp equals a last timestamp.
In some implementations, the method includes producing a first set of tentatively accepted labels associated with a first distinct place identifier, iteratively, by place attribute, for each place attribute in the associated set of place attributes, and also producing a subsequent set of tentatively accepted labels associated with a subsequent distinct place identifier, iteratively, by place identifier, for each distinct place identifier in the subset. The process further includes determining whether a label condition is satisfied based on a comparison of each set of tentatively accepted labels in the current superset, by place-attribute pair, with each set of tentatively accepted labels in at least one preceding superset. In response to determining that the label condition is satisfied, the method includes selecting an accepted label for each place attribute in the subset, wherein each accepted label comprises a most recent value from the current superset.
In response to determining that the label condition is not satisfied, the method includes updating the global user credibility score associated with each user identifier based on an evaluation of each and every user-submitted label in the subset as of its associated submission timestamp, and repeating the generating process, iteratively and in accordance with the updated global user credibility score, to produce a next superset of tentatively accepted labels associated with a next iteration, until the label condition is satisfied.
Although the various systems and methods are described herein with reference to evaluating the authenticity of place attributes, the technology described may be applied to evaluating the relative authenticity, credibility, or value of any data.
The following detailed description includes systems, methods, techniques, instruction sequences, and computing machine program products illustrative of examples set forth in the disclosure. Numerous details and examples are included for the purpose of providing a thorough understanding of the disclosed subject matter and its relevant teachings. Those skilled in the relevant art, however, may understand how to apply the relevant teachings without such details. Aspects of the disclosed subject matter are not limited to the specific devices, systems, and method described because the relevant teachings can be applied or practice in a variety of ways. The terminology and nomenclature used herein is for the purpose of describing particular aspects only and is not intended to be limiting. In general, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.
The terms “coupled” or “connected” as used herein refer to any logical, optical, physical, or electrical connection, including a link or the like by which the electrical or magnetic signals produced or supplied by one system element are imparted to another coupled or connected system element. Unless described otherwise, coupled or connected elements or devices are not necessarily directly connected to one another and may be separated by intermediate components, elements, or communication media, one or more of which may modify, manipulate, or carry the electrical signals. The term “on” means directly supported by an element or indirectly supported by the element through another element that is integrated into or supported by the element.
Additional objects, advantages and novel features of the examples will be set forth in part in the following description, and in part will become apparent to those skilled in the art upon examination of the following and the accompanying drawings or may be learned by production or operation of the examples. The objects and advantages of the present subject matter may be realized and attained by means of the methodologies, instrumentalities and combinations particularly pointed out in the appended claims.
Maps and map-related applications frequently include incorrect or stale data about points of interest. Sending field experts to gather and update place data is time-consuming and expensive. Proprietary datasets are expensive and irregular. The data quality varies geographically, with acceptable data in the largest cities and relatively poor coverage elsewhere. Hiring expert content moderators to review and confirm user-submitted place data adds delay and expense, often defeating the benefits of gathering place data from non-expert users.
In the example context of map-related applications, a user may submit a field report about a new place (e.g., an Add Place action) or about an existing place (e.g., a Suggest Edit action). In some applications, the format of a field report includes place data that is limited to a predefined set of attributes, some of which are expected to be relatively static over time (e.g., name, address, business type, telephone number) while others are subject to change or dynamic (e.g., admission policies, hours of operation, amenities). A field report submitted by a user, for example, includes a data submission or label (e.g., café) associated with a particular attribute (e.g., business type). The field report need not include a label for each and every attribute. For example, a Suggest Edit action may include a single label associated with one attribute. An Add Place action may include labels for most or all the attributes.
For an active application in use, thousands of users are engaged and participating in various ways, including by submitting field reports that contain place data. For applications that allow relatively unlimited submissions, the incoming field reports often include overlapping labels. In one aspect, overlapping labels about a particular attribute tend to confirm the accuracy of the label. For example, hundreds of users might submit the label “Acme Bank” for a “Business Name” attribute associated with a particular place. The receipt of multiple labels in common suggests that the label is accurate. In another aspect, labels can be partially conflicting relative to other field reports (e.g., café versus restaurant, for a “Business Type” attribute) or, in some cases, in total conflict (e.g., bank versus pharmacy).
Occasional conflicts of varying degrees among user-submitted labels are generally expected, due to errors, misspellings, and subjective assessments (e.g., cake shop versus bakery). A significant conflict among incoming field reports, however, suggests there is an important issue with a particular place. The issue might represent a genuine change, such as new operating hours or a new business name. The issue might also indicate suspicious user behavior (e.g., erroneous field reports, fraudulent submissions, malicious intent) or another anomaly that warrants further investigation.
Users and participating business want place data that reflects the objective ground truth; in other words, place data that is accurate, reliable, and up to date. Ground truth place data can be sought by purchasing proprietary third-party datasets or by sending expert investigators into the field. Hiring expert content moderators to investigate and resolve every conflict takes time and adds expense.
The systems and methods described herein, in one aspect, facilitate the resolution of conflicting crowdsourced data without relying on objective ground truth data.
Although the steps are described with reference to field reports, labels, place attributes, and place data, other beneficial uses and implementations of the steps described will be understood by those of skill in the art based on the description herein. One or more of the steps shown and described may be performed simultaneously, in a series, in an order other than shown and described, or in conjunction with additional steps. Some steps may be omitted or, in some applications, repeated.
In some example implementations, a field report 202 includes a user identifier 212, a submission timestamp 216, a place identifier 35, and at least one user-submitted label 214 representing a place attribute 20. The user identifier 212 in some implementations includes a username, a device identifier (e.g., a device IP address, device metadata), geolocation data associated with a user device (e.g., image metadata in EXIF format), and other indicia associated with a particular person who is a participating or registered user. The submission timestamp 216 in some implementations represents the date and clock time when a field report 202 is submitted by a user. The place identifier 35 in some implementations includes a place name, a unique place number (e.g., a reference or serial number), a geospatial identifier (e.g., geographic metadata, GPS data), and other indicia associated with the geographic place where a field report 202 was submitted.
Field reports 202 may be stored in a memory 604 (e.g., in a field report database or set of relational databases) of one or more computing devices 600, such as those described herein. Similarly, user records may be stored in a memory 604 (e.g., in a user database or set of relational databases) of one or more computing devices 600. A user record in some implementations includes a user identifier 212, a global user credibility score 218, and a variety of other user-specific data and information.
A user-submitted label 214 in some implementations includes one or more characters (e.g., letters, words, digits, blank spaces, punctuation), a value (e.g., a selection from a menu, a value associated with a particular variable), or any other indicia associated with or representing a place attribute 20. A place attribute 20 in some implementations includes any of a variety of attributes associated with a place or point of interest, including attributes that are expected to remain relatively static over time (e.g., name, address, business type, telephone number) and other attributes that are relatively dynamic, variable, or subject to change over time (e.g., admission policies, hours of operation, amenities). For example, a user-submitted label 214 that includes the text string “Acme Bank” may be submitted to represent the place attribute 20 entitled “Business Name.” Another example user-submitted label 214 that includes the numerical value 8 may be submitted to represent the place attribute 20 entitled “Open Hours on Mondays.”
Block 102 in
The example subset 204 of field reports 202 shown in
In another aspect, example step of identifying a subset 204 of a plurality of field reports 202 according to an evaluation time period 51 includes one or more initialization steps. For example, in some implementations, a first iteration includes setting the global user credibility score 218 for each user identifier 212 to 0.5, where a value of one would indicate perfect credibility (i.e., user-submitted labels 214 always correct) and a value of zero would indicate their user-submitted labels 214 are always incorrect. In a related aspect, for a second and subsequent iterations, the initialization steps, in some implementations, include using the updated global user credibility score 218 for each user identifier 212 for the next iteration of the model 10 described herein. The initialization steps, in some implementations, include establishing a null or empty set for the set of tentatively accepted labels 238 (e.g., the set 238 shown in
Block 104 in
Block 106 in
Each of the identified distinct place identifiers 35 is associated with a set of place attributes 20. For example, the place known as Acme Bank may include a large number and a wide variety of place attributes 20 (e.g., a place identifier 330 (AB31NK6), address, business type, telephone number, hours of operation, admission policies, and the like). The place attributes 20 associated with a particular place identifier may be referred to herein as a set 25 of place attributes. Block 108 in
In a related aspect, the step of identifying and looping over place identifiers and attributes, in some implementations, includes establishing one or more place-attribute pairs 340 (
Block 110 in
In another aspect, an example step of looping over all the submission timestamps 216 includes generating a set of tentatively accepted labels 238, each one associated with one of the user-submitted labels 214 and its associated submission timestamp 216. In some implementations, the group of submission timestamps 216 spans the time from a first timestamp 232 to a reference timestamp 234. As described herein, in some implementations, each tentatively accepted label 238 is based on a global user credibility score 218, a decay factor 220, and a cumulative candidate label score 224.
The next column shows an example a user-submitted label 214 for a first place attribute 21 (e.g., Open Hours on Mondays) associated with the first distinct place identifier 31 (e.g., Acme Bank). As shown, the user-submitted labels 214 in this example include digits indicating the number of hours the bank is open on Mondays. The example submission timestamps 216 indicate the date and time when each field report 202 was submitted. The timestamps 216 in some implementations include the date and a universal or coordinated clock time.
In the example shown, the user-submitted labels 214 are disparate, ranging in value from seven to twelve. The disparate values reveal a conflict among the incoming field reports 202, suggesting there might be a potential issue with this particular place attribute 21 or place identifier 31. The potential issue might represent a genuine change (e.g., new operating hours), a reporting error (e.g., a user entering an incorrect value), or some other anomaly in the data. In some implementations, the model 10 described herein is configured to analyze subsets 204 that contain disparate or conflicting user-submitted labels 214 (e.g., rejecting subsets 204 unless the quantity or percentage of disparate labels 214 exceeds a predetermined minimum threshold). In this aspect, for example, a subset 204 that contains similar or homogenous user-submitted labels 214 (e.g., all eights) would not require analysis and resolution by the model 10. Based on the corroboration among this subset of user-submitted labels 214 (e.g., all eights) the model 10 infers that all the users submitted a correct response and, accordingly, each global user credibility score 218 would improve.
The next column shows an example global user credibility score 218 associated with each user identifier 212. The score 218 is described as global because, in some implementations, the global user credibility score 218 reflects the probability that a user-submitted label 214 about a place attribute 20 is correct, based on all the field reports 202 submitted by that user (i.e., for most or all place attributes 20, place identifiers 330, and time periods, as received or stored in the field report database 400). In some implementations, the global user credibility score 218 associated with each user identifier 212 is retrieved from the store user records.
Referring again to block 110 in
The decay factor 220 represents the relative age of each field report 202 relative to the reference field report 230a. The decay factor 220 is particularly useful when evaluating a series of user-submitted labels 214 submitted over time—and for evaluating a selected place attribute 21, such as “Open Hours on Mondays,” which is likely to undergo an authentic and legitimate change over time (e.g., operating hours that change on a seasonal basis). The example subset 204 shown in
The decay factor 220 in some implementations is calculated using an exponential function of the form ex—also written as exp(x)—where the exponent, x, equals the relative age of each timestamp 216 relative to the reference timestamp 234a divided by a parameter (Tau). In one example, the decay factor 220 is calculated according to this equation:
where d is the decay factor 220, A is the relative age of each timestamp 216, and Tau is a value associated with a parameter such as the current place attribute (e.g., in this example, the first place attribute 21). For example, this parameter in some implementations is a value associated with the likelihood that a retail business remains open, over time, may be based on the published data surrounding the typical lifespan of retail storefronts of a particular type or in a particular region.
According to the example shown in
The process of calculating a decay factor 220 as described herein is particularly well suited for place attributes that are subject to change over time (e.g., operating hours, admission policies, occupancy limits, amenities, accessibility, and the like). For place attributes that are expected to remain relatively static over time (e.g., business name, address, business type, telephone number), the process of generating a tentatively acceptable label 238 (described at block 110 in
The calculation of a decay-adjusted user credibility score 222a in some implementations equals the global user credibility score 218 times the decay factor 220a for each user-submitted label 214 in the subset 204. For the user identifier 212 labeled A, the global user credibility score 218 (0.71) times the decay factor 220a (0.5906) equals the decay-adjusted user credibility score 222a (0.4193).
The next step in identifying a tentatively accepted label 238a for this time iteration is illustrated in
Another step, in some implementations, includes calculating a cumulative candidate label score 224a associated with each of the identified distinct candidate labels 226a. In some implementations, as shown in
For the distinct candidate label 226a equal to 12, the cumulative candidate label score 224a equals 0.3172 (which is the decay-adjusted user credibility scores 222a for the single instance of a user-submitted label 214 equal to 12). Finally, for the distinct candidate label 226a equal to 7, the cumulative candidate label score 224a equals 0.9200 (which is the decay-adjusted user credibility scores 222a for the single instance of a user-submitted label 214 equal to 7).
The step of identifying a tentatively accepted label 238a is based on the calculated cumulative candidate label scores 224a. As shown in
In one aspect of the model 10, the calculated decay factors 220b for each user-submitted label 214 are different in this time iteration, in
The next step in identifying a tentatively accepted label 238b for this time iteration is illustrated in
The step of identifying a tentatively accepted label 238b is based on the calculated cumulative candidate label scores 224b. As shown in
Referring again to
Similarly, the process at block 116 describes the example step of repeating the generating process iteratively, by distinct place identifier 35, to produce a subsequent set of tentatively accepted labels 372 (e.g., for a subsequent distinct place identifier 32, et seq., through and including a final distinct place identifier 39); in other words, for all the distinct place identifiers 35 in the subset 204. In some implementations, the subsequent set 372 includes all the tentatively accepted labels associated with each and every distinct place identifier 35 in the subset 204.
Each iteration through all the attributes and places, as described at block 114 and block 116, generates a superset of tentatively accepted labels 381 comprising the first set 371 and the subsequent set 372. In some implementations, the superset 381 for each successive iteration is stored by place-attribute pair 340, as illustrated in
Block 118 in
As shown in
According to the model 10 described herein, in some implementations, the accepted label values in the successive supersets 381, 382 tend to converge and become equivalent, satisfying the label condition 500. In special cases, which should be unusual, the accepted label values in the successive supersets 381, 382 do not converge; instead, one or more of the accepted label values alternates indefinitely, between iterations (e.g., 8, 7, 8, 7, 8, 7, . . . ). For this atypical edge case, the process of determining whether the label condition 500 is satisfied includes applying a convergence threshold. Instead of required precise equivalence, the label condition 500 would be satisfied if the differences between the accepted label values in the successive supersets 381, 382 are lower than the convergence threshold (e.g., fewer than 0.1% of the accepted label values are different in the successive supersets 381, 382). In this aspect, the convergence threshold allows the label condition 500 to be satisfied for such atypical edge cases.
When the label condition 500 is satisfied, block 119 in
When the label condition 500 is not satisfied, block 120 in
The process of updating the global user credibility score 218 in some implementations includes calculating the sum of all the evaluations 410 (e.g., one for correct labels, zero for incorrect) associated with each user identifier 212 and dividing that sum by the total number of user-submitted label 214 submitted by that user identifier 212. The sum in some implementations includes the evaluations 410 associated with all the place attributes, by submission timestamp, for all the distinct place identifiers 35 in the subset 204. In this aspect, the sum of the evaluations 410 represents a user credibility related to all of the user-submitted labels 214 in the subset 204.
Block 122 in
The flow chart 100 listing the steps in an example method, shown in
As described herein, the decay factor 220 (d) is calculated using an exponential function of the form ex—also written as exp(x)—where the exponent, x, equals the relative age (A) of each timestamp 216 divided by a parameter (Tau), according to this equation:
In Table 1, the relative age (A) is expressed as “M(V) minus m” or the difference between the submission time 216 (M) for the user-submitted label 214 (V) minus the reference timestamp 234 (m).
For place attributes that are expected to remain relatively static over time (e.g., business name, address, business type, telephone number), the process in some implementations does not include calculating a decay factor 220. In this example implementation, when a place attribute 20 is identified as static, each tentatively accepted label 238 (L) is generated without regard to a delay factor 220 (d). In Table 1, above, the process “FOR (a in A)” (i.e., loop over all place attributes (a)), in some implementations includes looping over the static attributes first; then looping over the other, non-static or dynamic attributes. In this aspect, the iterative process, by timestamp, is applied to both the static and non-static attributes.
The equation below from Table 1 expresses in mathematic form the process of selecting a tentatively accepted label 238 (L) for each distinct place identifier 35 (p), each place attribute 20 (a), and each submission timestamp 216 (m), where the superscript indicates iteration (t).
The variable “w” stands for the global user credibility score 218. Referring again to
The final equation from Table 1 expresses the process of updating the global user credibility score 218 (w) by calculating the sum of all the user-submitted labels 214 that matched the tentatively accepted label 238 (L), and then dividing that sum by the total number (N) of labels 214 submitted by that user identifier 212.
The double equal sign is a comparison operator between the summation of labels (L) and the evaluations 410 (V); returning one where L and V are equal and zero otherwise.
The machine 600 may include processors 602, memory 604, and input/output (I/O) components 642, which may be configured to communicate with each other via a bus 644. In an example, the processors 602 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 606 and a processor 610 that execute the instructions 608. The term “processor” is intended to include multi-core processors that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. Although multiple processors 602 are shown, the machine 600 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof.
The memory 604 includes a main memory 612, a static memory 614, and a storage unit 616, both accessible to the processors 602 via the bus 644. The main memory 604, the static memory 614, and storage unit 616 store the instructions 608 embodying any one or more of the methodologies or functions described herein. The instructions 608 may also reside, completely or partially, within the main memory 612, within the static memory 614, within machine-readable medium 618 (e.g., a non-transitory machine-readable storage medium) within the storage unit 616, within at least one of the processors 602 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 600.
Furthermore, the machine-readable medium 618 is non-transitory (in other words, not having any transitory signals) in that it does not embody a propagating signal. However, labeling the machine-readable medium 618 “non-transitory” should not be construed to mean that the medium is incapable of movement; the medium should be considered as being transportable from one physical location to another. Additionally, since the machine-readable medium 618 is tangible, the medium may be a machine-readable device.
The I/O components 642 may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components 642 that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones may include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 642 may include many other components that are not shown. In various examples, the I/O components 642 may include output components 628 and input components 630. The output components 628 may include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor, a resistance feedback mechanism), other signal generators, and so forth. The input components 630 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), pointing-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or another pointing instrument), tactile input components (e.g., a physical button, a touch screen that provides location, force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.
In further examples, the I/O components 642 may include biometric components 632, motion components 634, environmental components 636, or position components 638, among a wide array of other components. For example, the biometric components 632 include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram-based identification), and the like. The motion components 634 include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 636 include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometers that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 638 include location sensor components (e.g., a GPS receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.
Communication may be implemented using a wide variety of technologies. The I/O components 642 further include communication components 640 operable to couple the machine 600 to a network 620 or devices 622 via a coupling 624 and a coupling 626, respectively. For example, the communication components 640 may include a network interface component or another suitable device to interface with the network 620. In further examples, the communication components 640 may include wired communication components, wireless communication components, cellular communication components, Near-field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), WiFi® components, and other communication components to provide communication via other modalities. The devices 922 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a USB).
Moreover, the communication components 640 may detect identifiers or include components operable to detect identifiers. For example, the communication components 640 may include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar code, and other optical codes), or acoustic detection components (e.g., microphones to identify tagged audio signals). In addition, a variety of information may be derived via the communication components 640, such as location via Internet Protocol (IP) geolocation, location via Wi-Fi® signal triangulation, location via detecting an NFC beacon signal that may indicate a particular location, and so forth.
The various memories (e.g., memory 604, main memory 612, static memory 614, memory of the processors 602), storage unit 616 may store one or more sets of instructions and data structures (e.g., software) embodying or used by any one or more of the methodologies or functions described herein. These instructions (e.g., the instructions 608), when executed by processors 602, cause various operations to implement the disclosed examples.
The instructions 608 may be transmitted or received over the network 620, using a transmission medium, via a network interface device (e.g., a network interface component included in the communication components 640) and using any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions 608 may be transmitted or received using a transmission medium via the coupling 626 (e.g., a peer-to-peer coupling) to the devices 622.
The operating system 712 manages hardware resources and provides common services. The operating system 712 includes, for example, a kernel 714, services 716, and drivers 722. The kernel 714 acts as an abstraction layer between the hardware and the other software layers. For example, the kernel 714 provides memory management, processor management (e.g., scheduling), component management, networking, and security settings, among other functionality. The services 716 can provide other common services for the other software layers. The drivers 722 are responsible for controlling or interfacing with the underlying hardware. For instance, the drivers 722 can include display drivers, camera drivers, Bluetooth® or Bluetooth® Low Energy (BLE) drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, audio drivers, power management drivers, and so forth.
The libraries 710 provide a low-level common infrastructure used by the applications 706. The libraries 710 can include system libraries 718 (e.g., C standard library) that provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries 710 can include API libraries 724 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in a graphic content on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., a WebKit® engine to provide web browsing functionality), and the like. The libraries 710 can also include a wide variety of other libraries 728 to provide many other APIs to the applications 706.
The frameworks 708 provide a high-level common infrastructure that is used by the applications 706. For example, the frameworks 708 provide various graphical user interface (GUI) functions, high-level resource management, and high-level location services. The frameworks 708 can provide a broad spectrum of other APIs that can be used by the applications 706, some of which may be specific to a particular operating system or platform.
In an example, the applications 706 may include a home application 736, a contacts application 730, a browser application 732, a book reader application 734, a location application 742, a media application 744, a messaging application 746, a game application 748, and a broad assortment of other applications such as a third-party application 740. The third-party applications 740 are programs that execute functions defined within the programs.
In a specific example, a third-party application 740 (e.g., an application developed using the Google Android or Apple iOS software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as Google Android, Apple iOS (for iPhone or iPad devices), Windows Mobile, Amazon Fire OS, RIM BlackBerry OS, or another mobile operating system. In this example, the third-party application 740 can invoke the API calls 750 provided by the operating system 712 to facilitate functionality described herein.
Various programming languages can be employed to create one or more of the applications 706, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, C++, or R) or procedural programming languages (e.g., C or assembly language). For example, R is a programming language that is particularly well suited for statistical computing, data analysis, and graphics.
Any of the functionality described herein can be embodied in one or more computer software applications or sets of programming instructions. According to some examples, “function,” “functions,” “application,” “applications,” “instruction,” “instructions,” or “programming” are program(s) that execute functions defined in the programs. Various programming languages can be employed to develop one or more of the applications, structured in a variety of manners, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, a third-party application (e.g., an application developed using the ANDROID™ or IOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may include mobile software running on a mobile operating system such as IOS™, ANDROID™, WINDOWS® Phone, or another mobile operating system. In this example, the third-party application can invoke API calls provided by the operating system to facilitate functionality described herein.
Hence, a machine-readable medium may take many forms of tangible storage medium. Non-volatile storage media include, for example, optical or magnetic disks, such as any of the storage devices in any computer devices or the like, such as may be used to implement the client device, media gateway, transcoder, etc. shown in the drawings. Volatile storage media include dynamic memory, such as main memory of such a computer platform. Tangible transmission media include coaxial cables; copper wire and fiber optics, including the wires that comprise a bus within a computer system. Carrier-wave transmission media may take the form of electric or electromagnetic signals, or acoustic or light waves such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media therefore include for example: a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD or DVD-ROM, any other optical medium, punch cards paper tape, any other physical storage medium with patterns of holes, a RAM, a PROM and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave transporting data or instructions, cables or links transporting such a carrier wave, or any other medium from which a computer may read programming code or data. Many of these forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to a processor for execution.
Except as stated immediately above, nothing that has been stated or illustrated is intended or should be interpreted to cause a dedication of any component, step, feature, object, benefit, advantage, or equivalent to the public, regardless of whether it is or is not recited in the claims.
It will be understood that the terms and expressions used herein have the ordinary meaning as is accorded to such terms and expressions with respect to their corresponding respective areas of inquiry and study except where specific meanings have otherwise been set forth herein. Relational terms such as first and second and the like may be used solely to distinguish one entity or action from another without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms “comprises,” “comprising,” “includes,” “including,” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises or includes a list of elements or steps does not include only those elements or steps but may include other elements or steps not expressly listed or inherent to such process, method, article, or apparatus. An element preceded by “a” or “an” does not, without further constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.
Unless otherwise stated, any and all measurements, values, ratings, positions, magnitudes, sizes, and other specifications that are set forth in this specification, including in the claims that follow, are approximate, not exact. Such amounts are intended to have a reasonable range that is consistent with the functions to which they relate and with what is customary in the art to which they pertain. For example, unless expressly stated otherwise, a parameter value or the like may vary by as much as plus or minus ten percent from the stated amount or range.
In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in various examples for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed examples require more features than are expressly recited in each claim. Rather, as the following claims reflect, the subject matter to be protected lies in less than all features of any single disclosed example. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.
While the foregoing has described what are considered to be the best mode and other examples, it is understood that various modifications may be made therein and that the subject matter disclosed herein may be implemented in various forms and examples, and that they may be applied in numerous applications, only some of which have been described herein. It is intended by the following claims to claim any and all modifications and variations that fall within the true scope of the present concepts.