@nwinant nwinant released this Dec 24, 2015 · 12 commits to master since this release

Assets 2

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.