There are several issues that point to the need for Semantic MediaWiki to be more aware of the Semantic Internal Objects extension. They are, starting with the most severe:

1) A recently-discovered problem: the script SMW_refreshData.php, when called for an entire wiki, thinks that internal objects are wiki pages, and thus tries to refresh their data directly; this can lead to the script deleting internal objects. The relevant code causing the problem is this, starting on line 1316 of /includes/storage/SMW_SQLStore2.php:

                                if ( !$title->exists() ) {
                                        $updatejobs[] = new SMWUpdateJob($title);

...in other words, even if no corresponding wiki page is found for a certain SMW entity, the update is still called on it. This probably makes sense some of the time, but not for internal objects.

2) The RDF output of SMW doesn't include the information stored by SIO - this was the subject of a previous thread, that turned into a general discussion of whether the SIO approach was the way to go:

3) The display and interface of internal objects in Special:Browse could be better; see here:

Internal objects should be un-linked but browsable, as opposed to linked and un-browsable as they are now.


Each of these problems can be solved separately, using hooks and the like in SMW; but maybe the real solution is to merge SIO itself, i.e. the handling of #set_internal, into SMW directly. After all, these hooks are only necessary for SIO, so it might be overkill to add them in just for SIO's usage, especially since SIO itself only contains about 200 lines of code. If that still seems like too much of an addition, given that the goal is to keep SMW small, consider the idea that adding in #set_internal could eliminate the need for having many-valued properties (i.e., what's known currently as "n-ary relations") in the first place, since these could all be stored as internal objects, with easier querying and display.

Anyway, I'm happy to have any of these three conversations: either talking about the specific fixes needed in SMW to support SIO; or talking about merging SIO into SMW; or talking about whether #set_internal is in fact the right way to go in the first place.