Question about reasoning

Hi guys I have a question regarding reasoning.

If I have a instance say called inst:beam1 and I say that the class ccs:Beam is equivalent to ifcowl:Beam:

inst:beam1 rdf:type ifcowl:Beam

ccs:Beam owl:equivalentClass ifcowl:Beam.

Then it should reason that:

inst:beam1 rdf:type ccs:Beam.

Now what if I have another class called ccs:FoundationBeam and I know for a fact that any instance cannot be both ccs:Beam and ccs:FoundationBeam.

I have a rule that determines when an instance is a ccs:FoundationBeam :

IF {
?instances a ccs:FoundationBeam }

Now say I through my first definitions find that inst:beam1 is rdf:type ccs:Beam, but through my rule determines that it is rdf:type ccs:FoundationBeam, but in reality it cannot be both. I want it to weight the ruleset more i.e. that it should say that if it has reasoned that both facts are true then only the fact from the ruleset is kept or holds true. I hope you understand my question. Is there any way to do this?

I don’t think there’s any simple way to do that. You said that you know that something can’t be both ccs:Beam and ccs:Foundation although you didn’t say if you expressed that in the ontology with ccs:Beam owl:disjointWith ccs:FoundationBeam. I believe that this might be an example of nonmonotomic reasoning. If something was asserted to be a Beam and later asserted to be a FoundationBeam you want to retract the previous statement that it was a Beam.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.