Cyc Core API CHANGELOG

For more information, view the README bundled with this release or visit the Cyc Developer Center.

Important note about backwards-compatibility: It is expected that more release candidates will follow. Until the final 1.0.0 release, it is expected that future release candidates will break backwards compatibility.

1.0.0-rc5 - 2015-12-18

The fifth release candidate of Cycorp’s Java API suite, and the first in which the Core API specification and the Core Client implementation are packaged as wholly separate artifacts.

1.0.0-rc5 is not backwards-compatible with earlier API releases. Note that ResearchCyc 4.0q and EnterpriseCyc 1.7-preview require server code patching for compatibility with the 1.0.0-rc5 release. See the Cyc Core Client for details.

The overarching goal of this revision is to be the last release before 1.0.0 with any compatibility- breaking changes. Note, however, that this is not a guarantee: additional disruptive changes may be made before 1.0.0 if deemed necessary.

API & implementation division

There is now a clean division between the Core APIs and their reference implementation; they have been split into two artifacts:

  • The implementation-independent Core API specification: core-api-spec
  • The Core Client reference implementation: cyc-core-client-impl

Details:

  • The core-api-suite project has been split into two sibling projects: core-api-specand core-client.
  • The relevant artifacts generated by these projects (the artifacts that projects are typically expected to specify as dependencies) are cyc-core-api and cyc-core-client-impl, respectively.
  • Introduces implementation-independent factory classes for Core API objects. Code written against the cyc-core-api should typically not need to refer to any implementation-specific classes or methods (although an implementation library will need to be present at run-time.)

In short, you’ll typically need to include two dependencies to use the Core APIs. For example, in Maven:

<dependency>
  <!-- Core API specification -->
  <groupId>com.cyc</groupId>
  <artifactId>cyc-core-api</artifactId>
  <version>1.0.0-rc5</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <!-- Reference implementation for the Core API -->
  <groupId>com.cyc</groupId>
  <artifactId>cyc-core-client-impl</artifactId>
  <version>1.0.0-rc5</version>
  <scope>runtime</scope>
</dependency>

Caveat: Some functionality, such as proofview generation, is not yet represented in the Core API spec, so there are still some cases in which the user might need to write code against cyc-core-client-impl. This functionality will be added to the Core API Spec in an upcoming revision.

API consistency

  • All cyc-core-api class names and method signatures conform to the Google Java Style coding standards.

Other changes

  • The Cyc Core API GitHub repository has been renamed and expanded into the Cyc Java API Suite repository, of which core-api-spec and core-client are sub-projects.
  • Reorganization of classes (especially exceptions) within the com.cyc.* package space.
  • Implementation projects built on the Base Client have had their artifactIds renamed to incorporate the word “client”. E.g., cyc-core-suite is now cyc-core-client-impl, cyc-session is now cyc-session-client, etc.
  • Project/module directories have been renamed to mirror their artifactIds, dropping the “cyc-” prefix. E.g., the cyc-session-client project lives in the session-client directory.
  • The cyc-core-api-parent and cyc-core-client-parent POMs now inherit from cyc-api-parent, which inherits from cyc-default-config-parent.
  • Assorted bug fixes.

1.0.0-rc4 - 2015-10-29

The fourth release candidate of Cycorp’s Java API suite. 1.0.0-rc4 is not backwards-compatible with earlier API releases. Note that ResearchCyc 4.0q and EnterpriseCyc 1.7-preview require server code patching for compatibility with the 1.0.0-rc4 release.

Query API

  • Instead of creating Query objects directly, call QueryFactory.getQuery(…)
  • Query API no longer uses BaseClient CycObjects.

Natural language

  • Adds com.cyc.nl package to Core API Specification to support upcoming release of NL API.
  • Split com.cyc.baseclient.nl.Paraphraser class into com.cyc.nl.Paraphraser interface (in Core API Spec) and com.cyc.baseclient.nl.ParaphraserFactory class (in Base Client).

Session API

  • Adds API support for closing CycSessions and SessionManagers. See Session API Connection Management for details.
  • Significant improvements to session resource management, especially CycAccess management.
  • Bug fixes for threading issues.

Other changes

  • Critical bug fixes related to obfuscated functions in the planned upcoming release of OpenCyc 5.0-preview.
  • Assorted bug fixes.

1.0.0-rc3 - 2015-08-14

The third release candidate of Cycorp’s Java API suite. 1.0.0-rc3 is not backwards-compatible with earlier API releases. Note that ResearchCyc 4.0q and EnterpriseCyc 1.7-preview require server code patching for compatibility with the 1.0.0-rc3 release.

New: Support for upcoming OpenCyc release

Adds support for the planned upcoming release of OpenCyc 5.0-preview. Note that the OpenCyc server will not have support for advanced features such as QuerySearch or ProofViewJustification. Classes and methods which are not supported by OpenCyc will reflect this in their javadoc description and in their signature by declaring that they throw a com.cyc.session.exception.OpenCycUnsupportedServerException.

There are no plans to support previous versions of OpenCyc.

Improved: Core API Specification

  • Query API interfaces moved into CoreAPISpec Maven module.
  • Adds the QueryFactory (com.cyc.query.QueryFactory) to facilitate query construction.
  • Compatibility with different Cyc server editions and versions is now better-documented via the UnsupportedCycOperationException and OpenCycUnsupportedFeatureException exceptions.

Other changes

  • Speeds up KB API conversion of terms to KBObjects, which in turn speeds up Query#getResultSet()#getKBObject(). This resolves issue 2.
  • Core API Suite can detect and apply missing SubL code patches to a Cyc server. This behavior is disabled by default, but is easily enabled via System properties. See server-patching.md for details.
  • Links to Cyc Dev Center have been modified to reflect improved URL scheme.
  • Assorted bug fixes.

1.0.0-rc2 - 2015-04-07

The second release candidate of Cycorp’s Java API suite for interacting with the Cyc inference engine and knowledge base. Note that 1.0.0-rc2 is not backwards-compatible with earlier API releases.

New: Core API Suite Bundle

Adds the Core API Suite Bundle module (artifact cyc-core-suite in the CoreAPISuite subdir) which packages all API interfaces and implementation classes. Details:

  • Produces a single cyc-core-suite artifact which can be specified instead of individually specifying cyc-session, cyc-kb, etc.
  • Builds a single jar (in maven parlance, an “uberjar”) which contains all of its dependencies. Useful for some environments where it is complicated to pull binaries down from the Internet.

New: Core API Specification

Adds the Core API Specification module (artifact cyc-core-api in the CoreAPISpec subdir) to consolidate and clarify the interfaces which define the Core API Suite. Details:

  • KB API interfaces moved into CoreAPISpec.
  • Session API interfaces moved into CoreAPISpec.

Other changes

  • Fixes tests which were failing against EnterpriseCyc.
  • Changes parent pom artifactId from cyc-core-api to the more accurate cyc-core-parent.
  • KB API test suite should no longer seem to hang per issue 1.
  • Updates developer email address in pom files to one which people can actually send mail to.
  • Assorted updates in pom files to name and description elements.

1.0.0-rc1 - 2015-01-04

First release candidate of Cycorp’s Java API suite for interacting with the Cyc inference engine and knowledge base. Note that 1.0.0-rc1 is not backwards-compatible with earlier API releases.

Details:

  • Updates the KB API (1.0.0-rc1), which streamlines the manipulation of CycL-based Java objects.
  • Updates the Query API (1.0.0-rc1), which streamlines asking queries and handling answers.
  • Introduces the Session API (1.0.0-rc1), which manages configurations and connections to Cyc servers.
  • Replaces the Base API with the Base Client (1.0.0-rc1), a Java client for connecting to a Cyc server and handling HL data. Note that the Base Client is subject to frequent change, and so is not supported for external developers.

1.0.0-Preview - 2014-07-09

Initial limited preview release! This is a new Java API suite to manipulate and query the Cyc KB.

Details:

  • Introduces the KB API, which streamlines the manipulation of CycL-based Java objects.
  • Introduces the Query API, which streamlines asking queries and handling answers.
  • Introduces the Base API, the successor to the OpenCyc API.