On Mar 12, 2008, at 9:06 PM, Tore Eriksson wrote:
Hi,
I am contemplating how to represent biochemical reactions in RDF,
and I
have some questions about properties and subproperties that I hope
anyone could shed some light on. What I want to do is to model
reactions
and the involved entities like this:
_:bn1 a :Reaction;
:substrate <info:inchi/InChI=1/C4H4O4/c5-3(6)1-2-4(7)8/h1-2H,(H,
5,6)(H,7,8)/b2-1+/f/h5,7H>;
:substrate <info:inchi/InChI=1/H2O/h1H2>;
:enzyme <http://purl.uniprot.org/uniprot/P07954>;
:product <info:inchi/InChI=1/C4H6O5/c5-2(4(8)9)1-3(6)7/h2,5H,
1H2,(H,6,7)(H,8,9)/t2-/m0/s1/f/h
6,8H>.
My idea is to substitute the predicate :enzyme with molecular
functions
that are subclasses of GO:0003824 (catalytic activity), and use the GO
hiearchy to constrain which type of catalytic activity is:
@prefix GO: <http://purl.org/obo/owl/GO#>
_:bn1 a :Reaction;
:substrate <info:inchi/InChI=1/C4H4O4/c5-3(6)1-2-4(7)8/h1-2H,(H,
5,6)(H,7,8)/b2-1+/f/h5,7H>;
:substrate <info:inchi/InChI=1/H2O/h1H2>;
GO:GO_0004333 <http://purl.uniprot.org/uniprot/P07954>;
:product <info:inchi/InChI=1/C4H6O5/c5-2(4(8)9)1-3(6)7/h2,5H,
1H2,(H,6,7)(H,8,9)/t2-/m0/s1/f/h
6,8H>.
As the GO categories presumably are of type rdfs:Class, my question is
if I am allowed to do this at all.
Hi Tore
No one's preventing you from doing it. However, it would almost
certainly be a bad idea.
OWL1.1. may allow you to mix properties and classes in this way, but
even so it's unlikely to carry the semantics you intend
You could define your own property and link it to the GO class via an
annotation property. Here you're just using GO as fancy
documentation. This approach would probably be the most in keeping
with the BioPAX-y OO type approach above
alternatively you can go down what I guess is more the biopax-obo
route; make your reaction a subclass of the GO function, use classes
to represent the proteins and chemicals involved, with some kind of
participation relation between the participants and the reaction
As Alan says biopax-obo would be a good list to ask about this
Also, I suppose I have to remap the
class hierarchy to a property hierarchy, since the properties will not
heed the rdfs:subClassOf hierarchy. Perhaps something like this in
SPARQL:
PREFIX GO: <http://purl.org/obo/owl/GO#>
CONSTRUCT { ?a a rdfs:Property .
?b a rdfs:Property .
?a rdfs:subPropertyOf ?b }
WHERE { GRAPH <http://www.berkeleybop.org/ontologies/obo-all/
molecular_function/molecular_function.owl>
{ ?a a GO:GO_000382 .
?b a GO:GO_000382 .
?a rdfs:subClassOf ?b } } .
'a' is a synonym for rdf:type isn't it? Which means ?a and ?b would
be in the ABox, so you couldn't have a subClassOf axiom between them
in OWL1.0 DL
Another question is how can I write this in RDF schema or OWL? I
have a
nagging feeling that I am over-reaching on this one... Any comments
welcome.
Not sure what you mean here.
Cheers
Chris
Regards,
Tore Eriksson
Taisho Pharmaceutical Co., Ltd.
_______________________________________________________________
Tore Eriksson [tore.eriksson ad po.rd.taisho.co.jp]