proposed changes to inheritable_link view

0 views
Skip to first unread message

balhoff

unread,
May 26, 2010, 12:37:18 AM5/26/10
to obd-dev
(I sent this via email yesterday, but it didn't go through, so I'm
reposting via the groups web interface)

I'd like to make a couple changes to inheritable_link. This will
impact reasoning because this view is used by the reasoner to find
links to propagate over is_a. It is currently defined like this:

CREATE OR REPLACE VIEW inheritable_link AS SELECT link.* FROM link
WHERE
link.combinator!='U' AND link.is_metadata='f' AND link.is_negated='f'
AND
link.reiflink_node_id IS NULL;

I would like to remove the check for a null reiflink_node_id. This is
preventing reified statements from being inherited, for example if you
annotate that a taxonomic family A exhibits phenotype X, then every
species that is_a family A should also exhibit phenotype X. Is there
a reason for excluding reified statements?

Another issue is metadata links. Currently very few of the links that
should be considered metadata have link.is_metadata marked as true.
Instead the predicate node that is used has its is_metadata property
set to true. We use this for relations such as 'has_rank' which
should not be inherited. I think this could be fixed one of two
ways. I could change inheritable_link to check the is_metadata value
for the predicate node of each link, or instead change the
obo2database loader so that links which use metadata predicates are
created in OBD with the is_metadata flag set to true. Which is
preferred? Is there another way we should be marking relations so
that they are not inherited?

If these changes aren't desired in the main OBD we can always replace
the inheritable_link view in our build script, but I don't see any
reasons to do that yet.

Thanks,
Jim

____________________________________________
James P. Balhoff, Ph.D.
National Evolutionary Synthesis Center
2024 West Main St., Suite A200
Durham, NC 27705
USA

Chris Mungall

unread,
May 27, 2010, 11:04:40 AM5/27/10
to obd...@googlegroups.com

On May 25, 2010, at 9:37 PM, balhoff wrote:

> (I sent this via email yesterday, but it didn't go through, so I'm
> reposting via the groups web interface)
>
> I'd like to make a couple changes to inheritable_link. This will
> impact reasoning because this view is used by the reasoner to find
> links to propagate over is_a. It is currently defined like this:
>
> CREATE OR REPLACE VIEW inheritable_link AS SELECT link.* FROM link
> WHERE
> link.combinator!='U' AND link.is_metadata='f' AND link.is_negated='f'
> AND
> link.reiflink_node_id IS NULL;
>
> I would like to remove the check for a null reiflink_node_id. This is
> preventing reified statements from being inherited, for example if you
> annotate that a taxonomic family A exhibits phenotype X, then every
> species that is_a family A should also exhibit phenotype X. Is there
> a reason for excluding reified statements?

The idea was that these statements would stand outside the rest of the
knowledge base. The original idea was for annotations to have the same
semantics as the "that" operator in the KR language IKL.

P believes (X R Y)
X R Z follows logically from X R Y

it doesn't necessarily follow that
either
[1] P believes X R Z (because P may be unaware of the implications of
believing X R Y)
or
[2] X R Z (because P may be wrong)

However, you can ask questions such as
[1] if what P believes is true, what follows?
[2] if P believes all the axioms in the KB, what does P believe

These equated to doing joins over existing pre-inferred facts in the
KB. This turned out to be quite convenient in terms of keeping the
number of inferred links in the kb down yet allowing for more complex
questions.

That's the rationale. The problem you're encountering is that OBD is
overloading a generic but useful notion of reification with a more
powerful notion of quoting statements. I suggest you go ahead and make
the change you suggest, and then if we need the more powerful quoting
mechanism we can find another way to restrict these quoted statements
from being used by the reasoner (for example, making the statement an
instance of some kind of Quoted class)

You may want the quoting mechanism further down the line for homology
statements.

> Another issue is metadata links. Currently very few of the links that
> should be considered metadata have link.is_metadata marked as true.
> Instead the predicate node that is used has its is_metadata property
> set to true. We use this for relations such as 'has_rank' which
> should not be inherited. I think this could be fixed one of two
> ways. I could change inheritable_link to check the is_metadata value
> for the predicate node of each link, or instead change the
> obo2database loader so that links which use metadata predicates are
> created in OBD with the is_metadata flag set to true. Which is
> preferred? Is there another way we should be marking relations so
> that they are not inherited?

I think the loader should be fixed here.

> If these changes aren't desired in the main OBD we can always replace
> the inheritable_link view in our build script, but I don't see any
> reasons to do that yet.

Nope, let's keep things uniform.

> Thanks,
> Jim
>
> ____________________________________________
> James P. Balhoff, Ph.D.
> National Evolutionary Synthesis Center
> 2024 West Main St., Suite A200
> Durham, NC 27705
> USA
>

> --
> You received this message because you are subscribed to the Google
> Groups "obd-dev" group.
> To post to this group, send email to obd...@googlegroups.com.
> To unsubscribe from this group, send email to obd-dev+u...@googlegroups.com
> .
> For more options, visit this group at http://groups.google.com/group/obd-dev?hl=en
> .
>
>

balhoff

unread,
Jun 4, 2010, 11:04:14 AM6/4/10
to obd-dev
Hi Chris,

Thanks for the reply - I'm a bit slow responding because something is
off with my membership for this group. I left and
re-applied for membership.

On May 27, 11:04 am, Chris Mungall <c...@berkeleybop.org> wrote:

> That's the rationale. The problem you're encountering is that OBD is  
> overloading a generic but useful notion of reification with a more  
> powerful notion of quoting statements. I suggest you go ahead and make  
> the change you suggest, and then if we need the more powerful quoting  
> mechanism we can find another way to restrict these quoted statements  
> from being used by the reasoner (for example, making the statement an  
> instance of some kind of Quoted class)

Okay, thanks, the quoting idea makes sense but for now I will go ahead
and remove the exclusion on reified statements.

> > I could change inheritable_link to check the is_metadata value
> > for the predicate node of each link, or instead change the
> > obo2database loader so that links which use metadata predicates are
> > created in OBD with the is_metadata flag set to true.  Which is
> > preferred?  Is there another way we should be marking relations so
> > that they are not inherited?
>
> I think the loader should be fixed here.

Okay, great, I will look into this.

Thanks,
Jim
Reply all
Reply to author
Forward
0 new messages