- From: Eric Prud'hommeaux <eric@w3.org>
- Date: Wed, 25 Feb 2009 10:46:30 -0500
- To: Holger Stenzhorn <holger.stenzhorn@deri.org>
- Cc: helen.chen@agfa.com, public-semweb-lifesci@w3.org
- Message-ID: <20090225154630.GG2154@w3.org>
On Wed, Feb 25, 2009 at 10:42:04AM -0500, Eric Prud'hommeaux wrote:
> * Holger Stenzhorn <holger.stenzhorn@deri.org> [2009-02-25 00:50-0300]
> > Helen,
> >
> > Have you tried installing the "Microsoft Visual C++ 2008 Redistributable
> > Package (x86)" on your computer, as I mentioned to you in an earlier
> > mail? (Thus we are not using the exact same environment... :-)) Well,
> > that should make the SWtransformer.exe that I compiled with Visual
> > Studio 2008 run on your machine as well.
> >
> > Also it is not quite the case that I have the same compilation problems
> > for Cygwin as I do. It is only true that I also cannot compile the
> > latest SVN version - versions before worked (if I remember right). When
> > you add the boost-include (included in Cygwin and as shown in the log
> > [1] I sent you earlier) then the whole missing boost errors disappear.
> > But still, with the latest SVN checkout I get the error in [1]
> >
> > Cheers,
> > Holger
> >
> > [1]
> > bash-3.2$ PWD=. INCLUDES="-Iwin
> > -I/cygdrive/c/cygwin/usr/include/boost-1_33_1" make test
> > g++ -DYYTEXT_POINTER=1 -g -O0 -W -Wall -Wextra -Wnon-virtual-dtor -ansi
> > -std=c++98 -Iwin -I/cygdrive/c/cygwin/usr/include/boost-1_33_1 -I.
> > -I/usr/include/libxml2 -I./SPARQLfedParser -I./TurtleSParser
> > -pipe -c -o RdfDB.o RdfDB.cpp
> > In file included from RdfDB.hpp:9,
> > from RdfDB.cpp:5:
> > ResultSet.hpp:362: error: base `w3c_sw::ResultSet' with only non-default
> > constructor in class without a constructor
>
> I think that's from a version back, so I'm guessing a bit at the error.
> I pulled a couple silly classes out. try v430 (HEAD, as of now)
Oh, one more point, I'm committing to the const-happy branch (which I
will roll back into trunk once we are done).
svn co https://swobjects.svn.sourceforge.net/svnroot/swobjects/branches/const-happy
Holger or Helen, are you in BOS?
> > make: *** [RdfDB.o] Error 1
> >
> >
> > helen.chen@agfa.com schrieb:
> >>
> >> Eric
> >>
> >> Thanks for continuing working on SWtranformer program. It is indeed
> >> an important piece of work.
> >>
> >> We have been trying to compile the program without much success.
> >>
> >> My colleague Jos De Roo is using Linux and your r398 compiles and
> >> works on his machine, but not the latest version.
> >> Holger and I use cygwin, and we can not compile it at all, see some of
> >> the compile log in the attached file.
> >> Holger also made a window exe file but I can not run on my computer,
> >> although we are using the same Window XP system, may due to missing
> >> some vc++ library.
> >>
> >> Will you please take a quick look at the log and see if you can give
> >> us some advises?
> >>
> >> Thanks for your help.
> >>
> >>
> >> Helen
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> *Eric Prud'hommeaux <eric@w3.org>*
> >> Sent by: public-semweb-lifesci-request@w3.org
> >>
> >> 02/21/2009 10:27 AM
> >>
> >>
> >> To
> >> public-semweb-lifesci@w3.org
> >> cc
> >>
> >> Subject
> >> [COI] Re: COI protocol #8 demo progress
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> * Eric Prud'hommeaux <eric@w3.org> [2008-10-11 12:11-0400]
> >> > I've created an sdtm query — sdtm.rq
> >> > to query data mapped from hl7 — hl7-sdtm.rq
> >> > which is mapped from the db — db-hl7.rq
> >> >
> >> > I poked around to look for things like the relationship between a
> >> > patient and a medication, but am not super confident that I've aligned
> >> > with existing structures (say, in XML).
> >> >
> >> > You can try this at home by downloading an executable for your
> >> > operating system from http://www.w3.org/2008/04/SPARQLfed/ and running
> >> > cat sdtm.rq | \
> >> > SWtransformer -q - hl7-sdtm.rq | \
> >> > SWtransformer -q - db-hl7.rq -s http://hospital.example/DB/ | \
> >> > mysql -u root DiabeticPatientsDataSet --table
> >> > where the db comes from
> >> http://www.w3.org/2008/04/DiabeticPatientsDataSet/
> >>
> >> The latest from the const-happy branch (390) pushes filters down to SQL
> >> sdtm: FILTER (?code = 6809 || ?code = 6810)
> >> becomes rim: FILTER ( ?code = 6809 || ?code = 6810 )
> >> becomes sql: WHERE (indicCode_gen0.ingredient = 6809 OR
> >> indicCode_gen0.ingredient = 6810)
> >>
> >> This should build with [[
> >> svn co
> >> https://swobjects.svn.sourceforge.net/svnroot/swobjects/branches/const-happy
> >> const-happy
> >> cd const-happy
> >> make bin/SWtransformer
> >> ]]
> >>
> >> and then you can test it à la:
> >> [[
> >> eric@mouni:/tmp/const-happy$ bin/SWtransformer -q
> >> tests/healthCare/in-list/sdtm.rq tests/healthCare/in-list/hl7-sdtm.rq
> >> | bin/SWtransformer -q - tests/healthCare/in-list/db-hl7.rq -s
> >> http://hospital.example/DB/ | mysql -u root DiabeticPatientsDataSet
> >> patient dob sex takes
> >> indicDate
> >> 1517441 1964-09-01 00:00:00 Female
> >> Glucophage TABS 2007-07-23 00:00:00
> >> 1517441 1964-09-01 00:00:00 Female
> >> Glucophage TABS 2007-07-23 00:00:00
> >> 1517000 1958-01-01 00:00:00 Male
> >> Metformin HCl 500 MG Tablet 2007-06-29
> >> 00:00:00
> >> 1517000 1958-01-01 00:00:00 Male
> >> Metformin HCl 500 MG Tablet 2007-06-29
> >> 00:00:00
> >> 1517403 1981-05-11 00:00:00 Male
> >> Metformin HCl 500 MG Tablet 2008-01-03
> >> 00:00:00
> >> 1505583 1950-02-25 00:00:00 Female
> >> Metformin HCl 500 MG Tablet 2008-01-14
> >> 00:00:00
> >> 1234561 1983-01-02 00:00:00 Male
> >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet
> >> 2007-09-28 00:00:00
> >> 1234561 1983-01-02 00:00:00 Male
> >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet
> >> 2007-09-28 00:00:00
> >> 1234562 1963-12-27 00:00:00 Female
> >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet
> >> 2007-09-28 00:00:00
> >> 1234562 1963-12-27 00:00:00 Female
> >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet
> >> 2008-07-28 00:00:00
> >> 1234563 1983-02-25 00:00:00 Male
> >> GlipiZIDE-Metformin HCl 2.5-250 MG Tablet
> >> 2007-07-28 00:00:00
> >> 1517441 1964-09-01 00:00:00 Female
> >> Glucophage TABS 2007-07-23 00:00:00
> >> 1517441 1964-09-01 00:00:00 Female
> >> Glucophage TABS 2007-07-23 00:00:00
> >> 1516986 1995-06-13 00:00:00 Male
> >> Metformin HCl 1000 MG Tablet 2007-12-04
> >> 00:00:00
> >> ]] — (sample run, using healthCare/in-list tests)
> >>
> >>
> >> > * Eric Prud'hommeaux <eric@w3.org> [2008-10-01 05:45-0400]
> >> > > I've extended these queries to include (contra)indications by
> >> ingredient:
> >> > > [[
> >> > > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
> >> > > PREFIX Person: <http://hospital.example/DB/Person#>
> >> > > PREFIX Sex_DE: <http://hospital.example/DB/Sex_DE#>
> >> > > PREFIX Item_Medication: <http://hospital.example/DB/Item_Medication#>
> >> > > PREFIX Medication: <http://hospital.example/DB/Medication#>
> >> > > PREFIX Medication_DE: <http://hospital.example/DB/Medication_DE#>
> >> > > PREFIX NDCcodes: <http://hospital.example/DB/NDCcodes#>
> >> > >
> >> > > SELECT ?person ?dob ?sex ?takes ?contraItem WHERE {
> >> > > ?person Person:MiddleName ?middleName ;
> >> > > Person:DateOfBirth ?dob ;
> >> > > Person:SexDE ?sexEntry .
> >> > > ?sexEntry Sex_DE:EntryName ?sex .
> >> > >
> >> > > ?indicItem Item_Medication:PatientID ?person ;
> >> > > Item_Medication:EntryName ?takes .
> >> > > ?indicMed Medication:ItemID ?indicItem ;
> >> > > Medication:MedDictDE ?indicDE .
> >> > > ?indicDE Medication_DE:NDC ?indicNDC .
> >> > > ?indicCode NDCcodes:NDC ?indicNDC ;
> >> > > NDCcodes:ingredient 6809 .
> >> > >
> >> > > OPTIONAL {
> >> > > ?contraItem Item_Medication:PatientID ?person .
> >> > > ?contraMed Medication:ItemID ?contraItem ;
> >> > > Medication:MedDictDE ?contraDE .
> >> > > ?contraDE Medication_DE:NDC ?contraNDC .
> >> > > ?contraCode NDCcodes:NDC ?contraNDC ;
> >> > > NDCcodes:ingredient 11289
> >> > > }
> >> > > FILTER (?dob < "1984-01-01T00:00:00"^^xsd:dateTime &&
> >> !BOUND(?contraItem))
> >> > > } LIMIT 30
> >> > > ]]
> >> > >
> >> > > yielding:
> >> > > [[
> >> > >
> >> +---------+---------------------+--------+-------------------------------------------+
> >> > > | person | dob | sex | takes
> >> |
> >> > >
> >> +---------+---------------------+--------+-------------------------------------------+
> >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS
> >> |
> >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS
> >> |
> >> > > | 1517000 | 1958-01-01 00:00:00 | Male | Metformin HCl 500 MG
> >> Tablet |
> >> > > | 1517000 | 1958-01-01 00:00:00 | Male | Metformin HCl 500 MG
> >> Tablet |
> >> > > | 1517403 | 1981-05-11 00:00:00 | Male | Metformin HCl 500 MG
> >> Tablet |
> >> > > | 1505583 | 1950-02-25 00:00:00 | Female | Metformin HCl 500 MG
> >> Tablet |
> >> > > | 1234561 | 1983-01-02 00:00:00 | Male | GlipiZIDE-Metformin HCl
> >> 2.5-250 MG Tablet |
> >> > > | 1234561 | 1983-01-02 00:00:00 | Male | GlipiZIDE-Metformin HCl
> >> 2.5-250 MG Tablet |
> >> > > | 1234562 | 1963-12-27 00:00:00 | Female | GlipiZIDE-Metformin HCl
> >> 2.5-250 MG Tablet |
> >> > > | 1234562 | 1963-12-27 00:00:00 | Female | GlipiZIDE-Metformin HCl
> >> 2.5-250 MG Tablet |
> >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS
> >> |
> >> > > | 1517441 | 1964-09-01 00:00:00 | Female | Glucophage TABS
> >> |
> >> > >
> >> +---------+---------------------+--------+-------------------------------------------+
> >> > > ]]
> >> > >
> >> > >
> >> > > The birthdate limitation is set for < 1984-01-01 in order to eliminate
> >> > >
> >> +---------+---------------------+------+-------------------------------------------+
> >> > > | person | dob | sex | takes
> >> |
> >> > >
> >> +---------+---------------------+------+-------------------------------------------+
> >> > > | 1234563 | 1983-02-25 00:00:00 | Male | GlipiZIDE-Metformin HCl
> >> 2.5-250 MG Tablet |
> >> > >
> >> +---------+---------------------+------+-------------------------------------------+
> >> > >
> >> > > The dupes appear to come from identical Medication.ItemID for probably
> >> > > different dates:
> >> > > [[
> >> > > mysql> select * from Medication where ItemID=10276300039;
> >> > >
> >> +-------------+-------------+--------------------+-------------+------+--------+------------------------+--------------------+------------+----------------+-----------+
> >> > > | ID | ItemID | FormOfMedicationDE | FreqUnitsDE |
> >> Dose | Refill | RoutOfAdministrationDE | QuantityToDispense |
> >> DaysToTake | PrescribedByID | MedDictDE |
> >> > >
> >> +-------------+-------------+--------------------+-------------+------+--------+------------------------+--------------------+------------+----------------+-----------+
> >> > > | 10276300041 | 10276300039 | 0 | 2 |
> >> 1 | 0 | 15 | 0 | 0
> >> | 1524566 | 90346 |
> >> > > | 10307800003 | 10276300039 | 0 | 2 |
> >> 1 | 0 | 15 | 0 | 0
> >> | 1524566 | 90346 |
> >> > >
> >> +-------------+-------------+--------------------+-------------+------+--------+------------------------+--------------------+------------+----------------+-----------+
> >> > > ]]
> >> > > Fixing date ranges in the query will help this, I expect.
> >> > >
> >> > >
> >> > > * Eric Prud'hommeaux <eric@w3.org> [2008-10-01 01:32-0400]
> >> > > > Given some data that Helen added to db:
> >> > > > <http://www.w3.org/2008/04/DiabeticPatientsDataSet/MockPerson.csv>
> >> > > >
> >> <http://www.w3.org/2008/04/DiabeticPatientsDataSet/MockMedication.csv>
> >> > > >
> >> <http://www.w3.org/2008/04/DiabeticPatientsDataSet/MockItem_Medication.csv>
> >> > > > and the latest version of SWObjects:
> >> > > > <http://www.w3.org/2008/04/SPARQLfed/>
> >> > > > I tested the SPARQL-SQL mapping on a sample query
> >> > > > tests/execute_HealthCare1 tests/query_stem:Person.rq -s
> >> http://hospital.example/DB/
> >> > > > <http://www.w3.org/2008/04/SPARQLfed/tests/query_stem:Person.rq>
> >> > > >
> >> > > > got an SQL query:
> >> > > > [[
> >> > > > SELECT person.id AS person, person.DateOfBirth AS dob,
> >> sexEntry.EntryName AS sex, medication.id AS medication,
> >> opt1.contraIndic AS contraIndic
> >> > > > FROM Person AS person
> >> > > > INNER JOIN Sex_DE AS sexEntry ON
> >> sexEntry.id=person.SexDE
> >> > > > INNER JOIN Item_Medication AS medication ON
> >> medication.PatientID=person.id AND
> >> medication.EntryName="GlipiZIDE-Metformin HCl 2.5-250 MG Tablet"
> >> > > > LEFT OUTER JOIN (
> >> > > > SELECT contraIndic.PatientID AS person, contraIndic.id AS
> >> contraIndic
> >> > > > FROM Item_Medication AS contraIndic
> >> > > > WHERE contraIndic.EntryName="Warfarin Sodium 5 MG Tablet"
> >> > > > ) AS opt1 ON opt1.person=person.id
> >> > > > WHERE (person.DateOfBirth < "1980-01-01 00:00:00" AND
> >> !(opt1.contraIndic IS NOT NULL))
> >> > > > LIMIT 10
> >> > > > ]]
> >> > > >
> >> > > > executed it, and got:
> >> > > >
> >> +---------+---------------------+--------+-------------+-------------+
> >> > > > | person | dob | sex | medication |
> >> contraIndic |
> >> > > >
> >> +---------+---------------------+--------+-------------+-------------+
> >> > > > | 1234562 | 1963-12-27 00:00:00 | Female | 99999999003 |
> >> NULL |
> >> > > > | 1234562 | 1963-12-27 00:00:00 | Female | 99999999004 |
> >> NULL |
> >> > > >
> >> +---------+---------------------+--------+-------------+-------------+
> >> > > >
> >> > > > I encourage folks to play more. Also, probably time to start
> >> working on
> >> > > > the construct rules that allow the SPARQL query to work over HL7
> >> data.
> >> > > >
> >> > > > Holger, could you build a DOS/WIN version of the code and
> >> distribute it
> >> > > > or make it available to folks who want to help?
> >> > > >
> >> > > > office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA
> >> > > > mobile: +1.617.599.3509
> >> > > >
> >> > > > (eric@w3.org)
> >> > > > Feel free to forward this message to any list for any purpose
> >> other than
> >> > > > email address distribution.
> >> > >
> >> > >
> >> > >
> >> > >
> >> > > office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA
> >> > > mobile: +1.617.599.3509
> >> > >
> >> > > (eric@w3.org)
> >> > > Feel free to forward this message to any list for any purpose
> >> other than
> >> > > email address distribution.
> >> >
> >> >
> >> >
> >> >
> >> > office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA
> >> > mobile: +1.617.599.3509
> >> >
> >> > (eric@w3.org)
> >> > Feel free to forward this message to any list for any purpose other than
> >> > email address distribution.
> >>
> >> > PREFIX sdtm: <http://www.sdtm.org/vocabulary#>
> >> > PREFIX spl:
> >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#>
> >> >
> >> > SELECT ?patient ?dob ?sex ?takes ?indicDate # ?indicEnd ?contra
> >> > WHERE {
> >> > ?patient a sdtm:Patient ;
> >> > sdtm:middleName ?middleName ;
> >> > sdtm:dateTimeOfBirth ?dob ;
> >> > sdtm:sex ?sex .
> >> >
> >> > [ sdtm:subject ?patient ;
> >> > sdtm:standardizedMedicationName ?takes ;
> >> >
> >> > # nothing by ingredient in sdtm/caBIG/...
> >> > spl:activeIngredient [ spl:classCode 6809 ] ;
> >> > sdtm:startDateTimeOfMedication ?indicDate
> >> > # ; sdtm:endDateTimeOfMedication ?indicEnd
> >> > ] .
> >> > # OPTIONAL {
> >> > # [ sdtm:subject ?patient ;
> >> > # sdtm:standardizedMedicationName ?contra ;
> >> > # spl:activeIngredient [ spl:classCode 11289 ]
> >> > # sdtm:effectiveTime [
> >> > # sdtm:startDateTimeOfMedication ?contraDate
> >> > # # ; sdtm:endDateTimeOfMedication ?contraEnd
> >> > # ] .
> >> > # }
> >> > } LIMIT 30
> >> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
> >> > PREFIX hl7:
> >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#>
> >> > PREFIX spl:
> >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#>
> >> >
> >> > PREFIX sdtm: <http://www.sdtm.org/vocabulary#>
> >> > PREFIX bridg: <>
> >> > PREFIX caBIG: <>
> >> > PREFIX CDASH: <>
> >> > PREFIX MHONG: <>
> >> > PREFIX dam: <>
> >> >
> >> > CONSTRUCT {
> >> > ?patient
> >> > a
> >> sdtm:Patient ;
> >> > sdtm:middleName
> >> ?middleName ;
> >> > sdtm:dateTimeOfBirth ?dob ;
> >> > sdtm:sex ?sex .
> >> > [ a sdtm:ConcomitantMedication ;
> >> > sdtm:subject ?patient ;
> >> > sdtm:standardizedMedicationName
> >> ?takes ;
> >> >
> >> > # nothing by ingredient in sdtm/caBIG/...
> >> > spl:activeIngredient [ spl:classCode ?ingred ] ;
> >> > sdtm:startDateTimeOfMedication ?start
> >> > # ; sdtm:endDateTimeOfMedication ?end
> >> > ] .
> >> > } WHERE {
> >> > ?patient
> >> > a
> >> hl7:Person ;
> >> > hl7:entityName
> >> ?middleName ;
> >> > hl7:livingSubjectBirthTime ?dob ;
> >> > hl7:administrativeGenderCodePrintName ?sex ;
> >> > hl7:substanceAdministration [
> >> > a hl7:SubstanceAdministration ;
> >> > hl7:consumable [
> >> > hl7:displayName ?takes ;
> >> > spl:activeIngredient [
> >> > spl:classCode ?ingred
> >> > ]
> >> > ] ;
> >> > hl7:effectiveTime [
> >> > hl7:start ?start
> >> > # hl7:end ?end
> >> > ]
> >> > ] .
> >> > }
> >>
> >> > PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
> >> > PREFIX Person: <http://hospital.example/DB/Person#>
> >> > PREFIX Sex_DE: <http://hospital.example/DB/Sex_DE#>
> >> > PREFIX Item_Medication: <http://hospital.example/DB/Item_Medication#>
> >> > PREFIX Medication: <http://hospital.example/DB/Medication#>
> >> > PREFIX Medication_DE: <http://hospital.example/DB/Medication_DE#>
> >> > PREFIX NDCcodes: <http://hospital.example/DB/NDCcodes#>
> >> >
> >> > PREFIX hl7:
> >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#>
> >> > PREFIX spl:
> >> <http://www.hl7.org/v3ballot/xml/infrastructure/vocabulary/vocabulary#>
> >> >
> >> > CONSTRUCT {
> >> > ?person
> >> > a
> >> hl7:Person ;
> >> > hl7:entityName
> >> ?middleName ;
> >> > hl7:livingSubjectBirthTime ?dob ;
> >> > hl7:administrativeGenderCodePrintName ?sex ;
> >> > hl7:substanceAdministration [
> >> > a hl7:SubstanceAdministration ;
> >> > hl7:consumable [
> >> > hl7:displayName ?takes ;
> >> > spl:activeIngredient [
> >> > spl:classCode ?ingred
> >> > ]
> >> > ] ;
> >> > hl7:effectiveTime [
> >> > hl7:start ?indicDate
> >> > # hl7:end (?indicDate + ?indicDuration)
> >> > ]
> >> > ] .
> >> > } WHERE {
> >> > ?person Person:MiddleName
> >> ?middleName ;
> >> > Person:DateOfBirth ?dob ;
> >> > Person:SexDE
> >> ?sexEntry .
> >> >
> >> > OPTIONAL {
> >> > ?sexEntry Sex_DE:EntryName ?sex .
> >> > }
> >> >
> >> > OPTIONAL {
> >> > ?indicItem Item_Medication:PatientID ?person ;
> >> > Item_Medication:PerformedDTTM ?indicDate ;
> >> > Item_Medication:EntryName ?takes .
> >> > ?indicMed Medication:ItemID
> >> ?indicItem ;
> >> > Medication:DaysToTake
> >> ?indicDuration ;
> >> > Medication:MedDictDE ?indicDE .
> >> > ?indicDE Medication_DE:NDC
> >> ?indicNDC .
> >> > }
> >> >
> >> > OPTIONAL {
> >> > ?indicCode NDCcodes:NDC ?indicNDC ;
> >> > NDCcodes:ingredient ?ingred .
> >> > }
> >> > } LIMIT 30
> >>
> >>
> >>
> >>
> >>
> >> office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA
> >> mobile: +1.617.599.3509
> >>
> >> (eric@w3.org)
> >> Feel free to forward this message to any list for any purpose other than
> >> email address distribution.
> >>
> >> There are subtle nuances encoded in font variation and clever layout
> >> which can only be seen by printing this message on high-clay paper.
>
--
-eric
office: +1.617.258.5741 32-G528, MIT, Cambridge, MA 02144 USA
mobile: +1.617.599.3509
(eric@w3.org)
Feel free to forward this message to any list for any purpose other than
email address distribution.
Received on Wednesday, 25 February 2009 15:46:42 UTC