Semantic MediaWiki 0.5 changes

The following is a list of changes implemented for Semantic MediaWiki version 0.5, released on August 15 2006.

Searching and querying
Users write queries in article source, and results are shown in the article.

Earlier versions of inline queries would not show empty table cells if some property was not set. Instead, they would drop the whole row from the result. This is now fixed by distinguishing between print statements for some annotation (marked by *) and query conditions that require the existence of some annotation (marked by +).

In the old version, if you had someone with 3 emails and 2 phone numbers, and ask for all people with emails and phones, this one person will generate 6 lines in the table -- all permutations of its phone numbers and emails. This was bad.

Queries used to ignore (especially unknown) units. E.g. if you have an attribute set to "1.5foo" (unsupported unit foo) and ask for "1.5meters", the foo would still be returned. Also units were not displayed correctly. Fixed.

Query results used to print rather raw data values from the database. They now show the reformatted string that usually appears in the factbox, and they allow users to select the unit in which results are to be displayed.

After a major rewrite, only very few methods are in their original state. The goal was to eliminate all FIXMEs before 0.5, which was not quite done.

There now is a parameter debug="true" for ask which will lead to the SQL statement being printed instead of the query results. This will simplify debugging and optimisation a lot.

External services and reuse
An external service, based on a Java triplestore, allows users to ask complex queries.

It is now possible to directly map vocabularies from external ontologies to elements of the wiki. See Help:Import vocabulary.

RDF export now by default hints at objects that have incoming relations to the exported things. This enables tools to easily browse the whole RDF without downloading the whole wiki.

The import of outside ontologies is possible. It adds missing statements from an ontology to the wiki. The feature still needs further improvement though, since it is often needed to customise the import functionality in order to add specific categories to imported articles, or to create certain text snips for some of the annotations.

Datatype support
Using PHP's strtotime to parse 1970-02-01, 02/01/70, 1970-02-01T14:03:42, etc. Probably has timezone bugs.

Simple linear conversion calculations are now supported in a generic way and users can create new types that have customised unit support. See Help:Custom units.

Attributes that use types with many units can now select which of these should normally be displayed. This allows the wide reuse of the same type for many attributes. See Help:Custom units.

A float type with support for units of temperature has been provided.

New datatypes now enable the use of URLs and URIs, and even allow those to be treated as such (and not as strings) in RDF export. A blacklist ensures that things such as RDF and OWL language constructs do not appear as data within the export!

Interface improvements
Relations and attributes found via this special now supply a link for searching their occurrences. This is especially helpful for quickly finding pages on which a deprecated or little used annotation appears.

Bugfixes/Cleanup
The code for parsing and processing datavalues currently is rather messy. You pass strings to type handlers that you have to select yourself, and in return you get an array with a rather vaying set of keys that describe the parse results. In the future, an intermediate layer of SMWDataValue objects will greatly simplify handling data values. This also fixes most of the PHP notices you get in 0.4 from accessing non-existing array values.

Extracted annotations have been stored in a global object. Now they use a static class which appears to be a cleaner solution.

PHP5 sufficiently supports keywords like protected, private, static, and interface. They should be used eagerly.

See smwbug:1476079.