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]







Reply via email to