(imported comment written by SystemAdmin)
Lee Wei
For the relevance language, there is a concept of using order of processing to deal with errors:
(False) AND () = False
(True) AND () =
() AND (True/False) =
(True) OR () = True
() OR (True/False) =
(False) OR () =
There is a subtlety to this idea of dealing with errors using order of processing that lee way is talking about, which is causing your problem
In the cases Lee Wei mentioned, an is what you might call a run time error in another language. Basically the relevance expression is syntactically correct, though it may not work when its actually run. For example:
Q: (true) or (name of file “asdasdasd” = “test”)
A: True
T: 57.312 ms
Q: (false) or (name of file “asdasdasd” = “test”)
E: Singular expression refers to nonexistent object.
File “asdasdasd” doesn’t exist anywhere, so trying get its name will return an error. However using order of operations, the relevance engine will evaluate the first part of the expression and says “(true or (anything)) is always true, so dont even bother looking at the rest”
However there are some errors that would be what you might call a compilation error. The first thing the relevance engine does is parse the expression to make sure it makes sense. If it doesn’t it will throw an error before it even starts to process the specific sub expressions:
Q: (true) or (this_inspector_doesn’t_exist)
E: The operator “this_inspector_doesn’t_exist” is not defined.
In your case the “object repository” inspector doesnt exist on some OSes, so they will not parse correctly and just error out.
Lee Wei’s if/then/else trick will take care of this. I just found it fun to explain it all for some reason…
-Zak