SWCLOS is an Open Source Program that was originally developed at GALAXY EXPRESS CORPORATION in Japan, and Seiji Koide, who is the developer of SWCLOS, has been continued updating it. The latest version is available from Koide's home page at National Institute of Informatics (NII) http://www-kasm.nii.ac.jp/~koide/SWCLOS2-en.htm.
The SWCLOS current version is developed on Allegro Common Lisp (ACL) 8.1 and 8.2 Windows version that is delivered by Franz Inc. We hope someone ports it to other lisp systems, although it is probably hard, because partly the implementation is concerned with ACL specific features.
GALAXY EXPRESS CORPORATION held all copyrights and allowed anyone to use
SWCLOS anyhow AS IS, except modifying the package name of gx and
gx-user, and the object name galaxy. eGXf was the rocket
name from GALAXY EXPRESS CORPORATION. See README file in delivery.
Note that the company GALAXY EXPRESS CORPORATION was undertaken by IHI Corporation at 2010, and the developer Seiji Koide is still working for IHI. So, he believes this term is inherited by IHI and still effective for the company IHI instead of GALAXY. Note that SWCLOS is a part of successful results of Japanese IT national programs titled gBuilding Operation Support System for Large-Scale Systems using IT.h
After compiling and loading SWCLOS into the ACL modern lisp version, it is much better to enter gx-user package in the lisp listener window to use SWCLOS. Please note that SWCLOS requires case-sensitive-lower on case mode of lisp-reader to distinguish upper and lower case of letters. This features is not ANSI-standard today, but we hope it will be so, soon.
cg-user(1): (in-package gx-user)
#<The gx-user
package>
gx-user(2):
Franz has prepared a good tutorial for the case of letters. See http://www.franz.com/support/tutorials/casemode-tutorial.htm.
In Semantic Webs you assume that the knowledge always increases and the interpretation become monotonously more precise and richer. SWCLOS leverages the monotonicity principle in Semantic Webs to accept the forward reference in ontology description. In the current version, there are no delete functions for entities in ontologies, and there is no undo functionality (if you input inconsistent data, SWCLOS immediately signal an alarm and open the break window, so you can remedy problems immediately). Such functions will be provided at the next version.
NOTE THAT THE FOLLOWING SENTENCE SHOULD BE REMOVED.Please note
that (setf (slot-value ...) ...) do not overwrite the previous slot value. The
slotvalue setting function just adds a new value into the slot. This is a
reflection of the monotonicity principle. Do not fear it. You can make slot
unbound, so you can reset any values after unbinding, if you would like
so.
You should use put-value function to put a new value to a
slot value place with the above monotonic principle. Slot-value setting function (setf (slot-value ...) ...)
keeps the original CLOS semantics in this version.
Semantic Webs assume that the World Wide Webs are dynamic, changeable, and open in the sense that no one knows all of WWWs. From the viewpoint of logic, Close World Assumption is a basic assumption of inference. Therefore, people who are accustomed to logic thinking should mind this point.
The primary function of Description Logics (DLs) is i) to classify objects to classes, ii) to determine whether or not a class is subsumed by another class. In SWCLOS, this work is performed by i) gx:typep and ii) gx:subtypep in the RDF universe, subsumed-p in the OWL universe. These functions return two values; the first value represents yes/no for query and the second represents the certainty. Therefore, we can deem such return values that the pair of <t,t> expresses boolean true, <nil,t> expresses boolean false, and <nil,nil> means unknown. Note <t,nil> never happens. This ternary-value logic is an extension of ANSI Common Lisp native specification on cl:subtypep, which returns two values described above. See the document of ANSI Common Lisp http://www.franz.com/support/documentation/8.2/ansicl/dictentr/subtypep.htm. However, you do not need to mind how to use ternary value logic. If you use only the first return value, your program does not care of unknown and it is regarded as boolean false. If you are interested how to compute ternary-value logic in SWCLOS, see the source code you obtained.