The LIGO_LW( LIGO lightweight ) XML format is a subset of the XML( Extensible Markup Language ). The Lightweight API was designed to allow object-model access and customizing of the LIGO_LW format documents. More information about this format can be found in LIGO-T990023-01.
There are few guidelines to follow in creating LIGO_LW format documents which Lightweight API can process successfully.
Guidelines for the LIGO_LW header.
Each XML document has a prolog that can contain an XML declaration followed by a document type declaration( known as DTD ).
<?xml version="1.0"?>
<!DOCTYPE LIGO_LW[
<!ELEMENT LIGO_LW ((LIGO_LW|Comment|Param|Table|Array|Stream|IGWDFrame|AdcData|Time)*)>
<!ATTLIST LIGO_LW
Name CDATA #IMPLIED
Type CDATA #IMPLIED>
<!ELEMENT Comment (#PCDATA)>
<!ELEMENT Param (#PCDATA|Comment)*>
<!ATTLIST Param
Name CDATA #IMPLIED
Type CDATA #IMPLIED
Unit CDATA #IMPLIED>
<!ELEMENT Table (Comment?,Column*,Stream?)>
<!ATTLIST Table
Name CDATA #IMPLIED
Type CDATA #IMPLIED>
<!ELEMENT Column EMPTY>
<!ATTLIST Column
Name CDATA #IMPLIED
Type CDATA #IMPLIED
Unit CDATA #IMPLIED>
<!ELEMENT Array (Dim*,Stream?)>
<!ATTLIST Array
Name CDATA #IMPLIED
Type CDATA #IMPLIED>
<!ELEMENT Dim (#PCDATA)>
<!ATTLIST Dim
Name CDATA #IMPLIED
Units CDATA #IMPLIED>
<!ELEMENT Stream (#PCDATA)>
<!ATTLIST Stream
Name CDATA #IMPLIED
Type (Remote|Local) "Local"
Delimiter CDATA ","
Encoding CDATA #IMPLIED
Content CDATA #IMPLIED>
<!ELEMENT IGWDFrame ((Comment|Param|Time|Detector|AdcData|LIGO_LW|Stream?|Array)*)>
<!ATTLIST IGWDFrame
Name CDATA #IMPLIED>
<!ELEMENT Detector ((Comment|Param|LIGO_LW)*)>
<!ATTLIST Detector
Name CDATA #IMPLIED>
<!ELEMENT AdcData ((AdcData|Comment|Param|Time|LIGO_LW|Array)*)>
<!ATTLIST AdcData
Name CDATA #IMPLIED>
<!ELEMENT Time (#PCDATA)>
<!ATTLIST Time
Name CDATA #IMPLIED
Type (GPS|Unix|ISO-8601) "ISO-8601">
]>
Guidelines for the LIGO_LW wrapping container.
Document content has to be enclosed into wrapping LIGO_LW container.
<LIGO_LW name="optional_name">
....
</LIGO_LW>
Guidelines for specific LIGO_LW elements.
<Table Name="name">
<Column Name="name1" Type="type1"/>
<Column Name="name2" Type="type2"/>
<Column Name="name3" Type="type3"/>
<Stream Name="name" Type="locationType" Delimiter=",">
...delimiter separated stream data...
</Stream>
</Table>
The following guidelines are to be observed for successful data insertion into ldas:
'ilwd:char_u' type of Column is used mainly to store binary data. It accepts string data but converts it into its numerical representation.
The best format to store string data is 'lstring'.
The naming convention is the same as for ilwds;
for Table: [ <project> ] <organization> <table>
for Column: [ <group> ] <table> <column>
Note that the project and group are optional. e.g. to insert into table dbmdctest, column seqid,
<LIGO_LW Name="ligo:ldas:file"> <Table Name="dbmdctest:table"> <Column Name="dbmdctest:seqid" Type="int_4s"/> <Stream Name="dbmdctest:table" Type="Local" Delimiter=","> 191,192,193 </Stream> </Table> </LIGO_LW>