Problems with opencyc-4.0

CrazyMarty
2012-10-20
2013-05-28
  • CrazyMarty
    CrazyMarty
    2012-10-20

    Seems like such a simple thing, but opencyc believes that 16 is not an integer between 1 & 31:

    Sentence not Well-Formed
    Mt : BaseKB
    Sentence :
    (birthDate ChristopherEccleston-Actor
    (DayFn 16
       (MonthFn February
         (YearFn 1964))))

    Repairs :
    No repairs available. Could not determine any way to make the above sentence well-formed by adding new knowledge.

    Explanation :
    Term 16 violates defnIff CYC-INTEGER-RANGE of collection #<(IntegerFromToFn 1 31)> applicable to arg 1 of DayFn in mt BaseKB. Term 16 violates defns of arg-isa #<(IntegerFromToFn 1 31)> applicable to argument 1 of relation DayFn in mt BaseKB.

    Copyright © 1995 - 2012 Cycorp. All rights reserved.

     
  • David Baxter
    David Baxter
    2012-10-22

    Ugh, how embarrassing! This support is implemented via a forward rule that appears to be missing from OpenCyc. It should work if you assert this rule in #$BaseKB, with direction "forward": (Click "show" for Assertion Context in the Assert tool to enable this option):

    (implies
       (and
         (different ?HIGH ?LOW)
         (termOfUnit ?NAT
           (IntegerFromToFn ?LOW ?HIGH)))
       (integerRange ?NAT
         (Unity ?LOW ?HIGH)))

     
  • CrazyMarty
    CrazyMarty
    2012-11-08

    Yes, that does work as expected.