Language selection

Search

Patent 2400489 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2400489
(54) English Title: INFORMATION DELIVERY SYSTEM AND METHOD
(54) French Title: PROCEDE ET SYSTEME DE DISTRIBUTION D'INFORMATIONS
Status: Expired
Bibliographic Data
(51) International Patent Classification (IPC):
  • H04L 12/16 (2006.01)
  • G06F 16/958 (2019.01)
  • G06F 17/00 (2019.01)
(72) Inventors :
  • KARAEV, ISAAK (United States of America)
  • BAIRD, GEORGE (United States of America)
  • BLAZEK, PAVEL (United States of America)
  • KITAIN, EDUARD (United States of America)
  • PROHOROV, DMITRY (United States of America)
  • LEISY, JACQUES (United States of America)
  • URAZOV, YURI (United States of America)
  • ZUCKNOVICH, STEPHEN (United States of America)
(73) Owners :
  • MULTEX SYSTEMS, INC. (United States of America)
(71) Applicants :
  • MULTEX SYSTEMS, INC. (United States of America)
(74) Agent: SMART & BIGGAR LLP
(74) Associate agent:
(45) Issued: 2007-05-22
(22) Filed Date: 1997-05-29
(41) Open to Public Inspection: 1997-12-11
Examination requested: 2002-09-23
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): No

(30) Application Priority Data:
Application No. Country/Territory Date
08/658,966 United States of America 1996-06-04

Abstracts

English Abstract

The secure electronic distribution of research documents over the world wide web to investors. A repository server (2) receives research documents from contributors (14, 16, 18, 20, 22). Also received are corresponding document profiles with information relating to each research document including authorization information specifying who is permitted to access each research document. The repository server (2) includes a first database (11) for structured query searches and a second database (13) for full text searches. The web server (4) receives requests from investors for research documents that satisfy a query. The web server (4) determines whether the first database (11) or the second database (13) should be searched based upon the type of query. The repository server (2) transmits to the web server (4) a list of research documents that satisfy the query and which the investor is authorized to access according to the authorization information. The web server (4) formats the list of documents according to a template form. Optionally, queries can be optimized.


French Abstract

Des documents de recherche sont distribués à des investisseurs électroniquement et sécuritairement par le web. Un serveur dépositaire (2) reçoit les documents de recherche des contributeurs (14, 16, 18, 20, 22). Les profils de documents correspondants sont également reçus, avec l'information relative à chaque document de recherche, y compris l'information d'autorisation précisant les droits d'accès à chaque document de recherche. Le serveur dépositaire (2) comprend une première base de données (11) pour les requêtes structurées et une deuxième base de données (13) pour les recherches plein texte. Le serveur web (4) reçoit les requêtes des investisseurs relatives aux documents de recherche qui satisfont une requête. Le serveur web (4) détermine si la première base de données (11) ou la deuxième base de données (13) devrait être interrogée en fonction du type de requête. Le serveur dépositaire (2) transmet au serveur web (4) une liste de documents de recherche qui satisfont la requête et auxquels l'investisseur a un droit d'accès conformément à l'information sur les droits d'accès. Le serveur web (4) met en forme la liste de document conformément au format du modèle. Facultativement, les requêtes peuvent être optimisées.

Claims

Note: Claims are shown in the official language in which they were submitted.



68
CLAIMS:

1. A system for creating a web page including search
results arising from a database query, comprising:

a web server including an output channel coupled
to the Internet;

a plurality of templates, each template specifying
an output format and including one or more elements;

a computer-readable medium having computer
readable instructions stored thereon for implementing a
database program, said database program exchanging
information with said web server;

means for selecting one of the plurality of
templates;

means for receiving search results from the
database program;

means for sequentially passing the contents of the
selected template to the output channel until an element of
said one or more elements is reached;

means for processing said one or more elements in
the selected template in combination with the search results
according to a set of predetermined rules;

means for passing the output of the processing
step to the output channel;

means for flushing the output channel at
predetermined intervals.

2. For use at a web server coupled to the Internet
and a database program, a computer-implemented method for


69
creating a web page comprising search results arising from a
database query, said computer-implemented performed in one
or more computing systems, comprising:

providing a plurality of templates, each template
specifying an output format and including one or more
elements;

receiving user selection of one of the plurality
of templates;

receiving search results from the database
program;

sequentially passing the contents of the selected
template to an output channel until an element of said one
or more elements is reached;

upon reaching the element, processing the element
and the search results according to a set of predetermined
rules;

passing the output of the previous step to the
output channel; and

repeating the previous three steps until reaching
the end of the template.

3. The method of claim 2 further comprising the step
of flushing the output channel.

4. The method of claim 2 further comprising the step
of receiving the database query over the Internet from a
remote user.

5. The method of claim 4 wherein the remote user
selects the one of the plurality of templates.


70
6. The method of claim 4 further comprising the
initial steps of:

receiving a user identification code from the
remote user; and

determining if the remote user is entitled to
access the web server, said determining step being performed
by a computing system.

7. The method of claim 6 wherein the step of
providing a plurality of templates further comprises
providing a plurality of templates according to the user

identification code.

Description

Note: Descriptions are shown in the official language in which they were submitted.



= CA 02400489 2002-09-23
1

INFORMATION DELIVERY SYSTEM AND METHOD
Field of Invention

The=present invention is directed to a computer-based
system and method for the electronic distribution of
information, and more particularly, for the distribution
of information via the Internet to authorized recipients.
C,Qpvright Notice

A portion of the disclosure of this patent document
contains material which is subject to copyright
protection. The copyright owner has no objection to the
facsimile reproduction by anyone of the patent document
or patent disclosure as it appears in the Patent and
Trademark Office patent file or records, but otherwise
reserves all copyright rights whatsoever.

Backcround of the Invention

Current computer technology allows documents and other
information to be distributed electronically, from
computer to computer. Electronic distribution is


CA 02400489 2002-09-23
2

generally cost effective when compared with hard copy
distribution methods. Global computer networks, such as
the Internet, enable information to be distributed to a
wide range of people at locations around the world. One
of the many advantages of the Internet, particularly the
World Wide Web ("WWW"), is that the communication
protocols used are non-proprietary, thus enabling end
users to access and use the'Internet without the need for
customized hardware or software.
Often, an information provider wishes to provide
information to users on a controlled basis. For example,
the information provider may want to provide information
only to those users who have paid a fee or completed a
registration process, and also may want to restrict
access to certain types of information to certain classes
of users. Additionally, the information provider may
require that the format of the information provided to
one user be different from the format of the same
information provided to another user or class of users.
Further, some users only may be interested in certain
types of information available frQm a particular
information provider. Users may wish that the
information received from an information provider be
output in a format specific to that user.

Existing technology allows an information provider who
distributes information via the WWW to restrict access to
authorized users by means of, for example, a user
identification code and/or password. However, current
password authorization methods used on the WWW have a
number of significant problems. When using a browser
program, such as Netscape's Navigator program or
Microsoft's Internet Explorer program, to access web
pages, a user is simply making a request to a remote web
server (having a unique IP address) for a file. This


CA 02400489 2002-09-23
3

file is stored in the user's computer local memory and is
output by the browser program. Typically, web pages are
in HTML format (HyperText Markup Language). Each time
the user "moves" to a new web page, the browser program
makes a new request to a web server (which may be the
same or another web server) for a file. Thus, although a
user may provide a password to obtain a file from a web
server, the user typically does not log-out when the user
has finished with this file -- the user simply issues a
request for a file on another web server or closes down
his or her browser program.

When a user initially accesses a web server, most browser
programs can provide the web server.with an
identification code identifying the particular browser as
well as the user's Internet Protocol ("IP") address.
However, when a user accesses a web server through a
proxy server, many users may appear to have the same IP
address.
To prevent concurrent use of a user's identification code
and password (e.g., to prevent the user from distributing
the user's identification code and password for use by
others) when a user initially accesses a web server, the
web server, using current password technology, can
prevent other access with that identification code for a
predetermined period of time. However, if the user moves
to another computer or browser program, then the
authorized user will be prevented from accessing the web
server from the new computer or browser program.

Thus, a secure sign-on procedure is needed that prevents
multiple users using the same identification code and
allows an authorized user to move to another computer or
browser program and still be permitted to access the
secure web server.


CA 02400489 2002-09-23
4

When providing information via the WWW, information
providers can, in a crude way, "customize" the
information for a user. One simple example of
customization is providing the user with the results of a
query. Here, the user submits a query to the web server,
e.g., by completing a form, and, based on the user's
request, the web server creates a web page (or form)
comprising information satigfying the query and transfers
this web page (or form) to the user's browser program for
display. In such systems, the program used to create the
web page (or form) is "hard coded", so that if the
information provider wishes to change the format of the
information, this program must be recoded or replaced.
Recoding or replacing such programs is inefficient and
often time consuming.

Further, every user who submits the same query to the web
server will receive the same results in the same format.
Existing methods of providing information to WWW users do
2o not enable different users to be automatically provided
with different views of the information. Thus, a
procedure is needed to enable the provision of customized
views of requested information to WWW users.

When a user submits a query to a web server, the web
server will typically format and submit the received
query to a database program or search engine. There can
be many types of queries that a user submits via an
information provider's web server. For example, some
queries may request information based on categories
contained in a relatiorial database (e.g., all presidents
who were born in Virginia) while other queries may
require full text searches of textual documents (e.g.,
all documents containing the words "sell" and "IBM").
Currently, information providers maintain one database of
information that is used to obtain the results of all
types of queries. However, while a database search


CA 02400489 2002-09-23
w

engine may be fast and efficient in obtaining search
results for some types of queries, it may'be slow and
inefficient in obtaining search results for other types
of queries.
5
Moreover, when responding to queries via the WWW, the web
server is accessed by many users. Due to communication
delays over the Internet, it is wasteful to tie-up the
database program or search engine until each user has
received the full results of the user's query. It would
be desirable in some instances to provide a search
mechanism that allows asynchronous searching of a
database by multiple web users such that the database
program or search engine can take advantage of
communication delays when serving multiple users.

Thus, in summary, an Internet information delivery system
is needed that has a secure but flexible password control
mechanism so that information is provided only to users
who are authorized to receive it, that efficiently
retrieves any requested information, and that customizes
the views of information provided to users in a flexible
and robust manner.

Sun=arv of the Invention

The present invention provides an electronic information
distribution system that allows remote users to receive,
access and query information that is stored in electronic
form at a central server, called a repository server.
Ideally, users communicate with the repository server via
the Internet. The repository server is coupled to the
Internet by a web server. The repository server
comprises or is coupled to a plurality of databases of
information stored in electronic form.

Preferably, the repository server is coupled to one or


CA 02400489 2002-09-23

6
more remote contributor workstations. The information that
is stored at the repository server is received from the
contributor workstations in electronic form. According to
the representative embodiment of the present invention, the
information received from the contributor workstations are
files comprising one or more documents. These documents
typically would contain text, data, charts, graphs,
spreadsheets and the like, or combinations thereof, and may
be in many formats. It will be appreciated that any
information that can be stored in digital form, such as
photographs, videos, sound recordings, etc. may be stored in
the files received from the contributor workstations. In
the representative embodiment, files received from the
contributor workstations are converted at a central site
into predetermined format, e.g., for printable documents, a
common viewing format such as, for example, PDF format, and
thereafter provided to the repository server. In the
representative embodiment, each document submitted to the
repository server is accompanied by a document profile
comprising information organized according to predefined
fields relating to the document.

The web server includes a web server program. The
web server also includes a web server helper application
using the appropriate API such as, for example, the Common
Gateway Interface (CGI) program, Borland Graphic Interface
(BGI), Netscape Server API (NSAP) or Internet Server API
(ISAPI).

According to the representative embodiment of the
present invention, each user has a user computer, such as,
for example, a personal computer with an Intel Pentium
processor and a fast modem that the user can use to connect
to the internet. The user computer has one or more local


CA 02400489 2005-10-11
69275'-232D

6a
storage devices. In the representative embodiment, the user
computer executes Netscape's Navigator* 2.1 browser program.
However, other browser

*Trade-mark


CA 02400489 2005-10-11
69275'-232D

7
programs, such the Mosaic browser or Microsoft's Internet
Explorer 2.0 browser could also be used. -As used herein,
the browser programs executed by the user computer will
be termed "Internet browsers."
when the user initially accesses the web server, the user
is required to provide a user identification code ("ID")
and a password. The web se'rver submits a login request
to the CGI program to verify that no other user is using
the same ID. According to the present invention, a user
is permitted to access the web server from a different
user computer or using a different Internet browser;
however, the present invention prevents the user (or
other users) from "concurrently" accessing the web server
from more than one computer or Internet browser using the
same ID.

Once the user has provided the ID and password, the
repository server will determine what information that
user is authorized to receive. According to the present
invention, each user has authorization to access all or a
subset of the information stored at the repository
server.

In the representative embodiment, the repository server
can provide the user with a list of new documents that
have.been recently received by the repository server and
which that user is authorized to access. The user may
also request a list of documents that fit certain user-
specified search criteria. A list of the documents that
match that search criteria and which the user is
authorized to access is provided to the user computer.
The user can then select, request and view documents from
these lists.
Different users may be permitted to access different
subsets of the documents stored at the central
*Trade-mark


CA 02400489 2002-09-23
8
repository.

According to the present invention, the web server is
coupled to at least two database search engines in the
repository server. At least one search engine performs
at least full text searching of textual documents. At
least one other search engine performs at least searching
on predefined fields of infdrmation. When a search is
submitted by the user to the web server, it is determined
l0 what type of search is required, and the appropriate
query (e.g., full text, search on predefined fields) is
formulated 'and submitted to the appropriate search
engine. The search engine returns a results set to the
web server. Typically, the results set will comprise a
list of documents satisfying the query and that the user
has authorization to access. This architecture ensures
that the most efficient search engine is used to obtain
the search results and allows more than one search to be
conducted in parallel.
In the representative embodiment, the repository server
includes a number of optimizers. An authorization
optimizer builds the least expensive (in terms of
execution time) search selection clause which will
restrict the user's query to the database subset that the
user is authorized to access. A sorted queries optimizer
speedily provides users with the results set even when
the number of elements in the results set is substantial.
The web server sends a query block to repository server
for optimization and the actual database query is built
by a database server.

Communication delays over the Internet are used to make
apparent response time at the web server faster by
interleaving server access and response through an
asynchronous protocol to the search engine.


CA 02400489 2002-09-23
9

The web server can provide customized views of the
information provided to users. The web server has access
to a number of different template forms. The template
forms are written in a novel computer language, called
herein a "research access language" (or RAL) that
describes how to format a HTML document and integrate the
information from results set into this format. The web
server interprets the template form and creates a HTML
page comprising the information from the results set.
The web server may have a number of template forms, for
each type of query, for each user or class of user, etc.
Thus, each user or class of users may receive information
in a format defined for that user or class of users. The
template forms of the present invention provide an
additional advantage. Whenever the information provider
wishes to change the output format of the information
provided to users, a new template form is created and
used by the web server. Template forms can easily be
created (without having to "hardcode" any program) and
can be loaded for use without having to take the web
server off-line.

The present invention is ideally suited for providing
investment research reports to investors and investor
advisors. Brokerage and investment banking firms create
mounds of investment research reports on a daily basis
concerning thousands of companies and industries. These
reports are provided to investors in electronic form. At
present, these reports are distributed over proprietary
networks, requiring the installation and maintenance of
expensive hardware, software and communication lines.
Because of this expense, the number of users who have
access to these proprietary networks is limited. In the
representative embodiment, the present invention enables
investment research reports to be securely distributed to
irivestors over the Internet. The present invention
overcomes the disadvantages of Internet (e.g., slower


CA 02400489 2005-10-11
69275-232D

than proprietary networks, less secure, user interface
limited to HTML format) and enables investment research
reports to be distributed to a wider range of investors who
are authorized to receive such reports.

5 In accordance with the present invention, there is
provided a system for creating a web page including search
results arising from a database query, comprising: a web
server including an output channel coupled to the Internet;
a plurality of templates, each template specifying an output

10 format and including one or more elements; a computer-
readable medium having computer readable instructions stored
thereon for implementing a database program, said database
program exchanging information with said web server; means
for selecting one of the plurality of templates; means for

receiving search results from the database program; means
for sequentially passing the contents of the selected
template to the output channel until an element of said one
or more elements is reached; means for processing said one
or more elements in the selected template in combination

with the search results according to a set of predetermined
rules; means for passing the output of the processing step
to the output channel; means for flushing the output channel
at predetermined intervals.

In accordance with the present invention, there is
further provided a method to determine whether a user is
authorized to access a secure server from a remote computer
where the secure server does not require that the user logs
off, comprising: receiving a user identification code from
the remote computer; verifying the user identification code

against a database of authorized users; if verified,


CA 02400489 2005-10-11
69275-232D

l0a
providing the remote computer with a verification signature;
transmitting state information to the remote computer for
storage at the remote computer, the state information
including an authorization variable; receiving a request for

information from the remote computer, the request including
the verification signature; validating the verification
signature; receiving the state information from the remote
computer; retrieving the authorization variable from the
state information; if the authorization variable is empty,

providing a new value for the authorization variable,
storing the new value as associated with the user
identification code at a central location, and transmitting
the new value to the remote computer; and if the
authorization variable is not empty, determining if the

value of the authorization variable retrieved from the state
information matches a value for the authorization variable
stored at the central location associated with the user
identification code, and if there is a match, processing the
request for information.

In accordance with the present invention, there is
further provided a method for optimizing search requests
received from remote computers operated by users,
comprising: storing at a central server a plurality of
document profiles, each document profile corresponding to a

document and comprising information related to the document,
including a set of one or more authorization groups for the
document, each authorization group corresponding with a
contributor of the document; for each user, storing at the
central server a set of accessible groups specifying which

authorization groups of documents the user is permitted to
access; receiving, at a web server, a search request from a
user at remote computer for documents, the search requesting
including a limitation that the documents are from a


CA 02400489 2005-10-11
69275-232D

l0b
specified contributor; providing the search request to the
central server; at the central server, creating a first list
of groups of documents stored at the central server listing
the user's accessible groups that correspond with the

specified contributor; at the central server, creating a
second list of groups of documents stored at the central
server listing the groups that are not accessible to the
user and that correspond with the specified contributor; if
the first list is empty, denying the search request; if the

second list is empty, then constructing a search for all
documents of the specified contributor that satisfy the
search request; and otherwise, determining selecting the
shorter of the first list and the second list, and if the
shorter list is the first list, then constructing a search

restricted to groups in the first list, and if the shorter
list is the second list, then constructing a search
restricted to groups of the specified contributor not in the
second list.

In accordance with the present invention there is
further provided a computer-implemented method for
optimizing a query that requests a list of documents sorted
by time, the documents stored in a database, comprising:
providing a first query requesting a list of documents
sorted by time and a maximum number of documents;

determining a count of the number of documents that satisfy
the first query; if the count is less than or equal to a
predetermined threshold, then execute the first query and
return the results; if the count is greater than a

predetermined threshold, then determine if the first query
is for documents that are dated within a time range; if the
first query is not for documents that are dated within a
time range, then select a default time range as the time
range; create a second query comprising the first query with


CA 02400489 2005-10-11
69275-232D

lOc
a restriction for documents dated within a predetermined
first portion of the time range; execute the second query
and return the results; if the number of results returned is
less than the maximum number of documents, create a third

query comprising the first query with a restriction for
documents dated within a remaining portion of the time
range; and execute the second query and return the results.

In accordance with the present invention, there is
further provided for use at a web server coupled to the

Internet and a database program, a computer-implemented
method for creating a web page comprising search results
arising from a database query, said computer-implemented
performed in one or more computing systems, comprising:
providing a plurality of templates, each template specifying
an output format and including one or more elements;
receiving user selection of one of the plurality of
templates; receiving search results from the database
program; sequentially passing the contents of the selected
template to an output channel until an element of said one
or more elements is reached; upon reaching the element,
processing the element and the search results according to a
set of predetermined rules; passing the output of the
previous step to the output channel; and repeating the
previous three steps until reaching the end of the template.

Brief Description of the Drawings

Fig. 1 is a diagram of the overall system
architecture of the present invention.

Fig. 2 is an example bulletin board screen
display.


CA 02400489 2005-10-11
69275-232D

lOd
Fig. 3 is an example document query form screen
display.

Fig. 4 is an example query results screen display.
Fig. 5 is a system architecture diagram of an

enhanced system according to the present invention.
Detailed Description

For ease of description, the embodiment of the
present invention described herein is that used for the
electronic distribution of investment research reports and

morning meeting notes ("reports") to investors via the
Internet's World Wide Web ("WWW"). However, the invention
is not so limited, and can be used, where appropriate, for
the electronic distribution of other types of information
via other types of networks.

Brokerage and investment banking firms spend large
sums of money creating, printing and distributing thousands
of graphic-rich research reports to investors (e.g.,

customer's remote sales offices, investment advisors,
brokers, portfolio managers, etc.). Brokerage and

investment banking firms distribute their reports only to
selected investors (e.g., their customers). However,


CA 02400489 2002-09-23
11

each investor may receive reports from more than one
brokerage or investment banking firm. Investors require
access to these reports on a timely basis. It is also
desirable to search all available reports for those
reports that may be of interest to the investor. The
representative embodiment of the present invention
provides an advanced, secure system to distribute reports
on a timely basis from brokerage and investment banking
firms to investors and that allows investors to access
and query a database of reports located at a remote
location.

As used herein, the terms "investor" and "user" include
any end user who is permitted to receive or access
information via the present invention, such as, for
example, customers of brokerage and investment banking
firms, employees of brokerage and investment banking
firms, investment advisors, brokers, bankers, portfolio
and fund managers, journalists, analysts, economists,
university professors, MBA students, etc.

Referring now to the drawings, and initially Fig. 1,
there is illustrated an overall system architecture
according to the present invention. A central repository
server 2 is coupled, via a central site 1, to one or more
remote contributor workstations 14, 16, 18. The
contributor workstations 14, 16, 18 are used by brokerage
and investment banking firms to submit reports to the
repository server 2. Optionally, the contributor
workstations 14, 16, 18 may be coupled to the repository
server 2 via proprietary network comprising a plurality
of contributor servers 20, 22. Alternatively or
additionally, a contributor workstation may provide
reports to the repository server 2 via the Internet.
in the representative embodiment, the contributor
workstations execute a program called Multex


CA 02400489 2005-10-11
69275-232D

12
Contributorr"", described in detail in the user manual
titled "MX Contributor - User Guide" available from
Multex Systems, Inc. of New York, New York.
The Multex ContributorT"' program is a real-time Windows-based
Contributor7N1 program is a real-time Windows-based
document indexing and transfer program used to
disseminate reports to the central site 1. The
contributor simply completes a form (a document profile)
displayed on the screen of the contributor workstation
14, 16, 18 and, at the specified time, the Multex
ContributorTM program transfers the report, along.with the
information in the completed form, to the central site 1.
At the contributor workstation 14, 16, 18, the
contributor completes a form relating to the report.
First, the contributor selects a report for distribution.
The report is stored, usually as a file, in electronic
form on the contributor workstation 14, 16, 18 or on a
server or network drive coupled to the contributor
workstation 14, 16, 18. The report may be in any
standard electronic format, for example, Pagemaker,
Microsoft Word for Windows, Corel WordPerfect, etc. The
form has fields relating to the report, for example,
title, author, subject, date and time of creation,
distribution level (setting distribution to a default
group of investors or one of a set of predefined groups
of investors) and expiration time. Optionally, the
contributor can enter additional information in the form,
such as, for example, ticker symbol, industry group,
synopsis, country, region, currency, etc.

Once the report has been selected and the form completed,
the user issues a "contribute" command to the Multex
ContributorTM program and the report and all the
information in the form is electronically transmitted to
the contributor server 20, 22. In the representative
embodiment, the reports are "pushed up" from the
*Trade-mark


CA 02400489 2005-10-11
69275-232D
13
contributor servers 20, 22 to the central site 1.
At the central site 1, the reports are processed.
Typically, the central site comprises a network of
computer processors. At the central site 1, each report
is converted in to a predetermined format.
In the representative embodiment, all reports
received at the central site 1 are converted at the
central site 1 into a format that can be read by the
Acrobat Exchange program, available from Adobe Systems.
The reports are then provided by the central site 1 to
the repository server 2.

Where desired, the repository server .2 can also receive,
store and enable the distribution of other useful
information, such as, for example, news reports received
from wire services, government reports, product reviews,
etc.
The repository server 2 comprises or is coupled to at
least two database servers 11, 13. Each database server
is coupled to a database storage device 10, 12. A
relational database 10, 11 allows field searching. In
the representative embodiment, the relational database
10, 11 is an SQL database server 11 coupled to a storage
device 10. A full text database 12, 13 allows word or
text searching. In the representative embodiment, the
full text database 12, 13 is a full text search database
server 13 (for example, a full text search engine
available from Fulcrum of Ottawa, Canada) coupled to a
storage device 12.

The information contained in the form is indexed in the
relational database 11 to allow retrieval of the report
by searching on such fields, e.g., searches by author,
date, industry, etc. where necessary, information in the
*Trade-mark


CA 02400489 2005-10-11
'69275-232D

14
form received from the contributor is mapped into
"common" terminology as used by the relational database
11. For example, the terms "sports utilities" and
"minivans" may be mapped and stored as the term
"automobile." ASCII text is extracted from the report
and stored in the full text database 12, 13 for full text
searching.

The repository server 2 provides investors with lists of
reports received from the contributor workstations 14,
16, 18 and allows investors to request lists of reports
that fit certain criteria. The investor can select
reports from these lists to down-load, view and/or print.
Generally, lists of reports can be generated by the web
server 4.

The contributor of a report can be notified that a
particular investor has accessed that report. The
repository server 2 maintains for each report a list of
those who accessed that report. The repository server 2
can transmit that list to the report's contributor on a
regular basis and/or when requested by the contributor.
' The repository server 2 is coupled to a web server 4
which in turn is coupled to the Internet via, for
example, a Ti or ISDN connection. The web server 4 is a
high powered server computer that runs a web server
program. In the representative embodiment, the web
server 4 executes Netscape's Commerce Server program.
The web server program allows web pages (in HTML format)
to be accessed by investors. The web server 4 also
executes other programs and subroutines as required.
Each investor has a user computer 6, 8, such as, for
example, a personal computer with an Intel Pentium*
processor and a fast modem. In the representative
embodiment, the user computer 6, 8 executes an Internet
*Trade-mark


CA 02400489 2005-10-11
69275-232D

browser program, such as, for example, Netscape's
Navigator 2.1 browser program. The Internet browser can
read files in HTML format. In the representative
embodiment, the Internet browser has access to a plug-in
5 program that can read files in the predetermined format.
In the representative embodiment, the plug-in is the
Acrobat Exchange program, available from Adobe Systems
that can read files in ".pdf" format. The user computer
6, 8 can connect with the Internet via, for example, a
10 commercial Internet Service Provider.

The web server 4 includes to a web server helper
application, which in the representative embodiment is
the CGI (common gateway interface) program, that is
15 activated by investors through web pages provided by the
web server 4. CGI is an interface between the web server
program and other programs. CGI lets those other
programs process HTML forms and other data coming from
Internet browsers, and then lets the other programs send
a response back the web server 4 to be delivered to the
Internet browser. The response can be HTML files, GIF
files, PDF files or any data that the Internet browser
can view. Thus, generally, when an Internet browser
requests a document from the web server 4, the web server
4 server program finds the document and sends it to the
Internet browser. However, if the Internet browser
requests a CGI program, the web server 4 server program
acts as a middleman between the Internet browser and the
CGI program. Other web server helper applications, such
as, for example, BGI, NSAPI or ISAPI, can be used in
place of CGI within the principles of the present
invention.

Access to the web server 4 begins from an investor's
Internet browser. Initially, the investor can access
"public" web pages generally describing some of the
features of the document delivery service of the present
*Trade-mark


CA 02400489 2005-10-11
69275-232D

16
invention. If the investor chooses to proceed, the
investor selects the "log-in" option from'the initial web
page.

User Verification: The first step the web server 4 takes
in handling an investor request is verifying that the
investor is permitted to access the information stored at
the repository server 2. This is accomplished using the
standard verification procedure built into the
communication protocol between Internet browsers and web
servers.

The web server 4 uses Netscape's Commerce Server's
ability to call custom verification subroutines when a
user tries to access CGI's and web pages. The web server
4 executes a subroutine and, using Netscape's NSAPI,
receives the ID and password that the investor is asked
to provide by the server/browser, and then verifies the
ID and password against a database of authorized users
(the user database) maintained at the repository server
2. If the user is verified, the Internet browser will be
given a verification signature. An investor who is not
in the user database, or enters an incorrect password, is
denied access to CGI's and web pages on the web server 4
by simply having the subroutine return an "Access Denied"
flag to the web server 4. This subroutine maintains an
open connection to the user database to improve
performance.

Whenever an investor makes a query for a list of reports,
the investor's Internet browser sends an HTTP (hypertext
transfer protocol) request that represents what the user
wants to the web server 4. If the request does not have
a verification signature attached to it, the web server 4
sends a command back to the Internet browser, causing it
to'prompt the user for an ID and password. The Internet
browser will then return this information to the web
*Trade-mark


CA 02400489 2002-09-23
17

server 4, which will verify that the user is entitled to
access the reports stored at the repository server 2. If
the user is verified, the Internet browser will be given
a verification signature. If not, the user will be
prompted again for his ID and password. Once access is
verified, the web server 4 will start the CGI program
named in the original HTTP request, along with any run-
time parameters that are specified in the request. The
CGI program first verifies that the user making the
io request (whose ID is passed to the CGI program by the web
server 4 through an environment variable) is the only one
using that ID at that moment. This is done by the
following method:
a. The CGI program gets the value of the Internet
browser "cookie", and extracts the value for
the named pair "mxauth" from the cookie.
b. If the value is empty, the CGI program
indicates that this user is accessing the web
server 4 for the first time since starting his
or her Internet browser. This user then
becomes the designated "current user of this
ID". A new random value for the "mxauth" part
of the browser cookie is generated, stored on
the web server 4 under this user's ID, and sent
back to the Internet browser, so that the
Internet browser can send it back-next time.
c. If the value is not empty, the CGI program
indicates that this user has previously already
accessed the web server 4 since starting the
browser program, and has been given an
authorizing cookie. If the "mxauth" value of
the cookie does not match the value stored on
the web server for this user, then this user
has been superseded by another user using the
same ID. The CGI does not perform the
requested task, and tells the user that access
is denied. If the "mxauth" value of the cookie


CA 02400489 2002-09-23
18

does match, then this user is authorized to
continue, and the CGI performs the requested
task. Each time the user is authorized to
continue, the time of the access is stored on
the web server 4.
d. A stored cookie value that is over an hour old
is considered "stale". A user whose code does
not match a stale 'cookie is allowed access as
if the user was initially signing on, as per b.
above.

Part of the'rationale for this method comes from the lack
of a "sign-off" from a user. When a user "leaves" the
web server 4 to browse other parts of the WWW, or closes
down his or her Internet browser, the web server 4 is not
informed.

(For reference, it is noted that cookies are a general
mechanism which server side connections, such as CGI
scripts, can use to both store and retrieve information
on a client side of an Internet connection. A web
server, when returning an HTTP object to an Internet
browser, may also send a piece of state information which
the Internet browser will store. Included in the state
object is a description of the range of URLs for which
that state is valid. Future HTTP requests made by the
Internet browser which fall within that range will
include a transmittal of the current value of the state
object from the Internet browser to the web server. For
no compelling reason, the state object is known in the
art as a "cookie.")

Other systems that allow only one instance of an ID to be
active at one time rely on a "sign-off" notification to
tell when the ID can be used again for "sign-on".
Because the web server 4 does not receive a "sign-off",
it is assumed that any new user is allowed to "sign-on"


CA 02400489 2002-09-23
19

with that ID, but all others that are currently using
that ID will now be denied further access,' until they
"sign-on" again (which involves closing down the browser,
then restarting it again). Furthermore, step d. is
included to keep a user from locking himself out of his
own ID if he happens to use browsers from two different
locations, such as home and office.

Thus, the following scenarios apply:
Scenario 1:
* User 1 signs on to the web server 4 at his
office. The CGI marks this browser/user ID
combination as the current user.
* At 5:00PM, he goes home, without closing down
his browser.
* At 5:45PM he signs on from his home computer.
The CGI now marks this browser/user ID as the
current user.
* At 10:00PM, he goes to bed, without turning off
his browser.
* At 8:00AM the next day, he arrives at work, and
tries to access the web server 4 again.
Because his 10:00PM cookie is now "stale", the
CGI marks the office browser/user ID as the
current user.
Scenario 2:
* User 1 signs on to the web server 4 at her
office. The CGI'marks this browser/user ID
combination as the current user.
* She then goes to the desk of User 2, and shows
User 2 "this new web service", using her own
user ID and password to sign on to the web
server 4. The CGI marks User 2's browser as
the current user of User 1's ID.
* After a few minutes, User 1 returns to her
original computer, to find that the CGI is


CA 02400489 2002-09-23

denying her access. User 2 has her locked out
by using her ID.

This user verif-ication system is particularly well suited
5 in information delivery systems where a fee is charged
per ID/password.

Web Server: The web server'4 uses a single CGI program
that handles all the types of requests that a user makes
10 to the web server 4. In the representative embodiment,
the types of requests that the CGI program can handle
are:
* Return a list of reports recently received at
the repository server 2.
15 * Reformat the current list of reports.
* Present a form that allows the user to specify
criteria for reports the user wants to access.
* Return a list of reports matching the criteria
in the form mentioned above.
20 * Return a list of reports summarized by report
contributor.
* Return a list of reports authored by a specific
contributor.
These requests are handled similarly, except for the
request for the form that the user fills in to specify
criteria for reports that the user wants to access.
Except for the third request listed above, a query is
formulated (whose parameters are determined by the run-
time arguments given to the CGI from the origina2 HTTP
request from the investor) by the web server 4 and sent
to the appropriate database 11, 13. A result set (a list
of reports) is returned and stored in memory. The CGI
then opens a HTML template form that comprises RAL
(research access language) elements, fills in each RAL
element with data from the result set and sends the
contents of the template to the Internet browser through


CA 02400489 2002-09-23
21

the Web Server 4. (In the case of the reports that are
summarized by contributor, the CGI simply'condenses the
list of headlines internally to summary form, before
using the template.) When the output from the CGI is
received at the investor's Internet browser, the browser
forms it into a "page" of information, along with action
buttons that the investor can select to initiate other
requests.

The request to present a report query form" (the third
request listed above) calls for the CGI to make two
queries from the relational database 11. The first query
is for a list of all contributors whose reports this
investor has authorization to access. The result set of
this query is used to fill a list box, from which the
investor is expected to pick the particular contributors
whose reports the investor would like to access. The
second query is for a list of all industries. The result
set of this query is used to fill a list box, from which
the investor is expected to pick the particular
industries that the investor is interested in. These
list boxes are defined in the HTML template with RAL
elements that are appropriate to this particular user'
request.
When a query is made, the web server 2 selects the
appropriate database to which the query is first routed.
In summary, if the query involves text matching (e.g., a
full text search) within reports, the query is passed to
the full text database 13. If the query does not invalve
text matching within reports, the query is passed to the
relational database 11.

In the representative embodiment, each database comprises
a number of database servers networked together. (for
example, database server 13 comprises a network of
database servers.) The database servers that are


CA 02400489 2002-09-23
22

available to the CGI are listed in the WEBPUBL.INI file
on the web server 4. When satisfying a non-text matching
query, the CGI will attempt to use an SQL type server
(e.g., 11) first. If that database server is not
available, the CGI will automatically switch to the next
available SQL database server. (If all SQL database
servers are not available, then the query will be passed
on to full text database sez'ver (e.g. 13).) When
satisfying a text matching query, the CGI will attempt to
l0 use an full text database server (e.g. 13). Again, if
that server is not available, then its backup will be
tried, and so on, until either a server can satisfy the
query, or all servers have been found to be down. In
addition to this automatic backup system, the CGI
practices semi-random selection of servers in an effort
to balance the load on the servers. This means that the
order that servers are tried is not always the same.

The HTML template forms that the CGI uses rely on forms
that are part of HTML. This allows the users to select
buttons on the pages to submit requests. Each page may
have several buttons, and the names of the buttons (the
actual visible text in them) are used in the CGI to
identify which button the user selected, and therefore,
which action to perform. Parameters for a query are
taken from other form constructs, such as text fields,
list boxes, and combo boxes. When a form does not
actively show a parameter value, but it would be
convenient for the CGI to maintain its value for the next
user request, the values are stored as "hidden" fields in
the form. (A hidden field is a form construct defined in
HTML for just this purpose.) This allows the parameters
of a query to be stored in a page that shows the results
of a query, so that they can then be used again as
starting values when the user requests the report query
form.


CA 02400489 2002-09-23
23

Authorization: In the representative embodiment, each
user has authorization to access a subset'of the
information stored at the repository server 2. The
contributor determines who has access to each report.
For example, an investment bank may designate that one of
its reports can be accessed only by its employees and
certain investors (e.g., its customers). Another report
may be designated as accessible by employees only. A
third report may be released for general distribution to
all who wish to access that report.

Every document contributed by a contributor is identified
by a"contributor ID". Furthermore the document is
assigned by the contributor to one or many "document
groups" owned by the contributor. (Documents usually
belong to one document group.)

The authorization information links an investor to a list
of document groups. Each investor may be permitted to
access documents in one, some or all document groups.

The repository server 2 constantly maintains an up to
date list of all the report groups available along with
the reports in the relational database 11. This list is
updated in real time after a report is added, and
completely refreshed daily (e.g., after report removal of
expired reports).

To submit a query, an investor must be identified by the
repository server 2. As the investor's credential are
checked (see above), the authorization information is
retrieved by the repository server 2. This authorization
information contains a list of report groups the investor
is permitted to access.
Optimizations: Two types of optimizations are performed
by repository server 2. The first is a simplification of


CA 02400489 2002-09-23
24

the authorization restriction. The second is an optional
optimization performed when the result set has to be
sorted; it is aimed at reducing the perceived response
time for the first answers to a query.
One of the characteristics of the architecture of the
present invention is that each query submitted to a
database 11, 13 is submitted as a structure description,
rather than a fully formed SQL statement. The actual SQL
statement is built by the database server 11, 13 itself.
Thus, the optimizations can take place on the raw query
definition (i.e., a structure definition) before
executing the query. This allows for more powerful query
optimization, and immediate query definition analysis to
select the proper mechanism to execute it.

1. optimization of the authorization restriction
In query definition, the investor can restrict the query
to a subset of the contributors the investor has access
to. This feature is used to implement queries like
"'What's new today from XYZ" and "All reports relating to
automobiles from PQR."

The purpose of the authorization optimizer is to build
the least expensive (with respect to execution time)
selection clause, which will restrict the investor's
query to the database subset the investor is allowed to
access.

The authorization optimizer uses this database content
information, combined with the investor's accessible
groups, as well as the contributor restriction in the
query, to build the restriction clause using the
following method.
The repository server 2 builds two lists of groups:
a) the list of groups the investor has requested and


CA 02400489 2002-09-23
has access to.
b) the list of groups the investor has requested but
doesn't have access to

5 Based on the number of elements in these two lists the
authorization optimizer will build the proper restriction
clause.

The following pseudo code describes the actual code used
10 to implement this algorithm:

for (all the groups in the investor's allowed group list) do
begin
if (group is in the query contributor restriction)
15 and group is in database)
then add group to the allowed list
end

for (all the groups in the database) do
20 begin
if (group is in the query's contributor restriction)
and group is not in the investor's allowed list)
then add group to the disallowed list
end
if (allowed groups list is empty)
then deny request
else if (disallowed groups list is empty)
then no restriction
else if (decisionFunction (allowed list, disallowed list))
then restrict to groups in allowed list
else restrict to groups not in disallowed list

The "decisionFunction" selects the shorter of the two
lists, namely, allowed list and disallowed list.

This optimization is more efficient when the database's
content is close from the investor authorization, since
it works by trimming the unnecessary restrictions for
groups without reports in the database.

To improve the efficiency of this optimization when the


CA 02400489 2002-09-23
26

number of groups in the database grows, the records could
be dispatched to different tables based on groups and the
same optimization algorithm could be used to select the
appropriate table and generate a different restriction
clause for every table targeted.
2. Optimization of sorted queries
The purpose of the sorted qderies optimizer is to provide
the investor with a fast answer even when the number of
elements to sort is substantial.

Unlike other applications used in memory sorting,
database sorting can rely on a buffer being swapped in
and out to disk from the main memory. When the number of
items to sort becomes significant, these I/O operation
can consume a lot of time. When an investor submits a
query via the Internet, the repository server 2 via the
web server 4 returns the first hundred rows by default,
the most recent reports being displayed first. The
actual query result may contain thousand of reports.
Thus, to display the hundred most recent reports, the
database has to sort the whole result set before
returning any answer.

In order to provide the investor with a quick answer, the
sorted queries optimizer will try to run multiple
queries, each for a smaller subset of the query. If the
query has to be sorted by the report's date, the sorted
queries optimizer divides the requested time period of
the query definition into multiple chunks and executes
the same query restricted to every chunk. Accordingly,
the sorted queries optimizer does not disturb the sorting
order.

Based upon tests of real data sets, it was found that it
was more efficient to perform only two queries, rather
than a lot of them. The first query is performed on the


CA 02400489 2002-09-23
27

first 10th of the time period, the second one on the
remainder period. For some typical queries, the second
subquery execution is unnecessary since the first query
had already returned the number of rows requested by the
investor.

For database 13, the retrieving of a count is orders of
magnitude faster than retridving the full result set.
The present invention takes advantage of this
characteristic to give an immediate feedback to the
investor. As soon as a query is submitted, the present
invention performs a count and sends this information to
the web server 4. The web server 4 can take advantage of
this feature to return that information to the Internet
browser by flushing it's internal buffers. That way,
even when the retrieval of the result set takes tens of
seconds, the investor gets some feedback in seconds.
Ideally, the sorted queries optimizer is used only for
sorted queries and when the number of rows is above a
given threshold. The present invention uses the result
of the count to trigger the sorted query optimization.
The following pseudo code describes the code used to
implement the sorted queries optimizer:
Retrieve the count
if (Query is sorted by a time) and (count > = threshold) then
begin
if (query definition contains a time range)
then get the time range from the query definition
else use an appropriate default value

add the restriction for 1/10' of the time range
retrieve the first rows
rows still to_fetch = rows_requested - rows already_fetched
if (rows_stil! to_fetch > 0)
begin
add the restriction for remainder of the time range


CA 02400489 2002-09-23
28

retrieve rows_stlll_t0_fetch rows
end
end
This optimization significantly improves the response
time when the time to perform the additional query is
negligible compared to the time necessary to sort the
full set.

The communication delay inherent in the connection
between the Internet browser and the web server 4 may
also introduce additional delays hiding some of the
optimization benefits.

Templates: According to the present invention, the web
server 4 executes a research access program. The
research access program provides a mechanism that enables
an investor to access the information in the databases
11, 13. The research access program also implements an
Internet CGI, which accepts input parameters from HTML
forms, and then using templates forms, generates HTML
pages comprising information retrieved from the databases
11, 13. The template forms are written in a novel
computer language, called herein a "research access
language" (or RAL) that describes how to integrate the
information retrieved from the databases 11, 13 into this
form. The template forms include RAL elements, as
discussed in detail below.

The present invention allows investors to submit queries
and receive in response thereto a list of reports that
satisfy the queries. The queries are constructed from
one or more search parameters, including: which
contributing company published the report; which stock
symbols figure prominently in the report; when the report
was published; what industries are featured in the
report; and keyword search parameters.


CA 02400489 2002-09-23
29

An investor may enter search parameters at a user
computer 6, 8 via a web page provided by the web server
4. When the investor selects the "submit" button on the
web page, the search parameters are forwarded by the
Internet browser to the web server 4. The search
parameters are used to form a query.. The query is
submitted to the appropriate database 11, 13 and a list
of matching documents is gerierated. This list is
formatted on the web server 4 into HTML form, and sent to
the investor at the user computer 6, 8, where the
investor's Internet browser displays the list to the
investor.

The input to the research access program of the present
invention comes from HTML forms completed by investors.
The fields that can be searched on for document queries
(and the expected values of such fields) include:
date: A date range from "today" backwards, matching a
document's official release date. Possible values
include:
0 Today
1 Last 2 Days
2 ThisWeek
3 Last 7 Days
5 Last 14 Days
7 This Month
8 Last 30 Days
10 All Dates
12 Last 60 Days
13 Last 90 Days
ticker: A field for ticker symbols.
query: A field for "free text" for searches of the
document text. Logical expressions can be
used, including the ampersand ('&') for a
logical 'and', and the pipe character ('1') for
a logical 'or'. Parenthesis can be used for
grouping expressions, and double quotes can be
used_to group words into phrases. All free
text searches are not case sensitive.
For example:


CA 02400489 2002-09-23

microsoft Find documents with 'microsoft'
in their text. _

ibm & microsoft Find documents with 'ibm' and
5 'microsoft' in their text.

ibm I microsoft Find documents with either 'ibm'
or 'microsoft' in their text.
10 ibm & Find documents with 'ibm',
( microsoft and either 'microsoft' or
I apple ) 'apple' in their text.
"earnings report" Find documents with the phrase
15 'earnings report' in their text.
contributors: A field for a comma separated list of
contributor ID's.
industries: A field for a comma separated list of
20 industry ID's.

There are a number of options for displaying information
to an investor. Some of these options are based on
technical limitations (such as line speed), while others
25 are based on the preferences of the investor (e.g.,
tabular output, prose, etc.). In order to react quickly
to changes in display requirements, the research access
program of the present invention utilizes template forms
to format HTML pages comprising search results.
30 According to the present invention, information retrieved
from the databases 11, 13 is placed in HTML page format
according to changeable template forms for said HTML
pages.

Thus, input (included in the HTML forms completed by
investor) to the research access program of the present
invention from an investor can include view mode
parameters relating to the format in which the investor
wishes to receive the search results and other
information. By supplying view mode parameters, the
investor can indicate to the web server 4 the desired
format of information, including how many records of
information are displayed. View mode parameters (and


CA 02400489 2002-09-23
31

expected values) include:
FT: Form Type. Expected values are 'L''for 'list
format', 'T' for 'table format', and 'D' for double line
format.
viewmode: This field indicates whether all records that
are returned by a query should be displayed (within
reason -- in the representative embodiment, there is a
display limit of 1000 records), or whether the number of
records display should be limited to a predetermined
number. If the 'viewmode' value is set to 'all', then
all records will be displayed. Otherwise, the number of
records displayed will be limited to the predetermined
number.

To submit a query, the user completes the fields
discussed above and then selects a "submit" button. When
an investor submits a query, the name and value of the
HTML form 'submit' button selected are treated as input.
In the representative embodiment, if the following
strings appear in the 'name' of the submit button, they
are treated in the following manner:
submit: Make a query according to the parameters listed
above.
bboard: Same as submit, except that the query
formulated includes the requirement that only documents
recently received at the repository server 2, e.g. since
midnight, be returned.
long: Change the view mode to a double line format.
short: Change the view mode to a list format.
table: Change the view mode to a table format.
summary: Same as submit, but also requests generation of
a summary list, breaking down the number of documents
that match the query by submitting contributor, and the
document type (research document, or morning call note).
In addition, generates stored HTML files for each
contributor in the summary, with one listing of the
individual research documents, and another for the


CA 02400489 2002-09-23
32

individual morning call notes. In the summary list,
generates links to the stored HTML files.*
notes: Same as summary.
all: Change the view mode to view all documents.
last: Change the view mode to view the 100 most
recent documents.
query: Generate a query form for the user.
count only: Display the number of documents that match
the query that matches the current parameters.
company search: Generate a list of companies (named
symbols), and place the list in a form from which the
user can chbose a company to perform a search upon.
choose symbol: Generate a query form for the user, pre-
setting the ticker input item to the value selected from
a symbol list.

The program output, of course, depends upon the input
including which 'submit' button was selected by the user.
The user's choice of a submit button determines which
template will be chosen for output.

Additionally, templates may be preset for a user or a
group of users. Thus, all users from a particular
company or geographic area may be assigned one group of
templates and all users from another company or
geographic area may be assigned another group of
templates.

Once a template file is opened, the characters in it are
passed directly through to standard output (the normal
CGI output channel), until an RAL element is encountered.
In that case, the RAL element is processed according to
the rules set forth below, and the output from the RAL
element is also sent to standard output, inserted into
the stream of characters in the template.

The following are examples of templates that may be used:


CA 02400489 2002-09-23
33

resultrl.tpl: List form output for a query.
resultrd.tpl: Double line output for a query.
resultrt.tpl: Table form output for a query.
resultcl.tpl List form output for a query, broken down
by contributor and document type during a
summary.
resultcd.tpl Double line output for a query, broken
down by contributor and document type
during a summary.
resultct.tpl Table form output for a query, broken down
by contributor and document type during a
summary.
resultq.tpl Query form.
resultx.tpl Query count.
resulti.tpl Symbol Guide form.
resultt.tpl Standard HTTP header prepended to each of
these templates.
bboardrl.tpl: List form output for a bulletin board.
bboardrd.tpl: Double line output for a bulletin board.
bboardrt.tpl: Table form output for a bulletin board.
bboardcl.tpl List form output for a bulletin board,
broken down by contributor and document
type during a summary.
bboardcd.tpl Double line output for a bulletin board,
broken down by contributor and document
type during a summary.
bboardct.tpl Table form output for a bulletin board,
broken down by contributor and document
type during a summary.
If a query is submitted with no parameters filled in, the
query is termed a bulletin board query and requests the
most recently available documents on all subjects.

Research Access Language
The following is a description of the RAL of the present
invention. RAL elements begin with a start token, finish


CA 02400489 2002-09-23
34

with an end token, and contain attributes in between.
The start token is followed by a "white space" character-.
Attributes are indicated by the name of the attribute,
followed by an equals sign ("="), followed by the value
of the attribute. An attribute name consists of
consecutive alphabetic characters. An attribute value
consists of consecutive non-white space characters,
unless it is enclosed by double quotes, in which case it
consists of all characters enclosed in a pair of double
quotes. An end token contained within a non-quoted
attribute value will truncate the attribute value, and
the language element. The following is a syntax
description of an RAL element:

start-token "(mx" < white-space >
white-space =(any ASCII character value between I aiid 32, inclusive)
end-token "}"
attribute : = < attribute-name > " = " < attribute-value >
attribute-name := "end" ~ "name" ( "true" ( "width" I "align" ( "start" (
"false" I "empty"
1 "match" "format" I "select" I "quotes"
attribute-value : = < double-quotes > < any-characters > <double-quotes> ~
<any-non-
white-characters (except end-token) >

Eramples:
(nix name=headline align=left width=50)
(mx start=documents}
{mx nanie = synopsis match=I true=Yes false=""}
Atrr,bute Names
alicn
The 'align' attribute specifies the alignment of the
output from the current element, within the width
indicated by the 'width' attribute in the element.
Possible vaI ues :
left (default)
center
right
See also:
width


CA 02400489 2002-09-23
emniptv
The 'empty' attribute specifies what should be displayed
as output for the current element, if the evaluated
output for the element (before padding or alignment) is
5 an empty string. This attribute is different from
others, in that it remains in effect for all following
language elements, until its value is changed.
Possible val ues :
(Any string. Use "" to indicate an empty string.)
end
The 'end' attribute marks the end of a loop. The
attribute value indicates which type of loop the current
element marks the end of.
Possible values:
document
contributorlist
industrylist
symbollist
See also:
start
false
The 'false' attribute specifies a string value to be
displayed as output for the current element if the
evaluated value for the 'name' attribute does NOT match
the value of the 'match' attribute. This string may also
use the '!ks' feature described under 'format'.
Possible values:
(Any string. Use I'll to indicate an empty string.)
See also:
match, true, format
format
The 'format' attribute specifies simple output formatting
for output of the current element. Its format is the
same as a C language printf{) format string, but allows


CA 02400489 2002-09-23

36
only string formatting (%s), and only one occurrence of
that within the format string. The evaluated value of
the element, as a string, is used as the value to fill
the '%s' in the formatting string. Some examples are:
Eormat string Element_Yalue DutputResuit
"%s" "ABC Corp." "ABC Corp."
"%15s" "ABC Corp." "ABC Corp. "%-15s" "ABC Corp." " ABC Corp."

"%5.5s" "ABC Corp." "ABC C"
"%s Documents" . "ABC Corp." "ABC Corp. Docunients"
Possible values:
(Any valid C printf() formatting string.)
See also:
align, width
match
The 'match' attribute specifies a value which the RAL
processor will compare to the evaluated result from the
'name' attribute. If the two values match exactly, then
the output from the current element will be the string
specified by the 'true' attribute, otherwise the output
will be the string specified by the 'false' attribute.
Some examples are:

Match Ttue Ealse Element_Yalue Qutput
"1" "Synopsis" "" "fl"

.1. "Synopsis" "" " 1 " "Synopsis"
Possible val ues :
(Any valid string. Use for an empty string.)
See Also:
true, false, name
na.me
The 'name' attribute specifies a data field to be used as


CA 02400489 2002-09-23
37

the output for the current element. The data field name
given as the value for this attribute is t'he name of a
field in a research document description, a contributor
description, an industry description, or a stock symbol
description. A list of data fields supported is given in
the "Data Fields" sections below. The field name can
also specify any CGI input field (for CGI programs using
RAL) by prepending an under5core character to the input
field name, or it can specify any INI file entry or
environment variable by prepending a dollar sign to the
entry/variable name.
Possible val ues :
(Any valid data field name, or _cgi-input-name, or
$ini-entry-name, or $environment-variable-name.)
See also:
match, Data Fields
auotes
The 'quotes' attribute indicates whether output from the
current element should be surrounded by double quotes.
If this attribute is set to "1", the 'width' and 'align'
attributes are ignored.
Possible values:
"1" to surround output by quotes
"0" to not surround output by quotes (default)
start
The 'start' attribute indicates the beginning point of a
loop, with each iteration of the loop enumerating the
data items specified by the value of this attribute. See
the section "Data Enumeration" below for details.
Possible values:
documents
contributorlist
industrylist
symbollist
See also:


CA 02400489 2002-09-23
38
end, Data Enumeration

true
The 'true' attribute specifies a string value to be
displayed as output for the current element if the
evaluated value for the 'name' attribute matches the
value of the 'match' attribute. This string may also use
the '%s' feature described iinder 'format'.
Possible va1 ues :
(Any string. Use "" to indicate an empty string.)
See also:
match,'false, format
width
The 'width' attribute specifies a number which gives the
desired width, in characters, of the output for the
current element. If the currently evaluated output is
shorter than the 'width' value, then the output is padded
with spaces on the left, right, or both, according to the
value of the 'align' attribute. If the output is longer
than the 'width' attribute, the output is truncated on
the right, and the last three characters are replaced
with periods ('...') to indicate a truncated value.
Possible val ues :
(Any valid integer.)
See also:
align
Data Eaumeration
The RAL attributes 'start' and 'end' are used to mark
elements that are to be repeated during the enumeration
of data objects. For example,
{mx start=documents}{mx name=headline}
{mx end=documents}
would cause RAL to enumerate all documents that match the
current query, outputting the headline of each one. (By
placing the 'end' element on the next line, it also


CA 02400489 2002-09-23
39

causes the headlines to be separated by an end-of-line
character). The available enumerations .are listed below.
All enumerations are filtered so as only to include
documents the user that is making the enumeration is
authorized to access. That is, not all users see the
same results when making enumerations, according to their
level of authorization.

documents
The 'documents' enumeration loops through the result set
of a query on the database of research documents. In the
current implementation, the input parameters to the query
are taken from CGI input items from an HTML page. They
are:
daterange: An integer from 0 to 12 specifying a date
range for the release date of a document. The
possible values are:
0 Today
1 Last 2 Days
2 ThisWeek
3 Last 7 Days
5 Last 14 Days
7 This Month
8 Last 30 Days
10 All Dates
12 Last 60 Days
13 Last 90 Days
ticker: A field for ticker symbols.
query: A field for "free text" for searches of the
document text. Logical expressions can be used.
contributors: A list of contributor ID numbers which
identify the contributors.
industries: A list of industry ID numbers relating
to the document.
The following fields are available within a'documents'
enumeration, listed with the data they output:

Analysts Names of the analysts that compiled the document.
AnalystIDs Numeric ID's of the analysts that compiled the document.


CA 02400489 2002-09-23

ByteCount Size of the docunient (in PDF form) in kilobytes or niegabytes.
Contributor Nanie of the company that compiled the docunietit. -
ContributorID Nunieric ID of the company that compiled tlie docunient.
DocID The internal system document ID nuniber.
5 DocType 'R' for a research document; 'M' for a ntorning call note: 'N' for a
tiews
document.
Headlinc The headline of the document. The systeni of the representative
embodimeiu
also surrounds the output from a element that displays this field with aii
HTML "anchor" to a CGI that downloads the PDF file for the document, or
10 generates an HTML page for documents with no PDF form.
PageCount The number of pages in the document.
ReleaseDate The official release date of the document.
Relevance A number from 0 to 1000 that indicates the relevance of the document
to the
free text that was used in the query. The higher the nuntber, the more
is matches on the free text.
SubmitDate The date the document was subntitted by the contributing conipany
to the
repository server 2.
Synibols A list of ticker symbols that the contributor listed as relevant in
the docunient.
Synopsis A "1"/"0" flag that indicates whether a synopsis is available for the
documetit.
20 By default, the value "Yes" is output if the synopsis is available, and ""
is
output otherwise. The representative embodiment also surrounds the output
from a element that displays this field with an HTML "anchor" to a CGI that
creates an HTML page with the actual synopsis text.

25 The following fields are available outside a'documents'
enumeration, since they are summary information or status
information. Their values depend on the same query used
within a 'documents' enumeration:
ChangeViewMode
30 Generates text that can be used within a button to
change the mode used to display documents. When the
current view mode is set to show all documents, this data
field generates "View Last ", where ### is equivalent
to the "Maximum" data field. When the current view mode
35 is not set to show all documents, this data field


CA 02400489 2002-09-23
41

generates "View All ###", where ### is equivalent to the
"Total" data field. This text can be used as the value
of a 'submit' button in HTML, and a CGI can perform the
appropriate action to change display modes.
ContributorFilter
Displays the name of the current contributor being
used to filter documents.
ContributorsText
Displays the names of all contributors whose codes
appear in the _contributors field.
Count
Displays the total number of documents actually
retrieved by a query, as opposed the number of documents
that actually match the query. When the view mode is set
to show all documents, this field is equivalent to the
"Total" data field. Otherwise, it is equivalent to the
"Maximum" data field.
CountFilter
Displays the number of documents that match the
current document type and contributor filter.
DocsShown
Generates variable text, depending on the view mode
(all documents, or the limited (100) set). If the view
mode is set to return all documents, this data field
generates the text "### Entries", where ### is equivalent
to the "Count" data field. If the view mode is not set
to view all entries, the data field generates the text
"Last ### of *** Entries", where ### is again equivalent
to the "Count" data field, and *** is equivalent to the
"Total" data field.
DocZypeFilter
Generates the text "Research", "Morning Call Notes",
or "News", depending on the current value of the document
type filter.
IndustriesText
Displays the names of all industries whose codes
appear in the _industries field.


CA 02400489 2002-09-23
42
Maximum
This data field is the limit on the number of
documents to be retrieved when the view mode is not set
to show all documents. In the representative embodiment,
this value is 100 by default, or the value specified in
the "MaxRows" entry in WEBPUBL.INI.
MaxRows
If the view mode is see to show all documents, this
data field is equivalent to the "Total" field.
Otherwise, it is equivalent to the "Maximum" field.
MorningNotes
This data field is the number of morning call notes
attributed to the current contributor specified in the
contributor filter.
News
This data field is the number of news stories
attributed to the current contributor specified in the
contributor filter.
Research
This data field is the number of research documents
attributed to the current contributor specified in the
contributor filter.
Total
This data field is the total number of documents
that match the current query parameters, regardless of
view mode, contributor filter, or document type filter.
ViewMode
This data field generates "all" if the current view
mode is set to view all documents that match a query.
This field generates "last" if the current view mode is
set to view only the last N documents that match a query,
where N is equivalent to the "Maximum" data field.
contributors
The 'contributors' enumerations is the same as a
'documents' enumeration, except that the documents are
grouped by their contributors. The only fields that can


CA 02400489 2002-09-23
43

be displayed are the contributor names, and the number of
documents in the research and morning notes categories.
This enumeration is used primarily for presenting
document summaries by contributor to the users.
The following fields are available within a'documents'
enumeration, listed with the data they output:
Contributor
Names of the contributor in a group.
MorningNotes
The number of morning notes submitted by the
contributor.
Research
The number of research documents submitted by the
contributor.

contributorlist
The 'contributorlist' enumeration loops through the list
of contributors from whom documents are available. This
list is not based upon any query parameters -- if a user
is entitled to see the documents of a particular
contributor, the contributor's name is returned in the
result set.

The following data fields are available within a
'contributorlist' enumeration:
ContributorID
An integer that identifies a contributor uniquely.
ContributorName, or Contributor
The name of the contributor.
The following data fields are available after a
'contributorlist' enumeration.
ContributorCount
The total number of contributors in the
'contributorlist' enumeration.

industrylist


CA 02400489 2002-09-23
44

The 'industrylist' enumeration loops through the list of
industries about which documents may be compiled. There
are no query parameters for the industry list. The
following data fields are available within a
'industrylist' enumeration.
IndustryID
An integer that identifies an industry uniquely.
IndustryName
The name of the industry.
symbollist
The 'symbol list' enumeration loops through all ticker
symbols/company names that match a given input string.
In the representative embodiment, the input string is
taken from the CGI input item named 'company'. If a
company name contains the input string, the ticker
symbol/company name is included in the result set for
enumeration.

The following data fields are available within a
'symbollist' enumeration.
SymbolID
The stock ticker symbol recognized for a company on
the stock market exchange where it trades.
SymbolName
The name of the company.
Progra_ Control
RAL allows logical control over its output. The -if,
-endif, and -defer allow a template to make decisions
about output based on run time values of CGI input
variables, environment or INI variables, and the values
of data fields from enumerations. If a -if element
evaluates to FALSE, then all text and elements between
the starting -if element and its terminating -endif
element will not be passed through to output. If a
-defer element is used inside a regular RAL element, then


CA 02400489 2002-09-23

the rest of the element is not evaluated, and is simply
passed through to output, without the -defer element.
This allows a template to evaluate some RAL elements, and
leave others to be evaluated later, if the output is used
5 as a template itself.

-if and -endif Usage
(nix -if <expression> }
10 (nix -endif)

where
expression = < value > < operator > < value >
value < string > I < number > I < variable >
15 operator = = = I < I > ! = I < = I > =
string < double-quote > [ < any-characters > ] + < double-quote >
number <digit> *
variable = [_ I S ] < alphabetic character> [ < alphanumeric characters > ] +

20 Only one expression is allowed. A variable that does not
evaluate to a known value will be treated as if it were a
string. If a variable is preceded by an underscore
("_11), its value is taken from a CGI input variable with
that name, minus the underscore. If a variable is
25 preceded by a dollar sign ("$"), its value is taken from
the environment variable or from the program's INI entry
which matches the variable name, minus the dollar sign.
The following example shows how the -if element can be
30 used to display some text and values only if there are
actually some morning notes in the result of the query.
(mx -if morningnotes ! = 0)
There are (mx name=morningnotes) -- Click the "AM Notes" button to access
35 them. <BR>
(mx -endif)


CA 02400489 2002-09-23
46

The following example shows how a CGI input variable can
influence the output. In this example, if the
"contributors" CGI form variable is not empty, then some
text will be output, along with a built-in field that
displays the names of all the contributors whose ID codes
are in the "contributors" CGI form variable.

{nix -if contributors != ""}
Query on contributors {mx nanie=contributorstext}
{mx -endif}

-defer Usage
The -defer element is simply a modifier for other
elements. It keeps the RAL from evaluating an element
immediately, and outputs the element as if it were plain
text, except it leaves the -defer out. For example:
<option value= 100 {nix-defer nanie= contributors match=100
true=selected}>Selectirnt Iteni 100
will output

<option value=100 (ntx nan-e= contributors niatch=100 true=selected) >
Selection Itent 100

the first time it is processed, and will this if that
output is processed:

<option value=100 selected> Selection Item 100

(This may leave the "selected" out, depending on the
value of contributors.)

One can have as many -defers as desired in an element --
they do accumulate. That is, having three -defers in an
element will cause it to defer evaluation until the
fourth processing.

An Exampl e Use of RAL
The following is an example of RAL used within an HTML


CA 02400489 2002-09-23
47

file. A web CGI program that processes RAL can use this
example file as a template, and fill in the RAL elements
with the derived values of a query. This HTML has been
simplified for the purpose of explanation, with comme-nts
in italics.

<HTML>
<HEAD>
< TITLE >
Bulletin Board
< /TITLE >
</HEAD>

<BODY>
<h2> <i>Bulletin Board</h2> </i>

< form method= "POST" action= "/CGIBIN/result.exe" >
< input type = "submit" name = "subaction" value = "Refresh" >
<input type= "submit" name= "subaction" value = "Query" >
< input type= "submit" name= "subaction" value= "Summary" >
<input type = "submit" name= "subaction" value = "AM Notes">

Conrpare tlie total matching records to tlie maximtun allowed in the display.
Ijthere are
more, show the "chatge viewing mode" button.
{mx -if total > maximum}
< input type= "submit" name= "subaction" value= "(mx name=cliangeviewniode)" >
{mx -endif)
< input type= "submit" name= "subaction" value= "Long Form" >
< input type = "hidden" name = "current" value = "bboard" > < br >

Display the total number ojdocuntents that matched, and how many will be
displayed in this
list.
< b > {mx name = docsshown} < /b > < br >
< /form >
<PRE>
< B > Submit Company Pgs Size Symbol Syn Headline
</B>
<HR>
This part is a document enumeration. The enun:eration shows the fields named
'updatedate', 'contributor', 'pagecount', 'bytecount', 'symbols', 'synopsis',
and 'headline'.


CA 02400489 2002-09-23
48

Around tlte 'syrropsis' freld, lhere is a use of tlre -if elenrent, which
decides whellter lo
output a hypertext littks to tlre synopsis. There is no -if element for'tlre
</A >, because a-r
extra one doesrr't hurt most browsers.
(Tlre followirrg litres are split up witli rrewlines to make it easier to read
-- runrring tliis
HTML, it will not give tlre desired results.)
{nix start=docunients}
{ nix name = updatedate width = 7}
{mx name=contributor width=20}
(mx name=pagecount widtli=3 align=right}'
(mx name=bytecount width=4 align=right}
(mx nanie = synibols widtli=10}
{mx -if synopsis = = 1)
<A HREF= "result.exe?subaction={mx name=synfile}">
(mx -endif}
(mx name = synopsis width=3} </A>
< A HREF= "result.exe?subaction= {mx name=docfile} " > {nix name=headline} <
/A >
(mx end=documents} </PRE>
<b>
Display tlre fraal counts.
(mx name = research} Research Documents < br >
(mx name=morningnotes} Morning Notes
{mx -if morningnotes > 0}
-- Click the "AM Notes" button to access tliem.
(mx -endif}
<br>
</b>
If there -vere more than a screenful of headlines displayed, create anotlrer
fonrr and display tlre
control buttons again, , just for the user's convenience.
{mx -if research > 17}
<hr>
<form method = "POST" action= "/CGIBEN/result.exe" >
< input type = "submit" name= "subaction" value= "Refresh">
< input type = "submit" name = "subaction" value = "Query" >
< input type= "submit" name= "subaction" value = 'Summary" >
< input type = "submit" name = "subaction" value = "AM Notes" >
{mx -if total > maximum)
< input type= "submit" name= "subaction" value= "{mx name=changeviewniode}" >
{mx -endif}
< input type = "submit" name= "subaction" value = "Long Form" >
< input type= "hidden" name= "current" value= "bboard" >
< /form >


CA 02400489 2002-09-23
49
{mx -endif)
</BODY>
</HTML>
It will be appreciated that the templates and research
access program described above are of general
application, and can easily be modified to be used in
many applications and fields. Accordingly, the templates
and research access language should be understood as
applicable to applications and fields other than for the
distribution of research reports.
Step-by-Step Examples
The following are three step-by-step examples
illustrating some of the principles discussed above. The
first example describes what happens when the user first
"logs in" from a non-secure "home pages" on the WWW, and
receives a Bulletin Board display. The second example
shows what happens when the user selects the "Query"
button that is on the Bulletin Board display from the
previous example. The third example illustrates what
happens when the user makes a query.

According to the representative embodiment of the present
invention, there are a number of predetermined types of
information displays available. A bulletin board display
outputs a list of the headlines of reports that have
recently been received by the repository server 2. (In
these examples, "recently received" is defined to mean
reports that have been received that day, e.g., since
midnight on today's date.). The bulletin board display
can include the time of submission of the report by the
contributor, the identity of the contributor, the number
of pages and size of the report, ticket symbols related
to the report, whether a synopsis is available and the
headline, all displayed one line per report. A query
results display comprises the same fields of information,
but for reports that satisfy a user's query. Each of the


CA 02400489 2002-09-23
s0

above two types of output can be displayed in other
formats, e.g., in long form which includes a two or more
line output for each report listing the headline, the
time of submission of the report by the contributor, the
identity of the contributor (company), the name(s) of the
authors of the report, the number of pages and size of
the report, ticket symbols related to the report, whether
a synopsis is available. A'summary display outputs a
three column table, each row listing a contributor, the
number of research documents at the repository server 2
available for that user from that contributor and the
number of morning notes at the repository server 2
available for that user from that contributor.

Example 1: Logging In, and Getting a Bulletin Board
If a user has accessed an initial non-secure home page of
the present invention, the user can select a link to "Log
In". The actual link is to an address
"/SCGIBIN/result.exe", where "result.exe" is the name of
the CGI program that generates response pages to user
actions. The directory /SCGIBIN is actually mapped on
the non-secure web server to the directory /CGIBIN on the
secure web server 4. This means that home pages are
handled by the non-secure server, but actual access to
reports is handled by the secure web server 4. When the
secure web server 4 receives the request to run
result.exe", the web server 4 first checks the request
to ensure that the Internet browser making the request is
authorized to access the web server 4. If the Internet
browser is not authorized, the web server 4 prompts the
Internet browser to ask the user, via a dialog box, for a
valid user ID and password.

In this example, the user enters the name llgeorge@1984",
and the password "wombat" and then selects OK. The web
server 4 now verifies that the user is authorized. This
is done by passing control to a subroutine named


CA 02400489 2002-09-23

51
"mxp_auth()" which consults the relational database's 11
list of valid users and their passwords. AIn this
example, the relational database 11 is an SQL server.)
If the given user ID and password matches a database
entry, the subroutine sets up the environment variables
HTTP_CID as "1984" to represent the company ID of the
user (taken from the "@1984" part of his ID), HTTP UID as
"2096" to represent the user's internal ID (taken from
the SQL sever's records), and HTTP MXP as "wombat" to
represent the user's password. The subroutine then
returns a REQ PROCEED value, and the web server 4 knows
it may then proceed handling the user's request to run
"result.exe".

The web server 4 next executes the program "result.exe",
with no additional arguments, because none were specified
in the hypertext link to it, and because the page that
the request was made from was not an HTML form, which
would have named data fields the user could fill in to
modify the request. First, "result.exe" verifies that
the user is not attempting access with the same ID that
another user is using. So "result.exe" retrieves the
value of the environment variable "HTTP COOKIE" which is
provided by the web server 4 (from the HTTP "Cookie"
value in the request from the Internet browser).
"result.exe" attempts to find a value in the cookie named
"mxauth". Since, in this example, this is the first time
this user/browser has "logged in", the "mxauth" value in
the cookie has not been set, so "result.exe" grants this
user access, generates an authorization string for this
user, stores the string where it can find it later, and
outputs a cookie value to the web server 4 that the
server will send back to the Internet browser.

The next thing "result.exe" does is to determine what
type of request the user made when calling "result.exe".
Since there are no arguments to "result.exe", and there


CA 02400489 2002-09-23
52

are no HTML form values, "'result.exe" defaults to
generating a Bulletin Board, which is a list of all
headlines that have newly arrived at the repository
server 2 today. The program has a choice of which type
of database server to query for the list -- the SQL
server 11, and the full-text search server 13. Since
this request does not require any full-text searching for,
values in documents, the "results.exe" program chooses to
contact an SQL server 11. If the connection fails for
some reason, the program will attempt to contact each
backup SQL server until there are no more to connect to.
The program will then fall back to attempting to
contacting the full-text search servers 13 until it finds
one that is up. Failure to find any available servers
will result in generation of an error message, and
termination of the program.

For the sake of this example, we will assume that
"result.exe" successfully connected to the SQL server 11.
This particular request would have no parameters, except
for specifying that only documents that have arrived on
the SQL server 11 since midnight are desired. The
request for the document headlines is immediately
submitted to the SQL server 11, which returns its results
asynchronously. This allows the SQL server 11 to begin
processing the request, while "resuZt.exe" moves on to
its next step. This next step is to open an HTML
template that is appropriate to the output requested by
the user. In this case, "result.exe" is generating a
simple Bulletin Board, so it is programmed to select a
template named "BBOARDR?.tpl". The question mark in the
name is filled in by the format that the user prefers his
headlines to be displayed in. Possible formats are
double line output (? ='D'), list output (? ='L'), and
table output (? ='T'). The formats that each user
prefers are stored in the same place that the user's
authorization code for the cookie is stored. The


CA 02400489 2002-09-23
53

"result.exe" program goes to that storage area, looks up
the preferred format for "george@1984", discovers it is
"L", and finishes its template selection by opening the
file "BBOARDRL.TPL". (Of course, other possible formats
could be specified and used.)

The template file is mostly HTML, with some RAL elements
mixed into it. The "result:exe" program will read
through this template, and will immediately output any
straight HTML to standard output, which the web server 4
will then send on to the Internet browser for the
Internet browser to display as a page on the screen of
the user's user computer 6, 8. However, the RAL elements
will cause result.exe" to insert various pieces of
information into this stream of output at appropriate
places, formatted according to the contents of the
element. Show below is an annotated "BBOARDRL.TPL",
indicating in italics what happens at certain RAL
elements. (Note that, as above, elements begin with the
characters "(mx".)

< HTML >
< HEAD >
< TITLE >
Bulletin Board
< /TITLE >
< /HEAD >
<BODY BGCOLOR= "fl'fiff" >
< nobr >
The next line, though has an RAL elenrent that gets its value from the
initialization file
that "result.xe ", named "webpubl.ini ". The dollar sign before "webserver"
indicates
that "result.e.re " should look up the JNI entry named "-vebserver ", and
substitute its
nanre here in the HTML.
< h2 > < A HREF= "{mx name = $webserver} /home/imagemaphnxnetlog.map" >
<IMG SRC="/home/gif/mxnetlog.gif" BORDER=O ALT="Service Name" ISMAP>
</A> <i>
Bulletin Board
</h2> </i>


CA 02400489 2002-09-23
54
< /nobr >
< form method = "POST" action = "/CGII3IN/result.cxc" >
<nobr>
< input typc= subniit" nantc='"subaction valUe= "Refresll" >
<input type= "subn-it" nan-e ='"subuction" valuc = "Query">
< input type= "submit" nIInle= "snbflction" value= "SWnlnary" >
< input type='"submit name= "subaction" value='"AM Notes" >

The next lines are conditional, depetiding on -vhether the "total" nuntber of
Iteadlines
returned fron: a headline list query is greater tltan the "tnaxuum " number
that
"result. exe " has been configured to display. Whett "result. exe " is
confronted witlt
resolving tlte valtte for "total ", it ftrst cheeks to see if it has that
valtte yet. If not, it
then goes into a waiting mode, while it waits for tltat value to arrive
asynchronously
frotn tlte database server 11, 13. Once the total arrives (w/ticlt it does
independentl),
of the actual headline records), "result. exe " proceeds witli e valuating
this "if "
condition. lf the evaluation is false, then all text until tl:e next "endif"
is ignored.
{mx -if total > maximum)

In this example one, tire total nuinber of headlines returned is 143, while
the value set
for "ntaximttnt" is 100. So this condition is true, nteaning tlte next line
gets evaluated
and sent out. T1ie ele tent named "changevie-vntode" is intended to generate
te.Yt for a
btttton tljat tlte user can press to change frottt vie-ving only 100
headlines, to vie-v all of
them. So this element's vahte will become
"Vie-v All 143".

<input type= submit" iianie='"subaction" value="{nix nanie=changevie%vmode) >
(mx -endif)
< input typc = "submit" name= "subaction" value= "Long Forni" >
< input type= "hidden" namc='"current" value= "bboard" >

The next line has the elenient "docssiiown ". This evaluates to a phrase that
tells the
user what he is being sho-vn. In this case, the element's value is "Latest 100
of 143
documents". These values depend on the total nu tber of records, the
maxintunt, and
-vhether the user presses the "changevie-vniode " button later, in which case
it -voukt
sho-v "143 documents".

< br > < font > < b > (mx narne= docssho%vn) < /font > < /b > < br >
< /nobr >
</form>
<PRE>
< B> Submit Company Pgs Size Symbol Syn Headline
</B>


CA 02400489 2002-09-23

The next line actually does not contain any lirte breaks tnail tlle </PRE> ,
but it is
wrapped it here for clarity. 77ie ftrst elen2ent "(mr start=docrunents) "
nlarl;s the
beginning of a loop. causing "result.e.re" to repeat this section through the
"(ncY
end =docurnents) " as long as tdtere are headline records in tlze result fran
the quen=.
5 All the elements in between are involved in displaying fields of tJte
headline records,
and in nvo cases, they are used to establish hyperte.rt links to "restilt. exe
"iviti-
arguinents that display document synopsis and document contents. Of parricular
interest here, is that "result.exe" ivill access the heodline records as they
arrive
asynchronously fran the database ser'ver 11, 13, displaving thern as soon as
they
10 arrive. The entire result set of the query does not have to be present for
display to
start, thus making tlie display to the user appear faster. !n fact, the server
is
programured to break- the query to it up into pieces if sorting tlre results
will be a
lengthy process, as discussed above in the section titled "Optimi:ations ".
When a
query is broken up, the niost recent headlines are accessed, frrst, which is
tlte order
15 that they are sho-vn in this list. In addition, "result.eYe" ntakes certain
tltat the data is
being sent to tlte server (and therefore to the user) by flushittg its output
queue every 5
headlines.

<HR> {nix start=docunients}{mx name=updatedate,%vidth=7} {nix
20 nanic=contributor width=20} {nix nanie=pagecount uidth=3 align=right} {nix
nanie = bytecount width=4 align=right} {nix namc=synbols width=l0} {mx -if
synopsis
= = 1) < A HREF= "result.exc?subaction= {nLx namc=synfile)" > (nix
-endif)(mx namc=synopsis *vidth=3) <!A> <A HRFF="result.exe?subaction=(mx
name=docfilc)"> {mx namc=hcadline} </A>
25 {mx end=docunients} </PRE>
<b>

The next lines display counts of t/re docurnents, broken down by report type
(e.g.,
here, research documents and morning notes.) Some of the output is
conditional,
30 depending on a zero value.

{mx nanie = research) Research Documents < br >
{mx namc=morningnotes} Morning Notes
{mx -if morningnotes > 0)
35 - Click the "AM Notes" button to access thenl.
{mx -endif)
<br>
</b>
It is convenient to have the action buttons also at the end of a long list of
documents,
40 but it looks unprofessional to have two sets of buttons with a shon list of
doeuments.
So the next section that displays buttons is identical to the button display
section above,
except that it is conditional on how nwny research documents were actually
displayed.


CA 02400489 2002-09-23
56
(mx -if research > 17)
<hr>
<forin niethod="POST" action="/CG1B1N/result.cxc">
<nobr>
<input typc= "submit" name= "subaction"
< input type = "submit" name = "subaction"
<input type= "submit" name= "subaction"
<input typc= "submit" nanic= "subaction"
{mx -if total > nia.i-imum}
<input type= "submit" nantc="subaction"
{tnx -endif)
< input type= "submit" name= "subaction" valuc= "Rcfresh" >
value= "Query" >.
value= " Sunnnary">
value= "AM Notes" >
value = "{nm nanie = changevieWinode}">
valuc = "Long Form" >
<input type="hiddcn" nanie="current" value="bboard">
< /nobr >
< /forn> >
{mx -endif)
</IIODY>
< /IITAZL >

The preceding example generates a page 100 for display on
the user's Internet browser at the user's user computer
6, 8 as shown in Fig. 2. (The graphic listing the
service name is not shown.)

The page 100, displayed in bulletin board format,
includes a number of action buttons 120-130, and a list
of reports. The action buttons 120-130 are all used as
commands to "result.exe". Each report is listed on a
single line, with information about the report including
the time of submission of the report by the contributor
(102), the identity of the contributor (104), the number
of pages (106) and size of the report (108), ticket
symbols related to the report (110), whether a synopsis
is available (111) and the report's headline (112). The
user can select (e.g., click on) a headline and have the


CA 02400489 2002-09-23
57

complete report transferred from the repository server 2
to the user computer 6, 8. The user can select an entry
in the synopsis column and have the synopsis displayed.

A refresh button 120, if selected, cause this same report
to be regenerated, e.g., to include any new reports
received since the this page 100 was generated. A query
button 122, if selected, caUses a query form to be
generated, as explained in example 2 below. A summary
button, if selected, causes a summary report to be
generated. The summary report comprises a three column
table, each row listing a contributor, the total number
of research documents at the repository server 2
available for that user from that contributor and the
total number of morning notes at the repository server 2
available for that user from that contributor. An AM
Notes button 126, if selected, causes only morning notes
to be displayed. A View All button 128, if selected,
causes all headlines to be displayed, regardless of how
many. A long form button 130, if selected, causes a page
to be generated that includes a two lines for each
report, listing the headline, the time of submission of
the report by the contributor, the identity of the
contributor (company), the name(s) of the authors of the
report, the number of pages and size of the report,
ticket symbols related to the report, whether a synopsis
is available.

A summary line 132 shows the total number of documents
that satisfy the query (in this case, all documents that
arrived at the repository server 2 since midnight) and
the total number displayed.

Example 2: Requesting a Query Form
In the preceding example, the user "logged in" and was
presented with a Bulletin Board. If the user wishes to
make a query for documents that match certain criteria,


CA 02400489 2002-09-23
58

he may then click the query button 122 on the Bulletin
Board. This causes the Internet browser to form a
request to the web server 4 to run "result.exe again,
but since the button is inside an HTML form, additional
information is included in the request.

First, when the request arrives at the web server 4, the
ID is verified in the same Thanner described in the prior
example, except that the dialog box for user name and
password is not displayed, since the Internet browser
provides that information as part of the request. Once
the user is'verified, the web server 4 start running
"result.exe", but with input that indicates the "Query"
button was selected on the previous form.
The first thing "result.exe" does is to try to verify
that the user is not attempting access with the same ID
that another user is using. The "result.exe" program
retrieves the value of the environment variable
"HTTP_COOKIE" which is provided by the web server 2 (as
received from the HTTP "Cookie" value in the request from
the Internet browser). The "result.exe" program attempts
to find a value in the cookie named "mxauth". Since this
is NOT the first time this user/browser has logged in,
the "mxauth" value in the cookie is set to the value
"resu2t.exe" gave this user last time he was authorized.
The "result.exe" program compares this value to the
current authorization code it has stored for this user,
and if the two do not match, it generates output that
tells the user that access has been denied. If the
values do match, then "result.exe" proceeds.

By looking at the value for the CGI form variable
"subaction", the "result.exe" program can determine that
the user selected the query button 122 on his last
request. At this point, the program selects an HTML
template appropriate to this request, which is named


CA 02400489 2002-09-23
59

"RESULTQ.TPL". To service a query form, "result.exe"
connects to the appropriate database server 10, 13 as
described in example one. Once connected, it then opens
the HTML template, and starts generating output.
An annotated version of the "RESULTQ.TPL" template is
shown below.

< html >
<head>
< title > Document Query < /title >
< /head >
< body BGCOLOR = "/lffffff' >
< nobr>
<h2> <A HREF="{nix
namc = $webservcr}/hcyme/imagemap/mxnctlog.map" > < IMG
SRC=91/home/gif/mxnetlog.gif" BORDER=O ALT="Scrvice Nanie" 1SMAP> </A>
<i>
Docunient Query
</h2> </i>
< /nobr >
< nobr >
<form nicthod="POST" action="ICGIBIN/result.cxc">
Generate the buttons for cotnniands to be executed frorn this form.

< input type= "submit" name= "subaction" value= "Submit" >
< input type= "submit" name= "subaction" value= "Count Only" >
< input type= "submit" name= "subaction" value= "Summary" >
< input type ="submit" name= "subaction" value= "AM Notes">
< input type = "submit" namc = "subaction" value = "Reset">
< input type= "submit" namc= "subaction" valuc = "BBoard >
<input type = "hidden" name = "current" value = "query">
< /nobr >
< table>
<tr valign="top">
<td width=90> <b>Symbol:<lb> </td>

The elenrent here is evaluating the value for "-ticker ". Any element name
that begins
with an underscore is taken frorn values that are given to "result. exe " as
input from the
last form that started "resultexe ". If the last form had a field (text, list
box, hidden, or


CA 02400489 2002-09-23

othenvise) na-tzed "ticker" (no underscore), tiren the -veb server 4 wotild
start this
instance of "result.e.re" -vitl: an inptet field named "ticker" whose value -
vottld be t1ie
value in the "ticker", field in the last form. If the last form had a feld
named "tick-er"
with a valrte of "!BM", then this element -vill generate a default value for
this input
5 field of "IBM". This allo-vs "result. exe " ro co-ne back to the previous
state of this
query form, if other fonns remember tlte value for "ticker" in hidden fields.

<td> <input typc='"text" namc="ticker value={mx nanic=-ticker cluotes=l}
> </td>
<td -oidth=86>
< td > <input typc = "submit" namc = "subaction valuc = "Symbol Guide"> < /td
>
</tr>
< /table >
< table >
< tr valign = "top" >
<td width =90> <b> ror Period Of: </b> <ltd>

The follo-ving list box has one value preselected, due to the "match " and
"trrre " parrs
in the elenients within it. These elements evaluate the valtte for the fteld
"date " fronn
tlre last form, and if the value matches the value given for the "nwtcli "
pan. then tire
displayed value for the elt-nent -vill be contents of the "true " part of tJte
elenrent, in
this case, the -vord "selected". In other words, for each one of thest lines,
you couJd
read "If tire last fonn's date field matches X, then display the word
'selected "'. The
special case for "Last 7 Days ". where the nwtch value is ". 3", sittrply mea-
u that if tlie
date value is either en-pry, or the nunrber three, it is a nwtch.

< td > < select name= "date" >
<option value="0" {m.e name=_date match=O true=selected} >Today
<option value="1" {mx name= datc match=1 true=selected} >Last 2 days
<option value="2" {mx naine=_date match=2 true=selected} >This Week
<option value="3" {mx name= date match=,3 true=selected} > Last 7 days
<option value="S" {mx name= date match=5 true=selected) >Last 14 days
<option value="7" {mx name=_date match=7 true=selected) > This Month
<option value="8" {nLr name= date match=8 true=selected} > Last 30 days
<option value="12" {nu< name= date match=12 true=selected} >Last 60 Days
<option value="13" {nLY name= date match=13 truc=selected} >Last 90 Days
<option valuc="10" {mx name= date niatch=10 true=seiected} >A11 Dates
<option value="-1">
< /select > < /td >
< /tr >
< /table >
< table >


CA 02400489 2002-09-23
61
<tr>
< /tr >
</tablc>
< tablc > < tr valign = "top" > < td %vidth = 90 > < b > Kcywords: < lb > <
/td >
Here, a default value for this field is based on tlre "query" freld in the
last form.
<td> <input typc="tcxt" namc='"qucry" sizc=49 valuc={n naznc=_qucrN=
quotes=l} > </td> </tr>
< /tablc >
< table >
<tr valign = "top" > <td widtli =90> < b > Contributors: < /b > </td>
< td >< SELECT NAME = contributors SIZE= 6 MULTIPLE >

T1tis is a possible default selection, tlre sanre as described above for
"date.

< OPTION VALUE= "-1" {inx nanic=-contributors match=,-1 truc=selcctcd} >[ All
Contributors ]

This elentent nrarks the beginning of a loop on contributors. When this
element is
evaluated, "result. exe " fornts a quety to the server tirat will return a
list of all
document contributors (companies) tliat this parricular rtser is entitled to
read
documents froni. The request is asynchronous, so as each contributor record is
returned from tlie server, "request. exe " can fill in tlze inside of this
loop. Inside tlie
loop is an element tlrat displays tite ID number of the contribittor,
optiotiall}= follo-ved
by the word "selected" if it should be the defauit selection ott this forut,
based on prior
values of the form fields "contribruors ".

{mx start= contributorlist)
<OPTION VALUE= {mx name=contributorid match=contributors true="9os
selected" false= "9os"} > {nix name= contributorname}
{mx end = contributorlist}
<OPTION
VALIJE="2">
< /SELECT >
</td> </tr>
< tr valign ='"top" > < td > < b > Industrics: < /b > < /td >
< td >< SELECT NAMEmindustries SIZE= 61V1LJLTIPLE >
<OPTION VALUE="-2" {mx name= industries match=,-1 true=selected}> [ All
Industries ]

This element and the following loop is the same as the contributor loop above,
except it


CA 02400489 2002-09-23

62
lists the inditstries that the user niay citoose as selection criteria for
documents, instend
of contributors.

{mx start = industrylist}
< OPTiON VALUE= {mx namc= industryid matcb=_industries true= "%s selected"
falsc = "%s"} > {mx name = industrynamc}
{mx end= industrylist}
< OPTjON
VALiJE="Z11 > ---- __________
< /SELECT >
</td> </tr>
< /tablc >
<br>

Titese buttons are duplicates oJthe ottes above -- -ve jound it ivas
convenient to have
thetn here too.

< input typc= "submit" namc= "subaction" value= "Subniit" >
< input typc= "subniit" nanic = "subaction" valuc= "Count Only">
<input typc ="submit" name= "subaction" valuc= "Sununary" >
<input type= "submit" name= "subaction" value= "AM Notes">
<input type="submit" nanic="subaction" valuc="Rcsct">
< input typc= "submit" name= "subaction" value= "BBoard" >
<input typc = "hidden" namC = "current" valuc = "(lucry" >
< /form >
< /body >
< /html >

The preceding example generates a page 200 for display on
the user's Internet browser at the user's user computer
6, 8 as shown in Fig. 3. (The graphic listing the
service name is not shown.)

Using the document query page 200, the user can specify
parameters for a search of reports located at the
repository server 2. The user can specify one or more of
the following parameters: symbol (202), period of time,
from a drop down list box (204), keywords, and logical
joins thereof(206), contributors (208), and industry
groups (210). A symbol guide 220 is available if the
user does not know a stocks ticker symbol, etc.


CA 02400489 2002-09-23
63

A partial list of the HTML generated for the contributors
list box (208) is shown below:

< SELECT NAME= contributors SIZE= 6 MULTIPLE >
< OPTION VALUE= "-1" selected > [ AD Contributors ]
<OPTION VALUE=42> Ad:uns, Harkness & Hill
< OPTION VALLJE= 47 > Alcx Brown & Sons
<OPTION VALUE=128> Aucrbach Grayson & Co., Inc.
<OPTION VALUE=53>IIroim IIrotliers Harrunain & Co.
<OPTION VALLTE=109> Chicago Corporation
< OPTION VALUE=157 > Closed End Fund Digest
<OPTION VALUE="_2 >
< /SELECT >

A submit button 212 allows the user to submit the query,
as discussed in detail in example three below. A count
only button 214 allows the user to request a count of all
documents available to that user that satisfy the query
parameters. A reset button 216, if selected, clears the
form. A BBoard button, if selected causes a bulletin
board to be created for the user, as per the first
example above.
Example 3: The User Makes a Query
in the preceding example, the user requested a form from
which he could make a query. This example will step
through the user's actions, and the result it produces.
For this example, assume that the user has decided to
select documents from Alex Brown & Sons, released over
the last 30 days, that have the phrase "strong buy" in
them. To do this, in the query form, the user selects
the "Last 30 Days" item in the period of time combo box
204, enters "strong buy" (quotes included, to indicate a
phrase instead of two independent words) in the keywords
edit window 206, and selects "Alex Brown & Sons" in the
contributors list box 208. To get the list of headlines


CA 02400489 2002-09-23
64

that match this request, the user selects the submit
button 212.

The request that goes to the web server 4 at this point
is to run "result.exe" again, but there is additional
information about date, keywords, and contributors in the
request. Fields are also defined for industries and
ticker symbols, but they are' empty fields because the
user did not specify anything for them. After the web
server 4 verifies the user (as described above), it
starts the "request.exe" program with these form fields
as additional input.

The "request.exe" program determines from the input
fields that a specific query is desired, and from the
value of the "subaction" field (button 212) that the user
wants a headline list, as opposed to a simple headline
count, or a headline summary. The "request.exe" program
selects the HTML template "RESULTRL.TPL", choosing the
list format output (indicated by the "L" at the end of
the file name) for just as it did for the first example.
It constructs a headline query based upon the input
fields for date, contributor, and keywords. It then
submits the query to the full-text search server 13
(since there are keywords specified in the query). It
then opens the HTML template, and fills in the elements
from the result set of the query, in the same manner as
for the Bulletin Board in the first example.

The resulting page 300 generated for display on the
user's Internet browser at the user's user computer 6, 8
as shown in Fig. 4. (The graphic listing the service
name is not shown.) The page is similar in many respects
to that shown in Fig. 2. A score column 402 shows a
relevancy score. The summary line 404 shows the total
number of documents that satisfy the query, the total
number displayed and query search parameters.


CA 02400489 2002-09-23

The user may then select a document by clicking on the
document's headline. The document transfer process takes
place as follows: The web server 4 issues a request to
the relational database 11 asking whether the user is
5 permitted to view the selected document. Assuming that
the selected SQL server is available (if not, the backup
procedure described above takes place), then the SQL
server returns whether the tise is so permitted. If the
user is not permitted, then the web server 4 generates a
10 HTML page using an error template. If the user is
permitted, the requested document file is opened, the web
server 4 generates the appropriate HTTP header and
outputs it to STDOUT, and the document file is read and
its contents is output to STDOUT. At the user computer
15 6, 8, the Internet browser program launches a helper
application to allow the user to read, print and save the
document.

Although the invention has been described with reference
20 to a particular embodiment and arrangement of parts,
features and the like, the above disclosure is not
intended to exhaust or limit all possible embodiment,
arrangements or features, and indeed, many other
modifications and variations will be ascertainable to
25 those skilled in the art.

For example, the central site 1 may distribute reports by
other networks in addition to the Internet. Fig. 5
illustrates an enhanced system architecture according to
30 the present invention. In the enhanced system, the
central site 1 is also coupled to one or a number of
viewer servers 30, 32. Typically, the viewer servers 30,
32 are located at a remote location with respect to the
central site 1 and are coupled to the central site 1 over
35 a proprietary-network. Each viewer server 30, 32
includes a database 40, 42 and is coupled to one or a
number of viewer workstations 34, 36, 38. The viewer


CA 02400489 2002-09-23
66

workstations 34, 36 execute the Acrobat Exchange program,
available from Adobe Systems, and the Multex PublisherTM
Research Viewer program, by Multex Systems, Inc. The
central site 1 maintains a distribution list that lists
which viewer servers 30, 32 are permitted to receive
reports from which contributors. (As a simple example,
if viewer server A 30 is located at company ABC, Inc. and.
viewer server B 32 is locatdd at company RST, Inc., then,
for a particular report, the repository server may
distribute the report to viewer server A 30 but not
viewer server B 32.) When a report is received by the
central site 1, the central site 1 transmits a task to
each viewer server 30, 32 that is permitted to receive
that report that a new report has arrived, and the
permitted viewer servers 30, 32 executes the task to
"pull" that report from the central site 1 and store it
in their respective databases 40, 42. The viewer server
30, 32 will then cause the title of the report to be
displayed on viewer workstations 34, 36, 38 that are used
by investors who are permitted (as determined by the
distribution level set by the contributor). investors
can also issue queries to the viewer server's database,
which will return titles of relevant reports. The
investor may then request a report, which is "pulled
down" from the viewer server 30, 32 to the requesting
viewer workstation 34, 36, 38.

It is noted that the web server 4 and repository server 2
of the representative embodiment of the present invention
can be implemented utilizing a logic circuit or a
computer memory comprising encoded computer-readable
instructions, such as a computer program. The
functionality of the logic circuit or computer memory has
been described in detail above. Generally, the present
invention has practical application as it enables reports
and other information to be distributed speedily and
searched efficiently by authorized users in remote


CA 02400489 2002-09-23
67
locations.

Thus, the above described embodiments are merely
illustrative of the principles of the present invention.
Other embodiments of the present invention will be
apparent to those skilled in the art without departing
from the spirit and scope of the present invention.

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2007-05-22
(22) Filed 1997-05-29
(41) Open to Public Inspection 1997-12-11
Examination Requested 2002-09-23
(45) Issued 2007-05-22
Expired 2017-05-29

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Request for Examination $400.00 2002-09-23
Registration of a document - section 124 $50.00 2002-09-23
Application Fee $300.00 2002-09-23
Maintenance Fee - Application - New Act 2 1999-05-31 $100.00 2002-09-23
Maintenance Fee - Application - New Act 3 2000-05-29 $100.00 2002-09-23
Maintenance Fee - Application - New Act 4 2001-05-29 $100.00 2002-09-23
Maintenance Fee - Application - New Act 5 2002-05-29 $150.00 2002-09-23
Maintenance Fee - Application - New Act 6 2003-05-29 $150.00 2003-05-27
Maintenance Fee - Application - New Act 7 2004-05-31 $200.00 2004-05-14
Maintenance Fee - Application - New Act 8 2005-05-30 $200.00 2005-05-24
Maintenance Fee - Application - New Act 9 2006-05-29 $200.00 2006-05-05
Final Fee $300.00 2007-03-12
Maintenance Fee - Application - New Act 10 2007-05-29 $250.00 2007-04-04
Maintenance Fee - Patent - New Act 11 2008-05-29 $250.00 2008-04-10
Maintenance Fee - Patent - New Act 12 2009-05-29 $250.00 2009-04-20
Maintenance Fee - Patent - New Act 13 2010-05-31 $250.00 2010-04-30
Maintenance Fee - Patent - New Act 14 2011-05-30 $250.00 2011-04-18
Maintenance Fee - Patent - New Act 15 2012-05-29 $450.00 2012-04-16
Maintenance Fee - Patent - New Act 16 2013-05-29 $450.00 2013-04-15
Maintenance Fee - Patent - New Act 17 2014-05-29 $450.00 2014-04-15
Maintenance Fee - Patent - New Act 18 2015-05-29 $450.00 2015-04-13
Maintenance Fee - Patent - New Act 19 2016-05-30 $450.00 2016-04-12
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
MULTEX SYSTEMS, INC.
Past Owners on Record
BAIRD, GEORGE
BLAZEK, PAVEL
KARAEV, ISAAK
KITAIN, EDUARD
LEISY, JACQUES
PROHOROV, DMITRY
URAZOV, YURI
ZUCKNOVICH, STEPHEN
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Representative Drawing 2007-05-03 1 9
Description 2002-09-23 72 2,949
Cover Page 2007-05-03 2 50
Representative Drawing 2002-11-06 1 8
Claims 2005-10-11 3 71
Description 2005-10-11 72 2,929
Claims 2002-09-23 8 263
Drawings 2002-09-23 5 148
Abstract 2002-09-23 1 31
Cover Page 2002-11-29 2 50
Prosecution-Amendment 2005-10-11 18 645
Correspondence 2002-10-08 1 42
Assignment 2002-09-23 3 120
Correspondence 2002-11-05 1 12
Fees 2003-05-27 1 36
Prosecution-Amendment 2005-04-11 4 134
Correspondence 2007-03-12 1 38