Patent Crack

Claim Construction is a focused and detailed-oriented activity required for patent licensing.  It is the process by which a person figures out what the terms in a claim mean.  Without this tool, people will either read hard copy and then scan and highlight terms of interest, or they will open the text of the patent (or a searchable pdf) and search for terms.   The challenge is that many times claim language cannot be searched for directly.  It was our observation that this could be made easier with regular expressions, so we developed a tool that can use regular expressions to match claim phrases to specification language, and then produce a claim construction document for use by attorneys.

The user enters a patent number and optionally a claim number or phrase to be construed.   The application reads the specification for the patent from the patent office, then breaks it up into paragraphs and stores it in memory.

The claim is split into elements and presented on the right column of the interface.  The first element is loaded into a selection box allowing claim language to be highlighted and then searched for.   Clicking the plus sign when a phrase is selected hyperlinks the phrase in the claim, and immediately does a search for that phrase in the specifications.



All paragraphs which have a match are presented. All matched phrases in each paragraph are highlighted. In the image above, there are no “paragraph hits”, meaning that the phrase as highlighted does not exist in the specification.

The real power of the application is when regular expressions are used in lieu of match phrases. By clicking the hyperlink for a phrase in an element, a form is displayed which allows the user to enter a series of match expressions. A match of any expression will highlight the matched string in the paragraph display. Each expression is a regular expression.

Now that we have a regular expression that matches, matching paragraphs are presented.


The location of each paragraph in the final acrobat document is guessed and presented with each paragraph.   Clicking this guess allows the user to define the exact location, and that location is persisted with that paragraph, and the guessed locations of all other paragraphs are adjusted based on this correct data.  Selecting a paragraph indicates to the application that the user considers the highlighted portion of the paragraph to be indicative of the meaning of the phrase being construed.

Clicking paragraphs operate a toggle for inclusion, so clicking a second time will exclude the evidence from the final document. Selected paragraphs are shown in blue.

Implementation Notes

The selection toggle for paragraphs is interesting.   Each paragraph is given a unique ID and can be located using a hashmap.   When matching paragraphs are rendered, they are formatted with an invisible hyperlink pointing to a servlet in the application.  We could have used AJAX but instead used a managed property in faces-config.xml:

    
        Constructor
        claimbuster2.Constructor      
        request
            
          
            thisChunk
            #{param['chunkId']}
             
    

To use this, each paragraph is rendered with the proper html so that it creates a link such as:


http://localhost:8080/PatentCrack/faces/Constructor.jsp?chunkId=15

so that when clicked, the value of thisChunk in the bean is set to the value of the parameter chunkId. Because it is calling into the page bean, the paragraph hits are refreshed from the server. The server colors the paragraphs based on their selected property, which is determined by the existence of the paragraph in an Arraylist connected to the construed term:

 private String renderSpecLink(SpecChunk chunk, String para) {
        SessionBean1 sb = this.getSessionBean1();
        ElementRegion curReg = sb.getSelectedRegion();
        boolean isSelected = curReg.getSpecChunks().contains(chunk);
        String color = isSelected ? "blue" : "grey";
        if (sb.isActiveSpecChunks()) {
            return "" +
                    para +
                    "";
        }

All objects with state implement Serializable so that the entire state of the application can be saved to a file for later work. If the user forgets to save it, and hasn’t closed his browser, he can still return to the session on the home page and pick up where he left off.

Trivia

The original name for this application was “Claim Buster”.   But once an associate mentioned that it was addictive, it got its new moniker.