From: Yaron K. <ya...@gm...> - 2010-09-26 22:40:59
|
Hi everyone, Version 0.6.1 of Semantic Internal Objects has just been released; this version is meant to fix a bug that was the subject of a recent email thread. It was an interesting bug: the problem came as a result of the fact that SIO was saving its data before SMW did its own save. So in new pages that contained internal objects right from the beginning, what happened was that the internal objects got saved, which immediately triggered the creation of an SMW ID for the page itself, since all the internal objects link semantically to that page. Then, when it was SMW's turn to create semantic data, it created its own SMW ID for the page, not aware that one had already been created. This problem is new with SMW 1.5.2, ironically because of another bug fixed in 1.5.2: before then, internal objects weren't created the first time a page was saved, so the main page had a chance to get created before any of the internal objects were. In any case, I was able to fix the problem fairly easily by moving SIO's handling of data to after SMW's handling, instead of beforehand. Luckily, there's a hook that's been in place in SMW since version 1.5 that made this easy to do: 'SMWSQLStore2::updateDataAfter'. So this is the hook that's now being used, instead of 'smwDeleteSemanticData'. For versions of SMW older than 1.5, the instructions on the SIO documentation page have been changed to show how to add the 'update' hook, instead of the 'delete' one. Though, really, I think everyone should be using SMW 1.5+ by now. You can download the new version here: http://www.mediawiki.org/wiki/Extension:Semantic_Internal_Objects -Yaron |