This disclosure relates generally to testing and incorporating rules into search methods that improve search results.
Ecommerce web sites and applications provide buyers with the means for purchasing a variety of goods. However, searches of these goods may often result in ambiguity in search results. Buyers may attempt to minimize their input or may search for a For Sale Object (FSO) listing in a way that ambiguously conveys buyer intent. Different FSOs may have characteristics or names that match to similar search terms. Search results may be replete with useless listings of FSOs or may even not contain listings of FSOs that a buyer is seeking, despite the presence of those listings in the ecommerce site.
Provided herein are system, apparatus, article of manufacture, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for improving search engine results in ecommerce sites by testing rules that reduce ambiguity in search inputs, identifying which rules are effective, and implementing those rules in the ecommerce site.
Some embodiments operate by: providing a control group of buyers with baseline search results based on a search input and current rules; providing test groups of buyers with filtered search results based on the search input, current rules, and a candidate rule corresponding to a specific test group; receiving control responses from the control group of buyers and test responses from the test groups of buyers; and, for each test group:
determining a metric based on the control response and the test response for the test group; in response to the metric being statistically significant and less than a threshold, discarding the candidate rule corresponding to the test group; and in response to the metric being statistically significant and greater than the threshold, adding the candidate rule corresponding to the test group to the current rules.
Some embodiments operate by: receiving a search input from buyers, assigning each buyer to a group, wherein the groups comprise a control group and groups, each test group corresponding to a candidate rule; identifying search results from FSO listings based on the search input; filtering the search results based on current rules to identify first filtered search results; for each test group, filtering the search results based on the current rules and a corresponding candidate rule that corresponds to the test group to identify filtered search results corresponding to the test group; providing the first filtered search results of the control group; for each test group, providing the filtered search results corresponding to the test group; receiving response indicators from the buyers; determining a performance metric for each test group based on the response indicators; determining a statistical significances for each test group based on the performance metrics; for each test group, in response to the statistical significance for the test group being greater than a threshold in response to the performance metric for the test group being less than a metric threshold, discarding the candidate rule corresponding to the test group from the candidate rules; and in response to the performance metric for the test group being greater than the metric threshold, adding the candidate rule corresponding to the test group to the current rules.
Further embodiments, features, and advantages of the present disclosure, as well as the structure and operation of the various embodiments of the present disclosure, are described in detail below with reference to the accompanying drawings.
The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present disclosure and, together with the description, further serve to explain the principles of the disclosure and to enable a person skilled in the art(s) to make and use the embodiments.
In the drawings, like reference numbers generally indicate identical or similar elements. Additionally, generally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.
Provided herein are system, apparatus, article of manufacture, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for improving search engine results in ecommerce sites by testing rules that reduce ambiguity in search inputs, identifying which rules are effective, and implementing those rules in the ecommerce site.
The ecommerce site 102 has a listing database 104 that contains listings of FSOs that buyers 140 can search using search engine 110. Once a buyer 140 has found a desired listing, the buyer 140 can choose to purchase the FSO in the desired listing through sales module 107.
Ecommerce site 102 has a machine learning module 120 that can monitor the interactions of buyers 140 with ecommerce site 102 and modify search engine 110, according to some embodiments. Ecommerce site 102 also contains other databases 106 for storing data and other modules 109 for performing functions related to the ecommerce site 102.
Search engine 110 can receive search inputs from buyers 140 from input module 111, and search the listing database 104 for listings that match the search inputs using results module 113. The results module 113 identifies search results and may provide them to output module 119, according to some embodiments. Output module 119 may provide the search results to buyers 140.
In some embodiments, search engine 110 has a rules database 115, which contains rules for filtering the search results. A rule may be a set of conditions or parameters for adding or removing listings from the search results. In some embodiments, the rule may be configured to resolve ambiguity in the search inputs to filter undesired results from the search results. In some embodiments, the rule may be configured to boost specific results so that they appear higher or earlier in the overall results. The results may be boosted based on an attribute that is related to the result. In some embodiments, the rule may rank the results based on the item having or not having one or more attributes.
Results filter 117 and rules database 115 may operate together to filter search results based on the search inputs and rules. For example, results filter 117 may apply the rules from the rules database 115 to filter the search results and remove results that do not satisfy a rule. As another example, results filter 117 may provide the rules from rules database 115 to results module 113 to cause results module 113 to only identify search results from listings that satisfy the provided rules. As yet another example, results filter 117 may apply the rules to the listings in the listing database 104 to identify filtered listings, which results module 113 may then search to identify the search results. As yet another example, results filter 117 may apply rules from rules database 115 to emphasize or boost a specific result so it appears first in the search results.
For example, a search input of “IPHONE” may match to listings of both IPHONES and IPHONE cases. This is an ambiguity introduced by the search input, as a buyer 140 might input “IPHONE” to search for either object. This ambiguity could be resolved by the buyer 140 inputting additional information, such as adding the word “case” to the search input. An example rule may resolve this ambiguity by differentiating between listings for IPHONES and accessories, such as cases. The rule may do this by differentiating between categories that distinguish between IPHONES and IPHONE accessories. The rule may be that, for an input of “IPHONE,” IPHONE accessories should be excluded. In other words, the rule may be that, for an input of “IPHONE,” the category of accessories should excluded.
As another example, a rule could boost or emphasize “IPHONE” over “IPHONE CASE” as results. The search results would then place any “IPHONE” search results ahead of “IPHONE CASE” search result.
In some embodiments, machine learning module 120 dynamically tests candidate rules to identify new rules for integration into the rules database 115. Candidate rules may resolve potential or known ambiguities in search inputs. Group control 129 may control which buyers 140 are used to dynamically test the candidate rules by providing candidate rules from the rules module 125 to the rules database 115 or rules results filter 117. Results filter 117 may use the candidate rules to filter search results, including in combination with existing rules in the rules database 115. Group control 129 may configure output module 119 to provide the filtered search results to specified groups of buyers 140.
Ecommerce site 102 may monitor the responses of buyers 140 to search results provided by output module 119. Response database 121 may store information about those responses, statistics module 123 may perform statistical analysis on those responses, and metrics module 127 may calculate metrics of the responses. Machine learning module 120 may determine if a candidate rule is effective in resolving an ambiguity based on the statistical analysis and metrics. If a candidate rule is effective, machine learning module 120 may add that rule to the rules database 115 to be used in filtering of search results. If the candidate rule is not effective, machine learning module 120 may discard that rule.
Machine learning module 120 may generate candidate rules using rules module 125 based on identified or perceived ambiguities in search inputs or results. The candidate rules may be generated for the purpose of attempting to improve search results identified or generated by search engine 110. Machine learning module 120 may also receive candidate rules from rules input module 150 through the internet 130, or through other sources.
In some embodiments, rules input module 150 can be incorporated into ecommerce site 102. For example, rules input module 150 may be incorporated in machine learning module 120 or other modules 109.
In some embodiments, machine learning module 120 can conduct dynamic testing of candidate rules on subsets of buyers 140. Group control 129 may divide buyers 140 into groups, such as buyers 140A, buyers 140B, and so on, to buyers 140Z. Machine learning module 120 may use a group of buyers 140, such as buyers 140A, as a control group that only receives search results without filtering or with filtering based on current rules in rules database 115, but not candidate rules. Machine learning module 120 may use other groups of buyers 140, such as buyers 140B or 140Z, as test groups that receive search results filtered by candidate rules or current rules in combination with candidate rules. Each test group may be associated with a specific candidate rule.
Machine learning module 120 may use a control group and test groups of buyers 140 to provide comparison of buyer responses to search results from both a baseline search results and search results filtered using candidate rules. Statistical analysis and metrics may be performed on the buyer responses, as discussed above, and as further discussed below, based on these comparisons.
Machine learning module 120 may perform unsupervised learning, whereby machine learning module 120 gathers data and processes such data as it is received. Through this process, machine learning module 120 may advantageously identify and implement rules for improving search results independent of human input. The rules that machine learning module 120 identifies may not be obvious to human observers, but machine learning module 120 may identify those rules as effective by employing methods, such as embodiments of method 200 described below, for evaluating rules to determine which rules improve search results for buyers.
In some embodiments, ecommerce site 102 provides communication between modules, databases, and engines contain in the ecommerce site 102. Ecommerce site 102 may receive inputs through internet 130 and provide the inputs to the modules, databases, and engines described above. Ecommerce site 102 may send data through internet 130 to buyers 140.
In 210, input module 111 receives search inputs from buyers 140. For example, the search inputs may be received by the ecommerce site 102 and provided to input module 111 of search engine 110.
In some embodiments, the search inputs are strings of characters that describe an FSO that buyers 140 are searching for in listings of the listing database 104. The search inputs may be entered into a user interface on a web site or application running on ecommerce site 102. The search inputs may include search constraints, such as Boolean operators, search category selections, or other constraints.
In some embodiments, the search inputs received from each a given buyer 140 for a given FSO are the same. For example, the search inputs received from a given buyer for an APPLE IPHONE is the same string of characters whenever that buyer searches for that particular FSO.
In 215, group control 129 assigns each buyer 140 to a control group or a test group. A test group corresponds to a candidate rule for improving search results. There may be more than one test group, and each test group corresponds to a different candidate rule. For example, buyers 140A may be a control group, while buyers 140B and so on to buyers 140Z are tests groups. The control group and tests groups may or may not contain the same number of buyers 140.
In some embodiments, a buyer 140 may provide the same search input more than once. For example, a buyer 140 may repeat a search at a later time. In this case, the buyer 140 would have already been assigned to a group by group control 129 in 214. When group control 129 attempts to assign a buyer 140 to a group, if the buyer 140 already belongs to a group, group control 129 does not assign the buyer 140 to a new group, but instead assigns the buyer 140 to the previously assigned group.
In 220, results module 113 identifies search results for the buyers 140 based on the search inputs. Results module 113 may receive the search inputs from input module 111 and use a searching algorithm to search listing database 104, or subsets thereof, for listings that match or correspond to the search inputs and identify them as search results. Ecommerce site 102 may store these search results in other databases 106 for a given search input. Search results may be identified by accessing stored search results that match a search input.
In 230, results filter 117 filters search results based on the group to which the buyers 140 belong to identify filtered search results. Results filter 117 may access or use both the current rules from rules database 115 and candidate rules from rules module 125. For buyers 140 in the control group, results filter 117 filters may use the current rules. For buyers 140 in a test group, results filter 117 filters may use the current rules and the candidate rule corresponding to the test group of the buyer 140. Step 230 may identify different filtered search results for the control group and each test group. Ecommerce site 102 may store each of the filtered search results in other databases 106. The filtered search results may be identified by accessing the stored filtered search results for the same inputs and rules.
Rules in the current rules and candidate rules may filter based on a variety of parameters contained in both the search inputs and the listings. For example, for a given search input, a listing parameter may be preferred, and only listings containing that parameter may be included. As another example, for a given search input, a listing parameter may be boosted and will be listed with a higher score or preference than other listings. As a non-limiting example, a rule may be that a search of “IPHONE” corresponds to the category “smart phone” and the rule will filter out listings that do not contain this category while identifying listings that do. As another non-limiting example, a rule may be that a search of “IPHONE” corresponds to the category “smart phone” and the rule will boost listings that do contain this category above other listings that do not.
In some embodiments, steps 220 and 230 may be performed in different orders than that shown in the example of
In 240, output module 119 provides the filtered search results to buyers 140 based on the group to which the buyers 140 belong. A buyer 140 in the control group receives the filtered search results based on the current rules. A buyer 140 in a test group receives the filtered search results based on the current rules and the candidate rule corresponding to the test group. The filtered search results may be provided to buyers 140 through internet 130.
In step 250, ecommerce site 102 receives responses from buyers 140. Ecommerce site 102 may store the responses in response database 121 or in other databases 106 and provide response database 121 with an indicator of what response was received or details of the response, such as a price paid for a purchased FSO. Machine learning module 120 may retrieve the response indicator from the other databases and store it in response database 121.
In some embodiments, a response is an action taken by a buyer 140 based on the filtered search results provided. Example responses include, but are not limited to:
In some embodiments, ecommerce site 102 receives more than one response from a single buyer 140. For example, a buyer 140 may view several listings and purchase an FSO from one of those listings, which may generate multiple responses. Step 250 may receive multiple responses over time or at the same time.
In 260, metrics module 127 calculates metrics of the responses. Metrics module 127 may calculate metrics for the control group and each test group, or a subset of the groups. Metrics module 127 may calculate a single metric or several different metrics. Metrics module 127 may combine metrics, including using a weighted combination. The weighting in a weighted combination may be set based on a relative ranking of the different metrics in providing information about the candidate rule's effectiveness in reducing the ambiguity between the search results and the filtered search results.
A metric of the responses may be Gross Merchandise Volume (GMV). Metrics module 127 may determine or calculate GMV for the control group as a sum-total of the cost of items sold to buyers 140 in the control group in response to the search results. The GMV may be calculated for the test group as a sum-total of the cost items sold to buyers in response to the filtered search results.
A metric of the responses may be a view rate. In the control group, metrics module 127 may determine or calculate view rate as the number of buyers 140 who receive an FSO listing in the filtered search results and select to view the FSO listing. In the test group, metrics module 127 may determine or calculate view rate as the number of buyers 140 who receive an FSO listing in the filtered search results and select to view the FSO listing.
A metric of the responses may be a sell through rate. For the control group, metrics module 127 may determine or calculate sell through rate as a number of a specific type of FSOs purchased by buyers 140 in the control group divided by the number of FSO listings containing the specific type of FSOs in the filtered search results. For the test group, metrics module 127 may calculate sell through rate as a number of a specific type of FSOs purchased by buyers 140 in the test group divided by the number of FSO listings containing the specific type of FSOs in the filtered search results.
A metric of the responses may be a click-through rate (CTR) at rate k. Metrics module 127 may determine or calculate CTR at rate k as the percentage of people who clicked on an item in the top k results. For example, for CTR at rate 36, 100 people look at the results and 32 people click on a result in the top 36 results, then CTR at rate 36 is 32%. In some embodiments, the rate k is 3, 6, 12, 18, 36, or other values.
CTR at rate k may identify search results that are more useful or desirable to a user. In some embodiments, CTR at rate k is used to identify results to boost or rank more highly as part of the filtering performed other steps of method 300. In some embodiments, the results identified by CTR at rate k are used to identify common item attributes that have high CTR at rate k (such as over 50%, over 75%, or some other threshold). Items with these attributes may then be boosted or ranked more highly. In some embodiments, CTR at rate k is used to create a rule for boosting or ranking items or item attributes.
As an example of a combined metric, a metric may be a vote of GMV, view rate, and sell through. If two or more of the metrics are higher for the test group than the control group, the metric may be set to a value that represents that the candidate rule is effective. If two or more of the metrics are higher for the control group than the test group, the metric may be set to a value that represents that the candidate rule is ineffective. This combination may be weighted, as discussed above, such that some of the votes count for more than the others.
In 270, statistics module 123 determines a statistical significance of the metrics. Each metric indicates that a candidate rule is or is not improving results, based on a comparison to metric threshold. Metrics module 127 may perform a comparison of the metrics to the metric threshold to determine what the metric indicates. Metrics module 127 may provide this indication to the statistics module 123. Based on the indication, statistics module 123 may generate a hypothesis that the candidate rule is performing as indicated.
In some embodiments, statistics module 123 may determine the statistical significance by performing comparison of the metric to a threshold. For example, one or more values may be calculated based on the metric and each may be compared to a respective threshold. The metric is statistically significant when each value is greater than its respective threshold.
As an example, the value determined may be a p-value; that is, statistics module 123 may determine the statistical significance by performing a p-test on the metrics. Statistics module 123 may perform a p-test on the hypothesis that the candidate rule is performing as indicated, including determining a p-value for the hypothesis. As examples, the hypothesis for the p-test may compare results of a test group to the control group, to the control group and other test groups in combination, or to a different test group.
As another example, the gross sales of unfiltered search results may have a value, while the GMV of the filtered results may be some percentage higher. A comparison of the two yields a percentage increase, which indicates the statistical significance of the GMV when the percentage increase is higher than a threshold, such as 30% or 40%. As a specific, non-limiting example, when the GMV is $2000, and the same items sold only $1000 without the filtering, the raw value has increased by 100%. This increase is higher than a threshold of 30%, and is therefore statistically significant.
In some embodiments, the threshold takes into account both the percentage increase and the overall value. For example, if the GMV is $13 and the unfiltered sales value is $10, there is a 30% increase, but the relative increase in actual dollars is small. The threshold may be the percentage increase as well as a dollar increase of greater than some amount, such as $50, $100, $500, $1000, or some other amount.
In 275, statistics module 123 checks if the statistical significance of a metric is greater than a threshold. If the value or values determined in step 270 are greater than their respective thresholds, than the metric is statistically significant. Based on this result, method 200 returns to step 210 to receive search inputs from other buyers 140.
In some embodiments, the threshold may be set or changed based on the number of remaining candidate rules. For example, the threshold may increase as the number of candidate rules increases.
In 280, metrics module 127 checks whether the metric is greater than the metric threshold. The metric threshold may be set, as discussed above, to identify whether the candidate rule is improving search results in the test group over the control group of rules, candidate rules in other test groups, or both. The metric, the metric threshold, or both may be scaled or normalized for comparison with each other.
In some embodiments, metrics module 127 checks whether the metric is greater than the metric threshold to determine the hypothesis to be used in step 270. Metrics module 127 may store the result internally, or in other databases 106. When performing step 280, instead of repeating the check, metrics module 127 may access or retrieve the result to check it.
If the metric is less than the metric threshold, the candidate rule is not effective and method 200 proceeds to step 285. In 285, machine learning module 120 discards the candidate rule. Machine learning module 120 may also discard response data stored in the response database for the candidate rule and corresponding test group. Group control 129 may remove the test group corresponding to the candidate rule. Future metric and statistical calculations or determinations performed by machine learning module 120 may no longer include the removed test group. Group control 129 may respond to future searches by buyers 140 from the removed test group by assigning those buyers 140 to other test groups or the control group.
If the metric is greater than the metric threshold, then the candidate rule is effective, and method 200 proceeds to step 290.
In some embodiments, the metric threshold may be set or change based on the number of candidate rules remaining. For example, the metric threshold may increase as the number of candidate rules decreases.
In 290, machine learning module 120 checks whether evaluation of the candidate rules is complete. For example, the evaluation of candidate rules may be complete when the number of remaining candidate rules is below a rule count threshold, when the p-value for all remaining rules is above a p-value threshold, or when all p-values for remaining candidate rules indicate that the hypothesis for that candidate rule is statistically significant.
In some embodiments, machine learning module 120 causes statistics module 123 to update p-tests based on the removal of candidate rules by step 285 to verify if evaluation of candidate rules is complete.
If the evaluation is not complete, method 200 returns to step 210 to receive more search inputs.
If the evaluation is complete, method 200 proceeds to step 295. In 295, machine learning module 120 updates the rules database 115 by adding candidate rules to the current rules. In some embodiments, machine learning module 120 adds the remaining candidate rules in the rules module 125 to the current rules. The added candidate rules may be limited to candidate rules with statistically significant metrics indicating that the candidate rule is effective to the current rules in rules module 125.
In some embodiments, at step 295, machine learning module 120 updates the metrics for the remaining rules. This updating may occur by performing step 260. Machine learning module 120 may check the updated metrics against the metric threshold. This checking may occur by performing step 280. Machine learning module 120 may remove any candidate rules with updated metrics less than the metric threshold and add remaining candidate rules to the current rules in rules module 125.
Those skilled in the art will understand that method 200 may receive different search inputs or responses from different buyers 140 at different times. Ecommerce site 102, search engine 110, and machine learning module 120 may perform various steps of method 200 for different buyers 140, search inputs, or responses at the same or different times. Method 200 may actively perform various steps simultaneously, in serial, or at different times, as needed to address different inputs or processing of the method 200. Steps in method 200, such as discarding a candidate rule, may impact other steps in method 200, as described above, and this may result in updates or changes to how some steps are performed between iterations.
Method 200 may be performed simultaneously and independently for different search inputs. For example, ecommerce site 102 may receive different search inputs from buyers 140 and perform method 200 to improve search results for each different search input. Buyers 140 may be assigned to different control and test groups for each search input that they enter.
Method 200 may be performed for a search input for a given set of candidate rules until all the candidate rules are discarded or until some of the candidate rules are added to the current rules. Discarded candidate rules may be tested again at a later time as part of a different set of candidate rules. The different set of candidate rules may include discarded candidate rules from previous iterations. Those skilled in the art will understand that a candidate rule may change in efficacy over time from being ineffective to being effective, depending on changes in buyer 140 habits or market forces.
Example Computer System
Various embodiments may be implemented, for example, using one or more computer systems, such as computer system 300 shown in
Computer system 300 may include one or more processors (also called central processing units, or CPUs), such as a processor 304. Processor 304 may be connected to a bus or communication infrastructure 306.
Computer system 300 may also include user input/output device(s) 303, such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructure 306 through user input/output interface(s) 302.
One or more of processors 304 may be a graphics processing unit (GPU). In an embodiment, a GPU may be a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, vector processing, array processing, etc., as well as cryptography (including brute-force cracking), generating cryptographic hashes or hash sequences, solving partial hash-inversion problems, and/or producing results of other proof-of-work computations for some blockchain-based applications, for example. With capabilities of general-purpose computing on graphics processing units (GPGPU), the GPU may be particularly useful in at least the image recognition and machine learning aspects described herein.
Additionally, one or more of processors 304 may include a coprocessor or other implementation of logic for accelerating cryptographic calculations or other specialized mathematical functions, including hardware-accelerated cryptographic coprocessors. Such accelerated processors may further include instruction set(s) for acceleration using coprocessors and/or other logic to facilitate such acceleration.
Computer system 300 may also include a main or primary memory 308, such as random access memory (RAM). Main memory 308 may include one or more levels of cache. Main memory 308 may have stored therein control logic (i.e., computer software) and/or data.
Computer system 300 may also include one or more secondary storage devices or secondary memory 310. Secondary memory 310 may include, for example, a main storage drive 312 and/or a removable storage device or drive 314. Main storage drive 312 may be a hard disk drive or solid-state drive, for example. Removable storage drive 314 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.
Removable storage drive 314 may interact with a removable storage unit 318. Removable storage unit 318 may include a computer usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage unit 318 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Removable storage drive 314 may read from and/or write to removable storage unit 318.
Secondary memory 310 may include other means, devices, components, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system 300. Such means, devices, components, instrumentalities or other approaches may include, for example, a removable storage unit 322 and an interface 320. Examples of the removable storage unit 322 and the interface 320 may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface.
Computer system 300 may further include a communication or network interface 324. Communication interface 324 may enable computer system 300 to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number 328). For example, communication interface 324 may allow computer system 600 to communicate with external or remote devices 328 over communication path 326, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system 600 via communication path 326.
Computer system 300 may also be any of a personal digital assistant (PDA), desktop workstation, laptop or notebook computer, netbook, tablet, smart phone, smart watch or other wearable, appliance, part of the Internet of Things (IoT), and/or embedded system, to name a few non-limiting examples, or any combination thereof.
It should be appreciated that the framework described herein may be implemented as a method, process, apparatus, system, or article of manufacture such as a non-transitory computer-readable medium or device. For illustration purposes, the present framework may be described in the context of distributed ledgers being publicly available, or at least available to untrusted third parties. One example as a modern use case is with blockchain-based systems. It should be appreciated, however, that the present framework may also be applied in other settings where sensitive or confidential information may need to pass by or through hands of untrusted third parties, and that this technology is in no way limited to distributed ledgers or blockchain uses.
Computer system 300 may be a client or server, accessing or hosting any applications and/or data through any delivery paradigm, including but not limited to remote or distributed cloud computing solutions; local or on-premises software (e.g., “on-premise” cloud-based solutions); “as a service” models (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), managed software as a service (MSaaS), platform as a service (PaaS), desktop as a service (DaaS), framework as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), database as a service (DBaaS), etc.); and/or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms.
Any applicable data structures, file formats, and schemas may be derived from standards including but not limited to JavaScript Object Notation (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representations alone or in combination. Alternatively, proprietary data structures, formats or schemas may be used, either exclusively or in combination with known or open standards.
Any pertinent data, files, and/or databases may be stored, retrieved, accessed, and/or transmitted in human-readable formats such as numeric, textual, graphic, or multimedia formats, further including various types of markup language, among other possible formats. Alternatively or in combination with the above formats, the data, files, and/or databases may be stored, retrieved, accessed, and/or transmitted in binary, encoded, compressed, and/or encrypted formats, or any other machine-readable formats.
Interfacing or interconnection among various systems and layers may employ any number of mechanisms, such as any number of protocols, programmatic frameworks, floorplans, or application programming interfaces (API), including but not limited to Document Object Model (DOM), Discovery Service (DS), NSUserDefaults, Web Services Description Language (WSDL), Message Exchange Pattern (MEP), Web Distributed Data Exchange (WDDX), Web Hypertext Application Technology Working Group (WHATWG) HTML5 Web Messaging, Representational State Transfer (REST or RESTful web services), Extensible User Interface Protocol (XUP), Simple Object Access Protocol (SOAP), XML Schema Definition (XSD), XML Remote Procedure Call (XML-RPC), or any other mechanisms, open or proprietary, that may achieve similar functionality and results.
Such interfacing or interconnection may also make use of uniform resource identifiers (URI), which may further include uniform resource locators (URL) or uniform resource names (URN). Other forms of uniform and/or unique identifiers, locators, or names may be used, either exclusively or in combination with forms such as those set forth above.
Any of the above protocols or APIs may interface with or be implemented in any programming language, procedural, functional, or object-oriented, and may be compiled or interpreted. Non-limiting examples include C, C++, C#, Objective-C, Java, Scala, Clojure, Elixir, Swift, Go, Perl, PHP, Python, Ruby, JavaScript, WebAssembly, or virtually any other language, with any other libraries or schemas, in any kind of framework, runtime environment, virtual machine, interpreter, stack, engine, or similar mechanism, including but not limited to Node.js, V8, Knockout, jQuery, Dojo, Dijit, OpenUI5, AngularJS, Express.js, Backbone.js, Ember.js, DHTMLX, Vue, React, Electron, and so on, among many other non-limiting examples.
In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system 300, main memory 308, secondary memory 310, and removable storage units 318 and 322, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system 300), may cause such data processing devices to operate as described herein.
Based on the teachings contained in this disclosure, it will be apparent to persons skilled in the relevant art(s) how to make and use embodiments of this disclosure using data processing devices, computer systems and/or computer architectures other than that shown in
It is to be appreciated that the Detailed Description section, and not any other section, is intended to be used to interpret the claims. Other sections can set forth one or more but not all exemplary embodiments as contemplated by the inventor(s), and thus, are not intended to limit this disclosure or the appended claims in any way.
While this disclosure describes exemplary embodiments for exemplary fields and applications, it should be understood that the disclosure is not limited thereto. Other embodiments and modifications thereto are possible, and are within the scope and spirit of this disclosure. For example, and without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, and/or entities illustrated in the figures and/or described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein.
Embodiments have been described herein with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined as long as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative embodiments can perform functional blocks, steps, operations, methods, etc. using orderings different from those described herein.
References herein to “one embodiment,” “an embodiment,” “an example embodiment,” “some embodiments,” or similar phrases, indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment can not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of persons skilled in the relevant art(s) to incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein.
Additionally, some embodiments can be described using the expression “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments can be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
The breadth and scope of this disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents
Number | Date | Country | |
---|---|---|---|
63023298 | May 2020 | US |