Documentation maintainence is a difficult and costly process. Existing forms of software documentation exist independent from the code it describes. As a result, problems arise when source code evolves since there is no traceability between the documentation and code domains.
CodeLink, a semantic wiki designed for code documentation attempts to address this problem. CodeLink provides a platform for establishing traceability links between developer documentation and code concepts. Traceability links between documentation and code can be explicitly created by the user through annotations, or inferred through the use of natural language analysis. CodeLink employs an ontology as its knowledge model and a semantic wiki as its user interface. Annotations on traceability relations in the ontology serve to connect natural language phrases with formal ontology concepts. In this paper, the motivation, design and implementation of CodeLink are described. Particular focus is placed on the natural language processing (NLP) component of CodeLink. The process in which the NLP component infers traceability links from the natural language text in the semantic wiki is described in depth. Several methods of querying and retrieving information from the knowledge model are discussed, followed by a summary of related and future work.
Download [Download not found], course project for CS886: Natural Language Computing.
Zachary Quinto will play Spock in the upcoming Star Trek movie. Sylar is definitely one of the most memorable characters in Heroes, so I have high hopes for the new Spock! ★
I ran into a problem when using the statement-centric find(…) query using the OntModel with the RDF Vocabulary. The specified RDF resources were treated like NULL in the find function. In order to fix this, create a ResProperty instead of a ResResource, and all will be well. This can be done like so:
$rest = $this->ontModel->find($statement->getObject(), new ResProperty(RDF_NAMESPACE_URI . 'rest'), NULL);
References
My open source contribution, a bug report
: ResResource as parameter for ResModel::find does not work.
It’s unfortunately that much documentation on the Eclipse Modeling Framework (EMF) is scattered around the ‘net. After digging through the EMF newsgroups (which are immensely useful, and full of useful information!) and several articles, I pieced together how XML serialization of an Ecore model can be customized using ExtendedMetaData EAnnotations.

However, when saving the model the XMLResource.OPTION_EXTENDED_META_DATA option must be set to true in order for the EAnnotations to be effective. To do this:
Map options = new HashMap();options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
options.put(XMLResource.OPTION_XML_MAP, xmlMap);
Finally, saving the model with the specified XML resource options:
resource.save(options); //Save with the options map
References
Check out some photos of a real life Kwik-E-Mart! ★
WSDL not being updated from your PHP SOAP app?
After struggling for three hours trying to figure out what was wrong with my web service, it turned out that the WSDL was being cached by the PHP SOAP extension. To disable WSDL caching, add the following lines to the php.ini configuration file:
[soap]
soap.wsdl_cache_enabled = "0"
You should also delete the cached WSDL (located in /tmp/ for me).
Presentation slides on the paper "Corpus-based learning of Analogies and Semantic Relations" by Turney and Littman for CS886: Natural Language Computing.
Download [download#3]. (0)
Crazy. I don't know why there's this obsession over thin electronics (like the Moto RAZR), but the Intel Metro laptop is insane. Take a look. I love my chunky Thinkpad Z61p, but hey, if Intel can pack as much power as my Z61p into that small package, then I'm all for thin :P ★
Published on
July 11, 2007 in
Linux.
Ubuntu disables the root account by default. One simple command can re-enable it:
sudo passwd root
To switch to the root user in the shell:
su
Alternatively, you can switch to the root user in the shell without enabling the user account by using the following command:
sudo -s
The Suspend2 project has been renamed TuxOnIce in order to differentiate itself from the actual process of suspending to ram and suspending to disk. TuxOnIce screams geekiness. ★
The Lenovo Thinkpad T61p has just been announced. It has the option of a WUXGA (1920x1200) screen, and comes with UWB, the successor to Bluetooth, which allows for 100 megabit transfer speeds... meaning the possibility of wireless port replicators. Imagine hooking up the laptop with your desktop keyboard and monitor, wirelessly. That's cool. I think that the WUXGA screen is an IPS screen still, but don't count on future models having IPS displays. ★
Published on
July 9, 2007 in
Life.

Eternal Sunshine of the Spotless Mind is one weird movie. It’s one of those movies that get you thinking. It’s also one of those movies that doesn’t really make sense until the end. There’s just so much detail packed into it. Definitely recommended if you’re into strange artsy movies with a touch of sci-fi and romance.
Published on
July 9, 2007 in
School.
I’m part of the Generative Software Development Lab and also the designer of the lab website (also powered by WordPress!)
It’s still a work in progress. We still need a new header image that actually reflects the work in our lab (instead of a badly cropped photo of the Midnight Sun). The publications list is still MIA. If you have any suggestions, feel free to leave a comment!
Welcome to the new woggie.net. I will be adding more content in the future, so stay tuned!
Update: I started transferring some of the Linux guides from my old site, but found that many of them were outdated and obsolete. It’s great to find that a lot of things just work now with most Linux distributions
Presentation for CS886: Natural Language Processing, on the paper "The state of the art in ontology learning: a framework for comparison" by M. Shamsfard and A. A. Barforoush.
Download [download#2]. (0)
Aspect-oriented programming is built on the concept of separating concerns. While separation of concerns reduces textual scattering and tangling by encapsulating concerns within a localised module, the behaviour of an aspect-oriented program becomes scattered. Capturing the sequential behaviour of an aspect-oriented program is essential for the validation of the program’s run-time semantics.
SequenceRetriever, a tool for retrieving UML sequence diagrams during the execution of a program is presented. The SequenceRetriever tool is built on top of an extensible framework which facilitates the development of additional trace components and diagram types. An AspectJ trace component and an Eclipse TPTP trace component is implemented. Using the two trace components, sequence diagrams of several programs is presented. A comparison between the AspectJ and TPTP sequence diagrams reveal the ajc weaver implementation of several aspect-oriented constructs.
Download [Download not found], course project for CS842: Aspect-Oriented Programming.
Presentation on "Pegasus – First Steps Towards a Naturalistic Programming Language" by Roman Knoll and Mira Mezini for CS842: Aspect-Oriented Programming.
Download [download#5]. (0)
Presentation on "Towards the Systematic Testing of AOP Programs" by Roger T. Alexander, James M. Bieman, Anneliese A. Andrews for CS842: Aspect-Oriented Programming.
Note: The PDF output is a little strange, since the "Export to PDF" function in OpenOffice 2.2 isn't working properly.
Download [download#4]. (0)
Published on
July 25, 2005 in
Linux.
Something simple and useful. Finding the duplicate lines in UNIX is done with the following series of commands:
sort [file] | uniq -c | awk '$1 !~/1/'
Published on
July 15, 2005 in
Linux.
I had the task of a simple FTP file transfer from a Mainframe to the development box. Easy enough, until I discovered the horrors of EBCDIC. Anyways, the UNIX tool dd converts one file type to another. To convert from EBCDIC to ASCII, set the conv=ascii parameter.
The problem with this is that the file I have are fixed length records. When specifying the record length, dd goes and trims the trailing spaces off each record. To fix this:
dd conv=ascii if=[in file] | fold -w[record length] > [out file]