CJN
1.9.0 is a cooperative network sharing job related
databases, defining job database formats and editing network membership
etiquette in conformance to the regulations protecting private personal
information over the world.
--- The Detailed Node Listing ---
Database format
Dictionary Format
Repository
References
"I have a dream, that one day all the job boards of the world will share their offers in peace without considering to the color of the skin..."Raph <raph at r4f dot org> December 2000.
First of all, CJN
is at alpha stage.
The aim of the CJN is to provide a simple, reliable and legal solution for all job boards to share their databases. We've been upset since a long time by the inefficient lack of cooperation among the job boards around the world. None has the same interface, none has the same database. When looking for a job or wanting to post a job offer one spends a huge amount of time fighting to register and type the same thing over and over in job board A, job board B, and job board C.
Our first thought was to invite all the job boards to copyright their database under the GPL license and share them. But these databases contain personal data (see Regulations) and cannot be copyrighted. Furthermore, the laws protecting personal data over the world prohibit the distribution of such material to anonymous third parties.
We came up with a solution that matches all these constraints, this is the current implementation of the Cooperative Job Network. A job board can join CJN instantly by following the instruction of this document (see CJN membership rules). When approved, it will be able to download all the databases and use them. It has to publish its own database for use in the same conditions.
The weakness and the beauty of the CJN is that it does not work if the members do not play by the rules. CJN has no way to force the members to publish their database. The members will publish if they understand that it is their best interest to do so. By adding their database they increase the efficiency of their job board: each offer has a better chance to find a valuable candidate and each resume has a better chance to find a company. It also allows job boards to open a section in France, Spain or any country represented by a member of the CJN at no cost.
The main goal of CJN is to maximize the efficiency of all the job boards. It makes no assumptions on the business model a company can build on top of it, but it facilitates cooperation among them.
Job boards that hoard data for their own profit are treating employment as a secondary goal, which is sacrificed for the sake of profit. So these job boards fail to do what they could do for employment and prosperity. The CJN will not directly make them change, but we hope it will leave them behind if they don't. When the job boards share their databases, it will be easier for employees and companies to meet.
There is no interface definition attached to the CJN
because it
is out of its scope. There is and will always be a wide variety of
interfaces for job boards. Although we would like to solve this problem
too, we could not find any way to succeed. But, in a way, sharing the
databases unifies interfaces. If you're not happy with the web interface
of one member of the CJN
, you could use another member's web
interface and still see your resume or offer displayed on the other one.
The goal of this document is to define a common database format for job offers and resume, the architecture of the database repository and rules of network membership. CJN is designed to be an international database repository that may contain data in many formats and many languages. It will be happy with BIG5 as well as ISO-8859-1. From a software point of view it only relies on wide spread and robust technologies available on every architecture.
the CJN
project home
the contributor space
the HTML version of this document
the Postscript version of this document
the text only version of this document
the public mailing list
a complete archive of the mailing list
Assuming you run a job board or want to run one, here are the
steps to follow in order to join the CJN
.
and create a sourceforge user with that name.
For a formal description of the database format, See Database format.
member
using your shell
account.
CJN
repository,
See Mirroring the repository.
The basic format of all the database files is XML. It would be better to use XML/RDF but the lack of commonly available tools to handle XML/RDF prevents this.
The language used in the database is english, except for the content of the database. The tag names, semantic description, comments must all be written in english.
Each network member is assigned a unique name that will be refered to in
the document as member
. The name is made of lowercase ascii
letters (range [a-z]) and must not be longer than 32 characters.
Each member is allowed to insert whatever he wants in the XML element
memberlocal
. All the lines from <memberlocal>
to
</memberlocal>
will be deleted before running the XML validation.
Removing the memberlocal
elements can be done with the following
command:
perl -ne 'print unless(m:<memberlocal>: .. m:</memberlocal>:)' \ < $$i| rxp -sV
Some database fields require to set a numerical unix time (number of seconds since January 1, 1970) in GMT time. In order to calculate the numerical value for a given data (November 23, 2000) for instance, use the following:
perl -e 'use POSIX; $ENV{'TZ'} = 'GMT'; \ print strftime("%s", 0, 0, 0, \ $ARGV[0], $ARGV[1] - 1, $ARGV[2] - 1900, 0, 0, 0) . "\n"' \ 23 11 2000
It is not required to fill all the tags mentionned in the database
format. If a member
database miss some XML elements, he can
leave those elements empty or just omit them. However, if an element is
not empty (examples of empty elements are <position/> or
<position></position>) it must be compliant to the database
format. For instance, if an element refers to a dictionary it is illegal
to specify the id
without showing the readable label. For
instance, <position id='3'>Chief</position> is valid but <position
id='3'></position> is invalid. The idea is that the database may contain
more or less elements but that all the elements must be filled in
accordance to the specified format.
The database is made of the following files:
Resume
member
rnumber
. The number
may
be assigned as the network member see fit. A given resume must never
be renumbered. Once a number is assigned it must never be changed by
the network member.
Companies
member
cnumber
. The number
may
be assigned as the network member see fit. A given company must never
be renumbered. Once a number is assigned it must never be changed by
the network member.
Offers
member
onumber
. The number
may
be assigned as the network member see fit. A given offer must never
be renumbered. Once a number is assigned it must never be changed by
the network member.
Dictionaries
The dictionary
_semantic.xml file maps numbers to a semantic description
in english. The dictionary
_lang
_country
.xml
maps numbers to a name in the language lang
of the country
country
. It is not required that all numbers be mapped in a given
language, although this is considered diserable.
The lang
values must match ISO 639 and country
must match
ISO 3166.
Network Members
ascii
.
Each xml file may only have one encoding format. If a file is to contain strings in various encodings (chinese and french) for instance, the UTF-8 encoding must be used.
<?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE members SYSTEM "http://cjn.sourceforge.net/dtd/cjn.dtd"> <members> <member> <!-- Unique member name --> <name>marul</name> <contact> <firstname>Jean</firstname> <lastname>Valjean</lastname> </contact> <!-- company|individual|government|education|nonprofit --> <type>individual</type> <address> <street>rue de la biere</street> <zipcode>7842</zipcode> <town>Toulouse</town> <state></state> <!-- see country code dictionary --> <country id='FR'>France</country> </address> <phone>1 407 472 849</phone> <email>foo@bar.com</email> <urls language='fr' country='FR'> <urlhome>http://www.lolix.org/fr/</urlhome> <urladdoffer>http://www.lolix.org/fr/help/depot_fr.php3</urladdoffer> <urlviewoffer>http://www.lolix.org/fr/search/offre/offre.php3?id=_ID_</urlviewoffer> </urls> <urls language='en' country='US'> <urlhome>http://www.lolix.org/us/</urlhome> <urladdoffer>http://www.lolix.org/us/help/depot_en.php3</urladdoffer> <urlviewoffer>http://www.lolix.org/us/search/offre/offre.php3?id=_ID_</urlviewoffer> </urls> </member> ... </members>
<?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE resumes SYSTEM "http://cjn.sourceforge.net/dtd/cjn.dtd"> <resumes> <resume> <!-- Administrative data --> <creation unix='971772182'>2000-10-17</creation> <lastmodified unix='974017543'>2000-11-12</lastmodified> <online unix='971772182'>2000-10-17</online> <id>lolixr84024</id> <!-- Active search yes or no --> <activesearch>yes</activesearch> <!-- Personal identification --> <firstname>Mark</firstname> <lastname>Nielsen</lastname> <!-- see sex dictionary --> <sex id='1'>M</sex> <!-- see quality dictionary --> <quality id='3'>Mister</quality> <birthdate>1980-08-03</birthdate> <!-- see situation dictionary --> <situation id='3'>single</situation> <address> <street>rue de la biere</street> <zipcode>7842</zipcode> <town>Toulouse</town> <state></state> <!-- see country code dictionary --> <country id='FR'>France</country> </address> <phone>1 407 472 849</phone> <fax>1 407 472 850</fax> <mobile>1 407 472 853</mobile> <email>rq@lolix.org</email> <url>http://www.myhome.com/</url> <!-- Description of the job wanted --> <position> <!-- see position dictionary --> <title id='7'>Developer</title> <details>Kernel hacker</details> </position> <sector> <!-- see position dictionary --> <title id='1'>Internet</title> </sector> <contract> <!-- see contract dictionary --> <title id='89'>Free Lance</title> <!-- contract duration in days, 0 or nothing for undefined, 1 month = 30 days --> <duration>60</duration> <division> <!-- see division dictionary --> <title id='1'>Part-Time</title> <!-- workload per week in hours, 0 or nothing for undefined --> <duration>10</duration> </division> </contract> <available>In 2 month</available> <salary>$300 000/day</salary> <description> Free description of the desired position </description> <!-- Job history --> <!-- see format dictionary --> <resumeformat id='4'>Text</resumeformat> <resume>The resume in a given format</resume> <!-- see experience dictionnary --> <experience id='3'>More than 10 years</experience> <!-- may be repeated many times --> <language> <!-- see language code dictionary --> <title id='fr'>French</title> <!-- see langlevel dictionary --> <level id='2'>Mother tongue</level> </language> <!-- may be repeated many times --> <diploma> <!-- see diploma dictionary --> <title id='1'>Level A</title> <year>1991</year> <details>Major of my promotion</details> </diploma> <skill> <!-- see skill dictionary --> <title id='30'>MySQL</title> <!-- see skilllevel dictionary --> <level id='9'>Good knowledge</level> <!-- see contrib dictionary --> <contribution id='1'>Patch</contribution> </skill> <skill> <title id='3'>GNU/Linux</title> <level id='1'>Expert</level> <contribution></contribution> </skill> <!-- may be repeated many times --> <history> <employer>Mycompany</employer> <position><title id='7'>Developer</title></position> <start unix='971772182'>2000-02-08</start> <end unix='971772182'>2000-02-09</start> <details>I did a lot of work that morning</details> </history> <!-- Misc section --> <misc>Love birds, cats and fun-board</misc> <!-- Network member specific data --> <memberlocal> <egosearch>yes</egosearch> <anon_mail>foo@bar.com</anon_mail> <memberlocal> </resume> ... </resumes>
<?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE companies SYSTEM "http://cjn.sourceforge.net/dtd/cjn.dtd"> <companies> <company> <!-- Administrative data --> <creation unix='971772182'>2000-09-07</creation> <lastmodified unix='971772182'>2000-09-07</lastmodified> <online unix='971772182'>2000-09-07</online> <id>lolixc84024</id> <!-- Coordinates --> <name>Ecila</name> <address> <street>rue de la biere</street> <zipcode>7842</zipcode> <town>Toulouse</town> <state></state> <!-- see country code dictionary --> <country id='FR'>France</country> </address> <phone>1 407 472 849</phone> <fax>1 407 472 850</fax> <url>http://www.myhome.com/</url> <email>info@myhome.com</email> <!-- Contact person(s) --> <contact> <firstname>Loic</firstname> <lastname>Dachary</lastname> <address> <street>rue de la biere</street> <zipcode>7842</zipcode> <town>Toulouse</town> <state></state> <!-- see country code dictionary --> <country id='FR'>France</country> </address> <phone>1 407 472 849</phone> <fax>1 407 472 850</fax> <mobile>1 407 472 853</mobile> <email>info@myhome.com</email> </contact> <!-- Descriptive information --> <description>GCC stuff on the work, eaten by RedHat</description> </company> ... </companies>
<?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE offers SYSTEM "http://cjn.sourceforge.net/dtd/cjn.dtd"> <offers> <offer> <!-- Administrative data --> <creation unix='971772182'>2000-09-07</creation> <lastmodified unix='971772182'>2000-09-07</lastmodified> <online unix='971772182'>2000-08-03</online> <stillavailable unix='971772182'>2000-09-07</stillavailable> <id>lolixo84024</id> <!-- Link to the company file --> <companyp id='lolixc84024'>Ecila</companyp> <!-- company internal reference code --> <reference>SA080</reference> <!-- see position dictionary --> <position> <title id='7'>System Administrator</title> <details>Cluster Specialist</details> </position> <!-- Job description --> <jobtitle>Informal job title</jobtitle> <contract> <!-- see contract dictionary --> <title id='89'>Free Lance</title> <!-- contract duration in days, 0 or nothing for undefined, 1 month = 30 days --> <duration>60</duration> <division> <!-- see division dictionary --> <title id='1'>Part-Time</title> <!-- workload per week in hours, 0 or nothing for undefined --> <duration>10</duration> </division> </contract> <available>Immediately</available> <salary>$300 000/day</salary> <!-- may be repeated many times --> <!-- level=(mandatory|high|moderate|low) or mandatory if omitted --> <requirement level='mandatory'> General knowledge of compiler technology </requirement> <!-- may be repeated many times --> <!-- level=(certain|possible) or certain if omitted --> <description level='certain'> Free description of the offered position </description> <!-- yes: the job position did not exist and is new in the company --> <newposition>yes</newposition> <!-- see region dictionary --> <region> <title id='1'>Ile de France</title> </region> <!-- may be repeated many times --> <!-- level=(required|preferred|possible) or required if omitted --> <location>Paris down town</location> <!-- The employe can work remotly --> <remote>yes</remote> <!-- see country code dictionary --> <country id='FR'>France</country> <!-- may be repeated many times --> <language> <!-- see language code dictionary --> <title id='fr'>French</title> <!-- see langlevel dictionary --> <level id='2'>Mother tongue</level> </language> <!-- may be repeated many times --> <diploma> <!-- see diploma dictionary --> <title id='1'>Level A</title> <year>1991</year> <details>Major of my promotion</details> </diploma> <skill> <!-- see skill dictionary --> <title id='30'>MySQL</title> <!-- see skilllevel dictionary --> <level id='9'>Good knowledge</level> </skill> <skill> <title id='3'>GNU/Linux</title> <level id='1'>Expert</level> </skill> <!-- Contact of this offer only --> <contact> <firstname>Loic</firstname> <lastname>Dachary</lastname> <address> <street>rue de la biere</street> <zipcode>7842</zipcode> <town>Toulouse</town> <state></state> <!-- see country code dictionary --> <country id='FR'>France</country> </address> <phone>1 407 472 849</phone> <fax>1 407 472 850</fax> <mobile>1 407 472 853</mobile> <email>info@myhome.com</email> </contact> </offer> ... </offers>
The explanations of the semantic associated to each id must be written in english.
<?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE members SYSTEM "http://cjn.sourceforge.net/dtd/semantic.dtd"> <semantic> <!-- System administrator --> <description id='1'> Maintainer of machines, in charge of system upgrades, installation of software needed by the company employees. </description> ... </semantic>
Each file listed in the dictionary list section (See Dictionary List.) must have the following format.
<!-- file: position_fr_FR.xml --> <?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE members SYSTEM "http://cjn.sourceforge.net/dtd/names.dtd"> <values> <name id='1'>Administrateur Systeme</name> ... </values>
<!-- file: position_en_US.xml --> <?xml version='1.0' encoding='ISO-8859-1' ?> <!DOCTYPE members SYSTEM "http://cjn.sourceforge.net/dtd/names.dtd"> <values> <name id='1'>System administrator</name> ... </values>
The offers, resumes and companies file contain pointers to these dictionaries.
For a given pair of lang
and country
a complete set of
dictionaries with the same pair should exist.
contract_lang_country.xml
Free Lance
or Employee
.
contrib_lang_country.xml
Core Developer
or Translation
.
country_lang_country.xml
diploma_lang_country.xml
Master Degree
or Engineer
.
division_lang_country.xml
1 to 2 years
or 6
.
experience_lang_country.xml
System Administrator
or Developer
.
format_lang_country.xml
Text
or Postscript
.
langlevel_lang_country.xml
Mother tongue
or Fluent
.
language_lang_country.xml
position_lang_country.xml
System Administrator
or Developer
.
region_lang_country.xml
Ohio
for the US or Bourgogne
for
France.
quality_lang_country.xml
Mister
or Miss
.
sex_lang_country.xml
Male
or Female
until aliens join the party.
situation_lang_country.xml
Single
or Maried
.
skill_lang_country.xml
MySQL
or UML
.
skilllevel_lang_country.xml
Newbie
or Expert
.
working_lang_country.xml
Student
or Employed
.
Here is a matrix showing the dictionaries and the languages in which a translation is available.
contract | en | fr
|
contrib | en | fr
|
country | en | fr
|
diploma | en | fr
|
division | en | fr
|
experience | en | fr
|
format | en | fr
|
langlevel | en | fr
|
language | en | fr
|
position | en | fr
|
region | en | fr
|
quality | en | fr
|
sex | en | fr
|
situation | en | fr
|
skill | en | fr
|
skilllevel | en | fr
|
working | en | fr
|
A set of DTD (see DTD Tutorial) is defined for each file format described in this document.
members, companies, resumes, offers
dictionary semantic
dictionary names
For all the XML files published on the CJN
repository there must
exist a corresponding DTD. In order to validate that a given XML file
matches the constraints of the corresponding DTD one should use an XML
parser with validating capabilities. We recommend using
RXP. The
data/Makefile file in the CVS repository contains a target to run rxp(1)
on the dictionaries.
Changing the structure of the CJN DTD happens on a regular basis. For each change in the CJN DTD, an XSLT file is provided to upgrade an XML file from on DTD to the new one.
The http://cjn.sourceforge.net/dtd/upgrade.txt file maps each DTD with its successor.
# # Unified dtd migration Loic Dachary (loic@gnu.org) March 2001 # offers.dtd cjn.dtd companies.dtd cjn.dtd resumes.dtd cjn.dtd members.dtd cjn.dtd
For each pair there is a corresponding previous2next.xsl
XSLT
file that translate XML files from the previous DTD to its successor.
To apply the transformation use the following:
xsltproc previous2next.xsl file.xml > newfile.xml
The CJN
module provides the cjnupgrade
command that
automates the upgrade operation. See the cjnupgrade
manual
page for reference and the
http://savannah.gnu.org/cgi-bin/viewcvs/gnujobs/gnujobs/Makefile
for a usage example.
The CVS tree is divided in three modules, as may be seen thru the web interface http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/?cvsroot=cjn.
cjn
data
members.xml
file.
data/dictionaries
data/dtd
tools
members
to work with the
repository. It contains subdirectories that match the member
name.
Updating of the database (download and upload) is done using rsync over ssh. The repository is configured to only accept rsync connections thru ssh. The rsync software allows to update large amount of data that do not change much very quickly by only transfering the differences between the local copy and the repository. The ssh transmission protocol crypts the transmission between the source and the destination to ensure the privacy of the communication.
Each member
of the network has write access for his own files and
read access of all other files. Each member has write access to the
CVS tree. Although the dictionaries and members.xml
file
is copied in the repository, it must only be modified using the CVS
tree.
In order to reduce the bandwidth needed to synchronize with the CJN database, it is strongly advised that each member generates their database files using a sort criterion that will prevent scrambling the database entries from one dump to another. The required uniq identifier is a good example of sort criterion that matches that purpose. The rsync(1) utility will give its best when the local and remote files do not show artificial differences due to entries being scrambled. In the best case rsync(1) will be able to limit the data transfert to entries added, changed or deleted.
All the repository is archived using CVS. Immediately after a file is
uploaded a cvs commit -m 'upload' filename.xml
is run. Every day
a cron job assigns a tag to the current state of the repository with the
cvs tag YYYY-MM-DD
command. This allows to restore the state of
the repository should a wrong upload occur.
/members.xml [read] /dictionaries/README [read] /dictionaries/position_semantic.xml [read] /dictionaries/position_fr_FR.xml [read] /dictionaries/position_en_US.xml [read] ... /dtd/cjn.dtd [read] /dtd/names.dtd [read] /dtd/semantic.dtd [read] /lolix/offers_fr_FR.xml [read for all/write for lolix] /lolix/companies_fr_FR.xml [read for all/write for lolix] /lolix/resumes_fr_FR.xml [read for all/write for lolix] /lolix/offers_en_US.xml [read for all/write for lolix] /lolix/companies_en_US.xml [read for all/write for lolix] /lolix/resumes_en_US.xml [read for all/write for lolix] /gnuorg/offers_en_US.xml [read for all/write for gnuorg] /gnuorg/companies_en_US.xml [read for all/write for gnuorg] /gnuorg/resumes_en_US.xml [read for all/write for gnuorg] /gnujobs/offers_en_US.xml [read for all/write for gnujobs] /gnujobs/companies_en_US.xml [read for all/write for gnujobs] /gnujobs/resumes_en_US.xml [read for all/write for gnujobs] ...
Here are sample commands that any network member can use for for
updating from and to the repository. The rsync(1) version installed on
the sourceforge.net site is version 2.4. If you have a similar version
on your local machine, you can omit the --rsync-path
option. A
rsync(1) version 2.5 will be installed in
cjn.sourceforge.net:/home/groups/c/cj/cjn/local/bin/rsync for people who
have this version on their local machine because it is incompatible with
the former version (2.4).
Download the whole repository
rsync -azv --delete --rsh=ssh \ member@cjn.sourceforge.net:/home/groups/c/cj/cjn/cjn .
Download the database files of lolix only
rsync -azv --delete --rsh=ssh \ member@cjn.sourceforge.net:/home/groups/c/cj/cjn/cjn/lolix/ lolix
Download the members.xml file
rsync -zv --rsh=ssh \ member@cjn.sourceforge.net:/home/groups/c/cj/cjn/cjn/members.xml .
Upload a modified dictionary
rsync -zv --rsh=ssh \ dictionaries/positions_fr_FR.xml \ member@cjn.sourceforge.net:/home/groups/c/cj/cjn/cjn/dictionaries/
Upload all dictionaries
rsync -rltzv --rsh=ssh \ dictionaries \ member@cjn.sourceforge.net:/home/groups/c/cj/cjn/cjn/
Upload a modified database file
rsync -zv --rsh=ssh \ resumes_fr_FR.xml \ member@cjn.sourceforge.net:/home/groups/c/cj/cjn/cjn/member/
Each member is invided to publish his own code in the CVS
tree under the tools/member
directory.
The following tools are currently available (for more,
See Software tools.).
All the published code must be released under a free software
license, preferably the GPL
.
CJN perl module
GNU.org
.
http://sourceforge.net/project/showfiles.php?group_id=15764
lolix
The relevant CVS portion is
http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/tools/lolix/?cvsroot=cjn.
gnuorg
page. The software and data used to generate these pages can be found at http://savannah.gnu.org/projects/gnujobs/.
In the following a party
is either a company, a non profit
organisation, a governement, an education institute or an individual. The
membership rules are minimal and their only reason to exist is that an
offer/resume database cannot legaly be distributed under a free license
such as GPL or FDL because it contains information that is not
copyrightable. The membership rules spirit protects individual freedom
while allowing the network to grow and scale easily.
Membership request and approval
party
may apply to network membership by providing
accurate identification, including full address, contact name, phone
number and e-mail. A membership request may be approved by any member
of the network after verification of the correctness of the informations.
The membership request must be sent to the CJN
mailing list
(http://lists.sourceforge.net/mailman/listinfo/cjn-all)
in the following format:
Subject: membership request for marul Body: <member> <!-- Unique member name --> <name>marul</name> <contact> <firstname>Jean</firstname> <lastname>Valjean</lastname> </contact> <!-- company|individual|government|education|nonprofit --> <type>individual</type> <address> <street>rue de la biere</street> <zipcode>7842</zipcode> <town>Toulouse</town> <state></state> <!-- see country code dictionary --> <country id='FR'>France</country> </address> <phone>1 407 472 849</phone> <email>foo@bar.com</email> </member>
When a network member has verified the accuracy of the information and is will to perform the task of adding the new member he must proceed as follows:
members.xml
file and
upload it using mirroring commands, See Mirroring the repository.
CJN
project
and add the user to the list of project administrators.
CJN
mailing list (which may be found at
http://lists.sourceforge.net/mailman/listinfo/cjn-all)
in the following format:
Subject: membership approved for marul
Membership banishement
Publication
member
. Each member has write access to the dictionaries
directory and the members.xml
file.
The files in the member
directory must be compliant with the
database format described in the latest version of this document published at
http://sourceforge.net/project/showfiles.php?group_id=15764.
Before uploading a file the member
is required to check it using
an XML validator,
we recommend
RXP.
This is a very permissive setup that relies on good behavior from all
the network members to remain consistent.
Modifying the databaes structure
Responsibility and Identification
party
and be identified
properly. By joining the network, the member agrees to comply to the
international regulation and local regulation of each country that is
represented by another member of the network. The member must provide
and keep up to date his full coordinates in the members.xml
file.
By joining the network, the new member agrees to not distribute the
files of the database to anyone not member of the network. The files of
the database contain private personal information and each individual
named in the database is legaly entitled to require from the network the
complete list of the parties
who had access to the files
containing the informations related to him. Because of this restriction
which is necessary to protect individual liberties, the database cannot
be made access to anonymous third parties.
First action steps
members.xml
file. He must also create the
/home/groups/c/cj/cjn/member
directory where member
is his
network member name as registered in the members.xml
file.
Fee
International documentation.
http://europa.eu.int/eur-lex/en/lif/dat/1997/en_397L0066.html
http://www.oecd.org/dsti/sti/it/secur/prod/priv-en.htm
http://www.unhchr.ch/html/menu3/b/71.htm
http://www.coe.fr/dataprotection/edocs.htm
A list of URLs describing the regulations governing private personal databases in each country.
fr
CJN perl module
lolix.org software
XML
SSH
RSYNC
All these entites will be translated to their character equivalent by
the XML parser. Hence, if some text in the XML file contains the HTML
&eacute;
it will be replaced by é
when parsing
the XML file.
" (double quote) | "
|
' (single quote) | '
|
> (greater than) | >
|
< (lower than) | <
|
& (ampersand) | &
|
aa Afar ab Abkhazian af Afrikaans am Amharic ar Arabic as Assamese ay Aymara az Azerbaijani ba Bashkir be Byelorussian bg Bulgarian bh Bihari bi Bislama bn Bengali; Bangla bo Tibetan br Breton ca Catalan co Corsican cs Czech cy Welsh da Danish de German dz Bhutani el Greek en English eo Esperanto es Spanish et Estonian eu Basque fa Persian fi Finnish fj Fiji fo Faroese fr French fy Frisian ga Irish gd Scots Gaelic gl Galician gn Guarani gu Gujarati ha Hausa he Hebrew (formerly iw) hi Hindi hr Croatian hu Hungarian hy Armenian ia Interlingua id Indonesian (formerly in) ie Interlingue ik Inupiak is Icelandic it Italian iu Inuktitut ja Japanese jw Javanese ka Georgian kk Kazakh kl Greenlandic km Cambodian kn Kannada ko Korean ks Kashmiri ku Kurdish ky Kirghiz la Latin ln Lingala lo Laothian lt Lithuanian lv Latvian, Lettish mg Malagasy mi Maori mk Macedonian ml Malayalam mn Mongolian mo Moldavian mr Marathi ms Malay mt Maltese my Burmese na Nauru ne Nepali nl Dutch no Norwegian oc Occitan om (Afan) Oromo or Oriya pa Punjabi pl Polish ps Pashto, Pushto pt Portuguese qu Quechua rm Rhaeto-Romance rn Kirundi ro Romanian ru Russian rw Kinyarwanda sa Sanskrit sd Sindhi sg Sangho sh Serbo-Croatian si Sinhalese sk Slovak sl Slovenian sm Samoan sn Shona so Somali sq Albanian sr Serbian ss Siswati st Sesotho su Sundanese sv Swedish sw Swahili ta Tamil te Telugu tg Tajik th Thai ti Tigrinya tk Turkmen tl Tagalog tn Setswana to Tonga tr Turkish ts Tsonga tt Tatar tw Twi ug Uighur uk Ukrainian ur Urdu uz Uzbek vi Vietnamese vo Volapuk wo Wolof xh Xhosa yi Yiddish (formerly ji) yo Yoruba za Zhuang zh Chinese zu Zulu
AD Andorra AE United Arab Emirates AF Afghanistan AG Antigua & Barbuda AI Anguilla AL Albania AM Armenia AN Netherlands Antilles AO Angola AQ Antarctica AR Argentina AS Samoa (American) AT Austria AU Australia AW Aruba AZ Azerbaijan BA Bosnia & Herzegovina BB Barbados BD Bangladesh BE Belgium BF Burkina Faso BG Bulgaria BH Bahrain BI Burundi BJ Benin BM Bermuda BN Brunei BO Bolivia BR Brazil BS Bahamas BT Bhutan BV Bouvet Island BW Botswana BY Belarus BZ Belize CA Canada CC Cocos (Keeling) Islands CD Congo (Dem. Rep.) CF Central African Rep. CG Congo (Rep.) CH Switzerland CI Cote d'Ivoire CK Cook Islands CL Chile CM Cameroon CN China CO Colombia CR Costa Rica CU Cuba CV Cape Verde CX Christmas Island CY Cyprus CZ Czech Republic DE Germany DJ Djibouti DK Denmark DM Dominica DO Dominican Republic DZ Algeria EC Ecuador EE Estonia EG Egypt EH Western Sahara ER Eritrea ES Spain ET Ethiopia FI Finland FJ Fiji FK Falkland Islands FM Micronesia FO Faeroe Islands FR France GA Gabon GB Britain (UK) GD Grenada GE Georgia GF French Guiana GH Ghana GI Gibraltar GL Greenland GM Gambia GN Guinea GP Guadeloupe GQ Equatorial Guinea GR Greece GS South Georgia & the South Sandwich Islands GT Guatemala GU Guam GW Guinea-Bissau GY Guyana HK Hong Kong HM Heard Island & McDonald Islands HN Honduras HR Croatia HT Haiti HU Hungary ID Indonesia IE Ireland IL Israel IN India IO British Indian Ocean Territory IQ Iraq IR Iran IS Iceland IT Italy JM Jamaica JO Jordan JP Japan KE Kenya KG Kirgizstan KH Cambodia KI Kiribati KM Comoros KN St Kitts & Nevis KP Korea (North) KR Korea (South) KW Kuwait KY Cayman Islands KZ Kazakhstan LA Laos LB Lebanon LC St Lucia LI Liechtenstein LK Sri Lanka LR Liberia LS Lesotho LT Lithuania LU Luxembourg LV Latvia LY Libya MA Morocco MC Monaco MD Moldova MG Madagascar MH Marshall Islands MK Macedonia ML Mali MM Myanmar (Burma) MN Mongolia MO Macao MP Northern Mariana Islands MQ Martinique MR Mauritania MS Montserrat MT Malta MU Mauritius MV Maldives MW Malawi MX Mexico MY Malaysia MZ Mozambique NA Namibia NC New Caledonia NE Niger NF Norfolk Island NG Nigeria NI Nicaragua NL Netherlands NO Norway NP Nepal NR Nauru NU Niue NZ New Zealand OM Oman PA Panama PE Peru PF French Polynesia PG Papua New Guinea PH Philippines PK Pakistan PL Poland PM St Pierre & Miquelon PN Pitcairn PR Puerto Rico PS Palestine PT Portugal PW Palau PY Paraguay QA Qatar RE Reunion RO Romania RU Russia RW Rwanda SA Saudi Arabia SB Solomon Islands SC Seychelles SD Sudan SE Sweden SG Singapore SH St Helena SI Slovenia SJ Svalbard & Jan Mayen SK Slovakia SL Sierra Leone SM San Marino SN Senegal SO Somalia SR Suriname ST Sao Tome & Principe SV El Salvador SY Syria SZ Swaziland TC Turks & Caicos Is TD Chad TF French Southern & Antarctic Lands TG Togo TH Thailand TJ Tajikistan TK Tokelau TM Turkmenistan TN Tunisia TO Tonga TP East Timor TR Turkey TT Trinidad & Tobago TV Tuvalu TW Taiwan TZ Tanzania UA Ukraine UG Uganda UM US minor outlying islands US United States UY Uruguay UZ Uzbekistan VA Vatican City VC St Vincent VE Venezuela VG Virgin Islands (UK) VI Virgin Islands (US) VN Vietnam VU Vanuatu WF Wallis & Futuna WS Samoa (Western) YE Yemen YT Mayotte YU Yugoslavia ZA South Africa ZM Zambia ZW Zimbabwe