The present invention relates to a system, method and data structure for allowing users to electronically post comments.
The invention has been developed specifically for use with social media platforms for mobile devices and will be described hereinafter with reference to that application. However, it will be appreciated that the invention is not limited to that particular field of use and is also applicable to social media platforms for non-mobile devices, whether those platforms are public or private, or both.
Any discussion of the prior art throughout the specification should in no way be considered as an admission that such prior art is widely known or forms part of common general knowledge in the field.
With the widespread use and popularity of social media platforms there have been considerable efforts made to enhance the functionality offered to users to comment upon content posted on those platforms. This includes functionality such as allowing user to “like” or “dislike” posted content with a single click of a corresponding icon that is published with the content. Such platforms can also offer users the ability to comment in more complex ways by posting in respect of the content one or more of text, images, icons (such as emoticons) or other such devices.
For public platforms the comments are typically posted partially or fully anonymously by the users, in that the only identification provided is a handle and/or an avatar adopted by the user posting the comment. For more straightforward comments, such as a thumbs-up or thumbs-down, the comments are, effectively, fully de-identified for users.
For social media platforms that are social networking platforms, the identities of the users posting content and comments are more likely to be known to each other. Accordingly, there are typically provided separate functionalities for allowing users to make attributed and unattributed comments in relation to each item of posted content.
As the number of users on a given platform grows the computing demands placed upon the server-side of the platform (as distinct from the client-side defined by the user devices) rapidly increases. While this is particularly exacerbated for those platforms accommodating multiple forms of comments, is also problematic for even relatively simple forms of comments such as the thumbs-up and thumbs-down style comments. The typical processing bottlenecks include: updating a database with the most recently made comments; and subsequently accessing that database to generate the most up-to-date data for the users. While this problem may be ameliorated temporarily through deploying more computing power on the server-side of the platform, a rapid rise in user numbers, coupled with the demand from the platforms for real-time updates and many additional complex functionalities, has resulted in an ongoing technical issue to address for such platforms.
Accordingly, there is a need for improved systems, methods and data structures for allowing users to electronically post comments.
It is an object of the preferred embodiments of the present invention to overcome or ameliorate at least one of the disadvantages of the prior art, or to provide a useful alternative.
According to a first aspect of the invention there is provided a system for allowing first users to electronically post with first user devices respective comments relating to posted content provided by a second user with a second user device, the system including:
In an embodiment the count engine updates the count field to be the count of the comments.
In an embodiment each comment has a comment type that is selected from a predetermined list of comment types and the count engine updates the count data to indicate the number of the comments of at least one of the comment types.
In an embodiment the count engine updates the count data to indicate the number of the comments of each comment type selected.
In an embodiment the count engine updates the count data to indicate the number of the comments of each comment type.
In an embodiment the system includes a comment engine that is responsive to the interface receiving a posted comment from one of the first users in respect of the posted content for:
According to a second aspect of the invention there is provided a method for allowing first users to electronically post respective comments relating to electronically posted content of a second user, the method including the steps of:
In an embodiment the method includes the step of the count engine updating the count field to be the count of the comments.
In an embodiment each comment has a comment type that is selected from a predetermined list of comment types and the method includes the step of the count engine updating the count data to indicate the number of the comments of at least one of the comment types.
In an embodiment the method includes the step of the count engine updating the count data to indicate the number of the comments of each comment type selected.
In an embodiment the method includes the step of the count engine updating the count data to indicate the number of the comments of each comment type.
In an embodiment the method includes the step of providing a comment engine that is responsive to the interface receiving a posted comment from one of the first users in respect of the content for:
According to a third aspect of the invention there is provided a data structure for allowing first users to provide respective comments relating to content provided by a second user, the data structure including:
In an embodiment the count data is derived from the number of the comments.
In an embodiment each comment has a comment type that is selected from a predetermined list of comment types and the count data is derived from the number of the comments of at least one of the comment types.
In an embodiment the count data is derived from the number of comments of all the comment types.
In an embodiment the comment type for a comment is selected by the respective first user.
In an embodiment the count data is indicative of up to a maximum of one comment each for the respective first users.
In an embodiment the count field is updated in response to one of the first users providing a respective comment.
According to a fourth aspect of the invention there is provided a system for allowing users to electronically post respective comments with user devices, wherein each comment relates to one of a plurality of items of posted content and the system includes:
In an embodiment the content data includes count data and the comment engine is responsive to the interface receiving a comment from one of the users in respect of one of the items for: determining a count of the comments made by the users for that item; and updating the count data to be indicative of the count.
In an embodiment:
In an embodiment the comment engine updates the count data to be indicative of a count of the comments of each comment type selected by the users in respect of the one of the items.
In an embodiment the count engine updates the count data to indicate a count of the comments of each comment type for the one of the items.
In an embodiment the comment engine is responsive to the interface receiving a new comment from one of the users in respect of one of the items of posted content for:
In an embodiment the comment engine is responsive to the comparison for selectively updating the count data.
According to a fifth aspect of the invention there is provided a method for allowing users to electronically post respective comments with user devices, wherein each comment relates to one of a plurality of items of posted content and the method includes the steps of:
According to sixth aspect of the invention there is provided a data structure for allowing users to electronically post respective comments with user devices, wherein each comment relates to one of a plurality of items of posted content and the data structure includes:
In an embodiment the content data for each item includes count data that is indicative of a count of the comments made by the users for that item.
Reference throughout this specification to “one embodiment”, “some embodiments” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment”, “in some embodiments” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment, but may. Furthermore, the particular features, structures or characteristics may be combined in any suitable manner, as would be apparent to one of ordinary skill in the art from this disclosure, in one or more embodiments.
As used herein, unless otherwise specified the use of the ordinal adjectives “first”, “second”, “third”, etc., to describe a common object, merely indicate that different instances of like objects are being referred to, and are not intended to imply that the objects so described must be in a given sequence, either temporally, spatially, in ranking, importance, or in any other manner.
Unless the context clearly requires otherwise, in the claims below and the description herein, any one of the terms “comprising”, “comprised of” or “which comprises” is an open term that means “including at least the elements/features that follow, but not excluding others”. Thus, the term “comprising”, when used in the claims, should not be interpreted as being limitative to the means or elements or steps listed thereafter. For example, the scope of the expression “a device comprising A and B” should not be limited to devices consisting only of elements A and B. Any one of the terms “including” or “which includes” or “that includes” as used herein is also an open term that also means “including at least the elements/features that follow the term, but not excluding others”. Thus, the term “including” is synonymous with and means “comprising” and can be used interchangeably.
As used herein, the term “exemplary” is in the sense of providing examples, as opposed to indicating quality. That is, an “exemplary embodiment” is an embodiment provided as an example, as opposed to necessarily being an embodiment of exemplary quality.
Preferred embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings in which:
Described herein are a system, method and data structure for allowing users to electronically post comments.
Social media platforms include social networking platforms, blogs, microblogs, video sharing platforms, internet forums, and the like. These internet or computer network enabled platforms allow for the sharing of digital content—being “posted content”—and typically also for users to provide comment on the content. In this context, it will be understood that a comment itself is able to be posted content upon which a further comment is able to be made. The digital content is able to include a wide variety or combination of elements and/or file types, including one or more of: text; one or more image files; one or more video files; hypertext of other links; and the like. The comments provided by users are also able to be selected from a wide array of options, including devices such as one or more of: an icon; a count; or any of the devices of the kind used in the posted content.
In the preferred embodiments of the invention the comments are exemplarily provided as “reactions” to content. These reactions are a subset of the broader term “comments” and are used in the embodiments described below to illustrate the operation of those embodiments and the advantageous functionalities that are able to be realised by the use of such reactions. However, in other embodiments, use is made of comments other than or in addition to the reactions that are described below.
Referring to
Although only three users 3 are explicitly illustrated, it will be appreciated that the platform supports many hundreds of thousands or millions of users.
Facility 2 is controlled by an operator (not shown) that maintains the required hardware and software to allow the platform to function. In this embodiment, the operator is also the owner of data 16, which is predominantly authored by users 3. That is, system 1 allows the users to post reactions 4 in response to content earlier generated by other users or by the operator. System 1 also is able to treat a given reaction as content such that additional reactions are able to be subsequently posted in respect of the given reaction.
In other embodiments, the operator instead, or additionally, employs or otherwise engages one or more authors to generate the content data 16. In further embodiments, some of the content data 16 is derived from feeds such as news feeds or the like. That is, although in the embodiments described in detail system 1 is applied to a social networking platform, it will be appreciated by those skilled in the art that it is also applicable to other platforms such as blogs, collaborative management tools, online publishing and other online platforms that accommodate comments (that is, reactions) from users.
Devices 5 are internet enabled devices for allowing the users to interact with system 1. These include devices such as smartphones, tablets, desktop computer, laptop computers, and the like. A given user will typically initiate a session with system 1 via one such device at any given time. However, that user is able to use any other such device to initiate a later session and gain the same functionality from system 1.
Servers 31 and 32 included within system 1 are part of a server system 33 that operates to provide the functionality of system 1. An exemplary server 35 in system 33, which is an administration server for system 1, includes a processor 36, a memory module 37 for storing, amongst other things, software instructions 38 that are executed by server 35 to contribute to the overall functionality of system 1. Other servers are included to provide further functionality within system 1, as would be appreciated by those skilled in the art.
Server system 33 also makes use of a communications backbone 41 for allowing system 33 to access and/or update the records held in databases 15, 21 and 42, and any other databases that are included within facility 2. Insofar as system 1 requires data from remotely located or controlled databases, that is accessed via interface 8.
In other embodiments, some or all of data 16 and data 22 is stored in one or more databases (not shown) remotely located with respect to facility 2.
Although in
In the above embodiment, a given user has the ability to provide at any given time a maximum of one reaction for a given item of posted content. However, that reaction is able to be changed over time in one or more ways, including by changing one or more of the following characteristics: existence (that is, a reaction can be deleted); status; type; and visibility. Accordingly, the comments—that is, the reactions—enabled by system 1 present a dynamic environment for users to learn and adjust their respective reactions in response to new inputs. That is, the reactions are not static, but open to change as the relationship between the users change. To allow the above functionality to be effectively and efficiently delivered the preferred embodiments, including system 1, make use of specific data structures and data operations Examples of these are provided below.
A list of reaction types is required by system 1, and this is defined within system 1 to be, for example:
System 1 makes use of the following status types for reactions:
To allow for reactions to be updated by the relevant user there is a need to store sufficient information about the user and the reaction. In system 1, should a user update a reaction type then certain parameters are automatically reset, and the below API parameters are utilised:
To better illustrate the operation of system 1, reference is made to the flowchart in
Step 1—The Actor (that is, user 3) is presented with the option to provide a reaction 4 to posted content.
Step 2—The user 3 selects a reaction from a predetermined list of reaction types. Upon selection, device 5 passes the reaction type to system 1 via an API. It will be appreciated that prior to passing the reaction type to system 1 the API will have determined if user 3 had previously posted a reaction for the posted content.
At system 1, in response to receiving reaction 4, data 22 is updated to include a table for the reaction based upon the following table structure:
post_reactions
In determining if the user 3 has previously submitted a reaction for the posted content, the API executes the following:
Step 3—If user 3 had not previously submitted a reaction 4 in respect of the posted content system 1 creates a new reaction record (data 22) for the posted content and then progresses to Step 6. Step 3 includes, in more detail:
Step 4—If the user 3 had previously provided a reaction 4 to the posted content, system 1 then determines the existing reaction type by executing the following:
Step 5—System 1 here determines whether the most recently selected reaction by the user 3 is the same as the previously recorded reaction. If the most recently selected reaction is the same as the previously recorded reaction, then nothing is determined to have changed and system 1 proceeds to Step 10. However, to fully complete this step, system 1 returns data to device 5 to inform the user 3 of a successful reaction being posted. This is particularly useful for allowing the user to override an existing hidden reaction. For example, if the user ‘likes’ an item of posted content, then hides the ‘like’ status, and then later returns and ‘likes’ the same posted content, then the most recently selected reaction for that posted content is updated and not skipped. If the most recently selected reaction is the same as the previously recorded reaction are differed, then system 1 advances to Step 6. This is illustrated by the following:
Step 6—If a new reaction or a varied reaction from a previous reaction has been activated by the user then this post reaction needs to be recorded. The recording of the post reaction is done in at Step 6 using the DB2 database structure and the below statements.
After the post reaction has been recorded there are two concurrent or practically concurrent tasks implemented by system 1. This includes undertaking Step 7 to determines whether the reaction was made with an anonymous status attribute, and Step 14 to synchronise and cache the user's reaction response.
Step 7—The user 3 has the unique ability to choose whether the reaction appears anonymous or if it is identified to other users of system 1. At Step 7, the anonymous or identified status of the reaction is reviewed and processed. It should be noted that the user 3 is able to select an anonymous status for the reaction prior to Step 6 and that an anonymous status is also recorded at Step 6. At Step 7 there is a review of that status to complete the process and return data to the user 3. This includes executing the following:
Step 8—If the reaction is identified then a notification is sent to the device 5 of the owner of the posted content. This is to alert the owner (typically also a user of system 1) of a new reaction having been made to the posted content. As the user making the reaction has elected to be identified, an indication of the identity of the user (be that a handle, username, avatar or other icon) is available for viewing by the owner. This includes system 1 executing the following:
Step 9—If the reaction has an anonymous status then a notification is sent to the owner of the posted content notifying that owner of the new reaction. The identity of the user providing the reaction is not provided, and a generic “anonymous user” tag or icon is provided. This is done by system 1 operating as follows:
Step 10—System 1 determines the total number of reactions (total count, and count of each reaction type) for the relevant posted content before passing the final count data to the user that made reaction 4. This provides that user with an accurate and updated reflection of the count data for the reactions for the relevant posted content. To implement this, system 1 sends a request to caching system 15 and retrieves the most recent count data for the reactions. This is achieved by executing the following:
Step 11—Once the user 3 has posted a reaction 4 that user has the option to hide reaction 4 from being displayed within the user account on system 1. That is, user 3 is able to effectively remove any visual confirmation from device 5 that the user has submitted reaction 4. By default, the value of $isHide is equal to the default value of an integer which is 0, resulting in no hidden attribute to the $react object. This is implemented by system 1 as follows:
$isHide=(int)@$react->hide;
Step 12—The user 3 is able to change the hidden status to 1, which results in the visual record of reaction 4 being hidden on the user's account on system 1. Although the reaction remains on system 1 and is included in the computation of the count data for the relevant item of posted content, when viewed from the user's account on system 1 it is as if the user has not made any reaction to the item of posted content. In this embodiment the hidden status cannot be undone, effectively making it impossible for a person to visually detect whether that logged in account has been used to provide a reaction 4 to an item of posted content.
At Step 11, if the any integer is different from 0, then the value will be converted to 1. This results in $react->hide being executed and $isHide being set to 1.
Step 13—If Step 12 has been actioned by the user then a record of that update is be recorded by system 1 as follows:
The above code is used to save the ‘hide’ property of the reaction into the database so that whenever a user retrieves data from the server the server will return this value to determine whether the logged in user had chosen to hide that reaction or not.
Step 14—As soon as Step 6 has been completed the result is forwarded to an asynchronisation process. This process is included so that the user is able to avoid wait times on the reaction being recorded. It also better avoids lock-up of the database as multiple users are posting/changing reactions on the same post at the same time. By the time the operation of system 1 has advanced to Step 14, the unique reaction (userID/postID) record has already been saved to the database. This asynchronisation process is for calculating the new total reactions for a post in cached status. The task asyncUpdatingReactions is described in more detail at Step 18 below. Broadly, system 1 progresses as follows:
Step 15—In this embodiment the cached data intentionally has a very simple database structure and is exemplarily illustrated in
Step 16—Once the reaction or change of reaction made by the user 3 has been accepted by the asynchronisation process it is added to a queue of such reactions/changes. This allows system 1 to orderly accommodate multiple userID/postID that have been made at or close to the same time.
At Step 17, system 1 processes on a FIFO basis each item in the queue formed at Step 16. Each time a reaction in the queue is processed successfully and recounted (at Step 18) then system 1 retrieves the next pending reaction in the queue to process. The database regarding post reactions per post is temporarily locked until successfully updated and progresses as follows:
For Step 17, use is made of the data structure DB1 illustrated in
Step 18—After Step 17 has been completed then system 1, at Step 18, recalculates the total count of reactions for the relevant item of posted content, updates the caching system with the new data and unlocks the database so that the next item in the queue is able to be processed at Step 17. The cached data is then stored by system 1 inside the DB3 database structure. This includes system 1 operating at follows:
Advantages offered by the preferred embodiments include:
Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining”, analyzing” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulate and/or transform data represented as physical, such as electronic, quantities into other data similarly represented as physical quantities.
In a similar manner, the term “processor” may refer to any device or portion of a device that processes electronic data, e.g., from registers and/or memory to transform that electronic data into other electronic data that, e.g., may be stored in registers and/or memory. A “computer” or a “computing machine” or a “computing platform” may include one or more processors.
Reference is made in this specification to “data elements”. This term is used to describe a single data element such as a text character or file, or strings of text characters, including special characters, and combinations or groupings of files. A plurality of these elements, and combinations of different types of elements, are able to be included in a single message. However, that is not to imply that all the data elements contained within a given message need be all stored together or transmitted together, simply that the message, however stored or transmitted, provides a functional whole when assembled or accessed.
The methodologies described herein are, in one embodiment, performable by one or more processors that accept computer-readable (also called machine-readable) code containing a set of instructions that when executed by one or more of the processors carry out at least one of the methods described herein. Any processor capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken are included. Thus, one example is a typical processing system that includes one or more processors. Each processor may include one or more of a CPU, a graphics processing unit, and a programmable DSP unit. The processing system further may include a memory subsystem including main RAM and/or a static RAM, and/or ROM. A bus subsystem may be included for communicating between the components. The processing system further may be a distributed processing system with processors coupled by a network. If the processing system requires a display, such a display may be included, e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT) display. If manual data entry is required, the processing system also includes an input device such as one or more of an alphanumeric input unit such as a keyboard, a pointing control device such as a mouse, a touch screen, one or more manually depressible buttons, and so forth. The term memory unit as used herein, if clear from the context and unless explicitly stated otherwise, also encompasses a storage system such as a disk drive unit. The processing system in some configurations may include a sound output device, and a network interface device. The memory subsystem thus includes a computer-readable carrier medium that carries computer-readable code (e.g., software) including a set of instructions to cause performing, when executed by one or more processors, one of more of the methods described herein. Note that when the method includes several elements, e.g., several steps, no ordering of such elements is implied, unless specifically stated. The software may reside in the hard disk, or may also reside, completely or at least partially, within the RAM and/or within the processor during execution thereof by the computer system. Thus, the memory and the processor also constitute computer-readable carrier medium carrying computer-readable code.
Furthermore, a computer-readable carrier medium may form, or be included in a computer program product.
In alternative embodiments, the one or more processors operate as a standalone device or may be connected, e.g., networked to other processor(s), in a networked deployment, the one or more processors may operate in the capacity of a server or a user machine in server-user network environment, or as a peer machine in a peer-to-peer or distributed network environment. The one or more processors may form a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a network router, a smart phone, a switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
One embodiment of each of the methods described herein is in the form of a computer-readable carrier medium carrying a set of instructions, e.g., a computer program that is for execution on one or more processors, e.g., one or more processors that are part of web server arrangement. Thus, as will be appreciated by those skilled in the art, embodiments of the present invention may be embodied as a method, an apparatus such as a special purpose apparatus, an apparatus such as a data processing system, or a computer-readable carrier medium, e.g., a computer program product. The computer-readable carrier medium carries computer readable code including a set of instructions that when executed on one or more processors cause the processor or processors to implement a method. Accordingly, aspects of the present invention may take the form of a method, an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of carrier medium (e.g., a computer program product on a computer-readable storage medium) carrying computer-readable program code embodied in the medium.
It will be understood that the steps of methods discussed are performed in one embodiment by an appropriate processor (or processors) of a processing (i.e., computer) system executing instructions (computer-readable code) stored in storage. It will also be understood that the invention is not limited to any particular implementation or programming technique and that the invention may be implemented using any appropriate techniques for implementing the functionality described herein. The invention is not limited to any particular programming language or operating system.
It should be appreciated that in the above description of exemplary embodiments of the invention, various features of the invention are sometimes grouped together in a single embodiment, Figure, or description thereof for the purpose of streamlining the disclosure and aiding in the understanding of one or more of the various inventive aspects. This method of disclosure, however, is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the claims following the Detailed Description are hereby expressly incorporated into this Detailed Description, with each claim standing on its own as a separate embodiment of this invention.
Furthermore, while some embodiments described herein include some but not other features included in other embodiments, combinations of features of different embodiments are meant to be within the scope of the invention, and form different embodiments, as would be understood by those skilled in the art. For example, in the following claims, any of the claimed embodiments can be used in any combination.
Furthermore, some of the embodiments are described herein as a method or combination of elements of a method that can be implemented by a processor of a computer system or by other means of carrying out the function. Thus, a processor with the necessary instructions for carrying out such a method or element of a method forms a means for carrying out the method or element of a method. Furthermore, an element described herein of an apparatus embodiment is an example of a means for carrying out the function performed by the element for the purpose of carrying out the invention.
In the description provided herein, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known methods, structures and techniques have not been shown in detail in order not to obscure an understanding of this description.
Similarly, it is to be noticed that the term “coupled” or “connected”, when used in the claims, should not be interpreted as being limited to direct connections only. The terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Thus, the scope of the expression “a device A coupled to a device B” should not be limited to devices or systems wherein an output of device A is directly connected to an input of device B. It means that there exists a path between an output of A and an input of B which may be a path including other devices or means. “Coupled” or “connected” may mean that two or more elements are either in direct physical or electrical contact, or that two or more elements are not in direct contact with each other but yet still co-operate or interact with each other.
Thus, while there has been described what are believed to be the preferred embodiments of the invention, those skilled in the art will recognize that other and further modifications may be made thereto without departing from the spirit of the invention, and it is intended to claim all such changes and modifications as falling within the scope of the invention. For example, any formulas given above are merely representative of procedures that may be used. Functionality may be added or deleted from the block diagrams and operations may be interchanged among functional blocks. Steps may be added or deleted to methods described within the scope of the present invention
Number | Date | Country | Kind |
---|---|---|---|
2018904690 | Dec 2018 | AU | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/AU2019/051346 | 12/9/2019 | WO | 00 |