<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>HubLog</title>
    <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/" />
    
    <id>tag:hublog.hubmed.org,2009://2</id>
    <updated>2009-11-03T02:13:37Z</updated>
    <subtitle>DROP ALL DATABASES;</subtitle>
    <author><name>Alf Eaton</name></author>
    
    <link rel="self" href="http://feeds.feedburner.com/hublog" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
      <title>Transforming XML files with XSLT 2.0 and Saxon-HE on OS X, using an XML catalog</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001884.html" />
      <id>tag:hublog.hubmed.org,2009://2.1884</id>
      <published>2009-10-26T11:20:01Z</published>
      <updated>2009-11-03T02:13:37Z</updated>
      <summary>Saxon-HE - put saxon9he.jar in /Library/Java/Extensions. Apache XML Commons Resolver (download) - put resolver.jar in /Library/Java/Extensions. java \ -Dxml.catalog.files=/etc/xml/catalog \ net.sf.saxon.Transform \ -x org.apache.xml.resolver.tools.ResolvingXMLReader \ -y org.apache.xml.resolver.tools.ResolvingXMLReader \ -r org.apache.xml.resolver.tools.CatalogResolver \ -o $OUTPUT_FILE.xml \ $INPUT_FILE.xml \ $XSL_FILE.xsl Saxon-HE is a noncommercial version of the Saxon XSLT processor. The main (perhaps only) reason for using it instead of libxslt/xsltproc is that it implements XSLT 2.0....</summary>
      
      <category term="xml" label="xml" scheme="http://www.sixapart.com/ns/types#tag" />
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<p><a href="http://saxon.sourceforge.net/">Saxon-HE</a> - put saxon9he.jar in /Library/Java/Extensions.
<p><a href="http://projects.apache.org/projects/xml_commons_resolver.html">Apache XML Commons Resolver</a> (<a href="http://www.apache.org/dist/xml/commons/">download</a>) - put resolver.jar in /Library/Java/Extensions.
<pre><code>java \
-Dxml.catalog.files=/etc/xml/catalog \
net.sf.saxon.Transform \
-x org.apache.xml.resolver.tools.ResolvingXMLReader \
-y org.apache.xml.resolver.tools.ResolvingXMLReader \
-r org.apache.xml.resolver.tools.CatalogResolver \
-o $OUTPUT_FILE.xml \
$INPUT_FILE.xml \
$XSL_FILE.xsl</code></pre>

<p>Saxon-HE is a noncommercial version of the Saxon XSLT processor. The main (perhaps only) reason for using it instead of libxslt/<a href="http://xmlsoft.org/XSLT/xsltproc2.html">xsltproc</a> is that it implements XSLT 2.0.]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Latest NPG articles in PubMed Central</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001883.html" />
      <id>tag:hublog.hubmed.org,2009://2.1883</id>
      <published>2009-10-22T10:26:18Z</published>
      <updated>2009-10-22T13:01:56Z</updated>
      <summary><![CDATA[loading... (requires Javascript) $().ready(function(){ var num = 10; $.getJSON("http://pipes.yahoo.com/pipes/pipe.run?_callback=?&_id=dc8443974fa77d8c724c8717032b984e&_render=json&q=%22Acta+Pharmacol+Sin%22[ta]+OR+%22Am+J+Gastroenterol%22[ta]+OR+%22Am+J+Hypertens%22[ta]+OR+%22Asian+J+Androl%22[ta]+OR+%22Bone+Marrow+Transplant%22[ta]+OR+%22Br+Dent+J%22[ta]+OR+%22Br+J+Cancer%22[ta]+OR+%22Cancer+Gene+Ther%22[ta]+OR+%22Cell+Death+Differ%22[ta]+OR+%22Cell+Res%22[ta]+OR+%22Clin+Pharmacol+Ther%22[ta]+OR+%22EMBO+J%22[ta]+OR+%22EMBO+Rep%22[ta]+OR+%22Eur+J+Clin+Nutr%22[ta]+OR+%22Eur+J+Hum+Genet%22[ta]+OR+%22Evid+Based+Dent%22[ta]+OR+%22Eye%22[ta]+OR+%22Gene+Ther%22[ta]+OR+%22Genes+Immun%22[ta]+OR+%22Heredity%22[ta]+OR+%22Immunol+Cell+Biol%22[ta]+OR+%22Int+J+Impot+Res%22[ta]+OR+%22Int+J+Obes%22[ta]+OR+%22Int+J+Obes+Relat+Metab+Disord%22[ta]+OR+%22ISME+J%22[ta]+OR+%22J+Cereb+Blood+Flow+Metab%22[ta]+OR+%22J+Expo+Anal+Environ+Epidemiol%22[ta]+OR+%22J+Expo+Sci+Environ+Epidemiol%22[ta]+OR+%22J+Hum+Genet%22[ta]+OR+%22J+Hum+Hypertens%22[ta]+OR+%22J+Invest+Dermatol%22[ta]+OR+%22J+Investig+Dermatol+Symp+Proc%22[ta]+OR+%22J+Perinatol%22[ta]+OR+%22Kidney+Int%22[ta]+OR+%22Lab+Anim%22[ta]+OR+%22Lab+Invest%22[ta]+OR+%22Leukemia%22[ta]+OR+%22Mod+Pathol%22[ta]+OR+%22Mol+Psychiatry%22[ta]+OR+%22Mol+Syst+Biol%22[ta]+OR+%22Mol+Ther%22[ta]+OR+%22Mucosal+Immunol%22[ta]+OR+%22Nat+Biotechnol%22[ta]+OR+%22Nat+Cell+Biol%22[ta]+OR+%22Nat+Chem+Biol%22[ta]+OR+%22Nat+Clin+Pract+Cardiovasc+Med%22[ta]+OR+%22Nat+Clin+Pract+Endocrinol+Metab%22[ta]+OR+%22Nat+Clin+Pract+Gastroenterol+Hepatol%22[ta]+OR+%22Nat+Clin+Pract+Nephrol%22[ta]+OR+%22Nat+Clin+Pract+Neurol%22[ta]+OR+%22Nat+Clin+Pract+Oncol%22[ta]+OR+%22Nat+Clin+Pract+Rheumatol%22[ta]+OR+%22Nat+Clin+Pract+Urol%22[ta]+OR+%22Nat+Genet%22[ta]+OR+%22Nat+Immunol%22[ta]+OR+%22Nat+Mater%22[ta]+OR+%22Nat+Med%22[ta]+OR+%22Nat+Methods%22[ta]+OR+%22Nat+Nanotechnol%22[ta]+OR+%22Nat+Neurosci%22[ta]+OR+%22Nat+Photonics%22[ta]+OR+%22Nat+Phys%22[ta]+OR+%22Nat+Protoc%22[ta]+OR+%22Nat+Rev+Cancer%22[ta]+OR+%22Nat+Rev+Cardiol%22[ta]+OR+%22Nat+Rev+Drug+Discov%22[ta]+OR+%22Nat+Rev+Endocrinol%22[ta]+OR+%22Nat+Rev+Gastroenterol+Hepatol%22[ta]+OR+%22Nat+Rev+Genet%22[ta]+OR+%22Nat+Rev+Immunol%22[ta]+OR+%22Nat+Rev+Microbiol%22[ta]+OR+%22Nat+Rev+Mol+Cell+Biol%22[ta]+OR+%22Nat+Rev+Nephrol%22[ta]+OR+%22Nat+Rev+Neurol%22[ta]+OR+%22Nat+Rev+Neurosci%22[ta]+OR+%22Nat+Rev+Rheumatol%22[ta]+OR+%22Nat+Rev+Urol%22[ta]+OR+%22Nat+Struct+Biol%22[ta]+OR+%22Nat+Struct+Mol+Biol%22[ta]+OR+%22Nature%22[ta]+OR+%22Neuropsychopharmacology%22[ta]+OR+%22Obes+Res%22[ta]+OR+%22Oncogene%22[ta]+OR+%22Pharmacogenomics+J%22[ta]+OR+%22Prostate+Cancer+Prostatic+Dis%22[ta]+OR+%22Spinal+Cord%22[ta]&n=" + num, function (data){ var ul = $("#pmc-results").empty(); $.each(data.value.items, function(i, item){ var id = ''; $.each(item["front"]["article-meta"]["article-id"], function(i, d){ if (d["pub-id-type"] == "pmc") id = d["content"]; }); var date = ''; $.each(item["front"]["article-meta"]["pub-date"], function(i, d){ if (d["pub-type"] == "epub" || d["pub-type"] == "ppub"){ $.each(["day", "month"], function (i, t){ if (d[t].length == 1) d[t] = "0" + d[t]; }); date = d["year"] + "-" + d["month"] + "-" + d["day"]; } }); var title = $("").attr("href", "http://www.ncbi.nlm.nih.gov/pmc/articles/PMC" + id).text(item["front"]["article-meta"]["title-group"]["article-title"]); var journal = $("").text(date + " " + item["front"]["journal-meta"]["journal-title"]); var li = $("").append(title).append($("")).append(journal).css("list-style-type", "none"); ul.append(li);...]]></summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<ul id="pmc-results"><li>loading... <noscript>(requires Javascript)</noscript></li></ul>
<script>    
	  $().ready(function(){
	    var num = 10;
	    $.getJSON("http://pipes.yahoo.com/pipes/pipe.run?_callback=?&_id=dc8443974fa77d8c724c8717032b984e&_render=json&q=%22Acta+Pharmacol+Sin%22[ta]+OR+%22Am+J+Gastroenterol%22[ta]+OR+%22Am+J+Hypertens%22[ta]+OR+%22Asian+J+Androl%22[ta]+OR+%22Bone+Marrow+Transplant%22[ta]+OR+%22Br+Dent+J%22[ta]+OR+%22Br+J+Cancer%22[ta]+OR+%22Cancer+Gene+Ther%22[ta]+OR+%22Cell+Death+Differ%22[ta]+OR+%22Cell+Res%22[ta]+OR+%22Clin+Pharmacol+Ther%22[ta]+OR+%22EMBO+J%22[ta]+OR+%22EMBO+Rep%22[ta]+OR+%22Eur+J+Clin+Nutr%22[ta]+OR+%22Eur+J+Hum+Genet%22[ta]+OR+%22Evid+Based+Dent%22[ta]+OR+%22Eye%22[ta]+OR+%22Gene+Ther%22[ta]+OR+%22Genes+Immun%22[ta]+OR+%22Heredity%22[ta]+OR+%22Immunol+Cell+Biol%22[ta]+OR+%22Int+J+Impot+Res%22[ta]+OR+%22Int+J+Obes%22[ta]+OR+%22Int+J+Obes+Relat+Metab+Disord%22[ta]+OR+%22ISME+J%22[ta]+OR+%22J+Cereb+Blood+Flow+Metab%22[ta]+OR+%22J+Expo+Anal+Environ+Epidemiol%22[ta]+OR+%22J+Expo+Sci+Environ+Epidemiol%22[ta]+OR+%22J+Hum+Genet%22[ta]+OR+%22J+Hum+Hypertens%22[ta]+OR+%22J+Invest+Dermatol%22[ta]+OR+%22J+Investig+Dermatol+Symp+Proc%22[ta]+OR+%22J+Perinatol%22[ta]+OR+%22Kidney+Int%22[ta]+OR+%22Lab+Anim%22[ta]+OR+%22Lab+Invest%22[ta]+OR+%22Leukemia%22[ta]+OR+%22Mod+Pathol%22[ta]+OR+%22Mol+Psychiatry%22[ta]+OR+%22Mol+Syst+Biol%22[ta]+OR+%22Mol+Ther%22[ta]+OR+%22Mucosal+Immunol%22[ta]+OR+%22Nat+Biotechnol%22[ta]+OR+%22Nat+Cell+Biol%22[ta]+OR+%22Nat+Chem+Biol%22[ta]+OR+%22Nat+Clin+Pract+Cardiovasc+Med%22[ta]+OR+%22Nat+Clin+Pract+Endocrinol+Metab%22[ta]+OR+%22Nat+Clin+Pract+Gastroenterol+Hepatol%22[ta]+OR+%22Nat+Clin+Pract+Nephrol%22[ta]+OR+%22Nat+Clin+Pract+Neurol%22[ta]+OR+%22Nat+Clin+Pract+Oncol%22[ta]+OR+%22Nat+Clin+Pract+Rheumatol%22[ta]+OR+%22Nat+Clin+Pract+Urol%22[ta]+OR+%22Nat+Genet%22[ta]+OR+%22Nat+Immunol%22[ta]+OR+%22Nat+Mater%22[ta]+OR+%22Nat+Med%22[ta]+OR+%22Nat+Methods%22[ta]+OR+%22Nat+Nanotechnol%22[ta]+OR+%22Nat+Neurosci%22[ta]+OR+%22Nat+Photonics%22[ta]+OR+%22Nat+Phys%22[ta]+OR+%22Nat+Protoc%22[ta]+OR+%22Nat+Rev+Cancer%22[ta]+OR+%22Nat+Rev+Cardiol%22[ta]+OR+%22Nat+Rev+Drug+Discov%22[ta]+OR+%22Nat+Rev+Endocrinol%22[ta]+OR+%22Nat+Rev+Gastroenterol+Hepatol%22[ta]+OR+%22Nat+Rev+Genet%22[ta]+OR+%22Nat+Rev+Immunol%22[ta]+OR+%22Nat+Rev+Microbiol%22[ta]+OR+%22Nat+Rev+Mol+Cell+Biol%22[ta]+OR+%22Nat+Rev+Nephrol%22[ta]+OR+%22Nat+Rev+Neurol%22[ta]+OR+%22Nat+Rev+Neurosci%22[ta]+OR+%22Nat+Rev+Rheumatol%22[ta]+OR+%22Nat+Rev+Urol%22[ta]+OR+%22Nat+Struct+Biol%22[ta]+OR+%22Nat+Struct+Mol+Biol%22[ta]+OR+%22Nature%22[ta]+OR+%22Neuropsychopharmacology%22[ta]+OR+%22Obes+Res%22[ta]+OR+%22Oncogene%22[ta]+OR+%22Pharmacogenomics+J%22[ta]+OR+%22Prostate+Cancer+Prostatic+Dis%22[ta]+OR+%22Spinal+Cord%22[ta]&n=" + num, function (data){
        var ul = $("#pmc-results").empty();
        $.each(data.value.items, function(i, item){
          
          var id = '';
          $.each(item["front"]["article-meta"]["article-id"], function(i, d){
            if (d["pub-id-type"] == "pmc")
              id = d["content"];
          });
          
          var date = '';
          $.each(item["front"]["article-meta"]["pub-date"], function(i, d){
            if (d["pub-type"] == "epub" || d["pub-type"] == "ppub"){
              $.each(["day", "month"], function (i, t){
                if (d[t].length == 1)
                  d[t] = "0" + d[t];
              });                
              date = d["year"] + "-" + d["month"] + "-" + d["day"];
            }
          });
          
          var title = $("<a/>").attr("href", "http://www.ncbi.nlm.nih.gov/pmc/articles/PMC" + id).text(item["front"]["article-meta"]["title-group"]["article-title"]);
          var journal = $("<span/>").text(date + " " + item["front"]["journal-meta"]["journal-title"]);
          var li = $("<li/>").append(title).append($("<br/>")).append(journal).css("list-style-type", "none");
          ul.append(li);
        });
      });
    });
    </script>

<p><a href="http://pipes.yahoo.com/hubpipes/eutilspmc">Yahoo! Pipe for searching PubMed Central</a>]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Exploring PubChem via SPARQL</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001882.html" />
      <id>tag:hublog.hubmed.org,2009://2.1882</id>
      <published>2009-10-07T17:21:28Z</published>
      <updated>2009-10-07T17:35:38Z</updated>
      <summary><![CDATA[There's a triplestore of PubChem on bio2rdf.org, with a SPARQL interface, but no documentation or example queries. Luckily, "RDF as self-describing data" suggests some queries for interrogating an RDF dataset. Here's the essence of that, refined for this particular use case: SELECT DISTINCT ?Concept ?g WHERE {GRAPH ?g {[] a ?Concept}}=> &lt;http://bio2rdf.org/ns/ns/ns/pubchem#Substance> | &lt;http://bio2rdf.org/pubchem> SELECT ?x WHERE {?x a &lt;http://bio2rdf.org/ns/ns/ns/pubchem#Substance>} LIMIT 5=> &lt;http://bio2rdf.org/pubchem:10007> SELECT ?p ?o WHERE {&lt;http://bio2rdf.org/pubchem:10007> ?p ?o}lists all the properties of this substance, including &lt;http://bio2rdf.org/ns/pubchem:InChI> SELECT ?x WHERE {?x &lt;http://bio2rdf.org/ns/pubchem:InChI> "InChI=1/C19H24N2O4/c1-13(9-14-3-6-16(25-2)7-4-14)20-11-19(24)15-5-8-18(23)17(10-15)21-12-22/h3-8,10,12-13,19-20,23-24H,9,11H2,1-2H3,(H,21,22)/f/h21H"}is a query that finds this substance. This substance is also available in HTML through the bio2rdf...]]></summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[There's <a href="http://pubchem.bio2rdf.org/sparql">a triplestore of PubChem on bio2rdf.org, with a SPARQL interface</a>, but no documentation or example queries. 

<p>Luckily, "<a href="http://dallemang.typepad.com/my_weblog/2008/08/rdf-as-self-describing-data.html">RDF as self-describing data</a>" suggests some queries for interrogating an RDF dataset. Here's the essence of that, refined for this particular use case:

<ol>
<li><code><a href="http://pubchem.bio2rdf.org/sparql?query=SELECT+DISTINCT+%3FConcept+%3Fg+WHERE+{GRAPH+%3Fg+{[]+a+%3FConcept}}&format=text%2Fhtml">SELECT DISTINCT ?Concept ?g WHERE {GRAPH ?g {[] a ?Concept}}</a></code><br>=> <tt>&lt;http://bio2rdf.org/ns/ns/ns/pubchem#Substance> | &lt;http://bio2rdf.org/pubchem></tt>
<li><code><a href="http://pubchem.bio2rdf.org/sparql?query=SELECT+%3Fx+WHERE+{%3Fx+a+%3Chttp%3A%2F%2Fbio2rdf.org%2Fns%2Fns%2Fns%2Fpubchem%23Substance%3E}+LIMIT+5&amp;format=text%2Fhtml">SELECT ?x WHERE {?x a &lt;http://bio2rdf.org/ns/ns/ns/pubchem#Substance>} LIMIT 5</a></code><br>=> <tt>&lt;http://bio2rdf.org/pubchem:10007></tt>
<li><code><a href="http://pubchem.bio2rdf.org/sparql?query=SELECT+%3Fp+%3Fo+WHERE+{%3Chttp%3A%2F%2Fbio2rdf.org%2Fpubchem%3A10007%3E+%3Fp+%3Fo}&amp;format=text%2Fhtml">SELECT ?p ?o WHERE {&lt;http://bio2rdf.org/pubchem:10007> ?p ?o}</a></code><br>lists all the properties of this substance, including <tt>&lt;http://bio2rdf.org/ns/pubchem:InChI></tt>
<li><code><a href="http://pubchem.bio2rdf.org/sparql?query=SELECT+%3Fx+WHERE+{%3Fx+%3Chttp%3A%2F%2Fbio2rdf.org%2Fns%2Fpubchem%3AInChI%3E+%22InChI%3D1%2FC19H24N2O4%2Fc1-13%289-14-3-6-16%2825-2%297-4-14%2920-11-19%2824%2915-5-8-18%2823%2917%2810-15%2921-12-22%2Fh3-8%2C10%2C12-13%2C19-20%2C23-24H%2C9%2C11H2%2C1-2H3%2C%28H%2C21%2C22%29%2Ff%2Fh21H%22}&amp;format=text%2Fhtml">SELECT ?x WHERE {?x &lt;http://bio2rdf.org/ns/pubchem:InChI> "InChI=1/C19H24N2O4/c1-13(9-14-3-6-16(25-2)7-4-14)20-11-19(24)15-5-8-18(23)17(10-15)21-12-22/h3-8,10,12-13,19-20,23-24H,9,11H2,1-2H3,(H,21,22)/f/h21H"}</a></code><br>is a query that finds this substance.
</ol>

<p>This substance is <a href="http://www.bio2rdf.org/page/pubchem:10007">also available in HTML through the bio2rdf web interface</a>, for browsing.

<p>Looks like the data could do with re-importing: it doesn't have all the PubChem fields and some of the namespaces are a bit weird ("http://bio2rdf.org/ns/ns/ns/pubchem"?), but it's a good start.]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Bacode</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001881.html" />
      <id>tag:hublog.hubmed.org,2009://2.1881</id>
      <published>2009-10-07T10:38:26Z</published>
      <updated>2009-10-07T10:39:34Z</updated>
      <summary />
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<a href="http://www.timesonline.co.uk/tol/comment/columnists/caitlin_moran/article6858892.ece"><img alt="bacon barcode" src="http://hublog.hubmed.org/files/2009-10-07-bacode.png"></a>]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Yahoo! APIs Terms of Use changed</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001880.html" />
      <id>tag:hublog.hubmed.org,2009://2.1880</id>
      <published>2009-10-02T13:56:54Z</published>
      <updated>2009-10-07T17:15:13Z</updated>
      <summary>At some point since 2008-04-12, Yahoo! changed the Terms of Use for their APIs. It's not clear when, because there's no changelog and that's the most recent version in archive.org. This was added, amongst other changes, in section 1.E.iii: You represent and warrant to Yahoo! that: (a) you have the right to use, reproduce, transmit, copy, publicly display, publicly perform, and distribute any content in or made available to Yahoo! and Yahoo! users by your use of the Yahoo! APIs in the manner contemplated under this Agreement, and that use by Yahoo! or others of any such content via the...</summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<p>At some point since <a href="http://web.archive.org/web/20080412012928/http://info.yahoo.com/legal/us/yahoo/api/api-2140.html">2008-04-12</a>, Yahoo! changed the <a href="http://info.yahoo.com/legal/us/yahoo/api/api-2140.html">Terms of Use for their APIs</a>. It's not clear when, because there's no changelog and that's the most recent version in archive.org.

<p>This was added, amongst other changes, in section 1.E.iii:
<blockquote>You represent and warrant to Yahoo! that: <br>(a) you have the right to use, reproduce, transmit, copy, publicly display, publicly perform, and distribute any content in or made available to Yahoo! and Yahoo! users by your use of the Yahoo! APIs in the manner contemplated under this Agreement, and that use by Yahoo! or others of any such content via the Yahoo! web service or API shall not violate the rights of any third party (e.g., copyright, patent, trademark, or other proprietary right of any person or entity), or any applicable regulation or law, including but not limited to any export, re-export, or import laws and the laws of any country in which your content or service is made available; and <br><strong>(b) if you submit or permit the submission of your or your users’ content or activity through or into a Yahoo! web service or API, you also grant the following perpetual, non-exclusive license to, use of, and rights to your or your users’ content or activity to others (such “others” may include but are not limited to Yahoo! users): (i) to access, distribute and/or display your or your users’ content or activity; (ii) the ability for Yahoo! registered users to rate, review, comment on and tag Your Content; and (iii) the ability to access, reproduce, distribute and/or perform your or your users’ content, activity, or information via Yahoo!’s web service APIs or via RSS or any similar XML or related feeds both on and off Yahoo!-controlled web sites.</strong></blockquote>

<p>It's the bit of the license that says if you submit content to a Yahoo! API, you grant the rights to anyone to reproduce that content wherever they like. A lot of sites' APIs include this (though often they make clear that you retain the rights to the content), but Yahoo! didn't, previously.

<p>They're allowed to do this ("Yahoo! may change these Terms of Use by posting a new version without notice to you. Use of the Yahoo! APIs after such change constitutes acceptance of such changes."), but it's not good: I'll have to stop processing content through PlaceMaker, and probably the Term Extraction API as well.

<p>Another restriction is found in section 1.G.iv, but has been there since the start:
<blockquote>YOU SHALL NOT [...] Sell, lease, share, transfer, or sublicense the Yahoo! APIs or access or access codes thereto or <strong>derive income from the use or provision of the Yahoo! APIs, whether for direct commercial or monetary gain or otherwise</strong>, without Yahoo!'s prior, express, written permission.</blockquote>
<p>i.e. even any <em>indirect</em> "commercial or monetary" gain&mdash;which seems fairly broad&mdash;prevents you from using the API.]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Using PubMed's autocomplete data in JQuery</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001879.html" />
      <id>tag:hublog.hubmed.org,2009://2.1879</id>
      <published>2009-09-30T10:29:40Z</published>
      <updated>2009-09-30T10:30:25Z</updated>
      <summary><![CDATA[Demo: $("#search").submit(function(){ $.getJSON("http://preview.ncbi.nlm.nih.gov/portal/utils/autocomp.fcgi?dict=pm_related_queries_2&callback=?&q=" + encodeURIComponent($("#q").val()), NSuggest_CreateData); return false; }); function NSuggest_CreateData(q, data){ var ul = $("#results"); ul.empty(); $.each(data, function(i, text){ ul.append($("").text(text)); }); } Code: &lt;form id="search" action="search"> &lt;input name="q" id="q"> &lt;input type="submit" value="search"> &lt;/form> &lt;ul id="results">&lt;/ul> &lt;script> $("#search").submit(function(){ $.getJSON("http://preview.ncbi.nlm.nih.gov/portal/utils/autocomp.fcgi?dict=pm_related_queries_2&callback=?&q=" + encodeURIComponent($("#q").val()), NSuggest_CreateData); return false; }); function NSuggest_CreateData(q, data){ var ul = $("#results"); ul.empty(); $.each(data, function(i, text){ ul.append($("&lt;li/>").text(text)); }); } &lt;/script>...]]></summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<p>Demo:</p>

  <form id="search" action="http://www.hubmed.org/search.cgi">
    <input name="q" id="q">
    <input type="submit" value="search">
  </form>

  <ul id="results"></ul>
  
  <script>
    $("#search").submit(function(){
      $.getJSON("http://preview.ncbi.nlm.nih.gov/portal/utils/autocomp.fcgi?dict=pm_related_queries_2&callback=?&q=" + encodeURIComponent($("#q").val()), NSuggest_CreateData);
      return false;
    });

    function NSuggest_CreateData(q, data){
      var ul = $("#results");
      ul.empty();
      $.each(data, function(i, text){
        ul.append($("<li/>").text(text));
      });
    }
  </script>

<p>Code:</p>

<pre><code>&lt;form id="search" action="search">
  &lt;input name="q" id="q">
  &lt;input type="submit" value="search">
&lt;/form>

&lt;ul id="results">&lt;/ul>

&lt;script>
  $("#search").submit(function(){
    $.getJSON("http://preview.ncbi.nlm.nih.gov/portal/utils/autocomp.fcgi?dict=pm_related_queries_2&callback=?&q=" + encodeURIComponent($("#q").val()), NSuggest_CreateData);
    return false;
  });

  function NSuggest_CreateData(q, data){
    var ul = $("#results");
    ul.empty();
    $.each(data, function(i, text){
      ul.append($("&lt;li/>").text(text));
    });
  }
&lt;/script></code></pre>]]>
          
      </content>
    </entry>
    
    <entry>
      <title>HTML template</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001878.html" />
      <id>tag:hublog.hubmed.org,2009://2.1878</id>
      <published>2009-09-30T09:36:55Z</published>
      <updated>2009-09-30T09:37:01Z</updated>
      <summary><![CDATA[&lt;html> &lt;head> &lt;meta http-equiv="content-type" value="text/html;charset=utf-8"> &lt;title>&lt;/title> &lt;link rel="stylesheet" href=""> &lt;/head> &lt;body> &lt;script src="">&lt;/script> &lt;/body> &lt;/html>...]]></summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<pre><code>&lt;html>
  &lt;head>
    &lt;meta http-equiv="content-type" value="text/html;charset=utf-8">
    &lt;title>&lt;/title>
	  
    &lt;link rel="stylesheet" href="">
  &lt;/head>
	
  &lt;body>
	
    &lt;script src="">&lt;/script>
  &lt;/body>
&lt;/html></code></pre>]]>
          
      </content>
    </entry>
    
    <entry>
      <title>SheevaPlug as a Torrent Seed Box</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001877.html" />
      <id>tag:hublog.hubmed.org,2009://2.1877</id>
      <published>2009-09-19T20:29:03Z</published>
      <updated>2009-09-19T21:28:08Z</updated>
      <summary>SheevaPlug Dev Kit from Globalscale Technologies: £60 + £20 shipping from US + £20 VAT. Comes with Ubuntu 9.04 preinstalled. Power on, connect to ethernet. Look in local router's admin pages to see what IP address the Plug was given. ssh root@IP_ADDRESS (password = nosoup4u) Misc fixes from Plug Wiki: fixing the existing Ubuntu install. apt-get update; apt-get dist-upgrade reboot aptitude install psmisc (for the killall command) Set up Deluge as a thin client (installs a fair amount of GTK/X11 stuff, not sure how to avoid this) Configure the deluge GUI on another machine to point to the remote deluge...</summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<p><a href="http://www.globalscaletechnologies.com/p-22-sheevaplug-dev-kit-us.aspx">SheevaPlug Dev Kit from Globalscale Technologies</a>: £60 + £20 shipping from US + £20 VAT.<br />
Comes with Ubuntu 9.04 preinstalled.<br />
Power on, connect to ethernet.<br />
Look in local router's admin pages to see what IP address the Plug was given.<br />
<tt>ssh root@IP_ADDRESS</tt> (password = nosoup4u)<br />
Misc fixes from <a href="http://www.openplug.org/plugwiki/index.php/New_Plugger_How_To">Plug Wiki: fixing the existing Ubuntu install</a>.<br />
<tt>apt-get update; apt-get dist-upgrade</tt></p>

<p><tt>reboot</tt></p>

<p><tt>aptitude install psmisc</tt> (for the <tt>killall</tt> command)<br />
<a href="http://dev.deluge-torrent.org/wiki/UserGuide/ThinClient">Set up Deluge as a thin client</a> (installs a fair amount of GTK/X11 stuff, not sure how to avoid this)<br />
Configure the deluge GUI on another machine to point to the remote deluge daemon.<br />
Set up the <a href="http://dev.deluge-torrent.org/wiki/UserGuide/InitScript#DebianUbuntuInitScript">InitScript for deluged</a>.</p>

<p>Connect an SD card, USB drive or network drive for storage.<br />
/mnt on the Plug is shared automatically by Samba, so if deluge is configured to save downloaded files in a folder in there, they'll be accessible from other machines on the network.<br />
Can also create a directory in /mnt, autowatched by deluge, to put torrent files in from other machines.</p>

<p>For the deluge Web UI: <br />
<tt>aptitude install deluge-webui; /etc/init.d/deluge-daemon restart</tt>. <br />
Connect to http://IP_ADDRESS:8112 and change the default password from 'deluge'.</p>

<p>Install a DAAP server?</p>

<p>Please note: this was a first attempt; there might well be better ways of doing some of this.<br />
</p>]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Graphing weather time series data with Timetric</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001876.html" />
      <id>tag:hublog.hubmed.org,2009://2.1876</id>
      <published>2009-09-10T12:06:12Z</published>
      <updated>2009-09-10T13:28:46Z</updated>
      <summary>The Met Office publishes monthly historical data for a number of data-collecting centres across the UK. I chose the Oxford station, converted the data to TSV and uploaded it to Timetric. Filtering the time series to display a moving mean produced these graphs: The full data sets for more recent observations are also available, but you have to register first, it's for research purposes only and it seems like uploading the data to third-party services might not be allowed......</summary>
      
      <category term="data" label="data" scheme="http://www.sixapart.com/ns/types#tag" />
      <category term="weather" label="weather" scheme="http://www.sixapart.com/ns/types#tag" />
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<p>The Met Office publishes <a href="http://www.metoffice.gov.uk/climate/uk/stationdata/">monthly historical data for a number of data-collecting centres across the UK</a>. 

<p>I chose <a href="http://www.metoffice.gov.uk/climate/uk/stationdata/oxforddata.txt">the Oxford station</a>, converted the data to TSV and uploaded it to <a href="http://timetric.com/">Timetric</a>. 

<p>Filtering the time series to display a moving mean produced these graphs:

<p><object width="520" height="390"><param name="wmode" value="opaque"><param name="allowFullScreen" value="true"><param name="movie" value="http://timetric.com/swf/plotter.swf"><param name="flashvars" value="data=http%3A%2F%2Ftimetric.com%2Fembed%2FQZN0E9ZiThqtbrDpeQOquw%2Fgraph%2F"><embed width="520" height="390" flashvars="data=http%3A%2F%2Ftimetric.com%2Fembed%2FQZN0E9ZiThqtbrDpeQOquw%2Fgraph%2F" bgcolor="#FFFFFF" allowFullScreen="true" src="http://timetric.com/swf/plotter.swf" type="application/x-shockwave-flash"/></object>

<p><object width="520" height="390"><param name="wmode" value="opaque"><param name="allowFullScreen" value="true"><param name="movie" value="http://timetric.com/swf/plotter.swf"><param name="flashvars" value="data=http%3A%2F%2Ftimetric.com%2Fembed%2FKZ3a30gqTjCH4RL6Qc7ZFg%2Fgraph%2F"><embed width="520" height="390" flashvars="data=http%3A%2F%2Ftimetric.com%2Fembed%2FKZ3a30gqTjCH4RL6Qc7ZFg%2Fgraph%2F" bgcolor="#FFFFFF" allowFullScreen="true" src="http://timetric.com/swf/plotter.swf" type="application/x-shockwave-flash"/></object>

<p><object width="520" height="390"><param name="wmode" value="opaque"><param name="allowFullScreen" value="true"><param name="movie" value="http://timetric.com/swf/plotter.swf"><param name="flashvars" value="data=http%3A%2F%2Ftimetric.com%2Fembed%2FBqTcT-kgTbS-eDDzGWSUag%2Fgraph%2F"><embed width="520" height="390" flashvars="data=http%3A%2F%2Ftimetric.com%2Fembed%2FBqTcT-kgTbS-eDDzGWSUag%2Fgraph%2F" bgcolor="#FFFFFF" allowFullScreen="true" src="http://timetric.com/swf/plotter.swf" type="application/x-shockwave-flash"/></object>

<p>The <a href="http://www.metoffice.gov.uk/climatechange/science/monitoring/ukcp09/index.html">full data sets for more recent observations</a> are also available, but you have to register first, it's for research purposes only and it seems like uploading the data to third-party services might not be allowed...]]>
          
      </content>
    </entry>
    
    <entry>
      <title>Converting PDF to PNG using ImageMagick or Ghostscript</title>
      <link rel="alternate" type="text/html" href="http://hublog.hubmed.org/archives/001875.html" />
      <id>tag:hublog.hubmed.org,2009://2.1875</id>
      <published>2009-08-20T11:08:46Z</published>
      <updated>2009-08-20T11:54:14Z</updated>
      <summary>Basically this: convert -density 300 $FILE.pdf $FILE.png where -density sets the size of the output image (in DPI, so experiment to get the required size). This should make a white background transparent: convert -density 300 $FILE.pdf -transparent white $FILE.png but it doesn't work well with anti-aliasing. Using Ghostscript directly seems much better for transparency: gs -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -dEPSCrop -sOutputFile=$FILE.png $FILE.pdf where -r sets the output size equivalently to -density above....</summary>
      
      
      <content type="html" xml:lang="en" xml:base="http://hublog.hubmed.org/">
          <![CDATA[<p>Basically this:
<pre><code>convert -density 300 $FILE.pdf $FILE.png</code></pre>
where <tt>-density</tt> sets the size of the output image (in DPI, so experiment to get the required size).</p>

<p>This should make a white background transparent:
<pre><code>convert -density 300 $FILE.pdf -transparent white $FILE.png</code></pre>
but it doesn't work well with anti-aliasing.</p>

<p>Using Ghostscript directly seems much better for transparency:
<pre><code>gs -q -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -dEPSCrop -sOutputFile=$FILE.png $FILE.pdf</code></pre>
where <tt>-r</tt> sets the output size equivalently to <tt>-density</tt> above.</p>]]>
          
      </content>
    </entry>
    
</feed>
