how to annotate a molecular structure having a solvent role?

9 views
Skip to first unread message

Egon Willighagen

unread,
Sep 10, 2010, 2:55:50 AM9/10/10
to cheminf-ontology

Hi all,

I'm updating some of the RDF data resources I have under control, and
have this question: how do I describe a solvent?

For a molecule, I can do something like this:

<tr typeof="chebi:CHEBI_36357" about="http://rdf.openmolecules.net/?
InChI=1/C3H6O/c1-3(2)4/h1-2H3">

but now I need to indicate that this thing is a solvent... how do I go
about doing that? scanning the OWL files shows some hits on 'solvent',
but nothing related to the role part...

Egon

Janna Hastings

unread,
Sep 10, 2010, 5:17:11 AM9/10/10
to cheminf-...@googlegroups.com
Hello,

just use the has_role relationship. Solvent in ChEBI is CHEBI:46787. So you can assert < x has_role chebi:CHEBI_46787 >

We can add has_role to the chebi slim imported into cheminf?

Cheers, Janna

Egon Willighagen

unread,
Sep 10, 2010, 5:31:35 AM9/10/10
to cheminf-...@googlegroups.com
On Fri, Sep 10, 2010 at 11:17 AM, Janna Hastings
<janna.h...@gmail.com> wrote:
> just use the has_role relationship. Solvent in ChEBI is CHEBI:46787. So you
> can assert < x has_role chebi:CHEBI_46787 >

OK, great! What's the URI for has_role?

> We can add has_role to the chebi slim imported into cheminf?

That would be nice indeed!

Egon

--
Dr E.L. Willighagen
Post-doc @ Uppsala University (only until 2010-09-30)
Proteochemometrics / Bioclipse Group of Prof. Jarl Wikberg
Homepage: http://egonw.github.com/
LinkedIn: http://se.linkedin.com/in/egonw
Blog: http://chem-bla-ics.blogspot.com/
PubList: http://www.citeulike.org/user/egonw/tag/papers

Janna Hastings

unread,
Sep 10, 2010, 7:05:28 AM9/10/10
to cheminf-...@googlegroups.com
It is in the obo library purl namespace:

<owl:ObjectProperty rdf:about="http://purl.obolibrary.org/obo#has_role"/>

Not sure how best to import it but I'll ask Michel when his part of the world comes online :-)

Janna

Egon Willighagen

unread,
Sep 10, 2010, 7:50:47 AM9/10/10
to cheminf-...@googlegroups.com
On Fri, Sep 10, 2010 at 1:05 PM, Janna Hastings
<janna.h...@gmail.com> wrote:
> <owl:ObjectProperty rdf:about="http://purl.obolibrary.org/obo#has_role"/>

This works for me for now...

The use case:

http://egonw.github.com/cheminformatics.classics/classic2.html

Michel Dumontier

unread,
Sep 10, 2010, 2:51:08 PM9/10/10
to cheminf-...@googlegroups.com
shouldn't we be making the distinction between a molecular entity and
a chemical substance? doesn't the role of a solvent belong to a
substance?

m.

--
Michel Dumontier
Associate Professor of Bioinformatics
Carleton University
http://dumontierlab.com

Janna Hastings

unread,
Sep 10, 2010, 2:55:01 PM9/10/10
to cheminf-...@googlegroups.com
In principle yes, but in practice I don't think it's necessary to make the distinction. At the moment we allow granularity-crossing assertions of roles.

Cheers, Janna

Egon Willighagen

unread,
Sep 10, 2010, 5:27:42 PM9/10/10
to cheminf-...@googlegroups.com
On Fri, Sep 10, 2010 at 9:02 PM, Egon Willighagen
<egon.wil...@gmail.com> wrote:
> define a substance,

I was just looking at this, and I think I should use this one:

<owl:Class rdf:about="&resource;CHEMINF_000266">
<rdfs:label
>chemical substance</rdfs:label>
<rdfs:label>cycle</rdfs:label>
<rdfs:subClassOf rdf:resource="&resource;CHEMINF_000000"/>
<rdfs:comment
>Chemical substance constitutes matter of constant
composition, that may contain a collection of molecular entities.
[IUPAC: http://goldbook.iupac.o$
<dc:description
>A cycle is a part of a molecular entity that is cyclic,
that is, consists of a chain of atoms where each is reachable by a
bond connected to anothe$
</owl:Class>

But what should I make of the two labels? and the comment versus the
description?

Am I missing something, or is this a copy/paste artefact?

Michel Dumontier

unread,
Sep 10, 2010, 5:51:26 PM9/10/10
to cheminf-...@googlegroups.com
gah - definitely a problem, i will fix.

m.

On Fri, Sep 10, 2010 at 5:27 PM, Egon Willighagen

--

Frank Gibson

unread,
Sep 13, 2010, 6:37:10 AM9/13/10
to cheminf-...@googlegroups.com
Hi,

Apologies, if you are already aware, and I am not sure how strictly you are keeping to BFO implied/inferred/mysterious principles but annotating a role to a material is usually done in the context of a particular processes, otherwise if you annotated a material you are stating that a material bears the role solvent for all instances of that material.

Frank

Janna Hastings

unread,
Sep 13, 2010, 7:48:50 AM9/13/10
to cheminf-...@googlegroups.com
Hi Frank,

this problem is worked around by the roles in BFO being realizable entities -- kind of potentials. The has-role relation is thus annotating that the material has the potential to act as a solvent if it comes into the right circumstances. 

Cheers, Janna

Frank Gibson

unread,
Sep 13, 2010, 8:18:01 AM9/13/10
to cheminf-...@googlegroups.com
On Mon, Sep 13, 2010 at 12:48 PM, Janna Hastings <janna.h...@gmail.com> wrote:
Hi Frank,

this problem is worked around by the roles in BFO being realizable entities -- kind of potentials. The has-role relation is thus annotating that the material has the potential to act as a solvent if it comes into the right circumstances. 

That would be a sensible assumption, although I am not sure the BFO/RO interpretation is so quite clear cut as you would assume (and I am not defending the BFO interpretation). If you annotate a material directly as has_role solvent then you are NOT actually asserting that its_has_the_potential_of bearing the role solvent at some point in time, you are actually stating that it bears the role for all time. So unless you want to say that all instances of chemicalX bear the role solvents then you have to provide the process context, such as

make_chemical_solution_process = has_participant some (materialX and has_role some solvent) has_participant some (material Y and has_role some solute)

I would just like to reiterate this is not my interpretation. This is BFO's interpretation that roles are only borne during a process and have to be borne by some entity. However, Its pretty obvious the axioms don't convey this (another one for the BFO fail list).

Frank

Michel Dumontier

unread,
Sep 13, 2010, 9:59:39 AM9/13/10
to cheminf-...@googlegroups.com
Hi Frank,
BFO is clear - entities bear their qualities/realizables at all
times, but they are *realized* under certain conditions (e.g.
processes)

m.

--

Frank Gibson

unread,
Sep 13, 2010, 10:11:58 AM9/13/10
to cheminf-...@googlegroups.com
On Mon, Sep 13, 2010 at 2:59 PM, Michel Dumontier <michel.d...@gmail.com> wrote:
Hi Frank,
 BFO is clear - entities bear their qualities/realizables at all
times, but they are *realized* under certain conditions (e.g.
processes)

I don't think this is correct, for it would mean that I bear the roles patient, and prisoner and the role smoker and non-smoker continuously, because I could potentially realise it at some point. This interpretation of the OBI community is that roles can not be assigned to materials without stating which process it is realised in, therefore roles are only assigned to materials when they are asserted as participants of a certain process. I am not trying to assert my opinion heren, or create a long thread - just stating an interpretation, but we may need some clarification on this point from BFO/RO as its seems several interpretations have developed.

Frank

Michel_Dumontier

unread,
Sep 13, 2010, 10:27:56 AM9/13/10
to cheminf-...@googlegroups.com

From Barry on the BFO mailing list on June 29, 2007:

 

“The realizable entity (function) must inhere in the catalyst even
when catalysis is not taking place -- otherwise it is not there to be realized”

 

m.

Frank Gibson

unread,
Sep 13, 2010, 11:29:25 AM9/13/10
to cheminf-...@googlegroups.com
Maybe this just comes down to an engineering design principle..

On Mon, Sep 13, 2010 at 3:27 PM, Michel_Dumontier <Michel_D...@carleton.ca> wrote:

From Barry on the BFO mailing list on June 29, 2007:

 

“The realizable entity (function) must inhere in the catalyst even
when catalysis is not taking place -- otherwise it is not there to be realized”

 


The above statement is my interpretation - that roles must have material bearers, not that all materials bear roles.
The function inheres in a catalyst - this would be the assertion in the ontology. The catalyst_function is realised by a catalyst in catalysis.

So a smoker_role inheres in a human, and a non-smoker role inheres in a human. A human does not bear both the smoker and non-smoker roles. When I smoke I realise the smoker role, when I stop smoking I realise the non-smoker role.

A solute_role is borne by a materialX. MaterialX is not asserted to always bear the solute role.

To me it does not make sense to assert that a material bears a solvent role of of the time, when its only relevant to think about it in terms of a process.


Frank

Janna Hastings

unread,
Sep 13, 2010, 11:49:29 AM9/13/10
to cheminf-...@googlegroups.com
Hi Frank,

I can agree that the realizable entity branch of BFO needs work! Thanks for your input and we'll bear it in mind for the future. I think for now we won't make an explicit link to a process but this can certainly be added.

Do you havea  suggestion for how you would you model this outside of the BFO sense of role?

Best wishes,
Janna

Frank Gibson

unread,
Sep 13, 2010, 2:03:50 PM9/13/10
to cheminf-...@googlegroups.com
On Mon, Sep 13, 2010 at 4:49 PM, Janna Hastings <janna.h...@gmail.com> wrote:
Hi Frank,

I can agree that the realizable entity branch of BFO needs work! Thanks for your input and we'll bear it in mind for the future. I think for now we won't make an explicit link to a process but this can certainly be added.

Well if you think of the statement the other way around. If you follow the reasoning that all chemical entities bear all chemical entity roles all of the time. What new information have you added to the ontology by saying drugX has_role some solvent? You should not be mis-using the flag has_role some solvent and infer that it is a solvent, only when the solvent role is realised can you say, drugX is a solvent. Bearing a role is largely meaningless unless it is realised, which is my issue with asserting materials with roles and not considering the process.

 

Do you havea  suggestion for how you would you model this outside of the BFO sense of role?

My personal interpretation of realisable_entities are that they would be more appropriately modelled as verbs and that the classes under verb (realisable_entity) are a step to far in an upper ontology. For example "heat" can be a role, a function or a disposition or what ever else gets invented under there. Therefore by having the classes of role, function etc. asserted under realisable entity introduces multiple inheritance and these classes would be more appropriately represented as defined classes, with some  re-working of the relations to this effect.

Anyway, that was not your question. I try to avoid the use of realisable entities as far as possible when building my ontologies, due to the issues above. I find it helpful to think of in terms of the requirements you are trying to satisfy rather than any modelling convention.

My assumption would be that a possible query would be "What chemical entities are solvents?" in fact this is probably not a realistic question at all, as the information returned is actually not that useful, I assume that a question like "What chemical entities are solvents and what are they solvents for? would be more useful. In terms of what is a solvent, I am also making the assumption that what you require is a classification system that groups chemical entities that are solvents, therefore, on this assumption I would treat "solvent" as a material classification in the same way you would model beta-blockers or ace-inhibitors.

I have limited chemistry background, which I am improving on, so I assume the following could be tightened up with appropriate chemistry terminology or labels, but hopefully it presents enough to provide a framework. 

A chemical entity is a solvent because it is capable of "dissolving" another material entity. I am ignoring form, such as solid liquid and gas, to keep the example simple (for me).

Therefore, we should be able to introduce a "dissolves<->is_dissolved_by" relation between chemical enties (which would need a chemically correct definition). If we assert; 

 CE1 dissolves CE2

then the following would be defined classes;

Solvent =  A solvent is a material entity that dissolves some material entity (solute)

and CE1 should infer under it

Solute =A solute is a material entity that is_dissolved_by some material entity (solvent).

and CE2 should infer under it

I think this example allows you to avoid the notion of roles and realisation and add the important information of what it is an solvent for/what is dissolves. This way should still allow you to describe the event in terms of a process such that

dissolving_process = has_particiapant (some CE1 and dissolves CE2) and has_participant_output some solution

I hope this helps


Frank

Michel Dumontier

unread,
Sep 13, 2010, 3:12:17 PM9/13/10
to cheminf-...@googlegroups.com
On Mon, Sep 13, 2010 at 2:03 PM, Frank Gibson <fgi...@gmail.com> wrote:
>
>
> On Mon, Sep 13, 2010 at 4:49 PM, Janna Hastings <janna.h...@gmail.com>
> wrote:
>>
>> Hi Frank,
>>
>> I can agree that the realizable entity branch of BFO needs work! Thanks
>> for your input and we'll bear it in mind for the future. I think for now we
>> won't make an explicit link to a process but this can certainly be added.
>
> Well if you think of the statement the other way around. If you follow the
> reasoning that all chemical entities bear all chemical entity roles all of
> the time. What new information have you added to the ontology by saying
> drugX has_role some solvent? You should not be mis-using the flag has_role
> some solvent and infer that it is a solvent, only when the solvent role is
> realised can you say, drugX is a solvent. Bearing a role is largely
> meaningless unless it is realised, which is my issue with asserting
> materials with roles and not considering the process.

the general idea for BFO roles is that they are ascribed because some
instances of the class have been demonstrated to have such roles. it
is informative. and as you suggest (and i have previously argued [1]),
it is more informative to know what process they are realized in.

[1] http://dumontierlab.com/pdf/2008_OWLEDEU_MR.pdf

>
>>
>> Do you havea  suggestion for how you would you model this outside of the
>> BFO sense of role?
>
> My personal interpretation of realisable_entities are that they would be
> more appropriately modelled as verbs and that the classes under verb
> (realisable_entity) are a step to far in an upper ontology. For example
> "heat" can be a role, a function or a disposition or what ever else gets
> invented under there. Therefore by having the classes of role, function etc.
> asserted under realisable entity introduces multiple inheritance and these
> classes would be more appropriately represented as defined classes, with
> some  re-working of the relations to this effect.

agreed, that is why i have been developing a new ontology, termed SIO
[2], which represents realizables as capabilities termed as verbs ('to
heat' [3])

[2] http://semanticscience.org/ontology/sio.owl
[3] http://semanticscience.org/resource/SIO_000346

> Anyway, that was not your question. I try to avoid the use of realisable
> entities as far as possible when building my ontologies, due to the issues
> above. I find it helpful to think of in terms of the requirements you are
> trying to satisfy rather than any modelling convention.
> My assumption would be that a possible query would be "What chemical
> entities are solvents?" in fact this is probably not a realistic question at
> all, as the information returned is actually not that useful,

it is useful.

> I assume that
> a question like "What chemical entities are solvents and what are they
> solvents for? would be more useful. In terms of what is a solvent, I am also
> making the assumption that what you require is a classification system that
> groups chemical entities that are solvents, therefore, on this assumption I
> would treat "solvent" as a material classification in the same way you would
> model beta-blockers or ace-inhibitors.
> I have limited chemistry background, which I am improving on, so I assume
> the following could be tightened up with appropriate chemistry terminology
> or labels, but hopefully it presents enough to provide a framework.
> A chemical entity is a solvent because it is capable of "dissolving" another
> material entity. I am ignoring form, such as solid liquid and gas, to keep
> the example simple (for me).

PATO qualifies these statements with "towards".

> Therefore, we should be able to introduce a "dissolves<->is_dissolved_by"
> relation between chemical enties (which would need a chemically correct
> definition). If we assert;
>  CE1 dissolves CE2
> then the following would be defined classes;
> Solvent =  A solvent is a material entity that dissolves some material
> entity (solute)
> and CE1 should infer under it
> Solute =A solute is a material entity that is_dissolved_by some material
> entity (solvent).
> and CE2 should infer under it
> I think this example allows you to avoid the notion of roles and realisation
> and add the important information of what it is an solvent for/what is
> dissolves. This way should still allow you to describe the event in terms of
> a process such that
> dissolving_process = has_particiapant (some CE1 and dissolves CE2) and
> has_participant_output some solution

i don't think you want to qualify CE1 with 'dissolves CE2'.

anyways, I would do it as follows:

dissolving_process
realizes some (solvent-role that inv(has_role) some CE1)
realizes some (solute-role that inv(has_role) some CE2)

along with a role chain
realizes o inv(has_role) -> has-participant

(as per my paper)

m.

--

Frank Gibson

unread,
Sep 14, 2010, 4:35:42 AM9/14/10
to cheminf-...@googlegroups.com
Interesting, I will have a look at that.
There is probably a more chemically correct/explicit way to describe it, dissolves was just the label I chose. However, Janna asked me to suggest a way to model this without using roles. I have no issue with what you suggest below as a way to implement roles. I think we are in agreement however, that just adding has_role to a material does not answer the question "what material is_a solvent?"

Frank 

Michel Dumontier

unread,
Sep 14, 2010, 9:48:45 AM9/14/10
to cheminf-...@googlegroups.com, cheminf-...@googlegroups.com
it does - just without knowing under what condition..

m

Egon Willighagen

unread,
Sep 14, 2010, 10:30:36 AM9/14/10
to cheminf-...@googlegroups.com
On Tue, Sep 14, 2010 at 3:48 PM, Michel Dumontier

>> There is probably a more chemically correct/explicit way to describe it,
>> dissolves was just the label I chose. However, Janna asked me to suggest a
>> way to model this without using roles. I have no issue with what you suggest
>> below as a way to implement roles. I think we are in agreement however, that
>> just adding has_role to a material does not answer the question "what
>> material is_a solvent?"
>
> it does - just without knowing under what condition..

OK, since my use case is a NMR measurement, the process is clear...
what construct should I use to annotate something as a process
(NMRMeasurement)?

That is, are processes reflected in CHEMINF?

Janna Hastings

unread,
Sep 14, 2010, 10:36:28 AM9/14/10
to cheminf-...@googlegroups.com
cheminf, no, unless we find there is a gap... doesn't OBI have these sort of things? Michel?

Janna

Michel_Dumontier

unread,
Sep 14, 2010, 10:38:28 AM9/14/10
to cheminf-...@googlegroups.com

Yes OBI

 

m.

 

From: cheminf-...@googlegroups.com [mailto:cheminf-...@googlegroups.com] On Behalf Of Janna Hastings
Sent: Tuesday, September 14, 2010 10:36 AM
To: cheminf-...@googlegroups.com
Subject: Re: how to annotate a molecular structure having a solvent role?

 

cheminf, no, unless we find there is a gap... doesn't OBI have these sort of things? Michel?

Janna

Frank Gibson

unread,
Sep 14, 2010, 11:49:03 AM9/14/10
to cheminf-...@googlegroups.com
yeah, I can point you in the direction of OBI (feel free to end the thread here and ping me offline). Are processes declared out of scope then for cheminfo, or just non-chemical reaction type processes?

Frank

Michel_Dumontier

unread,
Sep 14, 2010, 11:50:42 AM9/14/10
to cheminf-...@googlegroups.com

I think we will limit to processes involving the processing of chemical information J

 

m.

Frank Gibson

unread,
Sep 14, 2010, 11:54:12 AM9/14/10
to cheminf-...@googlegroups.com
I will agree to disagree on that, in the fear of creating another BFO discussion and leave it there :)

Frank

Michel Dumontier

unread,
Sep 14, 2010, 12:42:18 PM9/14/10
to cheminf-...@googlegroups.com
>>> i don't think you want to qualify CE1 with 'dissolves CE2'.
>>
>> There is probably a more chemically correct/explicit way to describe it,
>> dissolves was just the label I chose. However, Janna asked me to suggest a
>> way to model this without using roles. I have no issue with what you suggest
>> below as a way to implement roles. I think we are in agreement however, that
>> just adding has_role to a material does not answer the question "what
>> material is_a solvent?"
>>
>> it does - just without knowing under what condition..
>
> I will agree to disagree on that, in the fear of creating another BFO
> discussion and leave it there :)

Oh - i just meant that one can make a class "solvent" equivalent to
"has_role some solvent_role" and infer the subclasses... right?

m.

> Frank
>
-

Egon Willighagen

unread,
Sep 10, 2010, 3:02:58 PM9/10/10
to cheminf-...@googlegroups.com
On Fri, Sep 10, 2010 at 8:51 PM, Michel Dumontier
<michel.d...@gmail.com> wrote:
> shouldn't we be making the distinction between a molecular entity and
> a chemical substance? doesn't the role of a solvent belong to a
> substance?

Yeah, make sense... so, my current use case is this:

define a substance, consisting of one molecular entity, with an InChI,
and the role solvent...

Frank Gibson

unread,
Sep 15, 2010, 4:07:16 AM9/15/10
to cheminf-...@googlegroups.com
Ah, ok, yes they would be equivalent, but to has_role (and realises some solvent_role) not just bears role as all chemical entities would infer under it, if you follow that all chemical entities bear all chemical_entity_roles all of the time.

Frank

 
m.

> Frank
>
-
Reply all
Reply to author
Forward
0 new messages