-
Notifications
You must be signed in to change notification settings - Fork 7
BEL RDF schema #113
Comments
Great questions Valentin, thank you.
No, the inference consequences of hasSubject rdfs:subPropertyOf hasChild and hasObject rdfs:subPropertyOf hasChild were not intended. It is an error in the schema IMO. I believe the intention was to link a Statement resource to all child Term resources without needing to traverse both hasSubject and hasObject. For example a query to find all Statement referencing a ComplexAbundance: prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
prefix bel: <http://www.openbel.org/bel/> .
prefix belv: <http://www.openbel.org/vocabulary/> .
select ?statement where {
?statement <rdf:type> <belv:Statement> .
?statement <belv:hasChild> ?child .
?child <rdf:type> <belv:ComplexAbundance> .
} Additionally, a Statement can have only a subject Term, meaning the term was observed to occur in some biological context. See the example of a protein complex. Given the example's statement:
The RDF resource's class would be simultaneously ComplexAbundance, Term, and Statement: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix bel: <http://www.openbel.org/bel/> .
@prefix belv: <http://www.openbel.org/vocabulary/> .
<bel:complex_p_HGNC_CCND1_p_HGNC_CDK4> <rdf:type> <belv:ComplexAbundance>, <belv:Term>, <belv:Statement>;
<rdfs:label> "complex(p(HGNC:CCND1),p(HGNC:CDK4))";
<belv:hasSubject> <bel:complex_p_HGNC_CCND1_p_HGNC_CDK4>;
<belv:hasChild> <bel:p_HGNC_CCND1> .
Great point. This is again not the expectation. We should be separating instances of relationships (e.g. increases, directlyIncreases, etc.) from relationship classes (e.g. Relationship, CausalRelationship, etc.). For example, for increases the schema could be: @prefix belv: <http://www.openbel.org/vocabulary/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<belv:Relationship> <rdf:type> <rdfs:Class> .
<belv:CausalRelationship> <rdfs:subClassOf> <belv:Relationship> .
<belv:increases> <rdf:type> <belv:CausalRelationship> . Does this schema make sense? |
Thanks for this detailed answer. For the second point, the solution seems more complicated to me. Another idea would be to change more drastically the representation of statements. The BEL statement a(CHEBI:...) increases a(CHEBI:....) would be represented by the following triples:
In this case BEL Relationships would be represented as RDF properties with subProperties relationships to represent the hierarchy. Last proposition would be to use named graphs instead of reification. That would reduce largely the number of triples needed to represent BEL statements but it would force people to use some compatible storage solutions and libraries. |
Hi,
I generated the BEL RDF Schema running
bel rdfschema
I am a bit surprised by some statement in the produced ontology, let me explain:
Now we add a BEL statement s1 such as:
From the model we can infer:
Is it the expected behaviour that any Statement instance is also a Term by inference as soon as this statement has a hasObject or hasSubject property?
a_CHEBI_3'_5'-cyclic_AMP_Increases_gtp_p_HGNC_RAP1A hasRelationship Increases
While in the model we have:
hasRelationship range Relationship
Increases subClassOf CausalRelationship
We can thus infer:
Increases a Class
Increases a Relationship
Is it intended that Increases is defined as a Class but also used as an individual (instance of Relationship?).
The text was updated successfully, but these errors were encountered: