LOGML (Log Markup Language)

LOGML 1.0 Draft Specification.

This version:
    http://www.cs.rpi.edu/~puninj/LOGML/draft-logml-20010629.html
    (provision of the schema and DTD for LOGML)

Newest version:
    http://www.cs.rpi.edu/~puninj/LOGML/draft-logml.html

Previous version:
    http://www.cs.rpi.edu/~puninj/LOGML/draft-logml-20001012.html

Editors:
    John Punin <puninj@cs.rpi.edu>, (RPI)
    Mukkai Krishnamoorthy <moorthy@cs.rpi.edu>, (RPI)
    Gerard Uffelman <uffelg@rpi.edu>, (RPI)


Abstract

This draft specification defines the syntax of the Log Markup Language (LOGML). LOGML is an XML application for describing Log Reports of Web servers.

Table of Contents

1. Introduction
2. Motivation
3. LOGML Documents
    3.1 Well-Formed LOGML Documents
    3.2 Valid LOGML Documents
4. LOGML and XGMML
5. Structure of LOGML Documents
6. LOGML Data Types
    6.1 Boolean Type
    6.2 Number Type
    6.3 Nmtoken Type
    6.4 ID type
    6.5 String Type
    6.6 URI Type
    6.7 Date Type
7. Logml Element
    7.1 Global Attributes
    7.2 XML Attributes
    7.3 Log Global Attributes
    7.4 Logml Attributes
    7.5 Logml Mixed Content
8. XGMML Elements
    8.1 Graph Element
    8.2 Node Element
    8.3 Edge Element
    8.4 Att Element
9. Host Elements
    9.1 Host Element
    9.2 Domain Element
10. Directory Element
11. User Agent Element
12. Referer Elements
    12.1 URI Referer Element
    12.2 Host Referer Element
13. Keyword Element
14. General Statistics Elements
    14.1 Summary Element
    14.2 HTTP Code Element
    14.3 HTTP Method Element
    14.4 HTTP Version Element
    14.5 Date Elements
15. User Session Elements
    15.1 User Session Element
    15.2 Path Element
    15.3 Uedge Element

Appendices

A. Characters
B. LOGML 1.0 DTD
C. LOGML 1.0 Schema
D. LOGML Example
E. LOGML Internet Media Type
F. References

1. Introduction

Log Markup Language (LOGML) is an XML 1.0 application [XML-1.0] designed to describe log reports of web servers. Web-data mining is one of the current hot topics in computer science. Mining data that has been collected from web server logfiles, is not only  useful for studying customer choices, but also helps in organizing web pages. This is accomplished by knowing which web pages are most frequently accessed by the web surfers. The structure of a web site is represented as a web graph (see the XGMML draft specification). In mining the data from the log statistics, we use the web graph in annotating the log information. Further we give summary reports, comprising of information such as client sites, types of browsers and the usage time statistics. We also gather the client activity in a web site as a subgraph of the web site graph. This subgraph can be used to get better understanding of general user activity in the web site.
In LOGML, we create a new XML vocabulary to structurally express the contents of the logfile information.

2. Motivation

Log reports are the compressed version of logfiles. Web masters in general save web server logs in several files. Usually each logfile contains a single day of information. Due to disk space limitation, old log data gets deleted to save new log information. Generally, web masters generate HTML reports of the logfiles and do not have problems keeping them for a long period of time since the HTML reports are an insignificant size. If a web master likes to generate reports for a large period of time, he has to combine several HTML reports to produce a final report. LOGML is conceived to make this task easier. Web masters can generate LOGML reports of logfiles and combine them on a regular basis without much effort. LOGML files can be combined with XSLT [XSLT-1.0] to produce HTML reports [XHTML-1.0]. LOGML offers the flexibility to combine them with other XML applications, such as SVG [SVG], to produce graphics of the statistics of the reports. LOGML in addition can be combined with RDF [RDF] [XML-NS] to provide some metadata information about the web server that is being analyzed. LOGML is based on XGMML [XGMML-1.0] that is a language to describe graphs. LOGML can be seen as a snapshot of the web site as the user visits web pages and traverses hyperlinks. LOGML also provides an efficient way to save the user sessions. "User session is a delimited set of user clicks across one of more Web servers"[WCTDS].

3. LOGML Documents

Since LOGML is an application of XML, LOGML documents can be well-formed documents or valid documents.

3.1 LOGML Well-formed Documents

A LOGML well-formed document is an XML well-formed document that describe log reports of web servers. A logml element may be the root element of the well-formed document. Two cases of LOGML well-formed document can be found.  The first case is LOGML documents with additional proprietary elements from a vendor. The second case is  LOGML documents that are contained on other XML documents.

3.2 LOGML Valid Documents

A LOGML valid document can be validated against a LOGML DTD or LOGML Schema [XML-SCHEMA]. The LOGML DTD and LOGML Schema are provided in the Appendices section. A valid XML document can have multiple schemas. The namespace for LOGML is: http://www.cs.rpi.edu/LOGML and the suffix for LOGML elements is lml:.

4. LOGML and XGMML

XGMML is an XML application to describe graphs. A web site can be described as a graph where the web pages are the nodes and the hyperlinks are the edges. User visits of web pages and/or user traversals of hyperlinks can be represented as a web graph where the nodes and edges contain the number of visits by users. User sessions are the subgraphs of the web graph where the time of visit is also being saved. A LOGML file contains the web graph whose nodes are the web pages that have been visited at least once and whose edges are hyperlinks that have been traversed at least once. We call this graph a "Log Graph".  The rest of the LOGML file is the report of the additional information, such as top hosts, top browsers, top keywords, etc. LOGML uses XGMML to describe the log graphs and adds additional attributes to the nodes and edges to save information such as number of hits.

5. Structure of LOGML Documents

A typical LOGML Document has three sections. The first section is a graph that describes the log graph of the visits of the users to web pages and hyperlinks. This section uses XGMML to describe the graph and the root element is the graph element. The second section is the additional information of log reports such as top visiting hosts, top user agents, top keywords, etc. The third section is the report of the user sessions. Each user session is a subgraph of the log graph. The subgraphs are reported as a list of edges that referer to the nodes of the log graph. Each edge of the user sessions also has a timestamp when the edge was traversed. This timestamp helps to compute the total time of the user session.
LOGML documents can be validated against the DTD "logml.dtd" whose URL is: http://www.cs.rpi.edu/~puninj/LOGML/logml.dtd

6. LOGML Data Types

LOGML data types are defined based on the following XML data types:

6.1 Boolean Type

<!ENTITY % boolean.type "(0|1)" >
Boolean values are 0 for false and 1 for True.

6.2 Number Type

<!ENTITY % number.type "NMTOKEN">
Numbers can be integers or reals.

6.3 Nmtoken Type

<!ENTITY % nmtoken.type "NMTOKEN">
Tokens can be simple words or numbers.

6.4 ID Type

<!ENTITY % id.type "NMTOKEN">
IDs are unique identifiers that can be numbers or simple words.

6.5 String Type

<!ENTITY % string.type "CDATA">
Strings are XML Literal data that can not contain a quoted character.

6.6 URI Type

<!ENTITY % uri.type "%string.type;">
URI are strings that are Uniform Resource Identifiers as defined in [RFC1630]. URIs include relative and absolute Uniform Resource
Locators as defined in [RFC1738] and [RFC1808].

6.7 Date Type

<!ENTITY % date.type "%string.type;">
Dates are strings that follow the date format of the Common Logfile Format [CLF]. The format is:
date = [day/month/year:hour:minute:second]
day = 2*digit
month = 3*letter
year = 4*digit
hour = 2*digit
minute = 2*digit
second = 2*digit

7. Logml Element

<!ELEMENT logml (graph, hosts?, domains?, directories?, userAgents?, hostReferers?, 
                 referers?, keywords*, summary?, userSessions?)>
<!ATTLIST logml
          %global-atts;
          %xml-atts;
          start_date     %date.type;          #REQUIRED
          end_date       %date.type;          #REQUIRED
>
The logml element is the root element of the LOGML Document and it contains the rest of the LOGML elements.

7.1 Global Attributes

<!ENTITY % global-atts "id %number.type; #IMPLIED
                        name %string.type; #IMPLIED
                        label %string.type; #IMPLIED">
The following attributes are attributes of most LOGML elements :

7.2 XML Attributes

<!ENTITY % xml-atts "%nds; %uri.type; #FIXED 'http://www.cs.rpi.edu/LOGML' 
                        xml:lang NMTOKEN #IMPLIED
                        xml:space (default | preserve) #IMPLIED">
These attributes are standard XML attributes:

7.3 Log Global Attributes

<!ENTITY %  log-acc-atts "access_count     %number.type;       #IMPLIED
                          bytes            %number.type;       #IMPLIED
                          html_pages       %number.type;       #IMPLIED">
<!ENTITY %  log-hit-atts "hits             %number.type;       #IMPLIED
                          bytes            %number.type;       #IMPLIED
                          html_pages       %number.type;       #IMPLIED">
<!ENTITY %  log-count-atts "total_count      %number.type;       #IMPLIED
                            bytes            %number.type;       #IMPLIED
                            html_pages       %number.type;       #IMPLIED">
The following attributes are attributes of many LOGML elements:

7.4 Logml Attributes

The logml attributes are:

7.5 Logml Mixed Content

The elements allowed inside logml element are: graph, hosts, domains, directories, userAgents, referers, hostReferers, keywords, summary, userSessions. All these elements are optional and it is up to the LOGML generator to report all or some of them. Vendors can modify the DTD and add new elements. Each of these elements represent an element of the logfiles to be reported. For example, hosts element is the report of the top client sites to the web server.

8. XGMML Elements

The set of requested web pages and traversed hyperlinks in a logfile can be reported as a web graph. This graph is a subset of the web graph of the web site of the web server being analyzed. We call this graph a "Log Graph" and we use XGMML to describe this graph. We add some new attributes to the node and edge elements to save, for example, the number of hits.

8.1 Graph Element

<!ELEMENT graph (att*, (node, edge)*)>
<!ATTLIST graph
          %global-atts;
          directed      %boolean.type;       #IMPLIED
>
The only elements allowed in a graph element are: node, edge and att. The att elements may be placed first, and the node and edge elements may be freely intermingled. The node elements must have different id and name attributes. The edge elements can not reference to node elements that are not included in the LOGML document.
The attributes of the graph element are:

8.2 Node Element

<!ENTITY %  xgmml-atts "weight     %number.type;      #IMPLIED">

<!ELEMENT node (att*)>
<!ATTLIST node
          %global-req-atts;
          %xgmml-atts;
          hits             %number.type;      #IMPLIED
          ehits            %number.type;      #IMPLIED
          indp             %boolean.type;     #IMPLIED
>
The node element describes a web page where the label of the node is the URI of the web page. The att element is the only element allowed inside the node element. The att element contains metadata information of the web page such as mime type, title and size.
The attributes for the node element are:

8.3 Edge Element

<!ENTITY % edge-atts "source %number.type; #REQUIRED
                      target %number.type; #REQUIRED">

<!ELEMENT edge (att*)>
<!ATTLIST edge
          %global-atts;
          %xgmml-atts;
          %edge-atts;
          hits            %number.type;       #IMPLIED
          indp            %boolean.type;      #IMPLIED
>
The edge element describes a hyperlink where the source is the id of the referer web page and the target is the id of the target web page. The att element is the only element allowed inside the edge element. The att element contains metadata information of the hyperlink such as link type.
The attributes of the edge element are:

8.4 Att Element

<!ELEMENT att (att*)>
<!ATTLIST att
          %global-atts;
          value            %string.type;      #IMPLIED
>
An att element is used to hold meta information about the element that contains the att element. An att element can contain other att elements, for example to represent structured metadata such as records, lists, etc.
The att attributes are:

9. Host Elements

The Host Elements are two: the host Element and the domain element. These elements give information about the sites that are visiting the web server.

9.1 Host Element

<!ELEMENT hosts (host+)>
<!ATTLIST hosts
          %count-att;
>

<!ELEMENT host EMPTY>
<!ATTLIST host
          %global-atts;
          ip               %string.type;       #IMPLIED
          is_internal      %boolean.type;      #IMPLIED 
          %log-acc-atts;
>
This section of the LOGML document reports the top visiting sites by number of accesses to the web server. This host list is composed by a container hosts element whose attribute is the count of the host element inside of the hosts element. The host element is an empty element and contains information about the visiting site such as name, IP and number of bytes transferred by the site.
The hosts attribute is: The host attributes are:

9.2 Domain Element

<!ELEMENT domains (domain+)>
<!ATTLIST domains
          %count-att;
>

<!ELEMENT domain EMPTY>
<!ATTLIST domain
          %global-atts;
          %log-acc-atts;
>
The domains element is a list of all domain visiting the web server. The domain is the suffix of the domain name of the sites. For example. edu is the domain of the site www.cs.rpi.edu.
The domains attribute is : The domain attributes are:

10. Directory Element

<!ELEMENT directories (directory+)>
<!ATTLIST directories
          %count-att;
>

<!ELEMENT directory EMPTY>
<!ATTLIST directory
          %global-atts;
          %log-acc-atts;
>
The directories list contains the top directories of the web site that have most requested web pages. The directory is the prefix of the URI of the web page. For example: The directory of the web page: http://www.rpi.edu/dept/urp/find.html is http://www.rpi.edu/dept/urp
The directories attribute is: The directory attributes are:

11. User Agent Element

<!ELEMENT userAgents (userAgent+)>
<!ATTLIST userAgents 
          %count-att;
>

<!ELEMENT userAgent EMPTY>
<!ATTLIST userAgent
          %global-atts;
          %log-acc-atts;
          is_spider        %boolean.type;      #IMPLIED
>
The list of user agents contains all user agents (browsers and/or spiders) that have made requests to the web server. The LOGML reader can refine this list to compute the top platforms and top web browsers since the User Agent name contains information about the platform and name of web browser.
The userAgents attribute is: The userAgent attributes are:

12. Referer Elements

The two referer elements in LOGML are referer and hostReferer element. These elements give information about the URI referers to the web pages of the web server.

12.1 URI Referer Element

<!ELEMENT referers (referer+)>
<!ATTLIST referers
          %count-att;
>

<!ELEMENT referer EMPTY>
<!ATTLIST referer
          %global-atts;
          target             %nmtoken.type;    #IMPLIED
          %log-acc-atts;
          is_internal        %boolean.type;    #IMPLIED 
>
The referers list contains two lists: The list of the top external referers and the list of the top internal referers. The external referers are the referers whose host are different than the web server. The host of the internal referers are the same as the web server.
The referers attribute is: The referer attributes are:

12.2 Host Referer Element

<!ELEMENT hostReferers (hostReferer+)>
<!ATTLIST hostReferers
          %count-att;
>

<!ELEMENT hostReferer EMPTY>
<!ATTLIST hostReferer
          %global-atts;
          %log-acc-atts;
          is_search_engine   %boolean.type;    #IMPLIED
>
The host referers list contains the top host referers of the web pages of the web server. This list combines the number of accesses of the referers with the same host.
The hostReferers attribute is: The hostReferer attributes are:

13. Keyword Element

<!ELEMENT keywords (keyword+)>
<!ATTLIST keywords 
          search_engine_name     %string.type;     #IMPLIED
          search_count           %number.type;     #IMPLIED
          %count-att;
>

<!ELEMENT keyword EMPTY>
<!ATTLIST keyword 
          %global-atts;
          total_count        %number.type;       #IMPLIED
>
Keywords are the searching words found in the URI referers of the search engines. Several keywords lists can be reported. Each keywords list is associated with a particular search engine.
The keywords attributes are: The keyword attributes are:

14. General Statistics Elements

The General Statistics Elements are the summary, httpCode, httpMethod, httpVersion and dateStat elements. The summary element contains a brief overview of the essential information of the web server. The http elements gives the summary of the status of the requests by code, method and version of the http protocol. The dateStat element contains the summary of the requests by hour, day and month.

14.1 Summary Element

<!ELEMENT summary ((att | httpCode | httpMethod | httpVersion)*, dateStat?)>
<!ATTLIST summary
          requests                      %number.type;     #IMPLIED
          sessions                      %number.type;     #IMPLIED
          bytes                         %number.type;     #IMPLIED
          html_pages                    %number.type;     #IMPLIED
          nhtml_pages                   %number.type;     #IMPLIED
          inline_objects                %number.type;     #IMPLIED
          hyperlink_html               %number.type;     #IMPLIED
          hyperlink_nhtml              %number.type;     #IMPLIED
          html_entry_pages              %number.type;     #IMPLIED
          nhtml_entry_pages             %number.type;     #IMPLIED
          unique_sites                  %number.type;     #IMPLIED
          unique_host_referers          %number.type;     #IMPLIED
          unique_se_referers            %number.type;     #IMPLIED
          unique_external_url_referers  %number.type;     #IMPLIED
          unique_internal_url_referers  %number.type;     #IMPLIED
          unique_user_agents            %number.type;     #IMPLIED
          requests_hour                 %number.type;     #IMPLIED
          requests_day                  %number.type;     #IMPLIED
          kbytes_day                    %number.type;     #IMPLIED
          kbytes_hour                   %number.type;     #IMPLIED
          searches                      %number.type;     #IMPLIED
          unique_keywords               %number.type;     #IMPLIED
>
The summary element is an overview of the essential information of the web server. This information is very important for web masters to know the efficiency of the web server.
The summary attributes are:

14.2 HTTP Code Element

<!ELEMENT httpCode EMPTY>
<!ATTLIST httpCode 
          code             %number.type;       #REQUIRED
          %global-atts;
          %log-count-atts;
>
The httpCode element gives the summary of the HTTP status code of the requests.
The httpCode attributes are:

14.3 HTTP Method Element

<!ELEMENT httpMethod EMPTY>
<!ATTLIST httpMethod
          %global-atts;
          %log-count-atts;
>
The httpMethod element gives the summary of the HTTP methods used by the web clients to communicate with the web server.
The httpMethod attributes are:

14.4 HTTP Version Element

<!ELEMENT httpVersion EMPTY>
<!ATTLIST httpVersion
          %global-atts;
          %log-count-atts;
>
The httpVersion element gives the summary of the HTTP version used by the web clients to communicate with the web server.
The httpVersion attributes are:

14.5 Date Elements

<!ELEMENT dateStat (monthStat | dayStat | hourStat)+>

<!ELEMENT monthStat EMPTY>
<!ATTLIST monthStat 
          month             %nmtoken.type;     #REQUIRED
          %log-hit-atts;
>

<!ELEMENT dayStat EMPTY>
<!ATTLIST dayStat
          day               %nmtoken.type;     #REQUIRED
          %log-hit-atts;
>

<!ELEMENT hourStat EMPTY>
<!ATTLIST hourStat
          hour              %nmtoken.type;     #REQUIRED
          %log-hit-atts;
>
The date elements are: dateStat, monthStat, dayStat and hourStat. They give the summary of the statistics by date of the requests. The monthStat element gives the summary of the requests by month. The dayStat element gives the total number of requests by day. The hourStat element gives the total number of the requests by hour. All these elements are inside of the dateStat container element.
The attributes of the monthStat element are: The attributes of the dayStat element are: The attributes of the hourStat element are:

15. User Session Elements

The user session elements are four: userSessions, userSession, path and uedge. The userSessions element is the container element for the set of the user sessions. Each user session is described using the userSession, path and uedge elements where a path is the collection of hyperlinks that the user has traversed during the session. The uedge element is similar to the edge element of the graph. It has the attributes source and target that referer to the ids of the node element of the Log Graph. It also contains the date and time when this link was traversed.

15.1 User Session Element

<!ELEMENT userSessions (userSession+)>
<!ATTLIST userSessions
          %count-att;
          max_edges          %number.type;     #IMPLIED
          min_edges          %number.type;     #IMPLIED
>
<!ELEMENT userSession (path)>
<!ATTLIST userSession
          %global-atts;
          ureferer           %uri.type;        #IMPLIED
          entry_page         %uri.type;        #IMPLIED
          start_time         %date.type;       #IMPLIED
          access_count       %number.type;     #IMPLIED
>
The userSessions attributes are: The userSession attributes are:

15.2 Path Element

<!ELEMENT path (uedge+)>
<!ATTLIST path
          %count-att;
>
The path element contains all hyperlinks that the user has traversed during the user session.
The path attribute is:

15.3 Uedge Element

<!ELEMENT uedge EMPTY>
<!ATTLIST uedge
          %edge-atts;
          utime           %date.type;         #IMPLIED
>
The uedge element reports a hyperlink that has been traversed during the user session.
The uedge attributes are:

Appendices

A. Characters

Since LOGML is an application of XML, LOGML supports Unicode [XML-1.0]. A LOGML character is defined to be an Unicode character [Unicode]. Any Unicode character allowed by XML is also allowed by LOGML. LOGML producers should follow the guideline for W3C Text Normalization in section 4 of "Character Model for the World Wide Web 1.0" [CharMod]. LOGML documents are assumed to be written in UTF-8 if the encoding specification is omitted. LOGML applications besides supporting UTF-8 default encoding, should also support iso-8859-1 (Latin 1) encoding. Appendix B of XML 1.0 document explains in more detail what Unicode characters can be used for tag names.

B. LOGML 1.0 DTD

<!-- DTD for LOGML 1.0.0 -->
<!-- logml.dtd -->
<!-- Date 06-25-2001 -->
<!-- Authors: John Punin and Gerard Uffelman-->
<!-- Computer Science Department -->
<!-- Rensselaer Polytechnic Institute -->


<!--ENTITY REFERENCES-->
<!--================================================================-->

<!-- Standard XML Namespace attribute -->
<!ENTITY % nds 'xmlns'>

<!--Boolean Type-->
<!ENTITY % boolean.type "(0|1)">

<!--Positive Number Type-->
<!ENTITY % number.type "NMTOKEN">

<!--Name Token Type-->
<!ENTITY % nmtoken.type "NMTOKEN">

<!--Identifier Type-->
<!ENTITY % id.type "NMTOKEN">

<!--String Type-->
<!ENTITY % string.type "CDATA">

<!--Date Type-->
<!ENTITY % date.type "%string.type;">

<!--URI Type-->
<!ENTITY % uri.type "%string.type;">

<!-- Global Attributes -->
<!ENTITY % global-atts "id %number.type; #IMPLIED
                        name %string.type; #IMPLIED
                        label %string.type; #IMPLIED">


<!-- Global Required Attributes -->
<!ENTITY % global-req-atts "id %number.type; #REQUIRED
                        name %string.type; #IMPLIED
                        label %string.type; #IMPLIED">


<!-- Standard XML Attributes -->
<!ENTITY % xml-atts "%nds; %uri.type; #FIXED 'http://www.cs.rpi.edu/LOGML' 
                        xml:lang NMTOKEN #IMPLIED
                        xml:space (default | preserve) #IMPLIED">

<!-- XGMML Attributes -->
<!ENTITY %  xgmml-atts "weight     %number.type;      #IMPLIED">

<!-- General Access Log Attributes -->
<!ENTITY %  log-acc-atts "access_count     %number.type;       #IMPLIED
                          bytes            %number.type;       #IMPLIED
                          html_pages       %number.type;       #IMPLIED">

<!-- General Hit Log Attributes -->
<!ENTITY %  log-hit-atts "hits             %number.type;       #IMPLIED
                          bytes            %number.type;       #IMPLIED
                          html_pages       %number.type;       #IMPLIED">

<!-- General Count Log Attributes -->
<!ENTITY %  log-count-atts "total_count      %number.type;       #IMPLIED
                            bytes            %number.type;       #IMPLIED
                            html_pages       %number.type;       #IMPLIED">


<!-- Counter of Elements Attribute -->
<!ENTITY %  count-att "count           %number.type;       #IMPLIED">

<!--ROOT ELEMENT-->
<!--================================================================-->

<!ELEMENT logml (graph, hosts?, domains?, directories?, userAgents?, hostReferers?, referers?, keywords*, summary?, userSessions?)>
<!ATTLIST logml
          %global-atts;
          %xml-atts;
          start_date     %date.type;          #REQUIRED
          end_date       %date.type;          #REQUIRED
>

<!--WEBSITE INFORMATION-->
<!--================================================================-->

<!ELEMENT graph (att*, (node, edge)*)>
<!ATTLIST graph
          %global-atts;
          directed      %boolean.type;       #IMPLIED
>

<!ELEMENT node (att*)>
<!ATTLIST node
          %global-req-atts;
          %xgmml-atts;
          hits             %number.type;      #IMPLIED
          ehits            %number.type;      #IMPLIED
          indp             %boolean.type;     #IMPLIED
>

<!ENTITY % edge-atts "source %nmtoken.type; #REQUIRED
                      target %nmtoken.type; #REQUIRED">

<!ELEMENT edge (att*)>
<!ATTLIST edge
          %global-atts;
          %xgmml-atts;
          %edge-atts;
          hits            %number.type;       #IMPLIED
          indp            %boolean.type;      #IMPLIED
>

<!ELEMENT att (att*)>
<!ATTLIST att
          %global-atts;
          value            %string.type;      #IMPLIED
>


<!--HOST INFORMATION-->
<!--================================================================-->

<!ELEMENT hosts (host+)>
<!ATTLIST hosts
          %count-att;
>

<!ELEMENT host EMPTY>
<!ATTLIST host
          %global-atts;
          ip               %string.type;       #IMPLIED
          is_internal      %boolean.type;      #IMPLIED 
          %log-acc-atts;
>

<!--DOMAIN INFORMATION-->
<!--================================================================-->

<!ELEMENT domains (domain+)>
<!ATTLIST domains
          %count-att;
>

<!ELEMENT domain EMPTY>
<!ATTLIST domain
          %global-atts;
          %log-acc-atts;
>

<!--DIRECTORY INFORMATION-->
<!--================================================================-->

<!ELEMENT directories (directory+)>
<!ATTLIST directories
          %count-att;
>

<!ELEMENT directory EMPTY>
<!ATTLIST directory
          %global-atts;
          total_count        %number.type;       #IMPLIED
          %log-acc-atts;
>


<!--USER AGENT INFORMATION-->
<!--================================================================-->

<!ELEMENT userAgents (userAgent+)>
<!ATTLIST userAgents 
          %count-att;
>

<!ELEMENT userAgent EMPTY>
<!ATTLIST userAgent
          %global-atts;
          %log-acc-atts;
          is_spider        %boolean.type;      #IMPLIED
>            


<!--REFERER INFORMATION-->
<!--================================================================-->

<!ELEMENT referers (referer+)>
<!ATTLIST referers
          %count-att;
>

<!ELEMENT referer EMPTY>
<!ATTLIST referer
          %global-atts;
          target             %nmtoken.type;    #IMPLIED
          %log-acc-atts;
          is_internal        %boolean.type;    #IMPLIED 
>


<!ELEMENT hostReferers (hostReferer+)>
<!ATTLIST hostReferers
          %count-att;
>

<!ELEMENT hostReferer EMPTY>
<!ATTLIST hostReferer
          %global-atts;
          %log-acc-atts;
          is_search_engine   %boolean.type;    #IMPLIED
>


<!--KEYWORD INFORMATION-->
<!--================================================================-->

<!ELEMENT keywords (keyword+)>
<!ATTLIST keywords 
          search_engine_name     %string.type;     #IMPLIED
          search_count           %number.type;     #IMPLIED
          %count-att;
>

<!ELEMENT keyword EMPTY>
<!ATTLIST keyword 
          %global-atts;
          total_count        %number.type;       #IMPLIED
>


<!--GENERAL STATISTICS INFORMATION-->
<!--================================================================-->

<!ELEMENT summary ((att | httpCode | httpMethod | httpVersion)*, dateStat?)>
<!ATTLIST summary
          requests                      %number.type;     #IMPLIED
          sessions                      %number.type;     #IMPLIED
          bytes                         %number.type;     #IMPLIED
          html_pages                    %number.type;     #IMPLIED
          nhtml_pages                   %number.type;     #IMPLIED
          inline_objects                %number.type;     #IMPLIED
          hyperlink_html                %number.type;     #IMPLIED
          hyperlink_nhtml               %number.type;     #IMPLIED
          html_entry_pages              %number.type;     #IMPLIED
          nhtml_entry_pages             %number.type;     #IMPLIED
          unique_sites                  %number.type;     #IMPLIED
          unique_host_referers          %number.type;     #IMPLIED
          unique_se_referers            %number.type;     #IMPLIED
          unique_external_url_referers  %number.type;     #IMPLIED
          unique_internal_url_referers  %number.type;     #IMPLIED
          unique_user_agents            %number.type;     #IMPLIED
          requests_hour                 %number.type;     #IMPLIED
          requests_day                  %number.type;     #IMPLIED
          kbytes_day                    %number.type;     #IMPLIED
          kbytes_hour                   %number.type;     #IMPLIED
          searches                      %number.type;     #IMPLIED
          unique_keywords               %number.type;     #IMPLIED
>

<!ELEMENT httpCode EMPTY>
<!ATTLIST httpCode 
          code             %number.type;       #REQUIRED
          %global-atts;
          %log-count-atts;
>

<!ELEMENT httpMethod EMPTY>
<!ATTLIST httpMethod
          %global-atts;
          %log-count-atts;
>

<!ELEMENT httpVersion EMPTY>
<!ATTLIST httpVersion
          %global-atts;
          %log-count-atts;
>


<!ELEMENT dateStat (monthStat | dayStat | hourStat)+>

<!ELEMENT monthStat EMPTY>
<!ATTLIST monthStat 
          month             %nmtoken.type;     #REQUIRED
          %log-hit-atts;
>

<!ELEMENT dayStat EMPTY>
<!ATTLIST dayStat
          day               %nmtoken.type;     #REQUIRED
          %log-hit-atts;
>

<!ELEMENT hourStat EMPTY>
<!ATTLIST hourStat
          hour              %nmtoken.type;     #REQUIRED
          %log-hit-atts;
>

<!--USER SESSION INFORMATION-->
<!--================================================================-->

<!ELEMENT userSessions (userSession+)>
<!ATTLIST userSessions
          %count-att;
          max_edges          %number.type;     #IMPLIED
          min_edges          %number.type;     #IMPLIED
>

<!ELEMENT userSession (path)>
<!ATTLIST userSession
          %global-atts;
          ureferer           %uri.type;        #IMPLIED
          entry_page         %uri.type;        #IMPLIED
          start_time         %date.type;       #IMPLIED
          access_count       %number.type;     #IMPLIED
>

<!ELEMENT path (uedge+)>
<!ATTLIST path
          %count-att;
>

<!ELEMENT uedge EMPTY>
<!ATTLIST uedge
          %edge-atts;
          utime           %date.type;         #IMPLIED
>

<!--================================================================-->
<!--END LOGML DTD-->

C. LOGML 1.0 Schema

<?xml version='1.0' encoding="UTF-8"?>

<!-- XML schema for LOGML 1.0 -->
<!-- Authors: John Punin, Mukkai Krishnamoorthy and Gerard Uffelman -->
<!-- Computer Science Department -->
<!-- Rensselaer Polytechnic Institute -->
<!-- logml.xsd,v 1.0 06/22/2001 -->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://www.cs.rpi.edu/LOGML" 
        xmlns:xml="http://www.w3.org/XML/1998/namespace"
        xmlns:xgmml="http://www.cs.rpi.edu/XGMML" 
        xmlns:lml="http://www.cs.rpi.edu/LOGML" 
        xmlns="http://www.cs.rpi.edu/LOGML" 
        elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        version="logml 1.0">

<!-- get access to the xml: attribute groups for xml:lang -->
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" 
        schemaLocation="http://www.w3.org/2001/xml.xsd"/>

<xsd:import namespace="http://www.cs.rpi.edu/XGMML" 
        schemaLocation="http://www.cs.rpi.edu/~puninj/XGMML/xgmml.xsd"/>

<!-- Boolean type -->
<xsd:simpleType name="boolean.type">
 <xsd:restriction base="xgmml:boolean.type"/>
</xsd:simpleType>

<!-- Positive number type -->
<xsd:simpleType name="number.type">
  <xsd:restriction base="xgmml:number.type"/>
</xsd:simpleType>

<!-- Token type -->
<xsd:simpleType name="nmtoken.type">
  <xsd:restriction base="xsd:NMTOKEN"/>
</xsd:simpleType>

<!-- ID type -->
<xsd:simpleType name="id.type">
  <xsd:restriction base="xgmml:id.type"/>
</xsd:simpleType>

<!-- IDREF type -->
<xsd:simpleType name="idref.type">
  <xsd:restriction base="xgmml:idref.type"/>
</xsd:simpleType>

<!-- String type -->
<xsd:simpleType name="string.type">
  <xsd:restriction base="xgmml:string.type"/>
</xsd:simpleType>

<!-- URI type -->
<xsd:simpleType name="uri.type">
  <xsd:restriction base="xsd:anyURI"/>
</xsd:simpleType>

<!--Date Type-->
<xsd:simpleType name="date.type">
  <xsd:restriction base="xsd:string"/>
</xsd:simpleType>

<!-- Global Attributes -->

<xsd:attributeGroup name="lml-global-atts">
                <xsd:attribute name="id" type="id.type"/>
                <xsd:attribute name="name" type="string.type"/>
                <xsd:attribute name="label" type="string.type"/>
</xsd:attributeGroup>

<!-- Global Required Attributes -->
<xsd:attributeGroup name="lml-global-req-atts">
                <xsd:attribute name="id" type="id.type" use="required"/>
                <xsd:attribute name="name" type="string.type"/>
                <xsd:attribute name="label" type="string.type"/>
</xsd:attributeGroup>

<!-- Standard XML Attributes -->
<xsd:attributeGroup name="xml-atts">
                <xsd:attribute ref="xml:lang"/>
                <xsd:attribute ref="xml:space"/>
</xsd:attributeGroup>

<!-- XGMML Attributes -->
<xsd:attributeGroup name="xgmml-atts">
                <xsd:attribute name="weight" type="string.type"/>
</xsd:attributeGroup>

<!-- General Access Log Attributes -->
<xsd:attributeGroup name="log-acc-atts">
                <xsd:attribute name="access_count" type="number.type"/>
                <xsd:attribute name="bytes" type="number.type"/>
                <xsd:attribute name="html_pages" type="number.type"/>
</xsd:attributeGroup>


<!-- General Hit Log Attributes -->
<xsd:attributeGroup name="log-hit-atts">
                <xsd:attribute name="hits" type="number.type"/>
                <xsd:attribute name="bytes" type="number.type"/>
                <xsd:attribute name="html_pages" type="number.type"/>
</xsd:attributeGroup>


<!-- General Count Log Attributes -->
<xsd:attributeGroup name="log-count-atts">
                <xsd:attribute name="total_count" type="number.type"/>
                <xsd:attribute name="bytes" type="number.type"/>
                <xsd:attribute name="html_pages" type="number.type"/>
</xsd:attributeGroup>

<!-- Counter of Elements Attribute -->
<xsd:attributeGroup name="count-att">
                <xsd:attribute name="count" type="number.type"/>
</xsd:attributeGroup>

<!--ROOT ELEMENT-->
<!--================================================================-->

<xsd:complexType name="logmlType">
     <xsd:sequence>
        <xsd:element ref="graph" minOccurs="1" maxOccurs="1"/>
        <xsd:element ref="hosts" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="domains" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="directories" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="userAgents" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="hostReferers" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="referers" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="keywords" minOccurs="0" maxOccurs="unbounded"/>
        <xsd:element ref="summary" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="userSessions" minOccurs="0" maxOccurs="1"/>
     </xsd:sequence>
       <xsd:attributeGroup ref="lml-global-atts"/>
       <xsd:attributeGroup ref="xml-atts"/>
       <xsd:attribute name="start_date" type="date.type" use="required"/>
       <xsd:attribute name="end_date" type="date.type" use="required"/>
</xsd:complexType>

<xsd:element name="logml" type="logmlType"/>


<!--WEBSITE INFORMATION-->
<!--================================================================-->

<xsd:complexType name="simpleLogGraph">
   <xsd:complexContent>
      <xsd:restriction base="xgmml:simpleGraph">
         <xsd:sequence>
            <xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
                <xsd:element ref="node"/>
                <xsd:element ref="edge"/>
            </xsd:choice>
         </xsd:sequence>
           <xsd:attributeGroup ref="lml-global-atts"/>
           <xsd:attribute name="directed" type="boolean.type"/>
      </xsd:restriction>
   </xsd:complexContent>
</xsd:complexType>

<!-- Graph Element -->
<xsd:element name="graph" type="simpleLogGraph"/>

<xsd:complexType name="simpleLogNode">
   <xsd:complexContent>
      <xsd:extension base="xgmml:simpleNode">
         <xsd:sequence>
            <xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
           <xsd:attribute name="hits" type="number.type"/>
           <xsd:attribute name="ehits" type="number.type"/>
           <xsd:attribute name="indp" type="boolean.type"/>
      </xsd:extension>
   </xsd:complexContent>
</xsd:complexType>

<!-- Node Element -->
<xsd:element name="node" type="simpleLogNode"/>


<!-- Edge Attributes (GML) -->
<xsd:attributeGroup name="edge-atts">
    <xsd:attribute name="source" type="idref.type" use="required"/>
    <xsd:attribute name="target" type="idref.type" use="required"/>
</xsd:attributeGroup>

<xsd:complexType name="simpleLogEdge">
   <xsd:complexContent>
      <xsd:extension base="xgmml:simpleEdge">
         <xsd:sequence>
            <xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
           <xsd:attribute name="hits" type="number.type"/>
           <xsd:attribute name="indp" type="boolean.type"/>
      </xsd:extension>
   </xsd:complexContent>
</xsd:complexType>

<!-- Edge Element -->
<xsd:element name="edge" type="simpleLogEdge"/>

<!-- Att Element -->
<xsd:element name="att">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="att" minOccurs="0" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attribute name="value" type="string.type"/>
     </xsd:complexType>
</xsd:element>

<!--HOST INFORMATION-->
<!--================================================================-->

<xsd:element name="hosts">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="host" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="host">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attribute name="ip" type="string.type"/>
         <xsd:attribute name="is_internal" type="boolean.type"/>
         <xsd:attributeGroup ref="log-acc-atts"/>
     </xsd:complexType>
</xsd:element>

<!--DOMAIN INFORMATION-->
<!--================================================================-->

<xsd:element name="domains">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="domain" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="domain">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attributeGroup ref="log-acc-atts"/>
     </xsd:complexType>
</xsd:element>

<!--DIRECTORY INFORMATION-->
<!--================================================================-->

<xsd:element name="directories">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="directory" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="directory">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attribute name="total_count" type="number.type"/>
         <xsd:attributeGroup ref="log-acc-atts"/>
     </xsd:complexType>
</xsd:element>

<!--USER AGENT INFORMATION-->
<!--================================================================-->

<xsd:element name="userAgents">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="userAgent" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="userAgent">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attributeGroup ref="log-acc-atts"/>
         <xsd:attribute name="is_spider" type="boolean.type"/>
     </xsd:complexType>
</xsd:element>

<!--REFERER INFORMATION-->
<!--================================================================-->

<xsd:element name="referers">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="referer" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="referer">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attribute name="target" type="idref.type"/>
         <xsd:attributeGroup ref="log-acc-atts"/>
         <xsd:attribute name="is_internal" type="boolean.type"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="hostReferers">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="hostReferer" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="hostReferer">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attributeGroup ref="log-acc-atts"/>
         <xsd:attribute name="is_search_engine" type="boolean.type"/>
     </xsd:complexType>
</xsd:element>

<!--KEYWORD INFORMATION-->
<!--================================================================-->

<xsd:element name="keywords">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="keyword" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attribute name="search_engine_name" type="string.type"/>
         <xsd:attribute name="search_count" type="number.type"/>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="keyword">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attribute name="total_count" type="number.type"/>
     </xsd:complexType>
</xsd:element>


<!--GENERAL STATISTICS INFORMATION-->
<!--================================================================-->
<xsd:element name="summary">
     <xsd:complexType>
       <xsd:sequence>
        <xsd:choice minOccurs="0" maxOccurs="unbounded"> 
            <xsd:element ref="att"/>
            <xsd:element ref="httpCode"/>
            <xsd:element ref="httpMethod"/>
            <xsd:element ref="httpVersion"/>
         </xsd:choice>
         <xsd:element ref="dateStat" minOccurs="0" maxOccurs="1"/>
       </xsd:sequence>
       <xsd:attribute name="requests" type="number.type"/>
       <xsd:attribute name="sessions" type="number.type"/>
       <xsd:attribute name="bytes" type="number.type"/>
       <xsd:attribute name="html_pages" type="number.type"/>
       <xsd:attribute name="nhtml_pages" type="number.type"/>
       <xsd:attribute name="inline_objects" type="number.type"/>
       <xsd:attribute name="hyperlink_html" type="number.type"/>
       <xsd:attribute name="hyperlink_nhtml" type="number.type"/>
       <xsd:attribute name="html_entry_pages" type="number.type"/>
       <xsd:attribute name="nhtml_entry_pages" type="number.type"/>
       <xsd:attribute name="unique_sites" type="number.type"/>
       <xsd:attribute name="unique_host_referers" type="number.type"/>
       <xsd:attribute name="unique_se_referers" type="number.type"/>
       <xsd:attribute name="unique_external_url_referers" type="number.type"/>
       <xsd:attribute name="unique_internal_url_referers" type="number.type"/>
       <xsd:attribute name="unique_user_agents" type="number.type"/>
       <xsd:attribute name="requests_hour" type="xsd:double"/>
       <xsd:attribute name="requests_day" type="xsd:double"/>
       <xsd:attribute name="kbytes_day" type="xsd:double"/>
       <xsd:attribute name="kbytes_hour" type="xsd:double"/>
       <xsd:attribute name="searches" type="number.type"/>
       <xsd:attribute name="unique_keywords" type="number.type"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="httpCode">
     <xsd:complexType>
         <xsd:attribute name="code" type="number.type"/>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attributeGroup ref="log-count-atts"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="httpMethod">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attributeGroup ref="log-count-atts"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="httpVersion">
     <xsd:complexType>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attributeGroup ref="log-count-atts"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="dateStat">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:choice minOccurs="1" maxOccurs="unbounded"> 
            <xsd:element ref="monthStat"/>
            <xsd:element ref="dayStat"/>
            <xsd:element ref="hourStat"/>
         </xsd:choice>
       </xsd:sequence>
     </xsd:complexType>
</xsd:element>

<xsd:element name="monthStat">
     <xsd:complexType>
         <xsd:attribute name="month" type="nmtoken.type"/>
         <xsd:attributeGroup ref="log-hit-atts"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="dayStat">
     <xsd:complexType>
         <xsd:attribute name="day" type="nmtoken.type"/>
         <xsd:attributeGroup ref="log-hit-atts"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="hourStat">
     <xsd:complexType>
         <xsd:attribute name="hour" type="nmtoken.type"/>
         <xsd:attributeGroup ref="log-hit-atts"/>
     </xsd:complexType>
</xsd:element>

<!--USER SESSION INFORMATION-->
<!--================================================================-->

<xsd:element name="userSessions">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="userSession" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
         <xsd:attribute name="max_edges" type="number.type"/>
         <xsd:attribute name="min_edges" type="number.type"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="userSession">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="path" minOccurs="1" maxOccurs="1"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="lml-global-atts"/>
         <xsd:attribute name="ureferer" type="uri.type"/>
         <xsd:attribute name="entry_page" type="uri.type"/>
         <xsd:attribute name="start_time" type="date.type"/>
         <xsd:attribute name="access_count" type="number.type"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="path">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element ref="uedge" minOccurs="1" maxOccurs="unbounded"/>
       </xsd:sequence>
         <xsd:attributeGroup ref="count-att"/>
     </xsd:complexType>
</xsd:element>

<xsd:element name="uedge">
     <xsd:complexType>
         <xsd:attributeGroup ref="edge-atts"/>
         <xsd:attribute name="utime" type="date.type"/>
     </xsd:complexType>
</xsd:element>

</xsd:schema>

D. LOGML Example

LOGML files are large files so this is part of the whole example LOGML file puninj.lml.
<?xml version="1.0"?>
<!DOCTYPE logml SYSTEM "http://www.cs.rpi.edu/~puninj/LOGML/logml.dtd">
<!-- LOGML File Generated by webloggr 1.0 -->
<logml xmlns="http://www.cs.rpi.edu/LOGML"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.cs.rpi.edu/LOGML
       http://www.cs.rpi.edu/~puninj/LOGML/logml.xsd"
        start_date="12/Oct/2000:05:00:05" 
        end_date="12/Oct/2000:16:00:01">
<graph directed="1">
<node id="234" label="http://www.cs.rpi.edu/~puninj/JAVA/projects/lfarrw.gif"
 hits="1" weight="1">
<att name="title" value="No title"/>
<att name="mime" value="image/gif"/>
<att name="size" value="1291"/>
<att name="date" value="Sun Jun 11 02:14:28 2000"/>
<att name="code" value="200"/>
</node>
<node id="228" label="http://www.cs.rpi.edu/~puninj/XGMML/POSTER/IMG/pptgraph.gif" 
hits="2" weight="2">
<att name="title" value="No title"/>
<att name="mime" value="image/gif"/>
<att name="size" value="27689"/>
<att name="date" value="Wed Sep 22 14:17:15 1999"/>
<att name="code" value="200"/>
</node>
....
<edge source="191" target="234" label="SRC IMG lfarrw.gif" hits="1" weight="1">
<att value="image"/>
</edge>
<edge source="161" target="228" hits="2" weight="2">
<att value="image"/>
</edge>
....
<edge source="550" target="561" hits="1" weight="1" indp="1"/>
<edge source="550" target="562" hits="1" weight="1" indp="1"/>
</graph>
<hosts count="35">
<host name="vamos.inria.fr" access_count="43" bytes="487397" html_pages="43"/>
<host name="kbl-ternzn1200.zeelandnet.nl" access_count="13" bytes="46354" 
html_pages="1"/>
....
</hosts>
<domains count="9">
<domain name="fr" access_count="44" bytes="488509" html_pages="44"/>
<domain name="unknown" access_count="25" bytes="388608" html_pages="16"/>
<domain name="com" access_count="21" bytes="229979" html_pages="19"/>
....
</domains>
<directories count="30">
<directory name="http://www.cs.rpi.edu/~puninj/XGMML" access_count="21" 
total_count="49" bytes="1116521"/>
<directory name="http://www.cs.rpi.edu/~puninj/TALK" access_count="19" 
total_count="22" bytes="91460"/>
....
</directories>
<userAgents count="23">
<userAgent name="xyro_(xcrawler@cosmos.inria.fr)" access_count="43" 
bytes="487397" html_pages="43"/>
<userAgent name="Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)" 
access_count="27" bytes="670815" html_pages="9"/>
....
</userAgents>
<hostReferers count="14">
<hostReferer name="No_Referer" access_count="66" bytes="945527"/>
<hostReferer name="http://www.cs.rpi.edu" access_count="41" bytes="701097"/>
<hostReferer name="http://home.xnet.com" access_count="1" bytes="1112"/>
....
</hostReferers>
<referers count="11">
<referer name="No_Referer" access_count="66" bytes="945527"/>
<referer name="http://boss.cae.wisc.edu/hppd/hpux/Networking/WWW/xhtml-1.3/" 
access_count="1" bytes="35272" target="8"/>
<referer name="http://informant.dartmouth.edu/" access_count="1" bytes="1112"
 target="2"/>
....
</referers>
<keywords count="10" search_count="9">
<keyword name="java" total_count="3"/>
<keyword name="xhtml" total_count="2"/>
....
</keywords>
<summary 
 requests="132" sessions="6" bytes="1796173"
 html_pages="56" nhtml_pages="17" inline_objects="10" hyperlink_html="7" 
 hyperlink_nhtml="16"
 html_entry_pages="55" nhtml_entry_pages="4" unique_sites="35" unique_host_referers="8" 
 unique_se_referers="6"
 unique_external_url_referers="7" unique_internal_url_referers="4" unique_user_agents="23"
 requests_hour="12.00" requests_day="288.03" kbytes_day="159.48" kbytes_hour="3827.46"
 searches="9" unique_keywords="10">
<httpCode code="200" name="200 - OK " count="118" bytes="1793393" html_pages="83"/>
<httpCode code="301" name="301 - Moved Permanently" count="3" bytes="1058" html_pages="3"/>
<httpCode code="304" name="304 - Not Modified" count="6" bytes="0" html_pages="5"/>
<httpCode code="404" name="404 - Not Found" count="5" bytes="1722" html_pages="5"/>
<httpMethod name="GET" count="131" bytes="1796173" html_pages="95"/>
<httpMethod name="HEAD" count="1" bytes="0" html_pages="1"/>
<httpVersion name="HTTP/1.0" count="97" bytes="1399288" html_pages="83"/>
<httpVersion name="HTTP/1.1" count="35" bytes="396885" html_pages="13"/>
<dateStat>
<monthStat month="10" hits="132" bytes="1796173" html_pages="96"/>
<dayStat day="12" hits="132" bytes="1796173" html_pages="96"/>
<hourStat hour="5" hits="12" bytes="15622" html_pages="12"/>
<hourStat hour="6" hits="15" bytes="103280" html_pages="14"/>
<hourStat hour="7" hits="41" bytes="642786" html_pages="28"/>
<hourStat hour="8" hits="16" bytes="105435" html_pages="9"/>
<hourStat hour="10" hits="2" bytes="346" html_pages="2"/>
<hourStat hour="11" hits="7" bytes="54889" html_pages="5"/>
<hourStat hour="12" hits="22" bytes="505379" html_pages="14"/>
<hourStat hour="13" hits="2" bytes="1444" html_pages="2"/>
<hourStat hour="14" hits="12" bytes="364297" html_pages="7"/>
<hourStat hour="15" hits="3" bytes="2695" html_pages="3"/>
</dateStat>
</summary>
<userSessions count="2" max_edges="100" min_edges="2">
<userSession name="proxy.artech.com.uy" ureferer="No_Referer" 
entry_page="http://www.cs.rpi.edu/~puninj/XGMML/" start_time="12/Oct/2000:12:50:11" 
access_count="4">
<path count="3">
<uedge source="3" target="10" utime="12/Oct/2000:12:50:12"/>
<uedge source="3" target="21" utime="12/Oct/2000:12:51:41"/>
<uedge source="21" target="22" utime="12/Oct/2000:12:52:02"/>
</path>
</userSession>
<userSession name="207.234.33.12" 
ureferer="http://search.excite.com/search.gw?search=XHTML" 
entry_page="http://www.cs.rpi.edu/~puninj/TALK/head.html" 
start_time="12/Oct/2000:14:05:10" access_count="3">
<path count="2">
<uedge source="2" target="7" utime="12/Oct/2000:14:05:24"/>
<uedge source="2" target="8" utime="12/Oct/2000:14:06:14"/>
</path>
</userSession>
</userSessions>
</logml>

E. LOGML  Internet Media Type

The recommended Internet Media Type (MIME type) for  LOGML Document is "application/logml" . The suffix ".lml" is recommended
for LOGML files.

F. References

[CharMod]
"Character Model for the World Wide Web 1.0", Martin J. Dürst et al. World Wide Web Consortium, 26 January 2001.
URL: http://www.w3.org/TR/charmod/
[ISO 639]
(International Organization for Standardization). ISO 639:1988 (E). Code for the representation of names of languages.
[Geneva]: International Organization for Standardization, 1988.
[RDF]
"Resource Description Framework (RDF) Model and Syntax Specification" World Wide Web Consortium, 22 February 1999.
URL: http://www.w3.org/TR/REC-rdf-syntax
[RFC1630]
"Universal Resource Identifiers in WWW", T. Berners-Lee, L, June 1994
URL: http://www.ietf.org/rfc/rfc1630.txt
[RFC1738]
"Uniform Resource Locators", T. Berners-Lee, L. Masinter, and M. McCahill, December 1994.
URL: http://www.ietf.org/rfc/rfc1738.txt
[RFC1808]
"Relative Uniform Resource Locators", R. Fielding, June 1995.
URL: http://www.ietf.org/rfc/rfc1808.txt
[SVG]
"Scalable Vector Graphics (SVG) 1.0 Specification", Jon Ferraiolo, 2 August 2000.
URL: http://www.w3.org/TR/SVG/
[Unicode]
The Unicode Consortium, The Unicode Standard. (See http://www.unicode.org/unicode/standard/versions/ for the latest version and additional information on versions of the standard and of the Unicode Character Database).
[WCTDS]
"Web Characterization Terminology & Definitions Sheet", Brian Lavoie, and Henrik Frystyk Nielsen, 24 May 1999.
URL:http://www.w3.org/1999/05/WCA-terms/
[XGMML-1.0]
"XGMML 1.0: The eXtensible Graph Markup and Modeling Language", John Punin, Mukkai Krishnamoorthy, 6 October 2000.
URL: http://www.cs.rpi.edu/~puninj/XGMML/draft-xgmml.html
[XHTML-1.0]
"XHTML[tm] 1.0: The Extensible HyperText Markup Language"  W3C Recommendation , 26 January 2000.
URL: http://www.w3.org/TR/xhtml1
[XML-1.0]
"Extensible Markup Language (XML) 1.0" T. Bray, J. Paoli, C.M. Sperberg-McQueen, editors, 6 October 2000.
URL: http://www.w3.org/TR/REC-xml
[XML-NS]
"Namespaces in XML" T. Bray, D. Hollander, A. Layman, editors, 14 January 1999.
URL: http://www.w3.org/TR/REC-xml-names.
[XML-SCHEMA]
"XML Schema Part 1: Structures" H. Thompson, D. Beech, M. Maloney, N. Mendelsohn editors, 22 September 2000.
URL: http://www.w3.org/TR/xmlschema-1
"XML Schema Part 2: Datatypes" P. Biron and A. Malhotra editors, 22 September 2000.
URL:http://www.w3.org/TR/xmlschema-2
[XSLT-1.0]
"XSL Transformations (XSLT)" James Clark, 16 November 1999.
URL:http://www.w3.org/TR/xslt