如何从Cyc KB中删除NART

时间:2015-07-24 15:42:09

标签: java artificial-intelligence opencyc

当我删除NART并在KB中搜索NART字符串时,我仍然可以看到它。 NART与常量有何不同。为什么我不能删除它们。

2 个答案:

答案 0 :(得分:0)

以下代码创建了三个NART和一个NAUT,演示了各种方法。如果取消注释最后一行,您将看到我们不再使用revenueForPeriodByAccountingCOC进行断言。这表明NART已被删除。但请注意,如果您在浏览器中搜索术语(FiscalYearFn Walmart-CommericalOrganization 2012),您将看到基本的NAUT及其#$ isa,但它不会有任何断言。对于常量,您将看到一个明确的通知,它不在KB中。这是因为非原子术语只能由于它们的句法表示而显示非常基本的信息。不是因为它们在KB中。


@Test
  public void testUnreifiableFunctionWithDateInput2() throws KBApiException {

    KBFunctionImpl f1 = KBFunctionImpl.get ("USDollarFn");
    KBFunctionImpl f2 = f1.findOrCreateFunctionalTerm(KBFunctionImpl.class, 2012);
    f2.addResultIsa(KBCollectionImpl.get("MonetaryValue"), ContextImpl.get("UniversalVocabularyMt"));
    FactImpl.findOrCreate(new SentenceImpl(KBPredicateImpl.get("argsIsa"), f2, KBCollectionImpl.get("NumericInterval")));
    KBIndividual i1 = f2.findOrCreateFunctionalTerm(KBIndividualImpl.class, 10000000);

    KBPredicate p = KBPredicateImpl.get("revenueForPeriodByAccountingCOC");
    KBIndividualImpl w = KBIndividualImpl.get("Walmart-CommercialOrganization");

    KBFunctionImpl fy = KBFunctionImpl.get("FiscalYearFn");
    KBIndividual i2 = fy.findOrCreateFunctionalTerm(KBIndividualImpl.class, w, 2012);
    KBIndividual coc = KBIndividualImpl.findOrCreate("(#$AccountingCodeOfTypeTypicallyUsedByAgentFn #$GenerallyAcceptedAccountingPrinciples #$Walmart-CommercialOrganization)");
    w.addFact(Constants.uvMt(), p, 1, i1, i2, coc);

    // i2.delete();
  }

答案 1 :(得分:0)

有关详细信息,请访问:http://dev.cyc.com

此处有更多代码示例:

http://dev.cyc.com/cyc-api/samples/index.html