References

Chapter 17. Teaching Linguistics With NooJ

NooJ contains two new functionalities that are specifically designed to help teach Linguistics, Corpus Linguistics or Computational Linguistics: “Labs” and “Projects”.

17.1 NooJ Labs

NooJ Labs are small applications that are designed either to demonstrate a specific linguistic phenomenon and how to represent it with NooJ, or to provide users with a specific, useful tool for NooJ. All labs are available from NooJ’s menu item “Lab”.

As of now, there are six available labs, but it would be easy to add more; NooJ is based on an “Object-Oriented Component Programming” technology (.NET Framework), which allows programmers to add modules to their application very easily. We hope that people who use NooJ as a teaching tool will design new labs!

Lab > Text Encoding

Figure 1. Lab>Text Encoding

This lab is designed to demonstrate how texts are represented in computer files.

The top of the window shows the correspondance between the decimal and the binary notations for numbers. Students can enter a value in decimal (e.g. “72”), then press “Enter” to get the number written in binary form, or they can enter a number in a binary form, then press “Enter” to display the number in decimal form.

Students should learn how to translate a number from decimal to binary, and from binary to decimal.

The bottom of the window shows that a text file is represented by a series of numbers, each number corresponds to each character of the text. Note that, depending on the selected encoding format, each character is represented (i.e. “encoded”) by:

-- one single number which takes its values from 0 to 128 (e.g. ASCII),

-- one number from 0 to 255 (e.g. the various extensions for ASCII-8),

-- two numbers from 0 to 255 (e.g. Unicode 16),

-- by a code of variable length; e.g. Unicode 8 represents the letter “a” as the single number “97” and the accented letter “Ã ” as “197, 160”.

The character codes are displayed both in decimal and in binary.

Students should enter texts that contain lowercase and uppercase letters, accented letters, non-roman characters (e.g. Chinese), special characters (e.g. space and tabulation) and special cases (e.g. a given letter both in final and in non final mode), etc.

Students should see how different character encoding standards are more or less compatible with each others (for instance the different variants of ASCII), as well as the limitations of some character encoding standards (e.g. ASCII).

Lab > PERL

Figure 2. Lab > PERL

This lab is designed to demonstrate how to use PERL-type regular expressions to express complex queries on string of characters.

In NooJ, PERL-type regular expressions are used in the Dictionary window: it allows users to perform complex search, replace and counting operations on dictionaries.

PERL-type regular expressions are also used in NooJ lexical symbols (see 5.5. , p. ). It allows users to construct complex morpho-syntactic queries, such as for instance <ADV-MP=”lly$”> (to get all the adverbs in the text that do not end with “lly”).

The two options at the top of the window allow users to look for a pattern in the text: either a simple string of characters, or a PERL-type regular expression.

Users can enter a small text, and then color this text by entering a query. Multiple queries may be launched: each query’s results will then be colored-coded.

Students should be invited to enter a small text, then to apply several PERL-type expressions.

Lab > Construct A Corpus

Figure 3. Construct A Corpus

This lab allows users to split a potentially large text file into a series of small text files, and store them into a NooJ corpus file.

(1) Enter the source file name

(2) Enter the character encoding format for the source file. Make sure to select the right encoding for your file. For instance, the default encoding on my Windows PC machine is not “ASCII or Byte-marked Unicode”, but rather “Windows Western European-1252”.

(3) Enter a description of the delimiter that will be used to split the source file. For instance, if the original source file contains a series of articles that are delimited by a special line such as “=====”, just enter this character string.

Beside pure character strings, NooJ allows users to specify a delimiter by entering a PERL-like expression. For instance, if each article starts with a code that consists of three uppercase letters, followed by six-digit date, followed by a dash, followed by one or more digits, e.g.:

DEC011294-32

...

DEC011294-33

...

DEC011294-34

...

then a proper description for these delimiters could be:

^[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]+$

(PERL-type expressions are well documented, and numerous tutorials are available on the Internet).

When processing a PDF document, NooJ splits the document into a series of pages. In other words, if the PDF document is a 300-page book, the resulting corpus will contain 300 text files. Parsing a page-based corpus with NooJ allows users to index a book very easily: a NooJ concordance for terms or proper names will display the page number for each match.

(4) The result is either a NooJ corpus, or a set of individual text files. In the first case, make sure that the language for the resulting corpus is right. To change it, go to Info > Preferences.

Lab > Language Specifics

Figure 4. Lab > Language Specifics

This lab is designed to present each language’s alphabetical order. Select a language, and then type in two words: NooJ will apply its comparison routine according to the current language to sort the two words.

Alphabetical orders in various languages are not straight forward. For instance, in French, comparing two word forms involves two steps: first, we take out accents and diacritics; if the two words (without diacritics) are identical, then we put back the diacritics and we compare the two word forms from right to left. For instance, the word form “relevé” is after the word form “relève”, because at the second step, the final “é” of relevé is after the final “e” of relève.

17.2 NooJ Projects

Projects are packages of NooJ files: texts, dictionaries, grammars, etc. that are associated with some documentation. Projects allow teachers to present or demonstrate a specific problem to a large number of students, without having to deal with complicated setups: when a number of students run a project, they all have exactly the same things on the screen, and exactly the same linguistic settings.

NooJ includes a few English projects:

en Date Translation en2fr: demonstrates how to translate English dates to French

en Export Annotations: demonstrates how to export a NooJ text or corpus into an XML document

en Lexical Analysis: demonstrates how NooJ uses dictionaries and morphological grammars to perform lexical parsing

en Passive: demonstrates how to perform a Passive transformation

en sing2plur: demonstrates how to perform a Singular to Plural transformation

To run a project, click Projects > Run Projects.

It is very easy to build your own projects: just open all the files you wish to store in the project, make sure to save them, then click Projects > Save Configuration As Project.

A project’s window is displayed: it displays all the parameters of the configuration (such as the linguistic resources that are loaded), and allows you to enter a documentation. At this point, you can still modify the configuration, by closing windows that you don’t need, or loading other resources (when you are ready, don’t forget to update the configuration by clicking REFRESH).

To save the project, just click SAVE. When you are done, you can close it, and then run it ( Project > Run) for a check.


Always make sure you close the current project when you are done with it. When NooJ runs in Project mode, several functionalities are either disabled (such as the possibility to perform a linguistic analysis of the text) or work differently that usually (the default Preferences are usually different than the ones saved in a Project).

Chapter 18. NooJ Menus And Commands

Chapter 19. NooJ's Command Line Programs And API

19.1 Set up the PATH environment variable

Before using NooJ programs directly from a DOS or a UNIX command-line, the complete NooJ package must have been installed in a directory. There is only one package (NooJ.zip) for Windows, LINUX, MAC-OSX & UNIX packages. This file must be uncompressed, and its content’s file structure must be preserved.

The main difference between the different OS is that on Windows, NooJ as well as all its command-line programs run on top of “.NET Framework”; this framework is not available on other platforms. However, the corresponding platform “MONO” can be used on the other OS to run the command-line programs. See: www.mono-project.com for more information on MONO.

In order for your OS to find NooJ command-line programs, you will need to set the PATH environment variable:

Let’s say that you installed NooJ at the top of the “C:” hard disk directory hierarchy. Here is the command that you can add to the file “autoexec.bat” in order to run NooJ command-line programs from any directory in a DOS/Windows environment:

@set PATH=%PATH%;c:\NooJ\_App

Here is the line to be added to the file “profile.ksh” in order to run NooJ command-line programs from any directory in a Windows/Bourne Shell environment (I use cygwin):

export PATH=”$PATH;/C/NooJ/_App”

Here is the line to be added to the file “.profile” in order to run NooJ command-line programs from any directory in a UNIX/LINUX/Bourne Shell environment:

export PATH=”$PATH;/NooJ/_App”

19.2 Application and Private Directories

Make sure you do not overlook the difference between NooJ’s private and application directories:

The application directory is the directory where you installed the NooJ application; it contains all NooJ programs and DLLs, as well as the original dictionaries and grammars included in NooJ. This directory and all its sub-directories should be write-protected, so that no user could accidentally destroy or modify any of their files.

On a Windows machine, NooJ could be installed in the directory “c:\”, or more typically, in the directory “c:\Program files”; in that case, the NooJ application’s directories would be the following:

c:\Program files\NooJ

c:\Program files\NooJ\_App

c:\Program files\NooJ\_Projects

c:\Program files\NooJ\en

c:\Program files\NooJ\fr

Each language directory in turn has three sub-directories, e.g.:

c:\Program files\NooJ\en\Lexical Analysis

c:\Program files\NooJ\en\Syntactic Analysis

c:\Program files\NooJ\en\Projects

Never, ever, edit, modify or delete the content of any of these application directories. If you add, edit or modify a file in one of these directories, you will loose it at the next upgrade.

Usually, each Windows or UNIX/LINUX/MacOSX user on a computer has his/her own private directory; in this directory, are stored all the user’s data: texts, dictionaries, grammars as well as results of all the processes: indices, concordances, statistical data, tagged texts, etc.

On a Windows PC, the private directory is usually stored in “My documents”, e.g.: “My Documents\NooJ”. In that case, the following directories are created for each user:

My Documents\NooJ\en\Lexical Analysis

My Documents\NooJ\en\Syntactic Analysis

My Documents\NooJ\en\Projects

My Documents\NooJ\fr\Lexical Analysis

My Documents\NooJ\fr\Syntactic Analysis

My Documents\NooJ\fr\Projects

NooJ users typically add their own texts, corpora, dictionaries and grammars in NooJ’s private directories.

You may modify texts, corpora, dictionaries and grammars that belong to the NooJ package. However, in that case, make sure to rename the modified files so that their names does not start with the special character “_” (underline), because when you perform an upgrade, all “_” resources might be updated or erased.

19.3 Command-line program: noojapply

The following commands correspond to the “noojapply.exe” file that is stored in the application directory NooJ\_App.

1. noojapply languagename dictionary

This command compiles a NooJ dictionary “.dic” file to produce a “.nod” file. For instance:

noojapply en mydictionary.dic

produces the file mydictionary.nod.

The dictionary might contain #use commands to associate its entries with one ore more inflectional/derivational description files “.nof” files. In that case, all associated files must be stored in the same directory as the dictionary.

2. noojapply languagename lex-resources texts

This command applies a set of dictionaries and morphological grammars to a series one ore more texts. For instance:

noojapply en bactery.nod virus.nod ization.nom text1.txt text2.txt

applies the given dictionaries (.nod files) and morphological grammars (.nom files) to each text (.txt file), and then produce the index of all recognized terms.

WARNING: all .txt text files must be encoded as valid Unicode UTF-8 files.

Dictionaries and morphological grammars are applied one after each other, i.e. the first argument has priority 1, the second one has priority 2, etc.

Note INTEX users: any NooJ dictionary can contain both simple words as well as multi-word units, and NooJ (as opposed to INTEX) processes their inflection. Therefore, noojapply replaces the two INTEX programs: dics.exe and dicc.exe, and processes DELAS / DELAC / DELAV dictionaries (no more need for DELAFs or DELACFs).

3. noojapply languagename lex-resources syn-resources texts NOT

applies the given lexical resources (.nod and .nom files) and then syntactic resources (.nog files) to each text (.txt file), annotates them, and then produce each resulting .not (NooJ annotated) text file. For instance:

noojapply en sdic.nod date.nog text.txt NOT

applies sdic.nod and date.nog to text.txt, annotates it, and then saves the result as text.not.

Dictionaries, morphological grammars and syntactic grammars are applied one after each other, i.e. the first argument has priority 1, the second one has priority 2, etc.

4. noojapply languagename lex-resources syn-resources query texts

applies a query to one or more unprocessed .txt text files.

All the lexical and syntactic resources are applied before the query. In consequence, the query can contain symbols (e.g. <ADV> or <DATE>) that relate to annotations that have been inserted by a lexical or syntactic resource (e.g. sdic.nod or date.nog).

The query can be in the form of a syntactic regular expression (stored in a “.nox” text file), or in the form of a syntactic grammar (a “.nog” file).

WARNING: all .nox query files must be encoded as valid Unicode UTF-8 files. The resulting index is always encoded as a UTF-8 text file.

For instance, the following command:

noojapply en sdic.nod query.nox text1.txt text2.txt

applies the syntactic grammar query.nox to the two text files, and then produces the index of all sequences recognized by the grammar query.nox.

noojapply en sdic.nod date.nog query.nog text.txt

applies the lexical resource sdic.nod and the syntactic resource date.nog before applying the syntactic grammar query.nog to the text. NooJ produces the index of all sequences recognized by the grammar query.nog.

If the query produces outputs, the resulting index will contain not only the location of all matching sequences, but also the corresponding outputs (typically: their analysis or their translation).

Note INTEX users: NooJ process syntactic grammars directly, i.e. it performs their compilation during run-time (as opposed to INTEX, which needs to compile grammars into Finite-State Transducers); moreover, NooJ decides when to use (or not) indices of the texts to speed up the parsing. Therefore, noojapply replaces the four INTEX programs: recon.exe, recor.exe , reconind.exe and recorind.exe.

It is possible to apply a number of lexical resources as well as a number of syntactic resources before applying a query to a series of texts. When more than one grammar is given as an argument, the last grammar is used as the query, while the preceeding ones are used as syntactic resources (to annotate the text). For instance, the following command:

noojapply en sdic.nod synt1.nog synt2.nog synt3.nog text1.txt text2.txt

will apply to text1.txt and text2.txt the dictionary sdic, and then the two syntactic grammars synt1.nod and synt2.nod in cascade, before finally applying the query synt3.nog. The result will be the index of all the sequences that match the query synt3.nog.

Applying several grammars in cascade allows a user to incrementally annotate the text: each syntactic grammar can then use the annotations that were added by the preceeding grammars.

Note INTEX users: because NooJ applies a number of syntactic grammars in cascade without having to modify (i.e. destroy) the original text, noojapply replaces and simplifies the use of the two INTEX programs: fst2txt.exe and highlight.exe that were used to perform cascading analyses.

5. noojapply languagename query textorcorpus

applies a query to one NooJ annotated .not text file or to one NooJ corpus .noc file. For instance:

noojapply en date.nog promed259.not

will locate all dates in the annotated text promed259.not, and:

noojapply en date.nog promed.noc

will locate all dates in each of the texts that constitute the promed.noc corpus file.

19.4. Object-Oriented Interface: noojengine.dll

19.5. Client-Server architecture: noojservice.exe and noojclient.exe

Chapter 20. BIBLIOGRAPHICAL REFERENCES

The NooJ project is the result of numerous research works both in linguistics, computational linguistics, corpus linguistics and in computer science; it would be impossible to construct a complete reference list for these domains. Therefore, we choose to provide below references that are relevant to the INTEX software and linguistic resources (which remain largely compatible with NooJ), and then references to new aspects of NooJ’s software, linguistic approach and resources.

20.1 Background: Intex

The following provides a basic reference to the numerous projects that are either related to the construction of INTEX (the previous version of NooJ, which NooJ is largely compatible with), to INTEX modules for 20+ languages, the use of INTEX to process corpora or to perform extract information from various types of texts (literary, technical and journalistic), or to the use of NooJ as a development environment used to implement specific functionalities in NLP computer applications.

Books

Although the following book lists studies that are not directly related to INTEX or NooJ, we feel that it is a very useful source for linguists and NooJ users:

Leclère, Christian. 1998. “Travaux récents en Lexique-grammaire”. In Le Lexique-grammaire, Béatrice Lamiroy (ed.), Travaux de Linguistique n° 37, Louvain-la-Neuve : Duculot, pp. 155-186.

The following book presents the French DELA database which was used by INTEX. Although NooJ’s system of dictionaries is an improvement on the DELA, the book discusses issues that are still relevant to NooJ users that wish to formalize a new vocabulary.

Courtois Blandine, Silberztein Max Eds, 1990, Les dictionnaires électroniques du français. Langue Française #87. Larousse: Paris (127 p.).

The following books show how Finite-State technology can successfully used to represent linguistic phenomena, and to build NLP applications.

Gross Maurice, Perrin Dominique Eds. 1989. Electronic Dictionaries and Automata in Computational Linguistics, Lecture Notes in Computer Science #377. Springer: Berlin/New York.

Roche Emmanuel, Schabes Yves Eds. 1997. Finite-State Language Processing, Cambridge, Mass./London, The MIT Press.

The following thesis presents the first attempt to compress a full DELAF dictionary into a minimal, deterministic finite-state automaton:

Revuz Dominique. 1992. Minimization of acyclic deterministic automata in linear time. Theoretical Comput. Sci., vol. 92, n# 27 1, pp. 181-189.

The following book presents the DELA system of dictionaries and the INTEX programs:

Silberztein Max. 1993. Dictionnaires électroniques et analyse automatique de textes. Le système INTEX. Masson: Paris (240 p.).

Articles and technical reports

Chrobot Agata, Courtois Blandine, Hammani Mary, Gross Maurice, Zellagui Katia. 1999. Dictionnaire Electronique DELAC anglais : noms composés. Technical report #59. LADL, Université Paris 7: Paris.

Courtois Blandine, Silberztein Max. 1989. Les dictionnaires électroniques DELAS et DELAC. In RELAI: Recherches en Linguistique Appliquée à l’Informatique. Université Laval: Québec.

Courtois Blandine. 1990, Un système de dictionnaires électroniques pour les mots simples du français, in Les dictionnaires électroniques du français. Langue Française #87. Larousse: Paris.

Courtois Blandine, Garrigues Mylène, Gross Gaston, Gross Maurice, Jung René, Mathieu-Colas Michel, Silberztein Max, Vivès Robert. 1997. Dictionnaire électronique des noms composés DELAC : les composants NA et NN, Rapport Technique du LADL 55, Paris, Université Paris 7.

Courtois Blandine, Garrigues Mylène, Gross Gaston, Gross Maurice, Jung René, Mathieu-Colas Michel, Monceaux Anne, Poncet-Montange Anne, Silberztein Max, Vivès Robert. 1997. Dictionnaire électronique DELAC : les noms composés binaires, Rapport Technique du LADL 56, Paris, Université Paris 7.

Friburger Nathalie, Silberztein Max 1999. Le débogueur de grammaires sous INTEX. In Analyse lexicale et syntaxique : le système NooJ, Cédrick Fairon Ed. Linguvisticae Investigationes vol. XXII, pp. 413-423 : 1998-1999.

Gross Gaston. 1988. Noms composés N de N. Rapport de Recherches 5, Laboratoire de Linguistique Informatique, Villetaneuse : Université Paris 13.

Gross Gaston. 1988. Noms composés N de N. Rapport de Recherches 6, Laboratoire de Linguistique Informatique, Villetaneuse : Université Paris 13.

Gross Gaston. 1988. Degré de figement dans les noms composés. Langages 90, pp. 57-72, Paris: Larousse.

Gross Gaston. 1990. Définition des noms composés dans un lexique-grammaire. Langue Française 87, Paris : Larousse.

Gross Maurice. 1986. “Lexicon-Grammar. The Representation of Compound Words”. In COLING-1986. Proceedings, Bonn, pp. 1-6.

Gross Maurice. 1986. Grammaire transformationnelle du français. 3 - Syntaxe de l’adverbe, Paris, 670 p.

Gross Maurice. 1989. The Use of Finite Automata in the Lexical Representation of Natural Language. In Electronic Dictionaries and Automata in Computational Linguistics, Lecture Notes in Computer Science 377, pp. 34-50, Berlin/New York: Springer.

Gross Maurice. 1993. Les phrases figées en français. In L’information grammaticale, pp. 36-41, Paris.

Klarsfeld Gaby, Hammani Mary. Dictionnaire électronique du LADL pour les mots simples de l’anglais. DELAS v4. Technical report. LADL, Université Paris 7: Paris.

Mathieu-Colas Michel. 1987. Composés de type N Adj. Rapport de Recherches 3, Laboratoire de Linguistique et Informatique, Université de Villetaneuse.

Mathieu-Colas Michel. 1988. Variations graphiques des mots composés dans le Petit Larousse et le Petit Robert. Lingvisticae Investigationes XII:2, pp. 235-280, Amsterdam/Philadelphia : John Benjamins.

Meunier Annie. 1979. Some remarks on French colour adjectives. In SMIL, Journal of Linguistic Calculus, pp. 148-165, Stockholm: Skriptor.

Muller Claude, Royauté Jean, Silberztein Max Eds. 2004. NooJ pour la Linguistique et le Traitement Automatique des Langues , Presses Universitaires de Franche-Comté (400 p.).

Silberztein Max. 1989. The lexical analysis of French, in Electronic Dictionaries and Automata in Computational Linguistics, Lectures Notes in Computer Science #377, Berlin/New York: Springer.

Silberztein Max. 1991. A new approach to tagging: the use of a large-coverage electronic dictionary, Applied Computer Translation 1(4).

Silberztein Max. 1992. Finite state descriptions of various levels of linguistic phenomena, Language Research 28(4), Seoul National University, pp. 731-748.

Silberztein Max. 1994, Les groupes nominaux productifs et les noms composés lexicalisés, Lingvisticae Investigationes XVII:2, Amsterdam/Philadelphia : John Benjamins, p. 405-426.

Silberztein Max. 1994. NooJ: a corpus processing system, in COLING 94 Proceedings, Kyoto, Japan.

Silberztein Max. 1996. Levée d’ambiguités avec NooJ, in BULAG #21. Université de Franche Comté.

Silberztein Max. 1996. Analyse automatique de corpus avec NooJ, in LINX #34-35 : Hommage à Jean Dubois. Université Paris X: Nanterre.

Silberztein Max. 1997. The Lexical Analysis of Natural Languages, in Finite-State Language Processing, E. Roche and Y. Schabes (eds.), Cambridge, Mass./London, MIT Press, pp. 175-203.

Silberztein Max. 1999. Transducteurs pour le traitement automatique des textes, in Travaux de Linguistique. Béatrice Lamirot Ed. Duculot, 1999.

Silberztein Max. 1999. INTEX: a Finite State Transducer toolbox, in Theoretical Computer Science #231:1, pp. 33-46.

Silberztein Max. 1999. Indexing large corpora with INTEX, in Computer and the Humanities #33:3.

Silberztein Max. 1999. Les graphes INTEX. In Analyse lexicale et syntaxique : le système NooJ, Cédrick Fairon Ed. Linguisticae Investigationes vol. XXII, pp. 3-29.

Silberztein Max. 1999. Les expressions figées dans INTEX. In Analyse lexicale et syntaxique : le système NooJ, Cédrick Fairon Ed. Linguisticae Investigationes vol. XXII, pp. 425-449.

Silberztein Max. 2003. Finite-State Recognition of French Noun Phrases. In Journal of French Language Studies. vol. 13:02, pp. 221-246. Cambridge University Press.

Proceedings of INTEX workshops

Fairon Cédrick Ed., 1999. Analyse lexicale et syntaxique: le système INTEX, Actes des Premières et Secondes Journées INTEX. Linguvisticae Investigationes vol. XXII.

Dister Anne Ed., 2000. Actes des Troisièmes Journées INTEX. Liège 2001. In Informatique et Statistique dans les Sciences Humaines. Université de Liège, n° 36.

Muller Claude, Royauté Jean, Silberztein Max Eds. 2004.

INTEX pour la Linguistique et le Traitement Automatique des Langues. Proceedings of the 4th and 5th INTEX workshops, Bordeaux, May 2001, Marseille, May 2002: Presses Universitaires de Franche-Comté (400 p).

20.2 NooJ

Check out NooJ’s WEB site regularly at www.nooj4nlp.net.

The main page provides links to NooJ related conferences; some of them have published their proceedings on line.

Follow the link “Doc and Help” to download the manual and electronic versions of several papers on NooJ, reference and links to articles on NooJ.

Follow the link “Community” to download several tutorials and a documentation in French.

Koeva Svetla, Maurel Denis, Silberztein Max Eds. 2007. NooJ pour la Linguistique et le Traitement Automatique des Langues. Selection of papers from the 4th and 5th NooJ workshops, Sofia, 2003, Tours, June 2004: Presses Universitaires de Franche-Comté (530 p).

Silberztein Max, 2004. NooJ: A Cooperative, Object-Oriented Architecture for NLP. In INTEX pour la Linguistique et le traitement automatique des langues. Cahiers de la MSH Ledoux, Presses Universitaires de Franche-Comté.

Silberztein Max, 2005. NooJ’s Dictionaries. In the Proceedings of LTC 2005, Poznan University.

Topic attachments
I Attachment Action Size Date Who Comment
JPEGjpg pic_0.jpg manage 34.4 K 2009-08-15 - 13:54 UnknownUser  
JPEGjpg pic_1.jpg manage 21.4 K 2009-08-15 - 13:54 UnknownUser  
JPEGjpg pic_2.jpg manage 26.6 K 2009-08-15 - 13:54 UnknownUser  
JPEGjpg pic_3.jpg manage 17.7 K 2009-08-15 - 13:54 UnknownUser  
Topic revision: r3 - 2009-08-15 - MaxSilberztein
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback