+++ /dev/null
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>MathQL</title>
-
-
- <meta http-equiv="content-type"
- content="text/html; charset=ISO-8859-1">
-
- <meta name="author" content="Ferruccio Guidi">
-
- <meta name="description" content="MathQL Home Page">
-</head>
- <body>
-
-<h1 align="center">MathQL-1</h1>
-
-<h2 align="center">A query language for RDF metadata</h2>
-
-<table cellpadding="10" cellspacing="2" border="0" width="95%"
- bgcolor="#ffffff">
- <tbody>
- <tr>
- <td valign="top" align="left">
-
-
- <ul>
- <li><a href="index.html">Forward</a><br>
- </li>
-
-
- </ul>
-
-
- <ul>
- <li><a href="features.html">Features</a></li>
-
- </ul>
-
- <ul>
- <li>What's new<br>
- </li>
-
-
- </ul>
-
-
- <ul>
- <li><a href="documentation.html">Documentation</a></li>
-
-
- </ul>
-
-
- <ul>
- <li><a href="implementation.html">Implementation</a><br>
- </li>
-
-
- </ul>
-
-
- <ul>
- <li><a href="authors.html">The authors</a><br>
- </li>
-
-
- </ul>
-
-
- <ul>
- <li><a href="links.html">Links</a><br>
- </li>
-
-
- </ul>
- <br>
- </td>
- <td valign="top">
-
- <div align="right"><b>What's new</b><br>
- <br>
- </div>
- This page reports the newly <a href="implementation.html">implemented</a>
- features of MathQL-1 that are not included in the official <a
- href="documentation.html">documentation</a> yet.<br>
- <br>
-
- <hr width="100%" size="2"><br>
- <h3 align="center"><img
- src="http://www.cs.unibo.it/%7Efguidi/download/bbb11.png" alt="New"
- width="38" height="37" align="top">
- MathQL-1 version 4 now under development ...</h3>
-We are now implementing the new unstable version of MathQL-1 (i.e. MathQL-1.4).
-The main goals of this release are:<br>
- <ul>
- <li>A clear distinction between the core language and the auxiliary
-functions, which should be part of an extensible library.<br>
- </li>
- </ul>
- <ul>
- <li>The elimination of the explicit casts between the <query>
-and <value> types in queries.<br>
- </li>
- </ul>
- <ul>
- <li>A tight connection with a query generator (i.e <a
- href="implementation.html">HELM query generator</a>).<br>
- </li>
- </ul>
- <hr width="100%" size="2">
- <div align="center">
- <h3>Changes and additions to MathQL-1 operators:</h3>
- </div>
-
- <ul>
- <li>The <b>add</b> operator now accepts a syntax extension allowing
- to specify more than one explicit attribute group.</li>
-
- </ul>
-
- <blockquote>The syntax now is:</blockquote>
-
- <blockquote><query> := "add" [ "distr" ]? [ <groups> |
-<avar> ] "in" <query><br>
- <groups> := <group> [ ";" <group> ]*<br>
- <group> := <attribute> [ "," <attribute> ]*<br>
- <attribute> := <value> "as" <path><br>
- <br>
- Examples:<br>
- the query <b>add "1" as "a", "2" as "b" in subj "A"</b> gives the result
- <b>"A" attr {"a"="1"; "b"="2"}</b> while<br>
- the query <b>add "1" as "a"; "2" as "b" in subj "A"</b> gives the result
- <b>"A" attr {"a"="1"}, {"b"="2"}</b>.<br>
- </blockquote>
-
- <ul>
- <li>The new <b>align</b> operator takes an integer <i>i</i> (represented
- as a string), a multiple string value <i>v</i> and returns the same <i>v</i>
- where each string with length <i>n < i</i> is prefixed with <i>i - n</i>
- spaces. The syntax of the add operator is:</li>
-
- </ul>
-
- <blockquote><value> := "align" <string> "in" <value><br>
- <br>
- This operators aligns strings containing numbers so that their alphabetic
- order agrees with their numeric order.<br>
- </blockquote>
-
- <ul>
- <li>The <b>intersect</b> operator now intersects the attribute
- groups of the matching subject strings set-theoretically rather than making
- their "Cartesian product". This semantics reduces the computational costs
- and makes intersection the dual of union.</li>
-
- </ul>
-
- <ul>
- <li>The <b>property</b> operator now accepts more than one <b>isfalse</b>
- clause to increase the complexity of the constraint condition used to filter
- the raw query results. This feature is exploited in the queries produced
- by the <a href="implementation.html">HELM query generator</a>.</li>
-
- </ul>
- <br>
-
- <hr width="100%" size="2">
- <div align="center">
- <h3>The PostgreSQL database map:</h3>
- </div>
- The <b>PostgreSQL database map</b> is a file describing how the MathQL-1
- interpreter must interact with the underlying PostgreSQL database, when
-it is run in Postgres mode. Currently this file contains the following information:<br>
-
- <ul>
- <li>the <i>database connection string</i> to be used when the interpreter
- opens a connection with the database;</li>
-
- </ul>
-
- <ul>
- <li>the <i>map</i> describing the correspondence between the metadata
- access paths used by the <i>property</i> operator and the fields of the
-database tables.</li>
-
- </ul>
- The format of the file is textual and line oriented, but a corresponding
- XML syntax will be provided soon.<br>
- The first line must contain the database connection string and the subsequent
- lines contain the map with the following syntax:<br>
-
- <ul>
- <li>blank lines: ignored (used for separation);</li>
-
- </ul>
-
- <ul>
- <li>lines starting with a # followed by a space: ignored (used
-for comments);<br>
- </li>
-
- </ul>
-
- <ul>
- <li><table_name> <field_name> "<-"
- [ <path_component> ]*<br>
- </li>
-
- </ul>
-
- <blockquote>the information about the metadata denoted by the given
- path is found in the given field of the given table in the database. For
-example the line:<br>
- <br>
- refobj h_occurrence <- refObj h:occurrence<br>
- <br>
- tells that the metadata denoted by the path <b>/"refObj"/"h:occurrence"</b>
- is found in the field "h_occurrence" of the table "refobj" in the database,
- while:<br>
- <br>
- refobj source <-<br>
- <br>
- tells that the metadata denoted by the path <b>/</b> is found in the field
- "source" of the table "refobj" in the database;<br>
- </blockquote>
-
- <ul>
- <li><table_name> <field_name> "<+"
- [ <path_component> ]*<br>
- </li>
-
- </ul>
-
- <blockquote>same as the previous but defines a default table and field
- for the given path. This is used to force the interpreter to query a particular
- table when the information denoted by a path can be found in more than one
- table and field. For example:<br>
- <br>
- objectname source <+<br>
- refobj source <-<br>
- refrel source
-<-<br>
- refsort source <-<br>
- <br>
- tells that the metadata denoted by the path <b>/</b> is found in the "source"
- field of the "objectname", "refobj", "refrel" and "refsort" tables, and
-that the first choice is preferred;<br>
- </blockquote>
-
- <ul>
- <li><table_name> "<-" [ <path_component> ]*</li>
-
- </ul>
-
- <blockquote>the given path denotes a structured metadata whose components
- are found in the fields of the given table. For example:<br>
- <br>
- refobj <- refObj<br>
- <br>
- tells that the path <b>/"refObj"</b> denotes a structured metadata whose
- components are found in the fields of the table "refobj"; <br>
- </blockquote>
-
- <ul>
- <li><table_name> "<+" [ <path_component> ]*</li>
-
- </ul>
-
- <blockquote>same as the previous but tells that this is a default correspondence;
- <br>
- </blockquote>
-
- <ul>
- <li><virtual_table_name> "->" <concrete_table_name></li>
-
- </ul>
-
- <blockquote>defines a correspondence between a virtual table name an
- a concrete table name. All the <table_name> entries represent virtual
- table names that are mapped to concrete table names using the identity function
- unless a particular mapping is defined for them using the above construction.
- This mechanism allows to define several set of metadata on the same database
- table as in:<br>
- <br>
- refobj source
- <-<br>
- refobj h_occurrence <-
- refObj h:occurrence<br>
- backpointer source
- <- backPointer h:occurrence<br>
- backpointer h_occurrence <-<br>
- backpointer
- -> refobj<br>
- </blockquote>
-
- <blockquote>which defines four path accessing two virtual tables ("refobj"
- and "backpointer") and then maps these tables in a single concrete table;<br>
- </blockquote>
-
- <ul>
- <li>"->" <br>
- </li>
-
- </ul>
-
- <blockquote>a line like this must end the map file. <br>
- </blockquote>
- Here you can find the <a
- href="http://www.cs.unibo.it/cgi-bin/cvsweb/helm/mathql_db_map.txt">current
- version of PostgreSQL database map for HELM</a>.<br>
- <br>
- <b>How does the interpreter use the map?</b> The map file is read
-during the interpreter initialization process from the file pointed by the
-MATHQL_DB_MAP environment variable and is used during the execution of each
- <i>property</i> operation in the issued queries.When executing a <i>property</i>
-operation, the interpreter uses the map to find the smallest set of database
-tables containing the information required by the given access paths and then
-queries these tables to obtain the wanted information. <br>
- </td>
- </tr>
-
- </tbody>
-</table>
- <br>
- <br>
-</body>
-</html>