<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Windows Azure Marketplace DataMarket Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/datamarket/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/datamarket/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 04:59:06 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>New Bing Speech Recognition Control and Updated Bing OCR and Translator Controls on Windows Azure Marketplace</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/new-bing-speech-recognition-control-and-updated-bing-ocr-and-translator-controls-on-windows-azure-marketplace</link>
      <pubDate>Mon, 21 Oct 2013 14:29:00 GMT</pubDate>
      <dc:creator><![CDATA[Max Uritsky]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2013/10/21/new-bing-speech-recognition-control-and-updated-bing-ocr-and-translator-controls-on-windows-azure-marketplace/</guid>
      <description><![CDATA[At the BUILD conference in June, we announced three broad categories of capabilities the new Bing...]]></description>
      <content:encoded><![CDATA[<p>At the BUILD conference in June, we announced three broad categories of capabilities the new Bing platform would deliver to developers: Services to bring entities and the world&rsquo;s knowledge to your applications, services to enable your applications to deliver more natural and intuitive user experiences, and services which bring an awareness of the physical world&nbsp;into your applications. Earlier this month we updated the <a href="https://blogs.msdn.com/b/bingdevcenter/archive/2013/10/03/updated-bing-maps-sdks-for-windows-store-apps-for-windows-8-0-and-8-1.aspx">Bing Maps SDKs</a> for Windows Store Apps for Windows 8 and 8.1. Building on this momentum, today we are announcing the release of the new <a href="https://www.bing.com/dev/en-us/speech">Bing Speech Recognition Control</a>&nbsp;for Windows 8 and 8.1, and updates to the <a href="https://www.bing.com/dev/en-us/ocr">Bing Optical Character Recognition Control</a> for Windows 8.1 and <a href="https://www.bing.com/dev/en-us/translator">Bing Translator Control</a> for Windows 8.1 to continue to deliver on our effort to support developers to enable more knowledgeable, natural, and aware applications.<br />Read on for more details on the updates we&rsquo;re announcing today, and then check out the <a href="https://www.bing.com/dev/en-us/dev-center">Bing developer center</a> for other useful resources, including <a href="https://code.msdn.microsoft.com/bing">code samples</a>, for building smarter, more useful applications.</p>
<p><strong>Hands free experiences &ndash;</strong><strong> Speech Recognition for Windows 8.0 and 8.1</strong></p>
<p>Whether for accessibility, safety, or simple convenience, being able to use your voice to&nbsp;interact hands-free with your device is increasingly important. By enabling devices to recognize speech, users can interact more naturally with their devices to dictate emails, search for the latest news, navigate their apps, and more. If you are a Windows Phone developer, you may already be familiar with the speech recognition inside Windows Phone: the user taps a microphone icon, speaks into the mic, and the text shows up on screen. Now, that same functionality is available on Windows 8, Windows 8.1, and Windows RT through the free <a href="https://www.bing.com/dev/en-us/speech">Bing Speech Recognition Control</a>.</p>
<p>In as little as ten lines of C# + XAML or JavaScript + HTML, you can put a <a href="https://msdn.microsoft.com/en-us/library/dn434633.aspx">SpeechRecognizerUX control</a> in your application, along with a microphone button and a TextBlock, and the code to support them. When the user clicks or taps the mic, they will hear a blip, or "earcon", to signal that it's time to speak, and an audio meter will show their current volume level. While speaking, the words detected will be shown in the control. When they stop speaking, or hit the Stop button on the speech control, they will get a brief animation and then their words will appear in the TextBlock.</p>
<p>Here's the XAML to create the UI elements:</p>
<p>&lt;AppBarButton x:Name="SpeakButton" Icon="Microphone" Click="SpeakButton_Click"&gt;&lt;/AppBarButton&gt;<br />&lt;TextBlock x:Name="TextResults" /&gt;<br />&lt;sp:SpeechRecognizerUx x:Name="SpeechControl" /&gt;</p>
<p>Or in HTML:</p>
<p>&lt;div id="SpeakButton" onclick="speakButton_Click();"&gt;&amp;#xe1d6;&lt;/div&gt;<br />&lt;div id="ResultText"&gt;&lt;/div&gt;<br />&lt;div id="SpeechControl" data-win-control="BingWinJS.SpeechRecognizerUx"&gt;</p>
<p>In the code behind, all you have to do is create a <a href="https://msdn.microsoft.com/en-us/library/dn434589.aspx">SpeechRecognizer</a>&nbsp;object, bind it to the SpeechRecognizerUX control, and create a click handler for the microphone button to start speech recognition and write the results to the TextBlock.</p>
<p>Here's the code in C#:</p>
<p class="scroll"><code class="csharp"> SpeechRecognizer SR;<br /> void MainPage_Loaded(object sender, RoutedEventArgs e)<br /> {<br />&nbsp; // Apply credentials from the Windows Azure Data Marketplace.<br />&nbsp; var credentials = new SpeechAuthorizationParameters();<br />&nbsp; credentials.ClientId = "&lt;YOUR CLIENT ID&gt;";<br />&nbsp; credentials.ClientSecret = "&lt;YOUR CLIENT SECRET&gt;";<br /><br />&nbsp; // Initialize the speech recognizer.<br />&nbsp; SR = new SpeechRecognizer("en-US", credentials);<br /><br />&nbsp; // Bind it to the VoiceUiControl.<br />&nbsp; SpeechControl.SpeechRecognizer = SR;<br /> }<br /><br /> private async void SpeakButton_Click(object sender, RoutedEventArgs e)<br /> {<br />&nbsp; var result = await SR.RecognizeSpeechToTextAsync();<br />&nbsp; TextResults.Text = result.Text;<br /> }</code></p>
<p>&nbsp;</p>
<p>And here it is in JavaScript:</p>
<p class="scroll"><code class="cplusplus">var SR;<br />function pageLoaded() {<br />&nbsp; // Apply credentials from the Windows Azure Data Marketplace.<br />&nbsp; var credentials = new Bing.Speech.SpeechAuthorizationParameters();<br />&nbsp; credentials.clientId = "&lt;YOUR CLIENT ID&gt;";<br />&nbsp; credentials.clientSecret = "&lt;YOUR CLIENT SECRET&gt;";<br /><br />&nbsp; // Initialize the speech recognizer.<br />&nbsp; SR = new Bing.Speech.SpeechRecognizer("en-US", credentials);<br /><br />&nbsp; // Bind it to the VoiceUiControl.<br />&nbsp; document.getElementById('SpeechControl').winControl.speechRecognizer = SR;</code></p>
<p class="scroll"><code class="cplusplus">}<br /><br /> function speakButton_Click() {<br />&nbsp; SR.recognizeSpeechToTextAsync()<br />&nbsp;&nbsp;&nbsp; .then(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function (result) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById('ResultText').innerHTML = result.text;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />}</code>&nbsp;</p>
<p>To get this code to work, you will have to put your own values in credentials: your ClientId and ClientSecret. You get these from the <a href="https://datamarket.azure.com/dataset/bing/speechcontrol">Windows Azure Data Marketplace</a> when you sign up for your free subscription to the control. The control depends on a web service to function, and you can send up to 500,000 queries per month at the free level. A more detailed version of this code is available in the <a href="https://msdn.microsoft.com/en-us/library/dn467596.aspx">SpeechRecognizerUX</a>&nbsp;class description on MSDN.</p>
<p>The next capability you would probably want to add is to show alternate results to recognized speech. While the user is speaking, the SpeechRecognizer makes multiple hypotheses about what is being said based on the sounds received so far, and may make multiple hypotheses at the end as well. These alternate guesses are available as a list through the <a href="https://msdn.microsoft.com/en-us/library/dn434595.aspx">SpeechRecognitionResult.GetAlternates(int)<br />method</a>, or individually as they are created through the <a href="https://msdn.microsoft.com/en-us/library/dn438596.aspx">SpeechRecognizer.RecognizerResultRecieved&nbsp;event</a>.</p>
<p>You can also bypass the SpeechRecognizerUX control and create your own custom speech recognition UI, using the <a href="https://msdn.microsoft.com/en-us/library/dn434585.aspx">SpeechRecognizer.AudioCaptureStateChanged event</a> to trigger the different UI states for startup, listening, processing, and complete. This process is described <a href="https://msdn.microsoft.com/en-us/library/dn467590.aspx">here</a>, and there is a complete code example in the <a href="https://msdn.microsoft.com/en-us/library/dn434589.aspx">SpeechRecognizer</a>&nbsp;MSDN page. For a detailed explanation and sample of&nbsp;working with the alternates list, see <a href="https://msdn.microsoft.com/en-us/library/dn434571.aspx">handling speech recognition data</a>.</p>
<p>Like all of the Bing controls and APIs, they work better together. Using the Speech Recognition Control to enter queries for Bing Maps or the Search API is an obvious choice, but you can also combine the control with Speech Synthesis for Windows 8.1 to enable two-way conversations with your users. Add the Translator API into the mix you could have real-time audio translation, just like in the sci-fi&nbsp;shows.</p>
<p>For more examples of what you can do with the Speech Recognition Control, go to the <a href="https://www.bing.com/dev/en-us/speech">Speech page</a> on the Bing Developer Center and check the links in the Samples section.</p>
<p>The control currently recognizes speech in US English.</p>
<p><strong>Give Your Machine the Gift of Sight &ndash; Bing Optical Character Recognition in Six Additional Languages</strong></p>
<p>From recognizing text in documents to the identification of email addresses, phone numbers, and URLs to the extraction of coupon codes, adding the power of sight to your Windows 8.1 Store app opens a host of new scenarios developers can enable to enhance their applications. Coming out of Customer Technical Preview, the <a href="https://www.bing.com/dev/en-us/ocr">Bing Optical Character Recognition Control</a> for Windows 8.1 now supports six new languages: Russian, Swedish, Norwegian, Danish, Finnish and Chinese Simplified in addition to the existing language support for English, German, Spanish, Italian, French, and Portuguese.</p>
<p><strong>Rise Above Language Barriers &ndash; Bing Translator Control for Windows8.1 </strong></p>
<p>Access robust, cloud-based, automatic translation easily between <a href="https://msdn.microsoft.com/en-us/library/hh456380.aspx">more than 40 languages</a> with the Bing Translator <a href="https://www.bing.com/dev/en-us/translator">Bing Translator Control</a>, which moves from Customer Technical Preview to general availability today. The Translator Control gives you access to machine translation services built on over a decade of natural language research from Microsoft Research. After download and one-time authentication, you can simply place the Translator Control in your app, feed it a string to translate, and receive the translation.&nbsp;</p>
<p>The Bing Developer Team</p>]]></content:encoded>
    </item>
    <item>
      <title>Changes in Brazil local currency charges</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/changes-in-brazil-local-currency-charges</link>
      <pubDate>Thu, 10 Oct 2013 21:43:00 GMT</pubDate>
      <dc:creator><![CDATA[Max Uritsky]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2013/10/10/changes-in-brazil-local-currency-charges/</guid>
      <description><![CDATA[To all&nbsp;Windows Azure Marketplace customers from Brazil
Your banks&nbsp;have recently changed...]]></description>
      <content:encoded><![CDATA[<p><strong><span style="text-decoration: underline;">To all&nbsp;Windows Azure Marketplace customers from Brazil</span></strong></p>
<p>Your banks&nbsp;have recently changed their policy regarding how your credit card transactions are handled on Windows Azure Marketplace, as well as other sites operated by international merchants.</p>
<p>We are actively working to address this change and ensure you can continue to enjoy Microsoft products and services with your preferred payment instrument. You may receive similar notices regarding other Microsoft products you own that may be affected. We apologize in advance for any inconvenience caused by this policy change some banks in Brazil have implemented, and we thank you for your patience as we determine additional options for your future transactions with Microsoft.</p>
<p>We would like to clarify that the amount of your transactions is a simple reference based on the current US dollar exchange rate; as such transaction is an international sale, the final price of the product in Brazilian Reais is calculated according to the US dollar exchange rate at the date of the closing of your credit card invoice and after addition of the amount relative to the IOF (Financial Operation Tax). The billing of this transaction is&nbsp;not subject to the issuing of electronic invoices (NFe).</p>
<p>We apologize in advance for any inconvenience caused and we thank you for your patience.&nbsp;</p>
<p>Thank you for continuing to be a valued customer. Please visit <a title="Windows Azure Support" href="https://www.windowsazure.com/en-us/support/options/">Windows Azure Support</a> or <a title="Windows Azure Marketplace Support" href="https://datamarket.azure.com/support">Windows Azure Marketplace Support</a>&nbsp;if you have any other questions.</p>
<p>Sincerely,</p>
<p>Windows Azure Marketplace team</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure Marketplace is available in 50 additional countries and features new exciting content including our own Bing Optical Character Recognition service</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/windows-azure-marketplace-is-available-in-50-additional-countries-and-features-new-exciting-content-including-our-own-bing-optical-character-recognition-service</link>
      <pubDate>Thu, 11 Jul 2013 19:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Max Uritsky]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2013/07/11/windows-azure-marketplace-is-available-in-50-additional-countries-and-features-new-exciting-content-including-our-own-bing-optical-character-recognition-service/</guid>
      <description><![CDATA[Hello Windows Azure Marketplace users,
We have some very exciting news to share with you &ndash; we...]]></description>
      <content:encoded><![CDATA[<p>Hello Windows Azure Marketplace users,</p>
<p>We have some very exciting news to share with you &ndash; we are now commercially available in <strong>50 additional countries</strong>!, taking our total countries support up to <strong>88</strong>. We also added some new and exciting content to the Marketplace, including Microsoft&rsquo;s Optical&nbsp; Character Recognition service recently announced at //build conference, new data services from D&amp;B, French postal offices locations directly from La Poste and great UK location services from MapMechanics.</p>
<p>1)&nbsp;&nbsp;&nbsp;&nbsp; <strong>Customers from the following countries can now purchase and consume qualified Marketplace offers</strong>:</p>
<p>Algeria, Argentina, Bahrain, Belarus, Bulgaria, Croatia, Cyprus, Dominican Republic, Ecuador, Egypt, El Salvador, Estonia, Guatemala, Iceland, India, Indonesia, Jordan, Kazakhstan, Kenya, Kuwait, Latvia, Liechtenstein, Lithuania, Macedonia, Malta, Montenegro, Morocco, Nigeria, Oman, Pakistan, Panama, Paraguay, Philippines, Puerto Rico, Qatar, Russia, Saudi Arabia, Serbia, Slovakia, Slovenia, South Africa, Sri Lanka, Taiwan, Thailand, Tunisia, Turkey, Ukraine, United Arab Emirates, Uruguay, Venezuela.</p>
<p><strong>Already registered in a different market? </strong></p>
<p>You can migrate your account to your native market by few simple steps:</p>
<ul>
<li>Go to <a href="https://datamarket.azure.com/account">https://datamarket.azure.com/account</a></li>
<li>Cancel any existing application or data subscriptions</li>
<li>Click &ldquo;Edit&rdquo; on &ldquo;Account Information&rdquo; page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
<li>Select the region associated with your Microsoft Account</li>
<li>Click &ldquo;Save&rdquo;</li>
<li>Subscribe to all your favorite offers again and enjoy new features like local currency pricing and billing</li>
</ul>
<p>&nbsp;</p>
<p>2)&nbsp;&nbsp;&nbsp;&nbsp; <strong>Bing OCR (Optical Character Recognition</strong>)&nbsp;<strong>Control &nbsp;</strong>is now available on the Windows Azure Marketplace &ndash; you can now leverage Microsoft&rsquo;s cloud-based optical character recognition capabilities and integrate it into your Windows 8 and Windows 8.1 apps. Click&nbsp;<a href="https://datamarket.azure.com/dataset/bing/OCRControl">here</a> to check out&nbsp;the offer and <a href="https://msdn.microsoft.com/en-us/library/dn261719.aspx">here</a> to learn more about the OCR service.</p>
<p>&nbsp;&nbsp;<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/5305.ocr.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/5305.ocr.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/5305.ocr.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/5305.ocr.png" alt="" border="0" /></a>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>3)&nbsp;&nbsp;&nbsp;&nbsp; We are pretty pumped to have a dataset from the prestigious French Postal Office, <strong>La Poste</strong>. Please check out the offer <a href="https://datamarket.azure.com/dataset/la_poste/points_de_contact_la_poste">here</a>.&nbsp;&nbsp;</p>
<p>Here is a snapshot of the offer in our Service Explorer:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/3683.laposte.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/3683.laposte.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/3683.laposte.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/3683.laposte.jpg" alt="" border="0" /></a>&nbsp;&nbsp;</p>
<p>4)&nbsp;&nbsp;&nbsp; <strong>D&amp;B (Dun &amp; Bradstreet)</strong>, the company known as the leading source of commercial data and insight on businesses, has added six new APIs to the growing list of data offers on the Windows Azure Marketplace. &nbsp;Check out the new offerings from D&amp;B:&nbsp;</p>
<p>Identification:</p>
<ul>
<li><a href="https://datamarket.azure.com/dataset/dnb/dqscompanymatch" target="_blank"><strong>Company Cleanse &amp; Match for Microsoft SQL Server Data Quality Services</strong></a> &ndash; uses SQL Server 2012 Data Quality Services with D&amp;B dataset as reference data for data cleansing project</li>
<li><strong><a href="https://datamarket.azure.com/dataset/815144C7-DFFB-4836-B49B-577BF4827919">Global Address Validation</a></strong>&nbsp;&ndash; lets you verify and clean global company addresses.</li>
</ul>
<p>Enrichment:</p>
<ul>
<li><a href="https://datamarket.azure.com/dataset/dnb/companydemographics" target="_blank"><strong>Company Demographics &ndash; Address and Phone</strong></a> &ndash; can be explored directly in the Marketplace, or by using Excel or via API programming.</li>
<li><a href="https://datamarket.azure.com/dataset/dnb/companyfirmographics" target="_blank"><strong>Company Firmographics &ndash; Industry and Sales</strong></a> &ndash; same access methods as above</li>
<li><a href="https://datamarket.azure.com/dataset/dnb/companyfamilyhierarchy" target="_blank"><strong>Company Family Hierarchy &ndash; Related Companies</strong></a> &ndash; same access methods as above</li>
</ul>
<p>Discovery:</p>
<ul>
<li><a href="https://datamarket.azure.com/dataset/dnb/businessinsight" target="_blank"><strong>D&amp;B Business Insight</strong></a>&nbsp;( AKA Company prospect builder ) &nbsp;&nbsp;- same access methods as above.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
</ul>
<p>To get a full list of data services, please click <a href="https://datamarket.azure.com/browse/data">here</a>&nbsp;and to get a full list of all the applications available through the Windows Azure Marketplace, please click <a href="https://datamarket.azure.com/browse/applications">here</a>.&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p>Thank you,</p>
<p>Windows Azure Marketplace Team</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure Marketplace – new end user experiences, new features, new data and app services, but still the same old excitement and added value!</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/windows-azure-marketplace-new-end-user-experiences-new-features-new-data-and-app-services-but-still-the-same-old-excitement-and-added-value</link>
      <pubDate>Thu, 04 Apr 2013 14:43:00 GMT</pubDate>
      <dc:creator><![CDATA[Max Uritsky]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2013/04/04/windows-azure-marketplace-new-end-user-experiences-new-features-new-data-and-app-services-but-still-the-same-old-excitement-and-added-value/</guid>
      <description><![CDATA[Hello Windows Azure Marketplace users,
We&rsquo;re back with another exciting set of announcements!...]]></description>
      <content:encoded><![CDATA[<p>Hello Windows Azure Marketplace users,</p>
<p>We&rsquo;re back with another exciting set of announcements! In the past 4 months, we&rsquo;ve not only supported the launch of a new storefront, but also made great strides in making our service more resilient, added a feature to help users guard against interruptions to service, added a huge portfolio of data services and app services, while continuing to improve the user experience on the portal and from Office products.</p>
<p>If you are a <span style="text-decoration: underline;">Developer</span>, you will be very excited to know that we launched the <strong><span style="text-decoration: underline;"><a href="https://www.windowsazure.com/en-us/store/overview/">Azure Store</a></span></strong>, which is a marketplace for data services and app services on the Windows Azure Portal, in October 2012. Want to learn more? Check out the <span style="text-decoration: underline;"><a href="https://channel9.msdn.com/Events/Build/2012/1-002">keynote from Build 2012</a>!</span></p>
<p>If you are an <span style="text-decoration: underline;">Analyst </span>or an<span style="text-decoration: underline;"> Information Worker</span>, you will be interested in knowing that we improved the experience of using Windows Azure Marketplace from Excel PowerPivot, and we helped with the launch of Data Explorer, which is a data aggregation and shaping tool from SQL Information Services. <a href="https://www.microsoft.com/en-us/bi/Products/Office.aspx">Download Data Explorer</a> and start playing with it right away!</p>
<p>Here are a few snapshots from Data Explorer:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1033.DExp.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1033.DExp.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1033.DExp.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1033.DExp.png" alt="" border="0" /></a><br />&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/0285.dexp2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/0285.dexp2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/0285.dexp2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/0285.dexp2.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;<br />&nbsp;Here are a few snapshots with the improved experience from Excel PowerPivot:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/0552.ppvt.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/0552.ppvt.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/0552.ppvt.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/0552.ppvt.jpg" alt="" border="0" /></a>&nbsp;</p>
<p><br /> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/3515.ppvt2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/3515.ppvt2.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/3515.ppvt2.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/3515.ppvt2.jpg" alt="" border="0" /></a><br /><br /></p>
<p>We have also continued to improve the user experience on the <a href="https://datamarket.azure.com/">Windows Azure Marketplace Portal.</a> We added a sitemap, which is a one-stop shop access point to all the important resources on the websites. With this feature, discoverability of resources on the website was greatly improved. We also made an improvement to the data visualization tool on our portal, Service Explorer, by replacing it with the more metro-looking Query Builder, to unify the data exploration experience found in Excel and PowerPivot. With this release, we also added support for download to PowerPivot 2010 and PowerPivot 2013, to target a broader set of customers.</p>
<p>We also added a feature in which users can opt-in to Windows Azure Marketplace automatically refilling their subscriptions when the subscription balances are low &ndash; we got a lot of feedback from our users that there ought to be a way to automatically re-subscribe to a subscription when the subscription balance runs out, and we heard the feedback, and we released the feature called Auto Refill, that did exactly that. Hmm, too good to be true? Read more about <a href="https://msdn.microsoft.com/en-us/library/ff717656.aspx">Auto Refill</a>.</p>
<p>&nbsp;</p>
<p>Here is a snapshot of the sitemap:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/2867.footer.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/2867.footer.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/2867.footer.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/2867.footer.jpg" alt="" border="0" /></a>&nbsp;</p>
<p>&nbsp;</p>
<p>Here is a snapshot of the new data visualization tool on the Marketplace Portal:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/7457.SE.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/7457.SE.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/7457.SE.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/7457.SE.jpg" alt="" border="0" /></a>&nbsp;</p>
<p>&nbsp;</p>
<p>Here are a few snapshots of Auto-Refill:</p>
<p>&nbsp;</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1385.autorefill.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1385.autorefill.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1385.autorefill.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1385.autorefill.png" alt="" border="0" /></a></p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1526.autorefill2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1526.autorefill2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1526.autorefill2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1526.autorefill2.png" alt="" border="0" /></a></p>
<p>&nbsp;&nbsp;</p>
<p>We have also released a good list of content in the past 5 months, and one of the interesting offerings was the <strong>Synonyms API</strong> that we made available through the Windows Azure Marketplace.&nbsp; The Synonyms API returns alternate references to real world entities like products, people, locations, and more.&nbsp;</p>
<p>For instance, the API intelligently matches the following real world entities to commonly used synonyms:&nbsp;</p>
<ul>
<li><strong>Product synonyms:</strong> &ldquo;Canon 600D&rdquo; is synonymous with &ldquo;canon rebel t3i&rdquo;, etc</li>
<li><strong>People synonyms:</strong> &ldquo;Jennifer Lopez&rdquo;&rdquo; is synonymous with &ldquo;jlo&rdquo;, etc</li>
<li><strong>Place synonyms:</strong> &ldquo;Seattle Tacoma International Airport&rdquo; is synonymous with &ldquo;sea tac&rdquo;, etc.</li>
</ul>
<p>&nbsp;</p>
<p>Try out this cool API for yourself right <a href="https://datamarket.azure.com/dataset/bing/synonyms">here</a>.</p>
<p>&nbsp;We also released a ton of great content by Dun &amp; Bradstreet, Digital Folio and our other key publishers, and here&rsquo;s a short list:</p>
<p>&nbsp;</p>
<ul>
<li><a href="https://datamarket.azure.com/dataset/ideltaone/ideltaone">Delta One</a> - Rates and yields derived from real market data</li>
<li><a href="https://datamarket.azure.com/dataset/tradingeconomics/economic_indicators_data">300.000 Economic Indicators for 196 Countries</a> - 300.000 economic indicators, exchange rates, stock market indexes, government bond yields and commodity prices for 196 countries</li>
<li><a href="https://datamarket.azure.com/dataset/pricingkernel/derivative_data">Derivative Data</a> - Derivative price information on the Euro Stoxx 50 equity index</li>
<li><a href="https://datamarket.azure.com/dataset/centricaenergy/map_calendar">Calendar Mapping Table for Data Warehouses</a> - Full set of hierarchies for the standard calendar and the ISO week structure</li>
<li><a href="https://datamarket.azure.com/dataset/cwa/drugsprescribedinengland">Drug Prescribing by GP Practices in England</a>, Published by: Custom Web Apps, Ltd</li>
<li><a href="https://datamarket.azure.com/application/140b53d5-9f42-419b-a7f4-7b78784e971e">LetMobile Secure Mobile Email</a>, Published by: LetMobile</li>
<li><a href="https://datamarket.azure.com/application/aa71e590-af38-482f-a2e4-1e8ea3589f6f">True False WebUpload</a>, Published by: True False S.r.l.</li>
<li><a href="https://datamarket.azure.com/dataset/digitalfolio/dfdataapi_all_eventdetail">Retail Intelligence API - Event History: All Product Elements</a>, Published by: Digital Folio</li>
<li><a href="https://datamarket.azure.com/dataset/digitalfolio/dfdataapi_all_sum">Retail Intelligence API - Summaries: All Product Elements</a>, Published by: Digital Folio</li>
<li><a href="https://datamarket.azure.com/dataset/digitalfolio/dfdataapi_po_eventdetail">Retail Intelligence API - Event History: Product Price Only</a>, Published by: Digital Folio</li>
<li><a href="https://datamarket.azure.com/dataset/digitalfolio/dfdataapi_po_sum">Retail Intelligence API - Summaries: Product Price Only</a>, Published by: Digital Folio</li>
<li><a href="https://datamarket.azure.com/dataset/www.bcn.cat/barcelonafacilities">The City of Barcelona&rsquo;s Barcelona Facilities</a></li>
<li><a href="https://datamarket.azure.com/dataset/www.bcn.cat/bcnoffering0005">The City of Barcelona&rsquo;s Barcelona Car Registrations in 2009</a></li>
<li><a href="https://datamarket.azure.com/dataset/www.bcn.cat/bcnoffering0003">The City of Barcelona&rsquo;s Barcelona City Blocks</a></li>
<li><a href="https://datamarket.azure.com/dataset/www.bcn.cat/bcnoffering0001">The City of Barcelona&rsquo;s Barcelona Basic Addresses</a></li>
<li><a href="https://datamarket.azure.com/dataset/macrotrenz/ffiecdataservice">MacroTrenz&rsquo;s U.S. Bank Financia Condition &amp; Performance Data Service</a></li>
<li><a href="https://datamarket.azure.com/dataset/cwa/crimestatsengwales">Custom Web Apps&rsquo; Crime Statistics for England &amp; Wales</a></li>
<li><a href="https://datamarket.azure.com/dataset/dnb/businessinsight">Dun &amp; Bradstreet&rsquo;s Business Insight</a></li>
<li><a href="https://datamarket.azure.com/dataset/dnb/bustlingmanufacturers">Dun &amp; Bradstreet&rsquo;s Bustling Manufacturers &amp; Business Services List</a></li>
<li><a href="https://datamarket.azure.com/dataset/20ac1a78-d095-4aab-a116-7a1745fe9136">EUHealth&rsquo;s European Health Care Data</a></li>
<li><a href="https://datamarket.azure.com/application/47b68379-e063-4f08-aa82-caed1d41ccaf">ScientiaMobile&rsquo;s WURFL Cloud Service</a></li>
<li><a href="https://datamarket.azure.com/application/5a57dedd-aa53-47f1-98d6-dc1138214d22">Profity&lsquo;s Timesplitter</a></li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=d49ee998-dc44-4c7f-b94d-794e5ce10198">Active Cloud Monitoring</a> - Active Cloud Monitoring by MetricsHub monitors your cloud applications and automatically scales your service up or down based on rules you set. Within minutes, you'll improve up-time and decrease cost.</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=9bf63566-e287-4b47-9c9f-101f711fc3d4">Bitline</a>&nbsp;- Stop spending time managing image infrastructure. Use Bitline to handle all your image processing, from cropping, to rotations, or filters. We even offer screenshots of websites! Blitline leverages cloud based services and provides reliable, scalable, enterprise ready performance.</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=f06b5541-00c3-415e-b195-e951127b6e9e">EZDRM Hosted PlayReady DRM</a> - EZDRM, Hosted PlayReady DRM provider, offers Microsoft PlayReady DRM for protection and content access control of your digital media. Our solution supports Microsoft Smooth Streaming (.piff/.ismv), PlayReady Video (.pyv),&nbsp;playReady Audio (.pya) and Windows Media (.wmv, .wma) file formats.</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=20dfff56-5ca7-43b1-a903-4a8b32e0c9c4">Cloudinary</a>&nbsp;- Cloudinary streamlines your web application&rsquo;s image manipulation needs. Cloudinary&rsquo;s cloud-based servers automate image uploading, resizing, cropping,optimizing, sprite generation and more.</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=2294ce8b-ce14-4a88-a1b6-a0b28680a114">Embarke Email Analytics</a> - Embarke is next-generation analytics for email. Learn behaviors about your users that will help you increase engagement and revenue. Integration takes less than 15 minutes!</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=53765649-ba4b-4fe2-a834-21b334b551e2">Scheduler</a>&nbsp;- Time-based eventing made simple. Schedule CRON jobs with ease.</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=70e4389b-739e-4c8a-9af2-411fb11b895a">Pusher</a>&nbsp;- Pusher makes it easy to push any type of content to browsers and devices in real time.</li>
<li><a href="https://www.windowsazure.com/en-us/store/service/?id=4c3fb621-a3e4-41f7-8149-f3a2cbbc08f6">VS Anywhere</a> - Real-Time Collaboration Platform for Visual Studio 2010/2012. Share Solutions, Projects, Code and Visual Studio Designers worldwide in Real-Time</li>
</ul>
<p>To get a full list of data services, please click <a href="https://datamarket.azure.com/browse/data">here</a> and to get a full list of all the applications available through the Windows Azure Marketplace, please click <a href="https://datamarket.azure.com/browse/applications">here</a>.</p>
<p>Thank you,</p>
<p>Windows Azure Marketplace Team</p>]]></content:encoded>
    </item>
    <item>
      <title>More content released to Windows Azure DataMarket</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/more-content-released-to-windows-azure-datamarket</link>
      <pubDate>Fri, 17 Jun 2011 14:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Max Uritsky]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2011/06/17/more-content-released-to-windows-azure-datamarket/</guid>
      <description><![CDATA[Here we go again, everybody... More content!!
We&rsquo;re very happy to publish our first offering...]]></description>
      <content:encoded><![CDATA[<p>Here we go again, everybody... More content!!</p>
<p>We&rsquo;re very happy to publish our first offering from China!</p>
<p>According to <b>Chanjet</b>: &ldquo;In short, from the operational indicators for the SME (small and medium-sized enterprise) segment, we see that the impact of external factors outweighs the internal factors, and this is causing increasing operational risk for the Chinese SME. The key focus areas for the SME in order to minimize their operational risk, include: capital risk, receivable risk and inventory risk.&rdquo; Did you know this? If you&rsquo;re like me (I didn&rsquo;t know this), then you, too, can benefit from some quality time poking around <a href="https://datamarket.azure.com/dataset/6bd3a6b3-2fe0-4609-ba11-959190000047">Chanjet&rsquo;s China Small &amp; Medium Enterprises Management &amp; Operation KPI Data</a>&nbsp;offering.</p>
<p>Our friends at <b>LexisNexis</b> have published <a href="https://datamarket.azure.com/dataset/101eb297-c17f-4f22-a844-16ca2e52252d">Legal Communities</a>. This offering provides access to the largest collection of Legal Blogs written by leading legal professionals, more than 1,600 Legal Podcasts featuring legal luminaries, information about Top Cases and Emerging Issues. The communities enable you to keep current with the latest Legal News, Issues and Trends. I recommend adding this to your daily blog reading regimen &ndash; right after your daily stop to the DataMarket blog.</p>
<p>And last, but certainly not least, check out of Sao Paulo, Brazil, courtesy of <b>Sanborn</b>!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/4578.Sanborn.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/4578.Sanborn.jpg"><img border="0" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/4578.Sanborn.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/4578.Sanborn.jpg" /></a>&nbsp;</p>
<p>Sanborn&rsquo;s <a href="https://datamarket.azure.com/dataset/bfa417be-be79-4915-82c7-efae9ced5cb7">Building Model Service</a> contains some 66 of the largest metropolitan urban areas across the United States, Mexico, South America, Canada, and Europe. This spatial database is comprised of photogrammetric extracted, from high resolution aerial photography, accurate and precise property-and-address-based building footprint geospatial building footprint vectors.&nbsp; Building footprints are concurrent with an accurate 3D building &ldquo;Massing&rdquo; model, allow for advanced modeling and analysis of urban buildings and structures, blocks and neighborhoods.</p>
<p>Enjoy new content!</p>
<p>The Windows Azure DataMarket Team</p>]]></content:encoded>
    </item>
    <item>
      <title>Announcing More New DataMarket Content!</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/announcing-more-new-datamarket-content</link>
      <pubDate>Fri, 03 Jun 2011 15:26:00 GMT</pubDate>
      <dc:creator><![CDATA[Elisa Flasko - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2011/06/03/announcing-more-new-datamarket-content/</guid>
      <description><![CDATA[Hello everyone! It’s that time again… We’re happy to announce our latest content release!  Have you...]]></description>
      <content:encoded><![CDATA[<p>Hello everyone! It’s that time again… We’re happy to announce our latest content release!</p>  <p>Have you ever wondered if there are any environmental hazards around your house? If so, we’ve got the solution! <b>Environmental Data Resources, Inc.</b> is publishing their <a href="https://datamarket.azure.com/dataset/d8161344-f755-4a86-83e6-db9a89f06efd"><strong>Environmental Hazard Rank</strong></a> offering. The EDR Environmental Hazard Ranking System depicts the relative environmental health of any U.S. ZIP code based on an advanced analysis of its environmental issues. The results are then aggregated by ZIP code to provide you with a rank so you can see how the ZIP code you're interested in stacks up.</p>  <p>It’s Trivia Time! Today’s question: Is the buying power of US dollar greater today than it was in 1976? And today’s Bonus Question: was the buying power of US dollar greater in 1976 than it was in 1923? If you’re sitting there scratching your head thinking “Hmm, these are good questions, Mr. Azure DataMarket Blog Writer Man”, then fear not, <b>MetricMash</b> has got you covered. They’re publishing their <a href="https://datamarket.azure.com/dataset/26058d69-5cad-4a7c-9a14-a21a0c40de86"><strong>U.S. Consumer Price Index - 1913 to Current</strong></a> offering. This offering provides the changes in the prices paid by consumers for over 375 goods and services in major expenditure groups – such as food, housing, apparel, transportation, medical care and education cost. The CPI can be used to measure inflation and adjust the real value of wages, salaries and pensions for regulating prices and for calculating the real rate of return on investments. And, speaking of buying power, MetricMash is offering a free trial on this offering to make it easy for developers to use this information inside their apps.</p>  <p>- Mr. Azure DataMarket Blog Writer Man</p>]]></content:encoded>
    </item>
    <item>
      <title>MSDN Webcast: Using Windows Azure DataMarket to Explore the Power of Local Weather</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/msdn-webcast-using-windows-azure-datamarket-to-explore-the-power-of-local-weather</link>
      <pubDate>Fri, 03 Jun 2011 11:32:06 GMT</pubDate>
      <dc:creator><![CDATA[Elisa Flasko - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2011/06/03/msdn-webcast-using-windows-azure-datamarket-to-explore-the-power-of-local-weather/</guid>
      <description><![CDATA[Streamlined access to local weather information promises to empower product development ranging from...]]></description>
      <content:encoded><![CDATA[<p>Streamlined access to local weather information promises to empower product development ranging from consumer experience such as <a href="https://www.myweather.com/">www.myweather.com</a>, which provides real-time radar and a seamless worldwide satellite sector, to complex machine learning algorithms. If you’re interested in learning more about this topic, don’t miss the upcoming webcast, <a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032487803&amp;EventCategory=4&amp;culture=en-US&amp;CountryCode=US">“Using Windows Azure DataMarket to Explore the Power of Local Weather”</a>, which will take place Tuesday, June 14, 2011 8:00-9:00 am, PDT.</p>  <p>During this webcast, presenters Ben Zimmerman, Weather Central Dr. of Business Development and Elisa Flasko, Microsoft Program Manager, will explore how you can use local weather data to create compelling applications and revolutionize business intelligence. This session will also focus on Weather Central’s differentiating science, the ease of data integration offered through <a href="https://datamarket.azure.com/">Windows Azure Marketplace DataMarket</a>, and share several use case applications. </p>  <p>Click <a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032487803&amp;EventCategory=4&amp;culture=en-US&amp;CountryCode=US">here</a> to learn more and to register.</p>]]></content:encoded>
    </item>
    <item>
      <title>DataMarket Bing Map App</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/datamarket-bing-map-app</link>
      <pubDate>Wed, 01 Jun 2011 16:50:00 GMT</pubDate>
      <dc:creator><![CDATA[Elisa Flasko - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2011/06/01/datamarket-bing-map-app/</guid>
      <description><![CDATA[Today we are very excited to announce, in partnership with OnTerra Systems, the launch of the new...]]></description>
      <content:encoded><![CDATA[<p>Today we are very excited to announce, in partnership with <a href="https://onterrasys.com/">OnTerra Systems</a>, the launch of the new DataMarket Map App in the <a href="https://www.bing.com/maps">Bing Map App Gallery</a>!</p>
<p><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/metablogapi/2678.clip_image002_32232CFC.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55-metablogapi/2678.clip_5F00_image002_5F00_32232CFC.jpg"><img style="display: inline; border-width: 0px;" title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/metablogapi/1106.clip_image002_thumb_46A87C7A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55-metablogapi/1106.clip_5F00_image002_5F00_thumb_5F00_46A87C7A.jpg" width="730" height="391" /></a></p>
<p>The application allows you to use your existing DataMarket subscription to access and visualize layers of geospatial DataMarket data on Bing Maps. If latitude and longitude don&rsquo;t exist in the data offer, then the Bing Maps geocoder will geocode on the fly.</p>
<p>Don&rsquo;t have a DataMarket account yet? Well, you&rsquo;ll definitely want to check it out and sign up, but there is some sample crime and demographic data available to give an example of how the app works.</p>
<p></p>
<p>-The DataMarket Team</p>]]></content:encoded>
    </item>
    <item>
      <title>An Introduction to DataMarket with PHP</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/an-introduction-to-datamarket-with-php</link>
      <pubDate>Fri, 27 May 2011 08:49:00 GMT</pubDate>
      <dc:creator><![CDATA[Elisa Flasko - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2011/05/27/an-introduction-to-datamarket-with-php/</guid>
      <description><![CDATA[Hi! I&rsquo;m Jovana, and I&rsquo;m currently interning on the DataMarket team. I come from sunny...]]></description>
      <content:encoded><![CDATA[<p>Hi! I&rsquo;m Jovana, and I&rsquo;m currently interning on the DataMarket team. I come from sunny Western Australia, where I&rsquo;ve almost finished a degree in Computer Science and Mechatronics Engineering. When I came here I noticed that there wasn&rsquo;t too much available in the way of tutorials for users who wanted to use DataMarket data in a project, but weren&rsquo;t C# programmers. I&rsquo;d written a total of one function in C# before coming here, so I&rsquo;d definitely classify myself in that category. The languages I&rsquo;m most familiar with are PHP, Python and Java, so over the next few weeks I&rsquo;ll do a series of posts giving a basic introduction to consuming data from DataMarket using these languages. I&rsquo;ll refer to the 2006 &ndash; 2008 Crime in the United States (Data.gov) dataset for these posts, which is free to subscribe to, and allows unlimited transactions.</p>
<p>In this post I&rsquo;ll outline two methods for using PHP to query DataMarket; using the PHP OData SDK, and using cURL to read and then parse the xml data feed. For either method, you&rsquo;ll firstly need to subscribe to a dataset, and make a note your DataMarket account key. Your account key can be found by clicking &ldquo;My Data&rdquo; or &ldquo;My Account&rdquo; near the top of the DataMarket webpage, then choosing &ldquo;Account Keys&rdquo; in the sidebar.</p>
<p>&nbsp;</p>
<h4>The PHP OData SDK</h4>
<p>DataMarket uses the OData protocol to query data, a relatively new format released under the Microsoft Open Specification Promise. One of the ways to query DataMarket with PHP is to use the PHP OData SDK, developed by Persistent Systems Ltd. This is freely available from CodePlex, however unfortunately there seems to be little developer activity on the project since its release in March 2010, and users report that they need to do some source code modifications to get it to work on Unix systems. Setting up the SDK also involves making some basic changes to the PHP configuration file, potentially a problem on some hosted web servers. </p>
<p><b>A word of warning: not all DataMarket datasets can be queried with the PHP OData SDK!</b> DataMarket datasets can have one of two query types, fixed or flexible. To check which type a particular set is, click on the &ldquo;Details&rdquo; tab in the dataset description page. The SDK only supports datasets with flexible queries. Another way to check is to take a look at the feed&rsquo;s metadata. Copy the service URL, also found under the &ldquo;Details&rdquo; tab into your browser&rsquo;s address bar and add $metadata after the trailing slash. Some browsers have trouble rendering the metadata; if you get an error, save the page and open it up in notepad. Look for the tab containing &lt;schema xmlns=&rdquo;&hellip;&rdquo;&gt; (There will probably be other attributes, such as namespace, in this tab). The PHP OData SDK will only work with metadata documents specifying their schema xmlns ending in one of &ldquo;/2007/05/edm&rdquo;, &ldquo;/2006/04/edm&rdquo; or &ldquo;/2008/09/edm&rdquo;. </p>
<h5>Generating a Proxy Class</h5>
<p>The PHP OData SDK comes with a PHP utility to generate a proxy class for a given OData feed. The file it generates is essentially a PHP model of the feed. The command to generate the file is</p>
<p>php PHPDataSvcUtil.php /uri=[Dataset&rsquo;s service URL]</p>
<p>/out=[Name out output file]</p>
<p>Once generated, check that the output file was created successfully. The file should contain at least one full class definition. Below is a snippet of the class generated for the Data.gov Crime dataset. The full class is around 340 lines long.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">/**
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">* Function returns DataServiceQuery reference for
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">* the entityset CityCrime
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">* @return DataServiceQuery
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">*/
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">public function CityCrime()
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;_CityCrime-&gt;ClearAllOptions();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">return $this-&gt;_CityCrime;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<h5>Using the Proxy class</h5>
<p>With the hardest part complete, you are now ready to start consuming data! Insert a reference to the proxy class at the top of your PHP document.</p>
<p>require_once "datagovCrimesContainer.php";</p>
<p>Now you are ready to load the proxy. You&rsquo;ll also need to pass in your account key for authentication.</p>
<p>$key = [Your Account Key];</p>
<p>$context = new datagovCrimesContainer();</p>
<p>$context-&gt;Credential = new WindowsCredential("key", $key);</p>
<p>The next step is to construct and run the query. There are a number of query functions available; these are documented with examples in the user guide. Keep in mind that queries can&rsquo;t always be filtered by any of the parameters&ndash; for this particular dataset we can specify ROWID, State, City and Year. The valid input parameters can be found under the dataset&rsquo;s &ldquo;Details&rdquo; tab. Note that some datasets have mandatory input parameters. </p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">try
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$query = $context-&gt;CityCrime()
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">-&gt;Filter("State eq 'Washington' and Year eq 2007");
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$result = $query-&gt;Execute();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">catch (DataServiceRequestException $e)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">echo "Error: " . $e-&gt;Response-&gt;getError();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$crimes = $result-&gt;Result;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>(If you get a warning message from cURL that isn&rsquo;t relevant to the current environment, try adding @ in front of $query to suppress warnings.)</p>
<p>In this example we&rsquo;ll construct a table to display some of the result data.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">echo &ldquo;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span>&rdquo;;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">foreach ($crimes as $row)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">echo "<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>" . htmlspecialchars($row-&gt;City) . "<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">echo "<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>" . htmlspecialchars($row-&gt;Population) . "<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">echo "<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span>" . htmlspecialchars($row-&gt;Arson) . "<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000ff;">&gt;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000ff;">&gt;</span>";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">echo "<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000ff;">&gt;</span>";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>DataMarket will return up to 100 results for each query, so if you expect more than 100 results you&rsquo;ll need to execute several queries. We simply need to wrap the execute command in some logic to determine whether all results have been returned yet.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$nextCityToken = null;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">while(($nextCityToken = $result-&gt;GetContinuation()) != null)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$result = @$context-&gt;Execute($nextCityToken);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$crimes = array_merge($crimes, $result-&gt;Result);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>The documentation provided with the SDK outlines a few other available query options, such as sorting. Some users have reported bugs arising if certain options are used together, so be sure to test that your results are what you expect. </p>
<h4>Using cURL/libcurl</h4>
<p>If the PHP OData SDK isn&rsquo;t suitable for your purpose, another option is to assemble the URL to the data you are after, then send a request for it using cURL and parse the XML result. DataMarket&rsquo;s built in query explorer can help you out here &ndash; add any required parameters to the fields on the left, then click on the blue arrow to show the URL that corresponds to the query. Remember that any ampersands or other special characters will need to be escaped.</p>
<h5>The cURL request</h5>
<p>We use cURL to request the XML feed that corresponds to the query URL from DataMarket. Although there are a number of options that can be set, the following are all that is required for requests to DataMarket.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$ch = curl_init(); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">curl_setopt($ch, CURLOPT_URL, $queryUrl); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">curl_setopt($ch, CURLOPT_USERPWD, ":" . $key);  
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">curl_setopt($ch, CURLOPT_RETURNTRANSFER,  true); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$response = curl_exec($ch); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">curl_close($ch); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>The $response variable now contains the XML result for the query. </p>
<h5>Parsing the response</h5>
<p>Before using the data, you&rsquo;ll need to parse the XML. Because each XML feed is different, each dataset needs a parser tailored especially to it. There are a number of methods of putting together a parser, the example below uses xml_parser.</p>
<p>The first step is to create a new class to model each row in the result data.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">class CityCrime
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{ 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $City;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $Population;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $Arson;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">public function __construct()
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">} 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>I&rsquo;m also going to wrap the all the parser functions in a class of their own. This function will be called with the query uri and account key. Firstly I&rsquo;ll give it some class variables to store the data that has been parsed.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">class CrimeParser
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $entries = array();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $count = 0;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $currentTag = "";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $key = "";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $uri = "";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">public function __construct($key, $uri) 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;key = $key;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;uri = $uri;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>The parser requires OpenTag and CloseTag functions to specify what should happen when it reaches an open tag or close tag in the XML. In this case, we append or remove the tag name from the $currentTag string.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">private function OpenTag($xmlParser, $data)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;currentTag .= "/$data";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">private function CloseTag($xmlParser, $data)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$tagKey = strrpos($this-&gt;currentTag, '/');
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;currentTag = substr($this-&gt;currentTag, 0, $tagKey);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>Now we are ready to write a handler function. Firstly declare the tags of all the keys that you wish to store. One method of finding the tags is to run the code using a basic handler function that simply prints out all tags as they are encountered.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">private function DataHandler($xmlParser, $data)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">switch($this-&gt;currentTag){ 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">default:
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">print "$this-&gt;currentTag <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/&gt;</span>";
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">break;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>The switch statement in the handler needs a case for each key. We also need to let it know when it reaches a new object &ndash; from running the code with the previous handler, I knew that the properties for each row started and finished with the tag /FEED/ENTRY/CONTENT, so I&rsquo;ll add a class variable to keep track of when the handler comes across that tag &ndash; every second time it comes across it I know that the result row has been fully processed.</p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">var $contentOpen = false;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">const rowKey = '/FEED/ENTRY/CONTENT';
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">const cityKey = '/FEED/ENTRY/CONTENT/M:PROPERTIES/D:CITY';
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">const populationKey = '/FEED/ENTRY/CONTENT/M:PROPERTIES/D:POPULATION';
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">const arsonKey = '/FEED/ENTRY/CONTENT/M:PROPERTIES/D:ARSON';
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">private function DataHandler($xmlParser, $data)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">switch(strtoupper($this-&gt;currentTag)){
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">case strtoupper(self::rowKey):
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">if ($this-&gt;contentOpen)
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;count++;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;contentOpen = false;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">else
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;entries[$this-&gt;count] = new CityCrime();
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;contentOpen = true;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">break;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">case strtoupper(self::cityKey):
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;entries[$this-&gt;count]-&gt;City = $data;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">break;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">case strtoupper(self::populationKey): 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;entries[$this-&gt;count]-&gt;Population = $data;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">break;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">case strtoupper(self::arsonKey): 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$this-&gt;entries[$this-&gt;count]-&gt;Arson = $data;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">break;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">default:
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">break;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">}
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>Now we create the parser, and parse the result from the cURL query. </p>
<pre><pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">$xmlParser = xml_parser_create(); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">xml_set_element_handler($xmlParser, "self::OpenTag","self::CloseTag"); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">xml_set_character_data_handler($xmlParser, "self::DataHandler"); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">if(!(xml_parse($xmlParser, $xml)))
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">{ 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">die("Error on line " . xml_get_current_line_number($xmlParser)); 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">} 
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;">xml_parser_free($xmlParser);
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"></pre>
</pre>
<p>After the call to xml_parse, the $entries will be populated. A table of the data can now be printed using the same foreach code as the SDK example, or manipulated in any way you see fit.</p>
<h4>Final Thoughts</h4>
<p>The two methods of consuming data from DataMarket with PHP both have their strengths and weaknesses. A proxy class generated from the OData SDK is very easy to add to existing code, but setting up the library can be tedious, and there is not much support available for it. Using cURL and parsing the xml provides slightly more flexibility, but requires much more coding to set up.</p>
<p>Since it only requires an URL and an Account key, opening the connection to DataMarket is very straightforward, whichever method is chosen. If the dataset you&rsquo;re connecting to is free, I suggest opening Service Explorer and trying out various queries to get a feel for the data. Both methods shown above will result in the dataset&rsquo;s conversion to an associative array, from which data can be manipulated using any of the PHP functions available.</p>
<p>At this stage, if you want to access a flexible query dataset, and are able to modify your PHP configuration file, the PHP OData SDK is a good tool for accessing OData feeds. However, if you want access to a fixed query dataset, or are unable to modify the configuration file, using cURL and parsing the result is straightforward enough to still be a valid option.</p>
<p>- Jovana Taylor</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/16/91/15/datamarketPHPSample.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-16-91-15/datamarketPHPSample.zip">datamarketPHPSample.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Announcing the release of the Windows Azure Marketplace DataMarket Service Update 2!</title>
      <link>https://docs.microsoft.com/archive/blogs/datamarket/announcing-the-release-of-the-windows-azure-marketplace-datamarket-service-update-2</link>
      <pubDate>Fri, 13 May 2011 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Max Uritsky]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/datamarket/2011/05/13/announcing-the-release-of-the-windows-azure-marketplace-datamarket-service-update-2/</guid>
      <description><![CDATA[Announcing the release of the DataMarket Service Update 2! With this release, we&rsquo;re rolling...]]></description>
      <content:encoded><![CDATA[<p>Announcing the release of the <strong><a href="https://datamarket.azure.com/">DataMarket Service Update 2</a></strong>! With this release, we&rsquo;re rolling out a little something for everyone. First up: check out our shiny <b>new Service Explorer</b>:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/2251.explorer.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/2251.explorer.jpg"><img height="251" width="600" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/2251.explorer.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/2251.explorer.jpg" border="0" /></a>&nbsp;</p>
<p>The offering query UI has evolved into more of an all-purpose toolbox. Now you can create data visualizations right there in your browser. And if you want to do more with the data &ndash; but don&rsquo;t feel like whipping up some code &ndash; now you can download your query results in XLS, CSV and XML formats (you already know about our <b><a target="_blank" href="https://datamarket.azure.com/addin">DataMarket Add-In for Excel</a></b>, don&rsquo;t you? The <b>CTP2</b> of the Add-In, shipped today, will no longer require Account key and you can simply use your Windows Live ID credentials). </p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1856.Excel.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1856.Excel.jpg"><img height="849" width="382" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/1856.Excel.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/1856.Excel.jpg" border="0" /></a></p>
<p>Have you found yourself exploring the marketplace and found an offering you wanted to share &ndash; maybe some <a target="_blank" href="https://datamarket.azure.com/dataset/10a6465f-b0a6-49ca-9175-b24caaf74db0">historic weather observations</a> from WeatherBug (is it really normal to have this much rain in Seattle?), or <a target="_blank" href="https://datamarket.azure.com/dataset/0a05ca92-0b3a-4825-819f-44b7e2dcafb9">nutrition information</a> from Gregg London Consulting (hmm, better not have the second helping of dessert after all)? Now you can tell all of your friends about it with our new <b>Facebook Like Button</b>.</p>
<p>For all you developers out there, we&rsquo;ve made it easier for you to bring valuable data into your apps by enabling <b>Free Trials</b>! This functionality allows you to subscribe to offerings for free, if the content publisher has chosen to publish a trial, so you can wrap your brain around the data and the best way to pop it into your app. <a target="_blank" href="https://datamarket.azure.com/browse/filter/publisher~85fce89d-ee6a-4136-a08a-22cf3a28606d/">Dun &amp; Bradstreet</a>, <a target="_blank" href="https://datamarket.azure.com/browse/filter/publisher~06f4105e-0918-4cb4-b53e-a62bb0025b5a/">Boundary Solutions</a>, <a target="_blank" href="https://datamarket.azure.com/dataset/662d2b6a-119d-447e-a2b9-84d7a7f83590">MetricMash</a> and <a target="_blank" href="https://datamarket.azure.com/browse/filter/publisher~e6660c79-4b33-45f9-9254-1d7f7d2b6000/">StrikeIron</a> helped us launch this new feature by creating a bunch of free trials &ndash; be sure to check out their free stuff.</p>
<p>Did you want to your application to access the dataset on behalf of the user? Now you can with <b><a target="_blank" href="https://msdn.microsoft.com/en-us/library/gg193416.aspx">OAuth v2</a> </b>integration in SU2! Surely enough, the user has to actually approve the usage as part of the consent flow (enjoy the snapshot below).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/6874.consent.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/6874.consent.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/41/55/6874.consent.jpg" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-41-55/6874.consent.jpg" border="0" /></a>&nbsp;</p>
<p>&nbsp;Hello everyone outside the United States! We haven&rsquo;t forgotten about you. With this release we&rsquo;re introducing the first phase of our <b>international</b> expansion. If you&rsquo;re in <b>Australia</b>,<b> Austria, Canada</b>,<b> France</b>,<b> Germany</b>,<b> Italy</b>,<b> Spain </b>and the<b> United Kingdom</b>, now you can subscribe to commercial DataMarket offerings &ndash; paying for them in your local currency! Thank you <a target="_blank" href="https://datamarket.azure.com/dataset/662d2b6a-119d-447e-a2b9-84d7a7f83590">MetricMash</a> and <a target="_blank" href="https://datamarket.azure.com/browse/filter/publisher~e6660c79-4b33-45f9-9254-1d7f7d2b6000/">StrikeIron</a> for helping us launch this important expansion by making your offerings available to people outside the US.<br />PS &ndash; If you&rsquo;re not in one of the countries listed above, fear not, we still haven&rsquo;t forgotten about you&hellip;</p>
<p>And last, but certainly not least, we&rsquo;re also releasing offerings from three new content publishers: <b>Digital Trowel</b>, <b>InfoChimps</b> and <b>MetricMash</b>. Welcome to the DataMarket, guys! And, best of all&hellip; all three have published some sort of free service so you can get started with their stuff at no cost!</p>
<ul>
<li><a target="_blank" href="https://datamarket.azure.com/dataset/d3a0e67c-6b13-4f07-8387-d0f59ddf28fa">Powerlinx Database of US based companies and professionals</a><b> </b>from<b> Digital Trowel</b>: Powerlinx contains contact information of more than 10 million USA companies with website addresses, 25M detailed company profiles, 25M executives including 5 million in-depth profiles with email addresses and phone numbers.</li>
<li><a target="_blank" href="https://datamarket.azure.com/dataset/e35d3f16-838c-456e-8d1f-3616181a9b23">Trstrank</a><b> </b>from<b> Infochimps</b>: The Infochimps Trstrank measures how important a Twitter user is. It&rsquo;s a sophisticated network measure of centrality, not just a count of the number of followers a user has.</li>
<li><a target="_blank" href="https://datamarket.azure.com/dataset/662d2b6a-119d-447e-a2b9-84d7a7f83590">U.S. Unemployment Data - 1948 to Current</a> from <b>MetricMash</b>: This dataset is based on the Current Population Survey (CPS) published by the U.S. Bureau of Labor Statistics and is updated monthly. The data is broken down into these unemployment categories: rate; length, population and labor force participation.</li>
</ul>
<p>The DataMarket Team</p>]]></content:encoded>
    </item>
  </channel>
</rss>