Xwrapper

Uses a Fetch wrapper to collect data from a web site in XML format.

Usage

xwrapper (wrapper-url, bind-map, indata, new-attr : outdata)

Details

Tuples of the relation indata are bound per the bind-map and used as parameters to a HTTP GET request sent to a Fetch wrapper-url, resulting in the return of XML data that is assigned to attribute new-attr and joined with indata to produce outdata (i.e., a dependent join). Bind maps are expressed as a series of param=attr/value pairs.

Notes

Known Bugs

Example

Using the input:
      RELATION spots: streetaddress char, city char, state char, zip char
      14044 Panay Way|Marina del Rey|CA|90292
    
when executing the plan:
      PLAN test
      {
        INPUT: stream spots
        OUTPUT: stream output1, stream output2

        BODY
        {
          xwrapper("http://cronus.isi.edu:8080/agent/runner?plan=geocoder/plans/production", "city=city, state=state, zip=zip, streetaddress=streetaddress", spots, "wrapper_data" : output1)
          xwrapper("http://cronus.isi.edu:8080/agent/runner?plan=geocoder/plans/production", "city='Marina del Rey', state='CA', zip='90292', streetaddress='4676 Admiralty Way'", NULL, "wrapper_data" : output2) 
        }
      }
    
generates the following output:
      ----------------------------------------------
      RELATION: uxwrapper1_output1
         attrs: streetaddress, city, state, zip, wrapper_data
      ----------------------------------------------
      14044 Panay Way|Marina del Rey|CA|90292, <?xml version="1.0" encoding="UTF-8"?>
              <AgentExecution date="Mon Feb 03 16:06:52 PST 2003" planExecutionId="162072126" planId="geocoder/plans/production">
                      <AgentInput>
                              <zip Id="1.4" NamePrefix="$Input">
                                      <Value>90292</Value>
                              </zip>
                              <streetaddress Id="1.3" NamePrefix="$Input">
                                      <Value>14044 Panay Way</Value>
                              </streetaddress>
                              <state Id="1.2" NamePrefix="$Input">
                                      <Value>CA</Value>
                              </state>
                              <city Id="1.1" NamePrefix="$Input">
                                      <Value>Marina del Rey</Value>
                              </city>
                      </AgentInput>
      
                      <ExtractedData ancestorIds="1.4,1.3,1.2,1.1" flattened="true" id ="2" type="Wrapper1">
                              <AncestorData>
                                      <AncestorBindings>
                                              <zip Id="1.4" NamePrefix="$Input">
                                                      <Value>90292</Value>
                                              </zip>
                                              <streetaddress Id="1.3" NamePrefix="$Input">
                                                      <Value>14044 Panay Way</Value>
                                              </streetaddress>
                                              <state Id="1.2" NamePrefix="$Input">
                                                      <Value>CA</Value>
                                              </state>
                                              <city Id="1.1" NamePrefix="$Input">
                                                      <Value>Marina del Rey</Value>
                                              </city>
                                      </AncestorBindings>
                              </AncestorData>
                              <Data>
                                      <Row>
                                              <lat id="2.1" type="data">
                                                      <Value>33.979108611109496</Value>
                                              </lat>
                                              <lon id="2.2" type="data">
                                                      <Value>-118.45507299570011</Value>
                                              </lon>
                                      </Row>
                              </Data>
                      </ExtractedData>
              </AgentExecution>
      ----------------------------------------------
      
      ----------------------------------------------
      RELATION: uxwrapper1_output2
         attrs: wrapper_data
      ----------------------------------------------
      <?xml version="1.0" encoding="UTF-8"?>
              <AgentExecution date="Mon Feb 03 16:06:54 PST 2003" planExecutionId="162072127" planId="geocoder/plans/production">
                      <AgentInput>
                              <zip Id="1.4" NamePrefix="$Input">
                                      <Value>90292</Value>
                              </zip>
                              <streetaddress Id="1.3" NamePrefix="$Input">
                                      <Value>4676 Admiralty Way</Value>
                              </streetaddress>
                              <state Id="1.2" NamePrefix="$Input">
                                      <Value>CA</Value>
                              </state>
                              <city Id="1.1" NamePrefix="$Input">
                                      <Value>Marina del Rey</Value>
                              </city>
                      </AgentInput>
                      <ExtractedData ancestorIds="1.4,1.3,1.2,1.1" flattened="true" id ="2" type="Wrapper1">
                              <AncestorData>
                                      <AncestorBindings>
                                              <zip Id="1.4" NamePrefix="$Input">
                                                      <Value>90292</Value>
                                              </zip>
                                              <streetaddress Id="1.3" NamePrefix="$Input">
                                                      <Value>4676 Admiralty Way</Value>
                                              </streetaddress>
                                              <state Id="1.2" NamePrefix="$Input">
                                                      <Value>CA</Value>
                                              </state>
                                              <city Id="1.1" NamePrefix="$Input">
                                                      <Value>Marina del Rey</Value>
                                              </city>
                                      </AncestorBindings>
                              </AncestorData>
                              <Data>
                                      <Row>
                                              <lat id="2.1" type="data">
                                                      <Value>33.980304877551021</Value>
                                              </lat>
                                              <lon id="2.2" type="data">
                                                      <Value>-118.44027018504094</Value>
                                              </lon>
                                      </Row>
                              </Data>
                      </ExtractedData>
              </AgentExecution>
      ----------------------------------------------