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.
- EXAMPLE:"foo=attr1, bar='some const'"
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>
----------------------------------------------