Accord-Project / aec3po

AEC3PO: Architecture, Engineering, Construction Compliance Checking and Permitting Ontology
https://w3id.org/lbd/aec3po/
2 stars 1 forks source link

AndCheck, OrCheck vs RASE #18

Closed VladimirAlexiev closed 1 year ago

VladimirAlexiev commented 1 year ago

RASE dictates a certain evaluation logic (R are evaled as "and", E are evaled as "not-or", etc). So why do we need AndCheck, OrCheck? https://github.com/Accord-Project/aec3po/blob/5fb6f7e2b8b9f0f208caeeab68461aa8b3c0dfcd/src/aec3po.ttl#L14

beachtom commented 1 year ago

My vote would be for removing And Or - as we will use RASE in ACCORD.

However, if we want to offer multiple approaches - we could leave this - but we should make it clear in the documentation

VladimirAlexiev commented 1 year ago

Closely related to https://github.com/Accord-Project/aec3po/issues/9

beachtom commented 1 year ago

Most ORs are not really OR they are AND with applicabilities inside.

But in the case we need a very explicit OR it can be done with a set of Exception Boxes

VladimirAlexiev commented 1 year ago

@beachtom can you give some examples?

beachtom commented 1 year ago

So an example would be something like:

A door must comply with one of the following: A) Red doors should be 5 m wide B) Blue doors must be 5.5m wide

This looks like an OR - but it is actually a set of And with multiple applicabilities. Certainly in the UK I found true OR things very rare. But we need to support them in any case.

VladimirAlexiev commented 1 year ago

Here's another OR example:

An accessible door:

Guess we can represent it like this:

But should we burden the SME to do this refactoring? And how does he decide which OR branch to put as main Requirement, and which as subsidiary Exception?

beachtom commented 1 year ago

So I would RASE Tag that as: [R1] [A1]An accessible doorp[/A1] [E1]must be motorized[/E1], OR [E2]must have opening force at the edge LTE 50 Newton[/E2] [/R1]

This will translate down to R1 = !A1 || E1 || E2