<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://chem-bla-ics.linkedchemistry.info/feed/by_tag/bridgedb.xml" rel="self" type="application/atom+xml" /><link href="https://chem-bla-ics.linkedchemistry.info/" rel="alternate" type="text/html" /><updated>2026-03-08T13:54:44+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/feed/by_tag/bridgedb.xml</id><title type="html">chem-bla-ics</title><subtitle>Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.</subtitle><author><name>Egon Willighagen</name></author><entry><title type="html">Making BridgeDb Derby files with Groovy</title><link href="https://chem-bla-ics.linkedchemistry.info/2023/09/09/making-bridgedb-derby-files-with-groovy.html" rel="alternate" type="text/html" title="Making BridgeDb Derby files with Groovy" /><published>2023-09-09T00:00:00+00:00</published><updated>2023-09-09T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2023/09/09/making-bridgedb-derby-files-with-groovy</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2023/09/09/making-bridgedb-derby-files-with-groovy.html"><![CDATA[<p>I just want to drop this here. There are various ways to make <a href="https://www.bridgedb.org/">BridgeDb</a> identifier mapping files. Some of the tools
predate my joining the BiGCaT research group and the BridgeDb project, but this Groovy page is basically what we
have been using to create the metabolite identifier mapping databases:</p>

<div class="language-groovy highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nd">@Grab</span><span class="o">(</span><span class="n">group</span><span class="o">=</span><span class="s1">'org.bridgedb'</span><span class="o">,</span> <span class="n">module</span><span class="o">=</span><span class="s1">'org.bridgedb.bio'</span><span class="o">,</span> <span class="n">version</span><span class="o">=</span><span class="s1">'3.0.23'</span><span class="o">)</span>
<span class="nd">@Grab</span><span class="o">(</span><span class="n">group</span><span class="o">=</span><span class="s1">'org.bridgedb'</span><span class="o">,</span> <span class="n">module</span><span class="o">=</span><span class="s1">'org.bridgedb.rdb.construct'</span><span class="o">,</span> <span class="n">version</span><span class="o">=</span><span class="s1">'3.0.23'</span><span class="o">)</span>

<span class="kn">import</span> <span class="nn">java.text.SimpleDateFormat</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">java.util.Date</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">org.bridgedb.IDMapperException</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.DataSource</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.Xref</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.bio.DataSourceTxt</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.rdb.construct.DBConnector</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.rdb.construct.DataDerby</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.rdb.construct.GdbConstruct</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">org.bridgedb.rdb.construct.GdbConstructImpl4</span><span class="o">;</span>

<span class="n">DataSourceTxt</span><span class="o">.</span><span class="na">init</span><span class="o">()</span>

<span class="n">GdbConstruct</span> <span class="n">database</span> <span class="o">=</span> <span class="n">GdbConstructImpl4</span><span class="o">.</span><span class="na">createInstance</span><span class="o">(</span>
  <span class="s2">"test"</span><span class="o">,</span> <span class="k">new</span> <span class="n">DataDerby</span><span class="o">(),</span> <span class="n">DBConnector</span><span class="o">.</span><span class="na">PROP_RECREATE</span>
<span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">createGdbTables</span><span class="o">();</span>
<span class="n">database</span><span class="o">.</span><span class="na">preInsert</span><span class="o">();</span>

<span class="n">inchikeyDS</span> <span class="o">=</span> <span class="n">DataSource</span><span class="o">.</span><span class="na">getExistingBySystemCode</span><span class="o">(</span><span class="s2">"Ik"</span><span class="o">)</span>
<span class="n">lmDS</span> <span class="o">=</span> <span class="n">DataSource</span><span class="o">.</span><span class="na">getExistingBySystemCode</span><span class="o">(</span><span class="s2">"Lm"</span><span class="o">)</span>
<span class="n">swisslipidsDS</span> <span class="o">=</span> <span class="n">DataSource</span><span class="o">.</span><span class="na">getExistingBySystemCode</span><span class="o">(</span><span class="s2">"Sl"</span><span class="o">)</span>

<span class="n">String</span> <span class="n">dateStr</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SimpleDateFormat</span><span class="o">(</span><span class="s2">"yyyyMMdd"</span><span class="o">).</span><span class="na">format</span><span class="o">(</span><span class="k">new</span> <span class="n">Date</span><span class="o">());</span>
<span class="n">database</span><span class="o">.</span><span class="na">setInfo</span><span class="o">(</span><span class="s2">"BUILDDATE"</span><span class="o">,</span> <span class="n">dateStr</span><span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">setInfo</span><span class="o">(</span><span class="s2">"DATASOURCENAME"</span><span class="o">,</span> <span class="s2">"LIPIDMAPS_SWISSLIPIDS"</span><span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">setInfo</span><span class="o">(</span><span class="s2">"DATASOURCEVERSION"</span><span class="o">,</span> <span class="s2">"LIPID_TEST"</span><span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">setInfo</span><span class="o">(</span><span class="s2">"DATATYPE"</span><span class="o">,</span> <span class="s2">"Metabolite"</span><span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">setInfo</span><span class="o">(</span><span class="s2">"SERIES"</span><span class="o">,</span> <span class="s2">"standard_metabolite"</span><span class="o">);</span>

<span class="n">ref1</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Xref</span><span class="o">(</span><span class="s2">"YECLLIMZHNYFCK-RRNJGNTNSA-J"</span><span class="o">,</span> <span class="n">inchikeyDS</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="n">ref2</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Xref</span><span class="o">(</span><span class="s2">"LMFA07050035"</span><span class="o">,</span> <span class="n">lmDS</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">addGene</span><span class="o">(</span><span class="n">ref1</span><span class="o">)</span>
<span class="n">database</span><span class="o">.</span><span class="na">addGene</span><span class="o">(</span><span class="n">ref2</span><span class="o">)</span>
<span class="n">database</span><span class="o">.</span><span class="na">addLink</span><span class="o">(</span><span class="n">ref1</span><span class="o">,</span> <span class="n">ref1</span><span class="o">)</span>
<span class="n">database</span><span class="o">.</span><span class="na">addLink</span><span class="o">(</span><span class="n">ref1</span><span class="o">,</span> <span class="n">ref2</span><span class="o">)</span>

<span class="n">ref3</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Xref</span><span class="o">(</span><span class="s2">"SLM:000000493"</span><span class="o">,</span> <span class="n">swisslipidsDS</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="n">database</span><span class="o">.</span><span class="na">addGene</span><span class="o">(</span><span class="n">ref3</span><span class="o">)</span>
<span class="n">database</span><span class="o">.</span><span class="na">addLink</span><span class="o">(</span><span class="n">ref1</span><span class="o">,</span> <span class="n">ref3</span><span class="o">)</span>

<span class="n">database</span><span class="o">.</span><span class="na">commit</span><span class="o">();</span>
<span class="n">database</span><span class="o">.</span><span class="na">finalize</span><span class="o">();</span>
</code></pre></div></div>

<p>For the people who have worked with BridgeDb Java in the past, note the new SQL schema 4, as used by the
<code class="language-plaintext highlighter-rouge">GdbConstructImpl4</code>. This schema allows indicating of an identifiers is outdated/retired/etc. This is
actually the case for the <code class="language-plaintext highlighter-rouge">LMFA07050035</code> identifiers, and hence the <code class="language-plaintext highlighter-rouge">false</code> parameter in the <code class="language-plaintext highlighter-rouge">new Xref()</code>
call.</p>]]></content><author><name>Egon Willighagen</name></author><category term="groovy" /><category term="bridgedb" /><summary type="html"><![CDATA[I just want to drop this here. There are various ways to make BridgeDb identifier mapping files. Some of the tools predate my joining the BiGCaT research group and the BridgeDb project, but this Groovy page is basically what we have been using to create the metabolite identifier mapping databases:]]></summary></entry><entry><title type="html">new: “CAS Common Chemistry in 2021: Expanding Access to Trusted Chemical Information for the Scientific Community”</title><link href="https://chem-bla-ics.linkedchemistry.info/2022/05/22/new-cas-common-chemistry-in-2021.html" rel="alternate" type="text/html" title="new: “CAS Common Chemistry in 2021: Expanding Access to Trusted Chemical Information for the Scientific Community”" /><published>2022-05-22T00:00:00+00:00</published><updated>2022-05-22T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2022/05/22/new-cas-common-chemistry-in-2021</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2022/05/22/new-cas-common-chemistry-in-2021.html"><![CDATA[<p>Open Science is happening. The merits are no longer theoretical or idealistic but tangible. Research is faster than ever, more vetted than ever (think PubPeer),
more cited than ever. Fairly, not just because of Open Science, but open access causes readership causes impact causes citations. When new people and
organizations start adopting Open Science this warms my hearth.</p>

<p>So, when I was asked to work with <a href="https://www.cas.org/">Chemical Abstracts Service</a> (CAS) on a new, bigger than ever version of
<a href="https://commonchemistry.cas.org/">Common Chemistry</a> (which started as a project between CAS and Wikipedia), I welcomed the project. I don’t quite
remember the first meetings, but roughly my task became to work with the new content and match this against Wikidata and Wikipedia. It aligned well
with <a href="https://bridgedb.github.io/">BridgeDb</a>, <a href="https://scholia.toolforge.org/">Scholia</a>, and our metabolomics research, so I even could find
sufficient research time for it. This work is now published in the <a href="https://pubs.acs.org/journal/jcisd8">JCIM</a>:
<em>CAS Common Chemistry in 2021: Expanding Access to Trusted Chemical Information for the Scientific Community</em>
(doi:<a href="https://doi.org/10.1021/acs.jcim.2c00268">10.1021/acs.jcim.2c00268</a>).</p>

<p><img src="/assets/images/images_medium_ci2c00268_0003.png" alt="" /> <br />
<em>Figure 2 from the article. Detailed record for caffeine in CAS Common Chemistry (image: CC-BY).</em></p>

<p>About Wikidata, the paper writes (CC-BY):</p>

<blockquote>
  <p>The latest release of CAS Common Chemistry has also supported updates and corrections to CAS RNs in Wikidata and Wikipedia. (22)
InChIKeys were calculated from CAS SMILES using Bacting 0.0.31 (23) with the Chemistry Development Kit 2.7.1 (24) and were
matched with content in Wikidata. The CAS RNs were then compared. References to CAS Common Chemistry were added for CAS RNs
that matched. Mismatches have been shared with the Wikidata and Wikipedia communities so that they can manually review and
correct the misleading entries using CAS Common Chemistry as a reference. Because Wikidata also curates identifiers from
other data sources, validated CAS RNs in Wikidata may also be used to cross-reference with other resources. Scripts are
provided in the Supporting Information.</p>
</blockquote>

<p>The alignment is a continuous process, as new chemical compounds get added to Wikidata on a weekly basis. The comparison of
Common Chemistry with Wikidata and Wikipedia resulted in a wealth of curation data, e.g. inconsistent CAS numbers linked to
InChIKeys, where Common Chemistry had a different match than Wikidata or Wikipedia.</p>

<p>CAS registry numbers were not added to Wikidata in this process, only confirmed or reported as different. The latter
allowed manual curation by the community, which it did. Reports <a href="https://www.wikidata.org/wiki/Wikidata_talk:WikiProject_Chemistry/CAS_Validation_Results">look like this</a>.
When a InChIKey-CAS RN combination in Wikidata was confirmed, it was recorded as a reference, like this:</p>

<p><img src="/assets/images/Screenshot_20220522_084233.png" alt="" /> <br />
<em>Screenshot of Wikidata with two references, one reflecting a confirmation
by the English Wikipedia (potentially the result of the original Common Chemistry
project) and the second as outcome of the now published project.</em></p>

<p>Thanks to everyone on this project and <a href="https://orcid.org/0000-0001-9316-9400">Andrea Jacobs</a>
particularly for leading this open science project.</p>]]></content><author><name>Egon Willighagen</name></author><category term="curation" /><category term="chemistry" /><category term="cas" /><category term="doi:10.1021/ACS.JCIM.2C00268" /><category term="bioclipse" /><category term="cdk" /><category term="bridgedb" /><summary type="html"><![CDATA[Open Science is happening. The merits are no longer theoretical or idealistic but tangible. Research is faster than ever, more vetted than ever (think PubPeer), more cited than ever. Fairly, not just because of Open Science, but open access causes readership causes impact causes citations. When new people and organizations start adopting Open Science this warms my hearth.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/images_medium_ci2c00268_0003.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/images_medium_ci2c00268_0003.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">BridgeDb NWO grant update #2: building up momentum</title><link href="https://chem-bla-ics.linkedchemistry.info/2022/04/17/bridgedb-nwo-grant-update-2-building-up.html" rel="alternate" type="text/html" title="BridgeDb NWO grant update #2: building up momentum" /><published>2022-04-17T00:00:00+00:00</published><updated>2022-04-17T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2022/04/17/bridgedb-nwo-grant-update-2-building-up</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2022/04/17/bridgedb-nwo-grant-update-2-building-up.html"><![CDATA[<p><a href="/assets/images/bridgedb_nwo_uml.png"><img src="/assets/images/bridgedb_nwo_uml.png" style="width: 40%; display: block; margin-left: auto; margin-right: auto; float: right" alt="UML diagram showing the steps in a BridgeDb webservice call." /></a>
Last month I <a href="https://chem-bla-ics.linkedchemistry.info/2022/03/05/bridgedb-nwo-grant-update-1-first-steps.html">reported <i class="fa-solid fa-recycle fa-xs"></i></a> on the start of the
<a href="https://www.nwo.nl/en/researchprogrammes/open-science/open-science-fund">NWO Open Science grant</a> and it is time for an update. First,
our grant now has a grant number, <a href="https://www.nwo.nl/en/projects/203001121">203.001.121</a>. For a project that is about identifiers,
having a project identifier is a big deal.</p>

<p>Some updates by Denise, Martina, Tooba, Helena, and me:</p>

<ul>
  <li>the project proposal was accepted and published in RIO Journal (doi:<a href="https://doi.org/10.3897/rio.8.e83031">10.3897/rio.8.e83031</a>)</li>
  <li>we started drawing various <a href="https://github.com/bridgedb/stories">BridgeDb stories as UML diagrams</a> using
<a href="https://mermaid-js.github.io/">Mermaid</a></li>
  <li>updated the documentation in the <a href="https://github.com/bridgedb/bridgedb-webservice">BridgeDb Webservice repository</a></li>
  <li>an <a href="https://github.com/bridgedb/data/commit/172a9c69ef557e7cb065a138f0fc4f5243615188">Ensembl 104-based gene/protein ID mapping database</a>
(doi:<a href="10.5281/zenodo.6367091">10.5281/zenodo.6367091</a>)</li>
  <li>better unit test coverage of the BridgeDb Java library</li>
  <li>various <a href="https://citation-file-format.github.io/">CITATION.cff</a> updates</li>
</ul>

<p>There are some further things cooking, including an updated <a href="https://github.com/bridgedb/datasources">datasources.tsv</a> and a few
<a href="https://github.com/bridgedb/BridgeDb/pulls">pull requests</a>. I expect a new release of the BridgeDb Java library before the end of the month.</p>

<p>With these new results, we also updated <a href="https://www.isaac.nwo.nl/">the ISAAC database</a> for the two new products
(the published proposal and the gene/protein ID mapping database):</p>

<p><img src="/assets/images/bridgedb_nwo_isaac.png" alt="" /></p>

<p>Right now, the ISAAC database does not make it easy to add content. Instead, there is a series of forms that have to be
manually filled, including separate forms for authors. You cannot simply add a DOI. Well, until recent.
<a href="https://orcid.org/0000-0002-4751-4637">Lars Willighagen</a> and I developed <a href="https://chrome.google.com/webstore/detail/isaac-chrome-extension/kiljfbiapahlahhilgcgfkfjnkgggode">a Chrome browser add-on</a>
to help out (also works with Brave), using his awesome <a href="https://citation.js.org/">citation-js</a>
(doi:<a href="https://doi.org/10.7717/peerj-cs.214">10.7717/peerj-cs.214</a>). The above two entries in the database have
been added using this add-on.</p>

<p>We hope it will help other NWO grant holders too and that the add-on becomes obsolete in the near future Because the ISAAC database needs some updates elsewhere too. For example, it does not seem to value open source and open data so much yet:</p>

<p><img src="/assets/images/bridgedb_nwo_isaac_output_types.png" alt="" /></p>

<p>That is a shame.</p>]]></content><author><name>Egon Willighagen</name></author><category term="bridgedb" /><category term="openscience" /><category term="isaac" /><category term="doi:10.3897/RIO.8.E83031" /><category term="justdoi:10.5281/ZENODO.6367091" /><category term="justdoi:10.7717/peerj-cs.214" /><summary type="html"><![CDATA[Last month I reported on the start of the NWO Open Science grant and it is time for an update. First, our grant now has a grant number, 203.001.121. For a project that is about identifiers, having a project identifier is a big deal.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/bridgedb_nwo_isaac.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/bridgedb_nwo_isaac.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">BridgeDb NWO grant update #1: first steps</title><link href="https://chem-bla-ics.linkedchemistry.info/2022/03/05/bridgedb-nwo-grant-update-1-first-steps.html" rel="alternate" type="text/html" title="BridgeDb NWO grant update #1: first steps" /><published>2022-03-05T00:00:00+00:00</published><updated>2022-03-05T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2022/03/05/bridgedb-nwo-grant-update-1-first-steps</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2022/03/05/bridgedb-nwo-grant-update-1-first-steps.html"><![CDATA[<p>Last year, Denise, Tina, Marvin, and I received an <a href="https://www.nwo.nl/en/researchprogrammes/open-science/open-science-fund">NWO Open Science</a>
grant (<a href="https://www.nwo.nl/en/projects/203001121">203.001.121</a>) to improve the long running BridgeDb project, originally developed by Martijn van Iersel
(see doi:<a href="https://doi.org/10.1186/1471-2105-11-5">10.1186/1471-2105-11-5</a>). Helena joined our group as research software engineer and will work
part-time on this grant. We started two weeks ago, so time for an update of results:</p>

<ul>
  <li>the project started after writing our data management and software sustainability plans (mostly, GitHub+Zenodo)</li>
  <li>the project proposal has been submitted to <a href="https://riojournal.com/">RIO Journal</a></li>
  <li>created a private project in the <a href="https://gitlab.maastrichtuniversity.nl/">Maastricht University GitLab</a> instance (with all tasks as issues, so that we can monitor progress)</li>
  <li>first patches by Helena to the <a href="https://github.com/bridgedb/bridgedb">BridgeDb Java library</a></li>
  <li>factored out the <a href="https://github.com/bridgedb/bridgedb-webservice">BridgeDb Webservice</a> into a separate (unpretty, see topright screenshot) repository, so that the BridgeDb Java library compiles again</li>
  <li>Marvin update the <a href="https://hub.docker.com/layers/bigcatum/bridgedb/3.0.13.20220304/images/sha256-ad373eae152806d0935b751bcd06216732c7e26d3c34efba5e6a388d48c37087?context=explore">BridgeDb Docker</a> with the latest BridgeDb 3.0.13 and the latest mapping files</li>
</ul>

<p>It should be noted that FAIRplus has funded Chris’s team to work on identifier mapping too. Luc, Lucas, and now Tooba in our team have been working
on Ensembl-based gene/protein identifier mappings and <a href="https://fairplus.github.io/the-fair-cookbook/">FAIRplus Cookbook</a> recipes.</p>

<p>Not bad this progress in the first two weeks. We are ready now to start writing unit tests for much of the BridgeDb code. There were some, but a lot of code is used in production, but not formally tested. So far, the number of regressions due to updated libraries (dependencies) has been quite manageable. But with the work planned in this grant, we need more sustainable software, and therefore more unit testing. With the BridgeDb Webservice factored out, the code is compiling again and so is the code coverage testing.</p>

<p>The BridgeDb Webservice itself needs a rewrite from scratch. At least the mapping between underlying code (which we can reuse) and the REST calls. The library we used here has never been updated and I spent last weekend figuring out how to change the code, but gave up after two days. Rewriting is faster.</p>]]></content><author><name>Egon Willighagen</name></author><category term="grant" /><category term="bridgedb" /><category term="openscience" /><category term="justdoi:10.1186/1471-2105-11-5" /><summary type="html"><![CDATA[Last year, Denise, Tina, Marvin, and I received an NWO Open Science grant (203.001.121) to improve the long running BridgeDb project, originally developed by Martijn van Iersel (see doi:10.1186/1471-2105-11-5). Helena joined our group as research software engineer and will work part-time on this grant. We started two weeks ago, so time for an update of results:]]></summary></entry><entry><title type="html">Downloading all currently released BridgeDb identifier mapping databases</title><link href="https://chem-bla-ics.linkedchemistry.info/2021/02/16/downloading-all-currently-released.html" rel="alternate" type="text/html" title="Downloading all currently released BridgeDb identifier mapping databases" /><published>2021-02-16T00:00:00+00:00</published><updated>2021-02-16T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2021/02/16/downloading-all-currently-released</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2021/02/16/downloading-all-currently-released.html"><![CDATA[<p>The <a href="https://bridgedb.github.io/">BridgeDb</a> project (doi:<a href="https://doi.org/10.1186/1471-2105-11-5">10.1186/1471-2105-11-5</a>)
(and <a href="https://elixir-europe.org/platforms/interoperability/rirs">ELIXIR recommended interoperability resource</a>) has several
aims, all around identifier mapping:</p>

<ul>
  <li>provide a Java API for identifier mapping</li>
  <li>provide ID mappings (two flavors: with and without semantic meaning)</li>
  <li>provide services (<a href="https://www.bioconductor.org/packages/release/bioc/html/BridgeDbR.html">R package</a>,
<a href="http://webservice.bridgedb.org/">OpenAPI webservice</a>)</li>
  <li>track the history of identifiers</li>
</ul>

<p>The last one is more recent and two aspects are under development here: secondary identifiers and dead identifiers. More
about that in some future post. About the first and the third I am also not going to tell much in this post. Just follow the
above links.</p>

<p>I do want to say something in this post about the actually identifier mapping databases, in particular those we distribute as
Apache Derby files, the storage format used by the Java libraries. These are the files you download if you want mapping databases
for <a href="https://pathvisio.github.io/">PathVisio</a> (doi:<a href="https://doi.org/10.1371/journal.pcbi.1004085">10.1371/journal.pcbi.1004085</a>).
BridgeDb has mapping files for various things and some example databases the data it maps between:</p>

<ol>
  <li>genes and proteins: Ensembl, UniProt, NCBI Gene</li>
  <li>metabolites; HMDB, ChEBI, LIPID MAPS, Wikidata, CAS</li>
  <li>publications: DOI, PubMed</li>
  <li>macromolecular complexes: Complex Portal, Wikidata</li>
</ol>

<p>The BridgeDb API is agnostic to the things it can map identifiers for.</p>

<p><strong>Downloading mapping files</strong>:
BridgeDb has an <a href="https://bioschemas.org/">BioSchemas</a>-powered
<a href="https://bridgedb.github.io/data/gene_database/">web page with an overview of the latest released mapping files</a>.
It looks like this:</p>

<p><img src="/assets/images/bridgedbDownloadsImage.png" alt="" /></p>

<p>This webpage is the result from the cyber attack in late 2019, disrupting a good bit of the infrastructure. This is why we
renewed the website, including the download page. The new page actually is hosted <a href="https://github.com/bridgedb/data">on GitHub as a Markdown file</a>,
but this is where things get interesting. The Markdown file is actually autogenerated from a JSON file with all the info. Everything,
including the BioSchemas annotation is created from that. Basically, JSON gets converted into Markdown (with a custom script), which
gets converted into HTML by a GitHub Action/Pages. So, when someone releases a new mapping file on Zenodo or Figshare, they only have
to send me a pull request with updated JSON file.</p>

<p>Now, previously, downloading all released mapping files, for example for the BridgeDb webservice, was a bit complicated. The
information was a HTML file generated by the webserver for a folder. No metadata. Nuno wrote code to extract the relevant info
and download all the files. However, since the information is now available in a public JSON file, it is a lot easier. The
following code uses wget and jq, two tools readily available on the popular operating systems. Have fun!</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span>/bin/bash

wget <span class="nt">-nc</span> https://bridgedb.github.io/data/gene.json
wget <span class="nt">-nc</span> https://bridgedb.github.io/data/corona.json
wget <span class="nt">-nc</span> https://bridgedb.github.io/data/other.json

jq <span class="nt">-r</span> <span class="s1">'.mappingFiles | .[] | "\(.file)=\(.downloadURL)"'</span> gene.json <span class="o">&gt;</span> files.txt
jq <span class="nt">-r</span> <span class="s1">'.mappingFiles | .[] | "\(.file)=\(.downloadURL)"'</span> corona.json <span class="o">&gt;&gt;</span> files.txt
jq <span class="nt">-r</span> <span class="s1">'.mappingFiles | .[] | "\(.file)=\(.downloadURL)"'</span> other.json <span class="o">&gt;&gt;</span> files.txt

<span class="k">for </span>FILE <span class="k">in</span> <span class="si">$(</span><span class="nb">cat </span>files.txt<span class="si">)</span>
<span class="k">do
  </span>readarray <span class="nt">-d</span> <span class="o">=</span> <span class="nt">-t</span> splitFILE<span class="o">&lt;&lt;&lt;</span> <span class="s2">"</span><span class="nv">$FILE</span><span class="s2">"</span>
  <span class="nb">echo</span> <span class="k">${</span><span class="nv">splitFILE</span><span class="p">[0]</span><span class="k">}</span>
  wget <span class="nt">-nc</span> <span class="nt">-O</span> <span class="k">${</span><span class="nv">splitFILE</span><span class="p">[0]</span><span class="k">}</span> <span class="k">${</span><span class="nv">splitFILE</span><span class="p">[1]</span><span class="k">}</span>
<span class="k">done</span>
</code></pre></div></div>

<p>Actually, while writing this blog post, I notice the code can be further simplified.</p>]]></content><author><name>Egon Willighagen</name></author><category term="bridgedb" /><category term="json" /><category term="justdoi:10.1186/1471-2105-11-5" /><category term="justdoi:10.1371/journal.pcbi.1004085" /><summary type="html"><![CDATA[The BridgeDb project (doi:10.1186/1471-2105-11-5) (and ELIXIR recommended interoperability resource) has several aims, all around identifier mapping:]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/bridgedbDownloadsImage.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/bridgedbDownloadsImage.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Compound (class) identifiers in Wikidata</title><link href="https://chem-bla-ics.linkedchemistry.info/2018/08/18/compound-class-identifiers-in-wikidata.html" rel="alternate" type="text/html" title="Compound (class) identifiers in Wikidata" /><published>2018-08-18T00:00:00+00:00</published><updated>2018-08-18T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2018/08/18/compound-class-identifiers-in-wikidata</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2018/08/18/compound-class-identifiers-in-wikidata.html"><![CDATA[<p><span style="width: 40%; display: block; margin-left: auto; margin-right: auto; float: right">
<img src="/assets/images/extid-wikidata-histogram.png" /> <br />
<a href="https://edu.nl/h6kg3">Bar chart</a> showing the number of compounds with a particular chemical identifier.
</span>
I think <a href="http://wikidata.org/">Wikidata</a> is a groundbreaking project, which will have a major impact on science. One of the
reasons is the open license (CCZero), the very basic approach (<a href="http://wikiba.se/">Wikibase</a>), and the superb community around
it. For example, setting up your own Wikibase including a cool SPARQL endpoint, is
<a href="https://github.com/wmde/wikibase-docker">easily done with Docker</a>.</p>

<p>Wikidata has many sub projects, such as <a href="http://wikicite.org/">WikiCite</a>, which captures the collective of primary literature.
Another one is the <a href="https://www.wikidata.org/wiki/Wikidata:WikiProject_Chemistry">WikiProject Chemistry</a>. The two nicely match
up, I think, making a public database linking chemicals to literature (tho, very much needs to be done here), see my recent
ICCS 2018 poster (doi:<a href="https://doi.org/10.6084/m9.figshare.6356027.v1">10.6084/m9.figshare.6356027.v1</a>, paper pending).</p>

<p>But Wikidata is also a great resource for identifier mappings between chemical databases, something we need for
<a href="https://chem-bla-ics.blogspot.com/2017/11/new-paper-wikipathways-multifaceted.html">our metabolism pathway research</a>.
The mapping, as you may know, are <a href="https://chem-bla-ics.blogspot.com/2016/09/metabolite-identifier-mapping-databases.html">used in the latter</a>
via <a href="https://www.bridgedb.org/">BridgeDb</a> and we have been using Wikidata as one of three sources for some time now (the others being
<a href="http://www.hmdb.ca/">HMDB</a> and <a href="https://www.ebi.ac.uk/chebi/">ChEBI</a>). WikiProject Chemistry has a related
<a href="https://www.wikidata.org/wiki/Wikidata:WikiProject_Chemistry/ChemID">ChemID</a> effort, and while the wiki page does not show
much recent activity, there is actually a lot of ongoing effort (see <a href="https://edu.nl/h6kg3">plot</a>).
And I’ve been <a href="https://chem-bla-ics.blogspot.com/2018/07/lipid-map-identifiers-and.html">adding my bits</a>.</p>

<h2 id="limitations-of-the-links">Limitations of the links</h2>
<p>But not each identifier in Wikidata has the same meaning. While they are all classified as ‘external-id’, the actual link may
have different meaning. This, of course, is the essence of scientific lenses, see <a href="https://chem-bla-ics.blogspot.com/2013/05/linking-wikipathways-to-binding.html">this post</a>
and the papers cited therein. One reason here is the difference in what entries in the various databases mean.</p>

<p>Wikidata has an extensive model, defined by the aforementioned WikiProject Chemistry. For example, it has different concepts
for chemical compounds (in fact, the hierarchy is pretty rich) and compound classes. And these are differently modeled. Furthermore,
it has a model that formalizes that things with a different InChI are different, but even allows things with the same InChI to be
different, if need arises. It tries to accurately and precisely capture the certainty and uncertainty of the chemistry. As such,
it is a powerful system to handle identifier mappings, because databases are not clear, and chemistry and biological in data is
even less: we measure experimentally a characterization of chemicals, but what we put in databases and give names, are specific
models (often chemical graphs).</p>

<p>That model differs from what other (chemical) databases use, or seem to use, because not always do databases indicate what they
actually have in a record. But I think this is a fair guess.</p>

<h2 id="chebi">ChEBI</h2>
<p>ChEBI (and the matching <a href="https://www.wikidata.org/wiki/Property:P683">ChEBI ID</a>) has entries for chemical classes (e.g.
<a href="https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:35366">fatty acid</a>) and specific compounds (e.g.
<a href="https://www.ebi.ac.uk/chebi/searchId.do?chebiId=30089">acetate</a>).</p>

<h2 id="pubchem-chemspider-unichem">PubChem, ChemSpider, UniChem</h2>
<p>These three resources use the InChI as central asset. While they do not really have the concept of compound classes so much
(though increasingly they have classifications), they do have entries where stereochemistry is undefined or unknown. Each
one has their own way to link to other databases themselves, which normally includes tons of structure normalization (see
e.g. doi:<a href="https://doi.org/10.1186/s13321-018-0293-8">10.1186/s13321-018-0293-8</a> and
doi:<a href="https://doi.org/10.1186/s13321-015-0072-8">10.1186/s13321-015-0072-8</a>).</p>

<h2 id="hmdb">HMDB</h2>
<p>HMDB (and the matching <a href="https://www.wikidata.org/wiki/Property:P2057">P2057</a>) has a biological perspective; the entries
reflect the biology of a chemical. Therefore, for most compounds, they focus on the neutral forms of compounds. This makes
linking to/from other databases where the compound is not neutral chemically less precise.</p>

<h2 id="cas-registry-numbers">CAS registry numbers</h2>
<p>CAS (and the matching <a href="https://www.wikidata.org/wiki/Property:P231">P231</a>) is pretty unique itself, and has identifiers
for substances (see <a href="https://www.wikidata.org/wiki/Q79529">Q79529</a>), much more than chemical compounds, and comes with a
own set of unique features. For example, solutions of some compound, by design, have the same identifier. Previously,
formaldehyde and formalin had different Wikipedia/Wikidata pages, both with the same CAS registry number.</p>

<h2 id="limitations-of-the-links-2">Limitations of the links #2</h2>
<p>Now, returning to our starting point: limitations in linking databases. If we want FAIR mappings, we need to be as precise
as possible. Of course, that may mean we need more steps, but we can always simplify at will, but we never can have a
computer make the links more complex (well, not without making assumptions, etc).</p>

<p>And that is why Wikidata is so suitable to link all these chemical databases: it can distinguish differences when needed,
and make that explicit. It make mappings between the databases more <a href="https://www.nature.com/articles/sdata201618">FAIR</a>.</p>]]></content><author><name>Egon Willighagen</name></author><category term="wikidata" /><category term="scholia" /><category term="chemistry" /><category term="bridgedb" /><category term="cas" /><category term="chebi" /><category term="chemspider" /><category term="fair" /><category term="hmdb" /><category term="pubchem" /><category term="rdf" /><category term="wikicite" /><category term="justdoi:10.6084/m9.figshare.6356027.v1" /><category term="justdoi:10.1186/s13321-018-0293-8" /><category term="justdoi:10.1186/s13321-015-0072-8" /><category term="justdoi:10.1038/sdata.2016.18" /><summary type="html"><![CDATA[Bar chart showing the number of compounds with a particular chemical identifier. I think Wikidata is a groundbreaking project, which will have a major impact on science. One of the reasons is the open license (CCZero), the very basic approach (Wikibase), and the superb community around it. For example, setting up your own Wikibase including a cool SPARQL endpoint, is easily done with Docker.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/extid-wikidata-histogram.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/extid-wikidata-histogram.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Coding an OWL ontology in HTML5 and RDFa</title><link href="https://chem-bla-ics.linkedchemistry.info/2015/09/27/coding-owl-ontology-in-html5-and-rdfa.html" rel="alternate" type="text/html" title="Coding an OWL ontology in HTML5 and RDFa" /><published>2015-09-27T00:00:00+00:00</published><updated>2015-09-27T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2015/09/27/coding-owl-ontology-in-html5-and-rdfa</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2015/09/27/coding-owl-ontology-in-html5-and-rdfa.html"><![CDATA[<p><img src="/assets/images/bdbOnto.png" style="width: 30%; display: block; margin-left: auto; margin-right: auto; float: right" />
There are many fancy tools to edit ontologies. I like simple editors, like <a href="https://en.wikipedia.org/wiki/GNU_nano">nano</a>. And like any hacker, I can hack
<a href="https://en.wikipedia.org/wiki/Web_Ontology_Language">OWL</a> ontologies in nano. The hacking implies OWL was never meant to be hacked on a simple text editor;
I am not sure that is really true. Anyways, <a href="https://en.wikipedia.org/wiki/HTML5">HTML5</a> and <a href="https://en.wikipedia.org/wiki/RDFa">RDFa</a> will do fine, and
here is a brief write up. This post will not cover the basics of RDFa and does assume you already know how triples work. If not, read this
<a href="http://www.w3.org/TR/xhtml-rdfa-primer/">RDFa primer</a> first.</p>

<h2 id="the-bridgedb-datasource-ontology">The BridgeDb DataSource Ontology</h2>
<p>This example uses the <a href="http://www.bridgedb.org/">BridgeDb</a> DataSource Ontology, created by BridgeDb developers from Manchester University (Christian,
Stian, and Alasdair). The ontology covers describing data sources of identifiers, a technology outlined in the BridgeDb paper by Martijn (see below)
as well as terms from the Open PHACTS <a href="http://www.openphacts.org/specs/datadesc/">Dataset Descriptions for the Open Pharmacological Space</a>
by Alasdair et al.</p>

<p>Because I needed to put this online for <a href="https://www.openphacts.org/">Open PHACTS</a> (BTW,
<a href="https://www.openphacts.org/news-and-events/news-archive/2015/398-open-phacts-wins-the-european-linked-data-contest">the project won a big award</a>!)
and our previous solution did not work well enough anymore. You may also see the HTML of the result first. You may also want to verify it really is
<a href="http://vocabularies.bridgedb.org/ops">HTML</a>: here is the <a href="https://validator.w3.org/nu/?doc=http://vocabularies.bridgedb.org/ops">HTML5 validation report</a>.
Also, you may be interested in what the ontology in RDF looks like: here is
<a href="http://www.w3.org/2012/pyRdfa/extract?uri=http://vocabularies.bridgedb.org/ops#">the extracted RDF for the ontology</a>.
Now follow the HTML+RDFa snippets. First, the ontology details (actually, I have it split up):</p>

<pre>&lt;div <span style="color: red;">about="</span><span style="background-color: #76a5af; color: white;">http://vocabularies.bridgedb.org/ops#</span><span style="color: red;">"
     typeof="</span><span style="background-color: #76a5af; color: white;">owl:Ontology</span><span style="color: red;">"</span>&gt;
  &lt;h1&gt;The &lt;span <span style="color: red;">property="rdfs:label"</span>&gt;<span style="background-color: #6fa8dc;"><span style="color: white;">BridgeDb DataSource Ontology</span></span>&lt;/span&gt;
    (version &lt;span <span style="color: red;">property="owl:versionInfo"</span>&gt;<span style="background-color: #6fa8dc; color: white;">2.1.0</span>&lt;/span&gt;)&lt;/h1&gt;
  &lt;p&gt;
    This page describes the BridgeDb ontology. Make sure to visit our
    &lt;a <span style="color: red;">property="rdfs:seeAlso"</span> href="<span style="background-color: #76a5af;"><span style="color: white;">http://www.bridgedb.org/</span></span>"&gt;homepage&lt;/a&gt; too!
  &lt;/p&gt;
&lt;/div&gt;
&lt;p <span style="color: red;">about="</span><span style="background-color: #76a5af; color: white;">http://vocabularies.bridgedb.org/ops#</span><span style="color: red;">"</span>&gt;
  The OWL ontology can be extracted
  &lt;a <span style="color: red;">property="owl:versionIRI"</span>
     href="<span style="background-color: #76a5af; color: white;">http://www.w3.org/2012/pyRdfa/extract?uri=http://vocabularies.bridgedb.org/ops#</span>"&gt;here&lt;/a&gt;.
  The Open PHACTS specification on
  &lt;a <span style="color: red;">property="rdf:seeAlso"</span>
    href="<span style="background-color: #76a5af;"><span style="color: white;">http://www.openphacts.org/specs/2013/WD-datadesc-20130912/#bridgedb</span></span>"
  &gt;Dataset Descriptions&lt;/a&gt; is also useful.
&lt;/p&gt;
</pre>

<p>This is the last time I show the custom color coding, but for a first time it is useful. In red are basically the predicates, where <code class="language-plaintext highlighter-rouge">@about</code>
indicates a new resource is started, <code class="language-plaintext highlighter-rouge">@typeof</code> defines the <code class="language-plaintext highlighter-rouge">rdf:type</code>, and <code class="language-plaintext highlighter-rouge">@property</code> indicates all other predicates. The blue and
green blobs are literals and object resources, respectively. If you work this out, you get this OWL code (more or less):</p>

<div class="language-turtle highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">bridgedb:</span><span class="w"> </span><span class="k">a</span><span class="w"> </span><span class="nn">owl:</span><span class="n">Ontology</span><span class="p">;</span><span class="w">
  </span><span class="nn">rdfs:</span><span class="n">label</span><span class="w"> </span><span class="s">"BridgeDb DataSource Ontology"</span><span class="na">@en</span><span class="p">;</span><span class="w">
  </span><span class="nn">rdf:</span><span class="n">seeAlso
</span><span class="w">    </span><span class="nl">&lt;http://www.openphacts.org/specs/2013/WD-datadesc-20130912/#bridgedb&gt;</span><span class="p">;</span><span class="w">
  </span><span class="nn">rdfs:</span><span class="n">seeAlso</span><span class="w"> </span><span class="nl">&lt;http://www.bridgedb.org/&gt;</span><span class="p">;</span><span class="w">
  </span><span class="nn">owl:</span><span class="n">versionIRI
</span><span class="w">    </span><span class="nl">&lt;http://www.w3.org/2012/pyRdfa/extract?uri=http://vocabularies.bridgedb.org/ops#&gt;</span><span class="p">;</span><span class="w">
  </span><span class="nn">owl:</span><span class="n">versionInfo</span><span class="w"> </span><span class="s">"2.1.0"</span><span class="na">@en</span><span class="w"> </span><span class="p">.</span><span class="w">
</span></code></pre></div></div>

<h2 id="an-owl-class">An OWL class</h2>
<p>Defining OWL classes are using the same approach: define the resource it is <code class="language-plaintext highlighter-rouge">@about</code>, define the <code class="language-plaintext highlighter-rouge">@typeOf</code> and giving is properties.
BTW, note that I added a <code class="language-plaintext highlighter-rouge">@id</code> so that ontology terms can be looked up using the HTML # functionality. For example:</p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"DataSource"</span>
  <span class="na">about=</span><span class="s">"http://vocabularies.bridgedb.org/ops#DataSource"</span>
  <span class="na">typeof=</span><span class="s">"owl:Class"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;h3</span> <span class="na">property=</span><span class="s">"rdfs:label"</span><span class="nt">&gt;</span>Data Source<span class="nt">&lt;/h3&gt;</span>
  <span class="nt">&lt;p</span> <span class="na">property=</span><span class="s">"dc:description"</span><span class="nt">&gt;</span>A resource that defines
    identifiers for some biological entity, like a gene,
    protein, or metabolite.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</code></pre></div></div>

<h2 id="an-owl-object-property">An OWL object property</h2>
<p>Defining an OWL data property is pretty much the same, but note that we can arbitrary add additional things, making use of <code class="language-plaintext highlighter-rouge">&lt;span&gt;</code>,
<code class="language-plaintext highlighter-rouge">&lt;div&gt;</code>, and <code class="language-plaintext highlighter-rouge">&lt;p&gt;</code> elements. The following example also defines the <code class="language-plaintext highlighter-rouge">rdfs:domain</code> and <code class="language-plaintext highlighter-rouge">rdfs:range</code>:</p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"aboutOrganism"</span>
  <span class="na">about=</span><span class="s">"http://vocabularies.bridgedb.org/ops#aboutOrganism"</span>
  <span class="na">typeof=</span><span class="s">"owl:ObjectProperty"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;h3</span> <span class="na">property=</span><span class="s">"rdfs:label"</span><span class="nt">&gt;</span>About Organism<span class="nt">&lt;/h3&gt;</span>
  <span class="nt">&lt;p&gt;&lt;span</span> <span class="na">property=</span><span class="s">"dc:description"</span><span class="nt">&gt;</span>Organism for all entities
    with identifiers from this datasource.<span class="nt">&lt;/span&gt;</span>
    This property has
    <span class="nt">&lt;a</span> <span class="na">property=</span><span class="s">"rdfs:domain"</span>
      <span class="na">href=</span><span class="s">"http://vocabularies.bridgedb.org/ops#DataSource"</span><span class="nt">&gt;</span>DataSource<span class="nt">&lt;/a&gt;</span>
    as domain and
    <span class="nt">&lt;a</span> <span class="na">property=</span><span class="s">"rdfs:range"</span>
      <span class="na">href=</span><span class="s">"http://vocabularies.bridgedb.org/ops#Organism"</span><span class="nt">&gt;</span>Organism<span class="nt">&lt;/a&gt;</span>
    as range.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</code></pre></div></div>

<p>So, now anyone can host an OWL ontology with dereferencable terms: to remove confusion, I have used the full URLs of the terms in <code class="language-plaintext highlighter-rouge">@about</code> attributes.</p>]]></content><author><name>Egon Willighagen</name></author><category term="ontology" /><category term="bridgedb" /><category term="web" /><category term="rdf" /><category term="owl" /><category term="justdoi:10.1186/1471-2105-11-5" /><summary type="html"><![CDATA[There are many fancy tools to edit ontologies. I like simple editors, like nano. And like any hacker, I can hack OWL ontologies in nano. The hacking implies OWL was never meant to be hacked on a simple text editor; I am not sure that is really true. Anyways, HTML5 and RDFa will do fine, and here is a brief write up. This post will not cover the basics of RDFa and does assume you already know how triples work. If not, read this RDFa primer first.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/bdbOnto.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/bdbOnto.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>