ha-mo-we / Racer

Racer is a knowledge representation system that implements a highly optimized tableau calculus for the description logic SRIQ(D).
Other
106 stars 19 forks source link

Still actively maintained? Any chance to get role chaining added? #17

Closed gschadow closed 5 years ago

gschadow commented 5 years ago

I love RACER, I love working directly in LISP with it. I tried CEL as an alternative, but it was a lot less usable for me. CEL has no disjunction and no negation. But CEL has general role chaining. And that is very tempting. Example:

(transitive has-content)

(implies-role 
  (compose 
      has-content 
      has-active-substance) 
  has-active-substance)

Is there any chance that someone might want to add role chaining? Or would this likely change the algorithm so much that nobody would dare to try? I realize that there might be a trade-off with role cardinality axioms or some such.

Thanks.

PS: Other question, I see that Franz, Inc. still sells a version of RacerPro? Did they acquire it and develop it further? How similar is open source RACER?

ha-mo-we commented 5 years ago

In Racer you can use the syntax

(implies-role (has-content has-active-substance) has-active-substance)

Please note that Racer supports regular role composition as described for SROIQ.

Best regards, Ralf Möller

ha-mo-we commented 5 years ago

We try to update the implementation such that it can be compile with new Common Lisp systems. Some time ago, SBCL caused problems, which were solved.

gschadow commented 5 years ago

WOW!!! This is excellent! Amazing! Super! I am so glad you replied, thank you! This is not actually written in the manual, which says that implies-role uses RN1 RN2 only. But it works as you say!

(delete-all-tboxes)

(transitive has-content)
(implies-role (has-content has-active-substance) has-active-substance)

(concept-subsumes?
  (some has-active-substance X)
  (some has-active-substance X)) => T

(concept-subsumes?
  (some has-active-substance X)
  (some has-content
    (some has-active-substance X))) => T

(concept-subsumes?
  (some has-active-substance X)
  (some has-content
    (some has-content
      (some has-active-substance X)))) => T

(concept-subsumes?
  (some has-active-substance X)
  (some has-content X)) => NIL

This is so lovely! Now I get to redo my ontology over again, but this time it will be as simple as it should be. And I won't need to consider using CEL at all any more.

I love RACER! And I love writing in S-Exprs. I will be sure to add you into the acknowledgement for my work and send you a copy when it goes to publishing.

gschadow commented 5 years ago

Oh, and I think your last comment was meant on a different issue. I had no problem compiling on my latest download of SBCL for windows. Worked smooth like a charm with quick-lisp.