{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2015/04/10/getting-cas-registry-numbers-out-of.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/2cfqr-fwe26",
      "url": "https://chem-bla-ics.linkedchemistry.info/2015/04/10/getting-cas-registry-numbers-out-of.html",
      "title": "Getting CAS registry numbers out of WikiData",
      "content_html": "<p>I have promised my Twitter followers the <a href=\"https://www.wikidata.org/wiki/Q54871\">SPARQL query</a> you have all been waiting\nfor. Sadly, you had to wait for it for more than two months. I’m sorry about that. But, here it is:</p>\n\n<div class=\"language-sparql highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"k\">PREFIX</span><span class=\"w\"> </span><span class=\"nn\">wd</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"nn\">&lt;http://www.wikidata.org/entity/&gt;</span><span class=\"w\">\n\n</span><span class=\"k\">SELECT</span><span class=\"w\"> </span><span class=\"nv\">?compound</span><span class=\"w\"> </span><span class=\"nv\">?id</span><span class=\"w\"> </span><span class=\"k\">WHERE</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\">\n  </span><span class=\"nv\">?compound</span><span class=\"w\"> </span><span class=\"nn\">wd</span><span class=\"o\">:</span><span class=\"ss\">P231s</span><span class=\"w\"> </span><span class=\"p\">[</span><span class=\"w\"> </span><span class=\"nn\">wd</span><span class=\"o\">:</span><span class=\"ss\">P231v</span><span class=\"w\"> </span><span class=\"nv\">?id</span><span class=\"w\"> </span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"p\">.</span><span class=\"w\">\n</span><span class=\"p\">}</span><span class=\"w\">\n</span></code></pre></div></div>\n\n<p>What this query does is ask for all things (let’s call whatever is behind the identifier is a “compound”; of course, it can\nbe mixtures, ill-defined chemicals, nanomaterials, etc) that have a CAS registry identifier. This query results in a nice\ntable of <a href=\"https://www.wikidata.org/\">Wikidata</a> identifiers (e.g. <a href=\"https://www.wikidata.org/wiki/Q47512\">Q47512</a> is acetic acid)\nand matching CAS numbers, 16298 of them.</p>\n\n<p>Because Wikidata is not specific to the English Wikipedia, CAS numbers from other origin will show up too. For example, the\nCAS number for N-benzylacrylamide (<a href=\"https://www.wikidata.org/wiki/Q10334928\">Q10334928</a>) is provided by the Portuguese Wikipedia:</p>\n\n<p><img src=\"/assets/images/casPT.png\" alt=\"\" /></p>\n\n<p>I used Peter Ertl’s <a href=\"http://www.cheminfo.org/wikipedia\">cheminfo.org</a> (doi:<a href=\"https://doi.org/10.1186/s13321-015-0061-y\">10.1186/s13321-015-0061-y</a>)\nto confirm this compound indeed does not have an English page, which is somewhat surprising.</p>\n\n<p>The SPARQL query uses a predicate specifically for the CAS registry number (<a href=\"https://www.wikidata.org/wiki/Property:P231\">P231</a>).\nOther identifiers have similar predicates, like for PubChem compound (<a href=\"https://www.wikidata.org/wiki/Property:P662\">P662</a>) and\nChemspider (<a href=\"https://www.wikidata.org/wiki/Property:P661\">P661</a>). That means, Wikidata can become a community crowdsource of\nidentifier mappings, which is one of the things Daniel Mietchen, me, and a few others proposed in this H2020 grant application\n(doi:<a href=\"https://doi.org/10.5281/zenodo.13906\">10.5281/zenodo.13906</a>). The SPARQL query is run by the\n<a href=\"http://linkeddatafragments.org/\">Linked Data Fragments</a> platform, which you should really check out too, using the\n<a href=\"http://www.bioclipse.net/\">Bioclipse</a> manager I wrote around that.</p>\n\n<p>The full Bioclipse script looks like:</p>\n\n<div class=\"language-groovy highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"n\">wikidataldf</span> <span class=\"o\">=</span> <span class=\"n\">ldf</span><span class=\"o\">.</span><span class=\"na\">createStore</span><span class=\"o\">(</span>\n  <span class=\"s2\">\"http://data.wikidataldf.com/wikidata\"</span>\n<span class=\"o\">)</span>\n\n<span class=\"c1\">// P231 CAS</span>\n<span class=\"n\">identifier</span> <span class=\"o\">=</span> <span class=\"s2\">\"P231\"</span>\n<span class=\"n\">type</span> <span class=\"o\">=</span> <span class=\"s2\">\"cas\"</span>\n\n<span class=\"n\">sparql</span> <span class=\"o\">=</span> <span class=\"s2\">\"\"\"\nPREFIX wd:\n\nSELECT ?compound ?id WHERE {\n  ?compound wd:${identifier}s [ wd:${identifier}v ?id ] .\n}\n\"\"\"</span>\n<span class=\"n\">mappings</span> <span class=\"o\">=</span> <span class=\"n\">rdf</span><span class=\"o\">.</span><span class=\"na\">sparql</span><span class=\"o\">(</span><span class=\"n\">wikidataldf</span><span class=\"o\">,</span> <span class=\"n\">sparql</span><span class=\"o\">)</span>\n\n<span class=\"c1\">// recreate an empty output file</span>\n<span class=\"n\">outFilename</span> <span class=\"o\">=</span> <span class=\"s2\">\"/Wikidata/${type}2wikidata.csv\"</span>\n<span class=\"k\">if</span> <span class=\"o\">(</span><span class=\"n\">ui</span><span class=\"o\">.</span><span class=\"na\">fileExists</span><span class=\"o\">(</span><span class=\"n\">outFilename</span><span class=\"o\">))</span> <span class=\"o\">{</span>\n  <span class=\"n\">ui</span><span class=\"o\">.</span><span class=\"na\">remove</span><span class=\"o\">(</span><span class=\"n\">outFilename</span><span class=\"o\">)</span>\n  <span class=\"n\">ui</span><span class=\"o\">.</span><span class=\"na\">newFile</span><span class=\"o\">(</span><span class=\"n\">outFilename</span><span class=\"o\">)</span>\n<span class=\"o\">}</span>\n\n<span class=\"c1\">// safe to a file</span>\n<span class=\"k\">for</span> <span class=\"o\">(</span><span class=\"n\">i</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"o\">;</span> <span class=\"n\">i</span><span class=\"o\">&lt;=</span><span class=\"n\">mappings</span><span class=\"o\">.</span><span class=\"na\">rowCount</span><span class=\"o\">;</span> <span class=\"n\">i</span><span class=\"o\">++)</span> <span class=\"o\">{</span>\n  <span class=\"n\">wdID</span> <span class=\"o\">=</span> <span class=\"n\">mappings</span><span class=\"o\">.</span><span class=\"na\">get</span><span class=\"o\">(</span><span class=\"n\">i</span><span class=\"o\">,</span> <span class=\"s2\">\"compound\"</span><span class=\"o\">).</span><span class=\"na\">substring</span><span class=\"o\">(</span><span class=\"mi\">3</span><span class=\"o\">)</span>\n  <span class=\"n\">ui</span><span class=\"o\">.</span><span class=\"na\">append</span><span class=\"o\">(</span>\n    <span class=\"n\">outFilename</span><span class=\"o\">,</span>\n    <span class=\"n\">wdID</span> <span class=\"o\">+</span> <span class=\"s2\">\",\"</span> <span class=\"o\">+</span> <span class=\"n\">mappings</span><span class=\"o\">.</span><span class=\"na\">get</span><span class=\"o\">(</span><span class=\"n\">i</span><span class=\"o\">,</span> <span class=\"s2\">\"id\"</span><span class=\"o\">)</span> <span class=\"o\">+</span> <span class=\"s2\">\"\\n\"</span>\n  <span class=\"o\">)</span>\n<span class=\"o\">}</span>\n</code></pre></div></div>\n\n<p>BTW, of course, all this depends on work by many others including the core <a href=\"http://tools.wmflabs.org/wikidata-exports/rdf/\">RDF generation</a>\nwith the <a href=\"https://www.mediawiki.org/wiki/Wikidata_Toolkit\">Wikidata Toolkit</a>. See also the paper by Erxleben <em>et al.</em>\n(<a href=\"http://korrekt.org/papers/Wikidata-RDF-export-2014.pdf\">PDF</a>).</p>\n\n<h4>References</h4>\n<div class=\"csl-bib-body\">\n    <div class=\"csl-entry\">Ertl, P., Patiny, L., Sander, T., Rufener, C., &#38; Zasso, M. (2015). Wikipedia Chemical Structure Explorer: substructure and similarity searching of molecules from Wikipedia. <i>Journal of Cheminformatics</i>, <i>7</i>(1). https://doi.org/10.1186/s13321-015-0061-y <a href=\"https://doi.org/10.1186/s13321-015-0061-y\">CrossRef</a> <a href=\"https://qlever.scholia.wiki/doi/10.1186/s13321-015-0061-y\">Scholia</a></div>\n    <div class=\"csl-entry\">Erxleben, F., Günther, M., Krötzsch, M., Mendez, J., &#38; Vrandečić, D. (2014). Introducing Wikidata to the Linked Data Web. In <i>Lecture Notes in Computer Science</i> (pp. 50–65). Springer International Publishing. https://doi.org/10.1007/978-3-319-11964-9_4 <a href=\"https://doi.org/10.1007/978-3-319-11964-9_4\">CrossRef</a> <a href=\"https://qlever.scholia.wiki/doi/10.1007/978-3-319-11964-9_4\">Scholia</a></div>\n    <div class=\"csl-entry\">Mietchen, D., Hagedorn, G., Willighagen, E., Rico, M., Gomez-Perez, A., Aibar, E., Rafes, K., Germain, C., Dunning, A., Pintscher, L., Kinzler, D., &#38; Anonymous. (2015). Enabling Open Science: Wikidata For Research. <i>Zenodo</i>. https://doi.org/10.5281/ZENODO.13906 <a href=\"https://doi.org/10.5281/ZENODO.13906\">CrossRef</a> <a href=\"https://qlever.scholia.wiki/doi/10.5281/ZENODO.13906\">Scholia</a></div>\n  </div>",
      "summary": "I have promised my Twitter followers the SPARQL query you have all been waiting for. Sadly, you had to wait for it for more than two months. I’m sorry about that. But, here it is:",
      "image": "https://chem-bla-ics.linkedchemistry.info/assets/images/casPT.png",
      "date_published": "2015-04-10T00:00:00+00:00",
      "date_modified": "2015-04-10T00:00:00+00:00",
      "tags": ["wikidata","chemistry","cas","ldf"],
      "_references": [
        
          
          
            { "url": "https://doi.org/10.1186/s13321-015-0061-y", "doi": "10.1186/s13321-015-0061-y"
             }
            ,
          
        
          
          
            { "url": "https://doi.org/10.5281/ZENODO.13906", "doi": "10.5281/ZENODO.13906"
             }
            ,
          
        
          
          
            { "url": "https://doi.org/10.1007/978-3-319-11964-9_4", "doi": "10.1007/978-3-319-11964-9_4"
             }
            
          
        ],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
