Full description
SWI-Prolog is a versatile implementation of the Prolog
    language. Although SWI-Prolog gained its popularity primarily in education,
    its development is mostly driven by the needs for application
    development. This is facilitated by a rich interface to other IT components
    by supporting many document types and (network) protocols as well as a
    comprehensive low-level interface to C that is the basis for high-level
    interfaces to C++, Java (bundled) and other externally available.