Citation processing system with multiple rule set engine

A citation system parses, error checks, corrects, and transforms citations between citation systems. The system may determine the available citation systems, such as The Bluebook, The Chicago Manual of Style, or other citation systems available for selection. The system also determines a selected citation system from among the multiple citation systems. For example, the system may determine that a writer has selected The Bluebook citation system from among those available to the system. The system also determines an applicable rule set for the selected citation system, and applies to rule set to an input citation to obtain an output citation component.

CODE APPENDIX

This patent document is filed with and incorporates by reference the entire contents of all the files submitted on two compacts discs, of which the second disc is a duplicate of the first disc, including the following files:

COPYRIGHT NOTICE

This patent document contains material subject to copyright protection. The copyright owner has no objection to the reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to all software, data, description, and illustrations described below and shown in the drawings: Copyright© 2006-2007, Dakota Legal Software, Inc., All Rights Reserved.

BACKGROUND OF THE INVENTION

1. Technical Field

This disclosure relates to processing systems that handle citations to authorities. In particular, this disclosure relates to a citation processing system that parses, error checks, and corrects citations, and that automatically transforms citations that adhere to one citation system to meet the requirements of another citation system.

2. Related Art

Citations to legal and nonlegal materials are typically found in legal writings of all sorts, including filings with a court or government agency, papers in scholarly journals, law student assignments, articles in legal periodicals and other publications. These citations must conform to specific rules established by the citation system adopted by the authority to which they are submitted. Examples of citation systems include the systems described in The Bluebook: A Uniform System of Citation, ALWD Citation Manual: A Professional System of Citation, local court rules, and citation requirements for specific publications such as legal journals or periodicals.

The rules of the various citations systems may be quite complex. For example, rule 2.1(f) in the 18th edition of the Bluebook describes which commas must and must not be italicized, rule 5.1(a) describes substantially different treatment for quotations that are 49 words long compared with quotations that are 50 words long, and rule 13.7(c) describes how it interacts with rule 4.1(a) to determine the presentation of a footnote that appears within five footnotes of another footnote to the same source but not within a filing to a court.

Even within a single citation system, the rules may be inconsistent from one use to another. For example, the Introduction section in the 18th edition of The Bluebook notes that there are different conventions for writing materials for a court versus using exactly the same materials for a law review article, and in fact the differences are substantial. As another example, the third edition of the ALWD manual notes substantial differences between the formats for court filings in Colorado compared with filings in Michigan. Even within a single citation system in a single jurisdiction, the rules may be inconsistent. There may be different rules of citation as a case goes from a trial court to an appellate court to a court of final decision, or when a case is removed from state court to federal court. The rules in the same citation system also become inconsistent over time. For example, the Preface to the 18th edition of the Bluebook lists two pages of changes from the 17th edition, so writing that conforms to the rules in the 17th edition of the Bluebook might not conform to the 16th or 18th editions.

Therefore, there has long been a need for a citation processing system that parses, error checks, and corrects citations, and that correctly transforms citations between the requirements of widely varying citation systems without burdening the author of a document with the extreme complexity and inconsistencies of the citation systems.

SUMMARY

In one implementation, a citation processing system (“system”) transforms citations between citation systems. The system may determine the available rule sets for multiple citation systems (e.g., The Bluebook, Association of Legal Writing Directors (ALWD) Citation Manual, The Chicago Manual of Style, the Maroonbook, or other systems). The system also determines a selected citation system from among the multiple available citation systems. For example, the system may determine that a writer has selected The Bluebook citation system from among those available to the system.

The system also receives an input citation. The input citation may adhere, to any degree, to any citation system. As an example, the input citation may adhere to the ALWD citation system. An applicable rule set for the selected citation system is chosen from available rule sets. The system then applies the applicable rule set to the input citation to determine an output citation component that adheres to the selected citation system.

The system allows the operator to dynamically change citation systems. As a result, the operator has the flexibility to adapt a particular document for suitability in any particular jurisdiction with any particular required citation system. To that end, the system may determine a subsequent selection of a different citation system from among the multiple citation systems, access a different rule set chosen for the different citation system, and automatically apply the different rule set to the output citation component to determine a different citation component adhering to the different citation system.

The system may automatically apply any selected citation system to any number of citations in an electronic document, such as a word processor document, spreadsheet, web page, or other document. In addition, the system may bind the selected citation system to an electronic document file that includes the citation. The electronic document file may then identify the citation system applicable for the electronic document to which the system may enforce citation style moving forward as future editing occurs.

The input citation need not provide all of the citation components needed to form the output citation. Thus, the system may determine that an additional citation component is needed to complete the output citation so that it adheres to the selection citation system. In one implementation, the system pro-actively searches for and retrieves the citation component from a third party source, such as a database of citation components, through a prompt for manual input, or from another source.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1shows a citation processing system with a multiple rule set engine100(“system100”). The system100provides a writer with great flexibility in transforming citations between citation systems, and also examines and corrects citations for proper adherence to any selected citation system. The system100includes a system processor102and a system memory104. The system100executes an operating system106that may control the execution of other programs in the system, such as the word processor program108or a network browser program110(e.g., an Internet browser), as examples.

The system100may include a display112, a communication interface114, and secondary storage116. The system100may also include external parameter inputs118. The system100may generate a user interface on the display112to provide, as an example, a selection menu of available citation systems, a selection menu of electronic documents in which to analyze or transform citations, or an input element (e.g. a text field entry element) that accepts cites, citation components, or other data.

The communication interface114may be an interface to a local or remote network, including the Internet. The system100may accept citation analysis or transformation requests, input citations, or electronic documents that include input citations, as examples. To that end, the system100may function as a citation transformation server that processes citation analysis and transformation requests and returns output citations, modified electronic documents, or other data to the service requester. The external parameter input118may be implemented as a keyboard, a speech recognition interface, a mouse, or other input mechanism.

The operation of the system100is discussed below in the context of the word processor program108. However, the system100may operate on electronic documents for network browsers (e.g., web pages), spreadsheets, or any other electronic documents that includes an input citation to a source of information such as a federal reporter, legal periodical, technical periodical, or other source of information.

The word processor program108includes operational code120, such as the instructions that implement the core functionality of the word processor. The word processor program108employs word processor variables122, shown in the word processor memory space inFIG. 1. The word processor program108operates on the word processor document124(“document124”). The document124may be a legal brief for a particular court, a legal opinion, or memorandum. The document124need not be legal in nature, and may, as additional examples, be a technical journal article, electronic slide presentation, white paper, html web page document, or any other document that includes citations to sources of information.

FIG. 1shows that the word processor program108is extended with the citation rules engine126. The citation rules engine126may be a plugin, for example. In other implementations, the citation rules engine126may be a separate program executed by the processor102. The citation rules engine126may, for example, control any one or more of generation of a citation, transformation of a citation between citation systems, control stylistic presentation of a citation, and verification of the accuracy of a citation, and is described in more detail below.

The system100also establishes rule sets for multiple citation systems. In the example shown inFIG. 1, the system100includes one or more citation systems, each of which includes one or more available rule sets.FIG. 1shows ‘n’ citation systems1(labeled128) through ‘n’ (labeled130) and ‘n’ rule sets1-1(labeled132) through n-n (labeled138) established in the ‘n’ citation systems.

Examples of citation systems include The Bluebook, The Association of Legal Writing Directors (ALWD) Citation Manual, and The Chicago Manual of Style. Citation systems may be hybrid citation systems. Hybrid citation systems may incorporate citation rules from widely recognized citation systems (e.g., The Bluebook) as modified or extended by custom citation rules, such as specific citation forms for a local court. Similarly, citation systems may be fully custom citation systems in the sense that the associated rule sets need not adhere in any respect to any “authoritative” recognized citation system. As described in more detail below, any rule set may include consistency rules140, pragmatic rules142, syntax rules144, semantic rules146, temporal rules148, context rules150, or other types of citation rules. The citation rules govern how citations should conform to a particular citation system.

FIG. 1shows that within a given citation system, there may be multiple available rule sets. For example, in The Bluebook citation system, an available rule set may be provided for multiple editions of The Bluebook. Alternatively, each edition of The Bluebook (or any variant of any citation system) may be considered and implemented as a separate citation system. Furthermore, the citation systems and/or rule sets may be established in and accessed from other memories, including databases, that are either local or remote with respect to the system100.

In one role, the system100operates on input citations152that include input citation components154to produce output citations156that include output citation components158. The system100applies rules that the system100may dynamically select by reading the rules from a memory, by selecting rules built into a software program, or by obtaining the rules from other sources. Application of the rules in question may, for example, control any one or more of generation or alteration of a citation, control stylistic presentation of a citation, and verify the accuracy of a citation. The citations may be present in an electronic document, such as those noted above.

The citation rules engine126may accept an input citation, determine the rule set to apply, gather information required to create an output citation, analyze the context in which the output citation will appear, and generate an output citation adhering to a selected citation system. The citation rules engine126may also insert the output citation into an electronic document and maintain the correctness of any citations in a document (e.g., by transforming the citation from one citation system to another) as changes occur that affect the proper citation format, including changes of selected citation system and insertions, deletions, and modifications of other citations.

The citation rules engine126may also gather required and optional citation components to assist with the determination of an output citation. The citation components may include case names, party names, page references, reporter names, journal names, year references, subsequent history, abbreviations, or any other component of a citation that adheres to the selected citation system. To that end, the system100may obtain the citation components by accepting input from the writer (e.g., through a text input box). Alternatively or additionally, the system100may obtain the citation components by searching local or remote files, databases, web pages or servers, or other sources. For example, given an input citation that specifies a reporter volume and page, the system100may search a database of reporter data to find the case name that appears in that volume and on that page. The citation rules engine126may also define the context in which the input citation appears according to the type of document; whether a citation to the current source has been cited in other places in the document, based on structural elements such as headers or other citations that appear between the current citation and other citations to the same source, or based on other factors.

The system100may create output rules and citation systems, encode output rules and citation systems, select citation systems and output rules, and apply output rules and citation systems. Rule sets may be created and/or grouped into citation systems prior to creating or editing the document124, while creating the document124, or after the document124is created.

An output rule may control relationships between elements of a citation.FIG. 2shows a graphical representation of an output rule200that describes the components of a citation and shows the relationships between those components. The components of the citation in the example shown inFIG. 2are the words of the citation. The output rule200encodes the citation components as nodes in a graph, including a Begin node202and an End node204.

Connections between nodes, such as the connection206, show relationships between the words. The output rule200shows one way to encode a citation to specific evidence, civil, or criminal rules. The output rule200includes a State node206, a Federal node208, and a Rules node210. The output rule200also includes an Of node212, an Evidence node214, a Civil node216, and a Criminal node218. A Procedure node220and a RuleNumber node222follow. A node identifier is shown in parentheses in each node.

An output rule may control the attributes that particular components may or may not have.FIGS. 3 and 4show attributes300and400for the federal node208and state node206, respectively, of the nodes inFIG. 2. They way in which the attributes enforce citation characteristics (e.g., permissible volume or rule numbers) is explained below.

Table 1, below, gives an explanation of each attribute.

TABLE 1FieldExplanationNameThe name of the nodeValidFuncThe name of a validating function that checks whether acandidate citation component matches the node.GenFuncThe name of a function that generates the citation componentfor this node. The generated citation component replaces thestring that the writer entered (e.g., by replacing “Procedure”with “P.”) to generate a citation component in the outputcitation that adheres to the selected citation system.WrongA description is provided below.FallbackA node may have the fallback flag set (e.g.,<Fallback>1</Fallback> to indicate that, should all othergraph paths fail, the system 100 should continue processingthe graph forward from the fallback node. As a result, thesystem need not repeatedly incur substantial processingcosts to repeatedly process parts of a graph. Instead, thesystem may continue forward from the fallback node, whichmay include a validation rule that accepts any input (therebyallowing the system to continue forward regardless of thecurrent position in the input citation).ItalicThis field may be empty when the citation component doesnot require special formatting such as italics or underlining.Citation components that should include the formatting maybe marked with an integer, for example. The system mayextend formatting between citation components marked withthe same integer. Thus, for example, the first party namecomponent, the “v.” component, and the second party namecomponent may each be represented in the graph with an<Italic> field set to “1”. The system may then extend acontinuous underline under all three of the components whengenerating the output citation. The same citation may includemultiple citation components that are grouped together withdifferent integers, calling for multiple instances of extendedformatting in the same citation.CommentA comment field for general purpose use.

Six examples of attributes that the output rule may analyze and control include syntax, semantics, temporal, context, consistency, and pragmatics attributes. Each of these is described below. Note that some of these attributes may involve relationships between nodes. For example, the consistency rules may establish a relationship between two or more nodes that specifies that nodes remain consistent with each other. The consistency rules may also apply in a global sense, such as at the document level. To that end, the system100may maintain a global consistency record166of citation characteristics that should apply to each citation in the document. In the example shown inFIG. 1, the global consistency record166has established that an italic citation characteristic168should apply to each citation in the document. The system100may determine the global citation characteristics by prompting the writer for input, reading configuration files, checking configuration settings, by analyzing citations and taking, for example, the formatting or other features used with the first citation found in a document, or in other manners.

An output rule may also specify a transformation that maps an input to an output.FIG. 5shows the acts500that the rules engine126may take to apply a transformation rule. The rules engine126accepts an input (Act 502). The input may be a citation component such as “Federal” or other input. The input may be an input citation that the system100has processed as described below to determine that the input citation falls within a particular citation system. The rules engine126looks up the input in a transformation table160that implements mappings (e.g., the mappings161and164) of inputs to outputs (Act 504). The transformation table160may implement, for example, specific transformations of citations or citation components between pre-determined citations systems (e.g., The Bluebook and the Maroonbook).

The transformation may take many forms. In one implementation, the transformation table160includes a table that maps an input to a result, such as a table of state names and/or abbreviations for one citation system to the state names and/or abbreviations used in another citation system. The transformation table may also be a database that performs a lookup on complete or incomplete data, and that returns transformed data based on the database search results. For example, the database may include lookup logic that queries on an input citation such as “vanorden v governor perry”, first changing the input citation to “Van Orden v. Perry” and then, based on search results, obtains the output citation “Van Orden v. Perry, 545 U.S. 677, 125 S. Ct. 2854, 162 L. Ed. 2d 607 (2005)”. The rules engine126returns the output (Act 506).

The system100may access or maintain a name database of public figures, well-known individuals, or other persons whose names are expected to appear in citations. For example, the name database may include the names of past and present governors, IRS, FTC, or other government commissioners, presidents, secretaries, and other public figures. The system100may also analyze the citation for public figure keywords, such as “governor”, “president”, or “commissioner”.

When the system100recognizes a name or keyword, the system may transform the input citation to adhere to the selected citation system. For example, the system100may delete the word “governor”, lookup “perry” in the name database, and insert “Perry” in the output citation. In other implementations, the system100may prompt the writer for the name to use in the output citation, optionally including a list of names to choose from that the system100retrieved from the name database (e.g., “Perry”, “Pery”, or “Pearie”). The system100may update the name database with the input obtained from the writer, and may also establish a record that the input citation component (e.g., “governor perry”) transformed, in the past, to the particular output citation component (e.g., “Perry”). The system100may make future transformations or transformation suggestions based on the records of past transformations.

In addition, the system100may include a rule (e.g., a syntax or semantic rule) that governs the transformation of this particular citation component. For example, the rule may establish that the word “Governor” should not exist in the output citation. Such a rule may be used to form the output citation in keeping with The Bluebook rule 10.2.1(e), for example.

In addition to the example shown inFIG. 5,FIG. 14shows another example of the acts1400that the rules engine126may take to transform between citation systems. The rules engine126analyzes the input citation to find a graph that successfully parses the input citation (Act 1402). In other words, the rules engine126attempts to find a path through a graph that recognizes or validates the input citation or citation component. During graph traversal, the rules engine126stores and remembers recognized citation components (Act 1404). For example, in “Fed. R. Civ. P. 11”, the rules engine126records that the input citation includes a rule number with value 11 (e.g., the RuleNumber node matches the “11” portion of the input citation). After parsing the input citation, the rules engine126stores a representation of the input citation that is independent of all rule sets.

The representation may be, for example, the set of recognized citation components, and an identification of the type or nature of the input citation (determined, e.g., by which graph was successfully parsed). In other implementations, the representation may include master citation entries170and specific citation entries172. The master citation entries170may include the citation components that apply to each citation to a particular source of information. For example, the master citation entry for a citation to a specific case may include party names, year, reporter volume, and any other citation components that are true for the source of information. Master citation entries170may exist for citations to cases, regulations, statutes, constitutions, and other sources of information.

The specific citation entries172may store a reference back to a master citation entry, and information specific to the citation. For example, the specific information may be a pin page cite or a parenthetical explanation that applies to the specific citation. When a particular source of information is first cited, the system100may create a corresponding master citation entry (if one does not already exist for that source) as well as a specific citation entry. Subsequent cites to the same source generate additional specific citation entries172. As a result, the system may efficiently make global changes to source information, without changing numerous specific citations.

Given the selected citation system and applicable rule set (Act 1408) the rules engine126transforms the input citation, using the representation, to adhere to the selected citation system. To that end, the rules engine126may apply the representation to the applicable rule set (Act 1410). More specifically, the rules engine126may match the citation components in the representation to the citation components present in the applicable rule set for the identified type of input citation to generate the output citation (Act 1412). For example, the applicable rule set may include a rule number node. The rules engine126may then retrieve the rule number found in the input citation, and use the rule number in the position specified in the applicable rule.

The system100may also determine additional citation components for the output citation (Act 1414). The additional citation components need not be found in the input citation. For example, the additional citation component may be information that the selected citation system requires in a case citation, but that the input citation does not include because the information is not mandatory in the citation system of the input citation. The system100may generate the additional citation components based as specified in a rule set, may query an external database for the additional citation components, may prompt for the additional citation components, or may obtain the additional citation components in other manners.

Syntax Rules

A syntax rule specifies the internal structure that a value should adhere to. One example of a syntax rule is a rule that specifies that only one particular value is acceptable. Another example of a syntax rule is a rule that specifies that any string of words or numbers that form a grammatically correct sentence is acceptable.

Semantics Rules

A semantic rule specifies the meaning that a value should have. An example of a semantic rule is a rule that specifies that a date has the form of a month followed by a number that specifies a day within that month. “February 31” may be a syntactically correct date, but it is semantically wrong because the number following the month is supposed to indicate a particular day of that month and February never contains a 31st day.

Temporal Rules

A temporal rule specifies time constraints that a value should meet. An example of this is Bluebook Rule 10.7.1(d), which states that “cert. denied” should not be used on cases decided more than two years before a citation is written. “United States v. Baxter, 492 F.2d150(9th Cir. 1973), cert. denied, 416 U.S. 940 (1974)” is syntactically and semantically correct, but it would be temporally incorrect if written today because the case was decided in 1973. The citation would have been temporally correct on a citation written in 1974.

Context Rules

A context rule specifies the context in which a rule is or is not applied. In some citations systems, for example, once a source has been cited in full form, all future citations to the same source should be in short form. However, some citation systems also include a context rule that specifies that if there is a chapter break between the first citation and a second citation, the second citation must again be rendered in full form. Such a rule is a context rule because it states the context in which the rule applies. Another example of a context rule is to convert citations into hyperlinks to a remote information source when the electronic document in preparation is a Hypertext Markup Language or other web page document.

Consistency Rules

A consistency rule specifies that a citation component must be in the same form as some other citation component or citation component characteristic. For example, a consistency rule may specify that the names of court cases may be underlined or italicized, but also require that the same form be used throughout a document.

Pragmatics Rules

A pragmatic rule specifies how a value is processed. For example, in The Bluebook citation system, the names of months are always abbreviated in federal court filings according to table T.12. As a result, the first month of the year must be presented in a document as “Jan.” regardless of whether a writer uses “January”, “Jan.”, or “Jan” in the citation entered in the document.

The rules in the rule sets may be encoded in many different ways. In one implementation the rules may be encoded in data files. In other implementations, the rules may be encoded as executable instructions in the rules engine126or other program in the system100. Graphs, executable instructions, or other logic or combinations of logic may implement the rules described above. For example, the structure of a graph may itself represent proper syntax. As another example, semantic rules (e.g., February cannot have a day value greater than 28 unless the year is a leap year, in which case the day value 29 is also allowable), may be implemented with a post-processor function.

In one implementation, as illustrated inFIG. 15, the system100divides the processing flow into three phases1500: validation1502, post-processing1504, and generation1506. The validation phase may include parsing the input citation to find one or more graphs that accept the input citation (Act 1508). In validation, “Feb. 31, 2007”, for example, may pass the syntactic check.

In the post-processing phase, the system100may walk through each graph node and verify that semantic rules are met (Act 1510). In this example, the system100may determine that February cannot have a 31st day. The post-processing phase may also perform other rule checks, such as temporal rule checks (Act 1512) and pragmatic rule checks (Act 1514). As one example, the post-processing phase may determine that a subsequent history provided in the citation is not appropriate (e.g., because more than 10 years have passed, yet the citation includes a “cert. denied” component). As another example, the post-processing phase may enforce the pragmatic rule that “February” is given as “Feb.” in the output citations. For any rule that is not met, the system100may take responsive action, such as prompting the writer for a correction, marking the citation as semantically defective, inserting a warning note, label, or text into the source document with the citation, or taking other actions (Act 1516).

The generation phase1506, the system100may apply context rules (Act 1518) and consistency rules (Act 1520). As examples of enforcing consistency, the system100may apply the consistency rules that italics or underlines are used throughout the citations, and that “in banc” or “en banc” are consistently used. As one example of enforcing context, the system100may generate a citation to a case in full, short, or Id. format, depending on what contact requires. Thus, the system100may also take responsive action with regard to the rule checks made in the generation phase1506(Act 1522). Nevertheless, the system100may continue to store the full citation for future reference, even though a short form such as Id. is generated in the document.

In other implementations, the graph nodes may be extended with additional functionality to handle the post processing phase. For example, a graph node may specify a post processing function, using XML tags (e.g., a <PostProcessorFunc> tag pair). The system100may then call the post processor functions specified in the graph. Furthermore, the system100may apply different rules in different phases, may implement additional, fewer, or different phases, may execute any of the phases in parallel or in sequence, may forgo executing any specific phase, or may implement the processing noted above in many other ways.

Other Node_Type fields include Variable nodes and Constant nodes. The Variable nodes may have associated validator functions that will accept many different values. For example, the Federal node validator function may accept “Fed.”, “Fed”, and “Federal”. A Constant node may have a Validator function that accepts a single specific value (e.g., the string “of”).

The encoding600also specifies the node identifiers of nodes in the graph that lead to this particular node with the <Lines_In> tag pair612. A validator function is specified with the <Valid_Func> tag pair614, and a generator function is specified with the <GenFunc> tag pair616. Additional examples in the encoding600include a specification of the specific value of the citation component using the <Value> tag pair618and that a citation component should be accepted, but not generated by using the <Wrong> tag pair620.

When a node has the <Wrong> tag set, the system100will not move through that node any further through the graph when generating a citation. Thus, the <Wrong> tag acts as a block to generating incorrect output. Instead of proceeding through the node, the system proceeds down an alternate path through the graph that generates a correct citation.

However, the system100may accept a citation component that is incorrect when processing an input citation, then set the <Wrong> tag on that node to prevent incorrect subsequent output. For example, the citation “(2d Cir., 1969)” should not include a comma after the “Cir.”. Nevertheless, the system100may accept “Cir.,” as part of the input citation knowing that “Cir.” is correct. Thus, the graphs may include nodes that capture common mistakes in citation, or other errors, without rejecting the input citation and without generating incorrect output citation components.

Additional, different, or fewer tag pairs may be used to define a rule. Other representations including database tables, relations, name-value pairs, and others representations may be used to define the rules. Further, although the example given here shows the rule represented in plain text, the rule may also be stored as compressed, encrypted, or otherwise transformed for purposes of optimization, security, ease of use in different environments, and to achieve many other objectives.

FIG. 7shows an encoding of the rule as executable instructions in a computer program. The instructions inFIG. 7are Java instructions. The first line702declares a method that will return the value ‘True’ when the method is given a citation that conforms to the rules of the “procedural_rules” citation form. Otherwise the method returns ‘False’. The second line704saves a copy of the citation so that if the method does not recognize the citation, the method may restore the citation to its original form, optionally to be checked against different citation forms.

The next two lines706determine whether the input leads with a state or something close to the word “Federal”. The lines706perform the analysis specified in the first decision in the graph ofFIG. 2that accepts a state or something close to the word Federal. In this example, “recognize state” and “recognize_federal” are the validator functions. If both validator functions reject the input, then the original value of the citation is restored at line708and control is returned to the caller with an indication that the input does not correspond to the procedural rules citation form at line710. If one of the validator functions accepts the input then the method proceeds to the next statement that will continue working through the rule graph and checking the citation.

The system100provides the writer with the ability to flexibly specify a desired citation system and flexibly change citation systems.FIG. 8shows the acts that the rules engine126may take to determine the selected citation system and an applicable rule set for the selected citation system. The system100obtains a list of available citation systems and rule sets (Act 802). In doing so, the system100may search a database, consult a configuration file, check manually set configuration options, accept input from the writer, or in other ways.

The system100determines a selected citation system (Act 804). The system100may determine the selected citation system in many ways. As examples, the system100may prompt the writer for the desired citation system, prompt the writer for the purpose of the document, using a default selected citation system, analyze available information (e.g., header text or title page text that gives a court name or jurisdiction or configuration settings that specify the court) to infer the citation system to use, or determine the selected citation system in other ways.

The system100also determines an applicable rule set for the selected citation system (Act 806). The system100may determine the applicable rule set using the same techniques noted above for determining the selected citation system. For example, if the writer specifies The Bluebook citation system, the system100may prompt the writer for the particular edition of The Bluebook to use, and responsively access the rule set applicable for that edition.

The system100may also obtain additional rules for the selected citation system (Act 808). For example, the system100may prompt the user to enter any overriding rules that should be adhered to. As another example, the system may query an external authority (e.g., an external database of up-to-date rules) on the citation system to determine whether any rules for the citation system should be added, removed, or modified. The system100may then merge the rule changes and resolve conflicts with the existing rules established in the system100(Act 810). As examples, the system100may delete, replace, or update existing rules with the newly obtain rules using a first-in-time, last-in-time, or other technique.

The system100may apply rules and process added, deleted, or changes rules in several different ways. As examples, when the rules are obtained from a data file, the system100may read the rules into internal data structures, map them into memory, or gain access to them in other ways. When the rules are encoded in a computer program, the system100may load the rules into executable memory by opening them as a shared library, reading them into memory as an overlay, or gain access to the rules in other ways.

Once the citation system and application rule set are determined, the system100may bind them to the electronic document (Act 812). As examples, the system100may write a configuration file, insert citation system and rule set specification information into the electronic document, or otherwise bind the citation system and rule set to the electronic document. As a result, the citation system and rule sets may follow the electronic document, without the need for the writer to again specify the desired citation system or applicable rule set. Instead, the same citation system and rule set may be used each time the document is opened.

The rules engine126applies the applicable rule set to input citations (e.g., all citations or selected citations in a document). The rules engine126may also insert an output citation (e.g., a corrected form of the input citation, or the input citation transformed into a citation in another citation system) into the electronic document or may communicate the output citation to other logic for insertion into the document (or any other purpose). The rules engine126may also insert the output citation into another document such as a Table of Authorities, add the output citation into a different place or multiple places in the document such as a Table of Contents, give the output citation to other logic for further processing, or other steps with the output citation. The rules engine126may communicate the output citation back to the entity that delivered the input citation, to another entity, or may take other actions with the output citation, such as tracking and compiling statistics on common problems with input citations.

FIG. 1shows the rules engine126integrated into a word processor. The rules engine126need not be incorporated into any particular electronic document processor, however. The rules engine126may instead be a separate program, as one example.

FIG. 9shows the acts that the rules engine126may take to determine output citations. The rules engine126receives an input citation (Act 902). The rules engine126may accept the input citation directly from a writer via a keyboard, voice recognition device, or other input device; from an interprocess message; from a communication received over the communication interface114; by reading the input citation from an electronic document; or in other ways.

An input citation may take many forms including a correct or malformed citation, a nickname, an abbreviation, or any other data that allows the rules engine to transform the reference into a correct citation. Examples of references include, but are not limited to, the following: Watts v. United States, 394 U.S. 705, 706 (1969); Id.; Watts; 764 F.2d143; Voting Rights Act of 1965; Sarbanes-Oxley; §1983; #1; C:\xyz.dat; madison v marbury; http://caselaw.lp.findlaw.com/cgi-bin/getcase.pl?court=US&navby=case&vol=000&invol=03-1500; and Llera Plaza II.

The rules engine126evaluates the input citation or other information to ascertain the applicable rules to apply (Act 904). The rules engine126may ascertain the applicable rules in one of several ways. As one example, the rules engine126may obtain from the writer a rule set selection of rules to apply to a given citation. Alternatively, the rules engine126may automatically analyze and recognize a given citation form and apply an applicable rule set automatically. When an applicable rule exists, the rules engine126applies the rule to the input citation (Act 906). The rules engine126continues checking for additional applicable rules until no more are found.

To recognize an input citation, the rules engine126may begin at the leftmost node of a citation rule graph (e.g., the graph200) and process the graph from left to right. The rules engine126may move along the graph connections until the rules engine126reaches the rightmost node (a successful traversal of the graph). Consider the example of a citation to “Fed. R. of Evid. Rule 402”. From the leftmost node, the Begin node202, the rules engine126moves to the right into either the State node206or the Federal node208. Multiple instances or threads of the rules engine126may process alternative graph paths simultaneously.

Each graph node includes a rule that controls the form that the citation component represented by the node may take. The rules engine126may enforce the rule with a validator function. A validator function may be implemented with processor executable instructions that compare an input with the rules for a particular node. If the validator function determines that the citation component conforms to the rules of the node, the validator function accepts the citation component, otherwise the validator function rejects the citation component.

The first word in the example is “Fed.” To decide whether to move into the State node or the Federal node, the validator function for each node is executed. As shown inFIG. 3, the validator function for the State node is a function named is_US_state. The is_US_state validator function will use a list of state names and abbreviations to report that “Fed.” is not the name of any US state. Therefore, the input “Fed.” does not cause a transition into the node labeled “State”. As shows inFIG. 3, the validator function for the Federal node is a function named is_close(“Federal”), which validates that the input is close to the word “Federal.” The validator function may apply a pre-selected distance metric, compare the input component to table entries of strings “close” to “Federal” or take other steps to determine whether the input component validates, thereby transitioning the rules engine126to the Federal node208.

The next citation component in “Fed. R. of Evid. Rule 402” is “R.” The validator function in the Rules node may be is_close(“Rules”) and may determine that “R.” is close to “Rules”, thereby transitioning the rules engine126to the Rules node210. From the Rules node210, it is possible to transition to the Of node212, the Evidence node214, the Civil node216, or the Criminal node218. Each of these nodes may also use an “is_close” validator function. In this example, the Of node212accepts the next citation component and the rules engine126transitions from the Rules node210to the Of node212, and from there to the Evidence node214(or the Civil node216or Criminal node218).

The Civil node216and Criminal node218transition to the Procedure node220. To match the Procedure node220, a validator function for the Procedure node220attempts to recognize the word Procedure, or a string that is close to, or otherwise validates for the word Procedure (as examples, “Proc.”, and “P.”). The validator function may be specified as noted above with regard to the other validation functions, for example, using XML to specify: <ValidFunc> is Close(“Procedure”)<NalidFunc>. The Procedure node220may include a generator function that specifies how the Procedure reference should appear in the citation. For example, the generator function may be specified with <GenFunc> Generate(“P.”)</GenFunc>. The system100thereby generates the correct output citation component “P.” for the Procedure citation component, regardless of whether the writer entered “Procedure”, “Proc.”, or other string to indicate a Procedure component.

When the rules engine126arrives at the RuleNumber node222, the associated validator function implements both syntax and semantic rule checks. The validator function may then determine whether the input citation component includes a number, but also that the number identifies one of the Federal Rules of Evidence. In the example, the citation component is “402”, which is in fact a valid rule of evidence, so rules engine126accepts the citation component and transitions into the End node204. The End node204may mark the end of the graph and need not validate or consume any input. Given a successful graph traversal, the rules engine126may store status information that records the citation as a citation within the citation system(s) that includes the rule represented in the graph. The rules engine126may use this information as an aid in transforming the citation into an output citation that adheres to another citation system, for example by consulting transformation tables or graphs that specify conversion from one citation system to another.

Although selected aspects, features, or components of the implementations are depicted as being stored in memories, all or part of the systems, including methods and/or instructions for performing methods, may be stored on, distributed across, or read from other machine-readable media. The machine-readable media may include, for example, secondary storage devices such as hard disks, floppy disks, and CD-ROMs; a signal received from a network; or other forms of ROM or RAM either currently known or later developed.

Specific components of the system may include additional or different components. A processor may be implemented as a microprocessor, a microcontroller, a DSP, an application specific integrated circuit (ASIC), discrete logic, or a combination of other types of circuits or logic. Similarly, memories may be DRAM, SRAM, Flash or any other type of memory. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, or may be logically and physically organized in many different ways. Programs and instruction sets may be parts of a single program, separate programs, or distributed across several memories and processors.

FIG. 10depicts an example implementation of a citation system1000. InFIG. 10, the data processing system1002includes a memory1004. The document processing program1006resides in the memory1004, and includes executable code1008for document processing. The document processing program1006also includes rules engine executable code1010that implements the rules engine126. The rules engine and document processing program may communicate through interprocedural calls such as function calls or intraprocess message passing.

FIG. 11shows a second example implementation of a citation system1100. InFIG. 11, the rules engine program1104, including rules engine program executable code1106and the document processing program1006are in different processes on the same data processing system1002. The document processing program1006includes an interprocess interface program1102and the rules engine program1104also includes an interprocess interface program1108. The programs1006and1004may send communications1110through the interfaces1102and1008using interprocess communication techniques including shared memory, a message passing interface (MPI), or another communication interface.

FIG. 12shows a third example implementation of a citation system1200. InFIG. 12, a first data processing system1202includes a memory1204. The memory1204holds the document processing program1206, including document processing executable code1208. Also included is a network interface program1210. The network interface program1210may include instructions that transmit and/or receive messages1212to the second data processing system1214.

The second data processing system1214includes a memory1216that holds the rules engine program1218. The rules engine program1218includes rules engine program executable code1220. A network interface program1222is also present, and includes instructions that transmit and/or receive the messages1212to the first data processing system1202. The network interface programs1210and1222may implement the TCP/IP network communication protocol, or other messaging protocol.

In general, the systems described above may use a communication interface to exchange data, including input and output citations, citation components, electronic documents, service requests, rule sets, and other data. The communication interface may be implemented in many different ways. As examples, the communication interface may include physical layer elements, such as a network interface card, may include shared memory, interprocess communication code, a MPI, an application programming interface, message passing mechanisms, a dynamic link library (DLL), or other communication interfaces. The DLL, for example, may implement code that communicates data through the network interface card. As another example, the DLL may itself implement the rules engine126, citation server logic, or rule sets. A service requester may then request citation services by calling functions provided by the DLL.

FIG. 13shows a citation transformation server1300in communication with service requestors1302,1304, and1306over the network(s)1308(e.g., the Internet or a Local Area Network). The citation transformation server1300includes a citation system, a rules database1310that stores the available citation systems and the applicable rule sets for the available citation systems, and a name database1312(described above). The service requesters1302-1306submit citation analysis, verification, error checking, and/or transformation requests to the citation server1300. The requests may include individual citations, electronic documents with one or more citations, or other requests. The requests may include account information, such as billing account or other charging information that permits the citation transformation server1300to charge the service requestors a fee for processing the requests. The citation server1300processes the requests and returns the results to the service requesters1302-1306.

This application is filed with and incorporates by reference a code appendix on CDROM. The code appendix provides XML definitions for case, statute, procedural, and other rules. Files that omit a “.h” component in their filename are graph files. Files that include a “.h” component in their filename are linkage files. The linkage files establish the availability of graphs that may be called from other graphs using graph call nodes. An example of a CallSubGraph node is shown in Table 2.

The x and y coordinate entries specify where to display the node on a graphical user interface. The dependencies entry specifies the nodes the feed into this node. The <Subgraph> tag gives the name of the graph to call. The linkage file associated with the graph file specifies the node number for the name of the graph that is called as nodes may have identical names. An example of an entry in a linkage file is given in Table 3.

The member entries each describe an external symbol (e.g., the name of a graph that may be called) In this example, the node101called FRParenthetical, is externally visible and can be referred to by a CallSubgraph node. In addition to the nodes described above, the graphs may include synchronization nodes. A synchronization node is an intermediary node that specifies connections between other nodes, operating, for example, as a many-to-many connector between input nodes to destination nodes, without having explicitly replicate every link desired from input to output. Table 4 shows an example of a synchronization node.

In the example shown in Table 4, the SyncWithoutComma node, node295, gathers together the flow from nodes330,331,332,333, and396. Each of those nodes may then flow through this synchronization node to subsequent nodes. The subsequent notes specify node285as a dependency node.

Although selected aspects, features, or components of the implementations are depicted as being stored (e.g., as computer executable instructions or computer processable graphs) in computer readable memories, all or part of the systems, including methods and/or instructions for performing methods consistent with the system may be stored on, distributed across, or read from other computer-readable media. The computer-readable media may include, for example, secondary storage devices such as hard disks, floppy disks, and CD-ROMs; a signal (e.g., received from a network or received at an antenna); or other forms of ROM or RAM either currently known or later developed.

The logic described above may reside in the same or different threads, fibers, or other ways of organizing code and data within a process. Further, although certain logic may interact through a function call mechanism, other communication methods are possible including message passing, mutex or semaphore based systems, or by other communication techniques.

Specific components of the system may include additional or different components. A processor may be implemented as a microprocessor, a microcontroller, a DSP, an application specific integrated circuit (ASIC), discrete logic, or a combination of other types of circuits or logic. Similarly, memories may be DRAM, SRAM, Flash or any other type of memory. The processing capability of the system may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms. Programs and rule sets may be parts of a single program or rule set, separate programs or rule sets, or distributed across several memories and processors.

Furthermore, the system100may represent data implicitly such as in a normal form such as third normal form (3NF) or Boyce-Codd Normal Form (BCNF). The system100may also store some data in multiple formats in a single data structure or multiple data structures. Additionally, and of the citation systems, rules sets or other data may be compressed, encrypted, or otherwise encoded for faster access time, facilitation of certain operations, ease of implementation, ease of debugging, reduction in storage requirements, or to meet other objectives.

Thus, the citation system provides that capability to use one or more dynamically selected rule sets to determine information required to create a correct citation, to generate citations from one or more dynamically selected rule sets, and to automatically regenerate citations when a new rule set is applied. The citation system may encode, access, and apply many different types of rules, including syntax rules, semantic rules (for example, the case reporter (e.g., U.S.) should be acceptable for the court (e.g., the Supreme Court) to which the document will be submitted), context rules, consistency rules (e.g., use italics or underlining consistently), temporal rules, and other rules.