freshpatentsnav7small (2K)

n/a

views for this patent on FreshPatents.com
updated 06/14/13

    Free Services  

  • MONITOR KEYWORDS
  • Enter keywords & we'll notify you when a new patent matches your request (weekly update).

  • ORGANIZER
  • Save & organize patents so you can view them later.

  • RSS rss
  • Create custom RSS feeds. Track keywords without receiving email.

  • ARCHIVE
  • View the last few months of your Keyword emails.

  • COMPANY PATENTS
  • Patents sorted by company.

Customization of display templates   

pdficondownload pdfimage preview


20120102386 patent thumbnailAbstract: A server system enables users to configure user interfaces. A generic presentation string is stored at a data storage system. The generic presentation string is renderable to present an unfilled template that may include one or more slots. A template module is generated from the generic presentation string. The generic presentation string specifies a transformation operation. A template execution operation generates presentation strings renderable to present filled templates. In the filled templates, data based on objects belonging to a given type replace the slots of the unfilled template.
Agent: Microsoft Corporation - Redmond, WA, US
Inventors: Jonathan Thomas Campbell, Zhenguang Chen, Anthony Lawrence Jackson, Ping Jiang, Arun Krishnamoorthy, Boxin Li, Charles Reeves Little, II, Charles Keller Smith, Brian William Timm, Andrew Joseph Violino, Kerem Yuceturk
USPTO Applicaton #: #20120102386 - Class: 715229 (USPTO) - 04/26/12 - Class 715 
Related Terms: Configure   Data Storage   Generic   Replace   Strings   Template   Transformation   
view organizer monitor keywords


The Patent Description & Claims data below is from USPTO Patent Application 20120102386, Customization of display templates.

pdficondownload pdf

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent Application Ser. No. 61/405,067, filed Oct. 20, 2010, the entire content of which is hereby incorporated by reference, and is related to U.S. patent application Ser. No. ______, Attorney Docket No. 14917.1812USU1/331879.01, titled “Result Types for Conditional Data Display,” filed on Jun. 30, 2011, and U.S. patent application Ser. No. ______, Attorney Docket No. 14917.1851USU1/331457.02, titled “Templates for Displaying Data,” filed on Jun. 30, 2011, the entirety of each of which is incorporated by reference herein.

BACKGROUND

As computer networks and computers have increased in speed and complexity, web designers have been able to create increasingly complex websites. Such complex websites can provide greater utility to users and can be more visually compelling. However, complex websites can be more difficult and expensive to design.

Moreover, it can be difficult and expensive to make changes to such complex websites after they are designed. For example, a website may utilize data from a given database. In this example, multiple parts of the website may need to be redesigned if a schema of the database is changed to include additional properties. In another example, a designer may want to change an appearance of a feature that appears in multiple webpages in a website. In this example, the designer may need to change separate pieces of code associated with each of the webpages.

SUMMARY

A server system enables users to configure user interfaces. A generic presentation string is stored at a data storage system. The generic presentation string is renderable to present an unfilled template that includes one or more slots. A template module is generated from the generic presentation string. The generic presentation string specifies a transformation operation. A template execution operation generates presentation strings renderable to present filled templates. In the filled templates, data based on content resource objects belonging to a given content resource type replace the slots of the unfilled template.

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example system.

FIG. 2 is a block diagram illustrating example details of a server system.

FIG. 3 is a block diagram illustrating example details of a client device.

FIG. 4 is illustrates a flowchart for an example operation of the client application and a flowchart for an operation performed when a content generation script is performed.

FIG. 5 illustrates a flowchart for an example template execution operation and a flowchart for an example operation to generate a presentation string for a child context object.

FIG. 6 is a screen illustration of an example search results interface.

FIG. 7 is a block diagram illustrating an alternate example system.

FIG. 8 is a block diagram illustrating example components of the alternate embodiment of the server system.

FIG. 9 is a block diagram illustrating an example unfilled template.

FIG. 10 is a flowchart illustrating an example operation of the server system.

FIG. 11 is a flowchart illustrating an example transformation operation to generate a template module from a generic presentation string.

FIG. 12 is a flowchart illustrating an example operation of an editor application.

FIG. 13 is a screen illustration showing a browser window containing an example search interface presented by the client device.

FIG. 14 is a block diagram illustrating example components of another alternate embodiment of the server system.

FIG. 15 illustrates example content of a content index and example contents of an admin database.

FIG. 16 illustrates an example scope hierarchy.

FIG. 17 is a flowchart illustrating an example operation to configure a result type.

FIG. 18 is a screen illustration of a browser window containing an example type configuration interface.

FIG. 19 is a flowchart illustrating an example operation to search for resources in a target website.

FIG. 20 is a block diagram illustrating example components of a computing device.

DETAILED DESCRIPTION

The following detailed description and the attached figures illustrate example embodiments. The reader will understand that other embodiments exist and are within the scope of the attached claims. In the attached figures, stacked blocks represent one or more similar, but not necessarily identical, items. In addition, ellipses between items represent one or more similar, by not necessarily identical, items. Items having the same reference numbers with different alphabetical suffixes (e.g., “A” through “N”) are not intended to indicate the existence of a specific number of items.

FIG. 1 is a block diagram illustrating an example system 100. As illustrated in the example of FIG. 1, the system 100 comprises a server system 102, a client device 104, and a network 106. In other embodiments, the system 100 can include more or fewer components. For example, some embodiments of the system 100 include client devices in addition to the client device 104.

The server system 102 and the client device 104 each comprise one or more computing devices. A computing device is a physical device for processing information. In various embodiments, the server system 102 and the client device 104 comprise various types of computing devices. For example, the server system 102 and/or the client device 104 can comprise one or more personal computers, standalone server devices, laptop computers, blade server devices, smart phones, tablet computers, network-enabled televisions or television set top boxes, game consoles, telephones, in-car computers, appliances, intermediate network devices, and/or other types of computing devices.

The network 106 facilitates communication between the client device 104 and the server system 102. In the example of FIG. 1, the network 106 is represented as a cloud. However, the network 106 can comprise various numbers of computing devices and links between the computing devices. In various embodiments, the network 106 can be structured in various ways. For example, the network 106 can be the Internet, an intranet, a local area network, a metropolitan area network, a wide area network, or another type of network. In some instances, some links within the network 106 are wireless and other links within the network 106 are wired.

A user 108 uses the client device 104. The user 108 can be various types of people. For example, the user 108 can be an employee of a company or a partner of that company. In another example, the user 108 can be a member of the general public.

The client device 104 provides a client application 110. In various embodiments, the client application 110 comprises various types of applications. For example, the client application 110 can be a web browser application, such as INTERNET EXPLORER® from Microsoft Corp., FIREFOX® from the Mozilla Foundation, or CHROME® from Google, Inc. In another example, the client application 110 can be a productivity application, such as a word processor application, a spreadsheet application, a slide presentation application, and so on.

The server system 102 hosts at least one website 112. In other words, the server system 102 provides functionality that enables clients to access resources in the website 112. The website 112 comprises a plurality of resources that can be accessed through a network, such as the network 106. For example, the website 112 can comprise webpages, word processor documents, PDF documents, spreadsheet documents, presentation documents, data sources, and other types of resources.

In various embodiments, the website 112 can be various types of website. For example, the website 112 can be a public Internet website for a company. In another example, the website 112 can be a private internal intranet website for a company. In yet another example, the website 112 can be a private collaboration website accessible by employees of multiple companies.

The client application 110 sends resource requests to the server system 102. The resources requests comprise requests to access resources in the website 112. In response to the resource requests, the server system 102 sends resource data to the client device 104. The client application 110 processes the resource data to present the resources to the user 108.

As described in detail elsewhere in this document, when the client application 110 sends a request for some resources in the website 112, the client application 110 receives a dataset and a set of template modules. The dataset comprises a set of objects. Each of the objects belongs to a content resource object type. For example, the dataset can include an object that belongs to a “phone number” content resource object type and an object that belongs to a “street address” content resource object type. Multiple elements in the dataset can have the same element type.

The template modules correspond to different content resource object types. For example, the dataset can include a content resource object that belongs to a “phone number” content resource object type and a content resource object that belongs to a “street address” content resource object type. In this example, the set of template modules includes a template module that corresponds to the “phone number” content resource object type and a template module that corresponds to the “street address” content resource object type.

The template modules specify conversion operations. A template module\'s template execution conversion operation, herein referred to as a template execution operation, transforms a conversion script which may be a collection of template modules into a presentation string when given an object belonging to the content resource object type corresponding to the template module. The presentation string is a character string that the client application 110 can render to create one or more onscreen features.

In various embodiments, presentation strings can conform to various presentation languages. For example, in some embodiments, the presentation strings conform to the Hypertext Markup Language (HTML). In other example, the presentation strings conform to a non-standardized language.

The client application 110 performs the template execution operations specified by the corresponding template modules on the content resource objects in the dataset. For example, the dataset can include an object that belongs to a “phone number” content resource object type. In this example, a given template module corresponds to the “phone number” content resource object type. In this example, the client application 110 generates a presentation string for the object by performing the template execution operation specified by the given template module. In this way, the client application 110 generates presentation strings needed to render a resource.

FIG. 2 is a block diagram illustrating example components of the server system 102. As illustrated in the example of FIG. 2, the server system 102 comprises a data storage system 200. The data storage system 200 comprises one or more computer storage media. The term “computer storage media” encompasses devices or articles of manufacture that store computer-readable data or instructions. In some embodiments, the computer storage media in the data storage system 200 are geographically dispersed. In other embodiments, the computer storage media in the data storage system 200 are located within a single device or data center.

The data storage system 200 stores data for subsequent retrieval. The data storage system 200 stores content resources 202, metadata 204, a schema 208, and template modules 206A-206N (collectively, “template modules 206”). The content resources 202 can include some or all of the resources of the website 112. For example, the content resources 202 can include web page documents, word processor documents, PDF documents, digital images, video, spreadsheet documents, and so on.

The metadata 204 comprises data regarding the content resources 202. For example, the content resources 202 can include a word processor document. In this example, the metadata 204 can include data indicating an author, a creation time, a modified time, a title, and a summary of the word processor document.

Each of the template modules 206 comprises a set of software instructions that specifies a template execution operation. The template execution operations take objects in datasets and generate corresponding presentation strings. In various embodiments, the software instructions can conform to various programming languages. For example, the software instructions in one or more of the template modules 206 can conform to the JavaScript programming language. In other words, one or more of the template modules 206 can specify the template execution operations as sets of JavaScript instructions. In another example, the software instructions in the template modules 206 can conform to the Perl programming language.

Some embodiments store the template modules 206 in template module files. In some such embodiments, the template module files have file name extensions that correspond to the programming language used in the template modules 206. For example, if one of the template modules 206 contains software instructions conforming to the JavaScript programming language, the template module file containing the template module can have the file name extension “.js”.

The schema 208 specifies allowable content resource types in datasets sent by the server system 102 to the client device 104. In various embodiments, the schema 208 specifies that various content resource types are allowable in the datasets. For example, the schema 208 can specify that datasets must include a collection of content resource objects belonging to a certain content resource type. In this example, the schema 208 can specify that the collection of content resource objects includes one or more objects belonging to a “person” content resource type. In this example, the schema 208 can further specify that content resource objects belonging to the “person” content resource type include a “name” content resource object or data element, which is of a string content resource object type or data element type, a “phone number” content resource object or data element belonging to a “phone number” content resource object type or data element type, and a “street address” content resource object or data element belonging to a “location address” content resource object type or data element type. The term “content resource object” will herein be used to describe a data element (e.g., name, phone number, street address, etc.) of a specified content resource type (e.g., “person” content resource type) in a dataset. The term “content resource object type” will herein be used to describe a type of a content resource object (e.g., a string, a phone number, a location address, etc.).

Furthermore, the schema 208 maps content resource object types to the template modules 206. Continuing the example of the previous paragraph, the schema 208 can map the top-level collection in the dataset to the template module 206A, map the “person” content resource type to the template module 206B, map the “location address” content resource object type to the template module 206N, and so on.

In various embodiments, the schema 208 is formatted in various ways. For example, in some embodiments, the datasets sent by the server system 102 are formatted as XML. In this example, the schema 208 can be formatted in Document Type Definition (DTD) language, the XML Schema language, the RELAX NG language, or another schema language for XML. In other embodiments, the datasets are not formatted as XML and the schema 208 is formatted using other schema definition languages.

In addition to the data storage system 200, the server system 102 provides a web server 210. Some embodiments of the server system 102 provide the web server 210 by executing instructions stored on one or more computer storage media. The web server 210 is configured to provide resources hosted by the server system 102 to the client application 110 in response to resource requests. For example, the web server 210 can provide the content resources 202, data sets, the template modules 206, the schema 208, and other resources in response to resource requests.

FIG. 3 is a block diagram illustrating example details of the client device 104. As illustrated in the example of FIG. 3, the client device 104 comprises a cache 300 and the client application 110.

When the client application 110 receives content resources 202, the template modules 206, or the schema 208, the client application 110 stores copies of the content resources 202, the template modules 206, and the schema 208 in the cache 300. Various embodiments implement the cache 300 in various ways. For example, some embodiments implement the cache 300 as a folder or directory in a file system. Other example embodiments implement the cache 300 as a relational database.

FIG. 4 is illustrates a flowchart for an example operation 400 of the client application 110 and a flowchart for an operation 450 performed when a content generation script is performed. Various embodiments of the client application 110 can perform the operation 400 in response to various events. For example, the client application 110 can perform the operation 400 when the user 108 enters a URL in an address bar of the client application 110. In another example, the client application 110 can perform the operation 400 when the user 108 selects a link in another webpage.

After the operation 400 starts, the client application 110 sends a resource request to the web server 210 (402). The resource request requests a user interface, such as a webpage in the website 112. In various embodiments, the resource request conforms to various protocols. For example, in some embodiments, the resource request conforms to the Hypertext Transfer Protocol (HTTP). In other example embodiments, the resource request conforms to another protocol, such as SOAP.

The client application 110 receives base resource data from the web server 210 in response to the resource request (404). The base resource data includes a content generation script. When the client application 110 performs the content generation script, the content generation script inserts content into the user interface.

In various embodiments, the base resource data comprises various data in addition to the content generation script. For example, the base resource data can comprise HTML data, additional scripts, and so on.

After the client application 110 receives the base resource data, the client application 110 performs the content generation script in the base resource data (406). Performance of the content generation script causes the client application 110 to generate a presentation string. After the client application 110 generates the presentation string, the client application 110 renders the presentation string (408). Rendering the presentation string comprises rendering presentation strings within the presentation string. When the client application 110 renders presentation strings, the client application presents sets of on-screen features to the user 108.

In some embodiments, performance of the content generation script causes the client application 110 to perform the operation 450. After the operation 450 starts, the client application 110 sends a dataset request (452). The dataset request comprises a request for a dataset. In response, the web server 210 generates the dataset and sends the dataset to the client application 110. Subsequently, the client application 110 receives the dataset (454). In other words, the client application 110 downloads the dataset.

In various embodiments, the web server 210 generates the dataset in various ways. For example, the web server 210 can use the content resources 202 and/or the metadata 204 to generate the dataset. In this example, the content resources 202 can include entries in a company\'s employee directory. In this example, the resource request can comprise a search query for employees having the last name “Jones.” In this example, the web server 210 obtains a list of search results. The search results are ones of the content resources 202 that satisfy the search query. In this example, the web server 210 generates a dataset that contains data regarding the search results. For instance, in this example, the web server 210 can generate the following dataset:

Search_Results { Person { Name::Steven Jones; Email_addr::sjones@contoso.com; } Person { Name::Jane Jones; Email_addr::jjones@contoso.com } }

As mentioned above, the dataset comprises one or more collections of content resource types containing content resource objects. In some instances, other collections of content resource types are nested in the content resource objects of the content resource types in the top level dataset. In other words, the content resource objects in the collections of the top level dataset can contain child objects of simple or complex content resource object types. In the example dataset shown above, the “Search_Results” object is a data collection in the top level dataset. The two “Person” content resource types are contained in the “Search_Results” collection. The “Name” content resource object and the “Email_addr” content resource object are content resource objects of the “Person” content resource type.

In other embodiments, the client application 110 does not generate the dataset request. In such embodiments, the base resource data can include the dataset.

In addition, the client application 110 generates a schema request (456). The schema request comprises a request for the schema 208. In other embodiments, the client application 110 does not generate schema requests. In such embodiments, the base resource data includes the schema 208.

When the client application 110 generates the schema request, the client device 104 determines whether the cache 300 includes a copy of the schema 208. If the cache 300 does not include a copy of the schema 208, the client device 104 forwards the schema request to the web server 210. The web server 210 returns the schema 208 to the client device 104 in response to the schema request. In other words, the client device 104 downloads the schema 208. The client device 104 then provides the schema 208 to the client application 110. On the other hand, if the cache 300 stores a copy of the schema 208, the client device 104 provides the copy of the schema 208 to the client application 110. In either case, the client application 110 receives the schema 208 (458).

After the client application 110 receives the dataset and the schema 208, the client application 110 uses the schema 208 to identify a template module that corresponds to the type and a level of the content resource types and content resource objects of the dataset (460). As mentioned above, the schema 208 maps resource, level and content resource object types to the template modules 206. The client application 110 uses the schema 208 to identify the template module that corresponds to the type and level of the content resource types and content resource objects by determining, due to the schema 208 mapping a given template module to a content resource type or level or content resource object type, that the given template module corresponds to a current template execution operation on the dataset. For ease of explanation, this document can refer to a current content resource object or data element at a current level as a current context object, and the template module that corresponds to the current context object as that object\'s template module.

After identifying the current context object\'s template module, the client application 110 generates a template request (462). The template request comprises a request for the current context object\'s template module. When the client application 110 generates the template request, the client device 104 determines whether the cache 300 stores the current context object\'s template module. If the cache 300 does not store the current context object\'s template module, the client device 104 does not forward the template request to the web server 210. Rather, the client device 104 provides the cached copy of the current context object\'s template module to the client application 110 in response to the template request. Otherwise, if the cache 300 does not store the current context object\'s template module, the client device 104 sends the template request to the web server 210. Subsequently, the client device 104 receives the current context object\'s template module from the web server 210. In other words, the client device 104 downloads the current context object\'s template module. In either case, the client application 110 receives the current context object\'s template module in response to the template request (464).

After the client application 110 receives the current context object\'s template module, the client application 110 generates a presentation string for the current context object (466). The client application 110 generates the presentation string for the current context object by performing the template execution operation of the current context object\'s template module on the current context object. As mentioned above, the presentation string can comprise HTML data. In some instances, the presentation string can also comprise one or more scripts.

The client application 110 can perform the operation 400. Between times that the client application 110 performs the operation 400, the schema 208 can change. For example, an administrator can change the schema 208 to change the allowable content resource object types in datasets generated by the server system 102. Consequently, in this example, when the client application 110 performs the operation 400 again, the client application 110 can download a dataset that includes one or more objects belonging to content resource object types that were not previously allowable. Because the template modules 206 are separate from the schema, a developer may only need to update the template modules corresponding to the changed object types and not other ones of the template modules 206.

In another example, an administrator can change the schema 208 to change the mappings between object types and template modules. Consequently, in this example, when the client application 110 performs the operation 400 again, the client application 110 can download a second dataset that includes content resource objects or data elements belonging to a given type. Whereas when the client application 110 previously performed a template execution operation of a given template module on objects of the given type at a given level, the client application 110 now generates presentation strings for objects of the given type by performing a template execution operation of a different template module on the objects of the given content resource object type. The client application 110 can then render these presentation strings. In some instances, it may not be necessary for a programmer to rewrite the code of any of the template modules 206 in response to such a change to the schema 208.

FIG. 5 illustrates a flowchart for an example template execution operation 500 and a flowchart for an example operation 550 to generate a presentation string for a child object. For ease of explanation, this document explains the template execution operation 500 and the operation 550 with reference to the template module 206A. In some embodiments, the template execution operations of each of the template modules 206 are similar to the template execution operation 500.

The template execution operation 500 starts when the client application 110 or the template execution operation of another template module invokes the template execution operation 500 of the template module 206A. For example, if the template module 206A corresponds to a root level presentation of relevant types of content resources in the dataset, the client application 110 invokes the template execution operation 500. However, if the template module 206A corresponds to some other level or object type in the dataset, the template execution operation of another template module invokes the template execution operation 500.

When the template execution operation 500 is invoked, the template module 206A receives a current context object in the dataset (502). In various embodiments, the template module 206A receives the current context object in various ways. For example, some embodiments of the template execution operation 500 receive the current context object as a parameter.

After receiving the current context object, the template module 206A generates the current context object\'s presentation string (504). In instances where the current object has one or more child objects, the current object\'s presentation string can include the child object\'s presentation strings.

When the template module 206A generates the current context object\'s presentation string, the template module 206A can include one or more pre-determined strings into the current cxt object\'s presentation string. For example, the template module 206A can include a string that comprises a series of tags into the current context object\'s presentation string. This series of tags can define a layout or formatting.

Furthermore, as part of generating the current context object\'s presentation string, the template module 206A can perform the operation 550 one or more times to generate the child objects\' presentation strings. After the operation 550 starts, the template module 206A uses the schema 208 to identify a template module that corresponds to a given child object of the current context object (552). For instance, the template module 206A can determine, based on the schema 208 mapping a content resource object type of the given child object to the template module, that the template module corresponds to the given object. For ease of explanation, this document can refer to the template module corresponding to the given child object as the given child object\'s template module.

After identifying the given child object\'s template module, the template module 206A requests the given child object\'s template module (554). If the cache 300 stores a given child object\'s template module, the template module 206A retrieves the given child object\'s template module from the cache 300 without sending a request for the given child object\'s template module to the web server 210. On the other hand, if the cache 300 does not store the given child object\'s template module, the template execution operation 500 sends a request to the web server 210 for the given child object\'s template module. In either case, the client application 110 subsequently receives the given child object\'s template module (556). In other words, the client application 110 downloads the given child object\'s template module.

After receiving the given child object\'s template module, the template module 206A generates a presentation string for the given child object (558). The template module 206A generates the presentation string for the given child object by invoking the template execution operation of the given child object\'s template module on the given child object.

For example, the following string can represent the current context object:

Person { Name::Steven Jones; Email_addr::sjones@contoso.com } In this example, the current context object is of a “person” content resource type, a first child object is of the “Name” content resource object type, and a second child object is of the “Email_addr” content resource object type. In this example, the template module 206A generates a presentation string for the first child object by performing the template execution operation of the template module corresponding to the “Name” content resource object type. For example, the template module 206A can generate the following presentation string for the first child object:

Name: <b> STEVEN JONES </b>

In this example, the template module 206A generates a presentation string for the second child object by performing the template execution operation of the template module corresponding to the “Email_addr” content resource type. For example, the template module 206A can generate the following presentation string for the second child object:

<i> Email address: </i> <a href=“mailto:sjones@contoso.com”> sjones@contoso.com </a>

Continuing the example from the previous paragraph, the template module 206A can generate the following presentation string for the current context object:



Download full PDF for full patent description/claims.




You can also Monitor Keywords and Search for tracking patents relating to this Customization of display templates patent application.

Patent Applications in related categories:

20130151941 - System and method for multi-dimensional knowledge representation - Exemplary embodiments generally relate to knowledge representation, and in particular, multi-dimensional knowledge representation in a configurable document that includes a collection of subparts that have a number of dimensions. Further, a number of versions of each configurable document may be defined, with each version including a different subset of subparts ...

20130151940 - Techniques to manage collaborative documents - Techniques to manage collaborative documents are described. An application program may comprise a document render component to render a first document instance of a collaborative document, a document share component to receive a document update list comprising a set of change records for a second document instance of the collaborative ...


###
monitor keywords



Keyword Monitor How KEYWORD MONITOR works... a FREE service from FreshPatents
1. Sign up (takes 30 seconds). 2. Fill in the keywords to be monitored.
3. Each week you receive an email with patent applications related to your keywords.  
Start now! - Receive info on patent apps like Customization of display templates or other areas of interest.
###


Previous Patent Application:
Determining heights of table cells
Next Patent Application:
Annotating video intervals
Industry Class:
Data processing: presentation processing of document

###

FreshPatents.com Support - Terms & Conditions
Thank you for viewing the Customization of display templates patent info.
- - - AAPL - Apple, BA - Boeing, GOOG - Google, IBM, JBL - Jabil, KO - Coca Cola, MOT - Motorla

Results in 1.37024 seconds


Other interesting Freshpatents.com categories:
Exxonmobil Chemical Company , Intel , g2