在旧版的OpenCyc Java API中,可以通过调用类似于以下代码的方式创建一个简单的Cyc术语:
new CycConstant(“Cat”, new Guid(“bd590573-9c29-11b1-9dad-c379636f7270”))
使用这种方法,不需要与服务器进行往返通信。使用新的KB API(http://dev.cyc.com/cyc-api/kb-api.html),是否有类似的方法可以做到这一点,或者这个API是否需要回调服务器?
回答:
是的,KB API必须至少调用一次Cyc服务器。
KB API的所有对象(有一些例外)都有一个已弃用的get方法,该方法接受底层的基础API对象。
例如,KBCollectionImpl.get(CycObject)适用于“Cat”这个概念。
CycConstant catHL = new CycConstant(“Cat”, new Guid(“bd590573-9c29-11b1-9dad-c379636f7270”));
KBCollection catEL = KBCollectionImpl.get(catHL);
这样做可以帮助API定位HL术语,如果只给定一个字符串,API也需要这样做。
但是,要验证“Cat”这个概念确实是一个集合,并进一步将其变成FirstOrderCollection的对象,API需要访问Cyc服务器。
在未来的版本中,如果用户确定,我们可能会放宽这一要求,并允许他们禁用此检查。