I want the new extension Semantic Internal Objects to be able to add data about internal objects to the RDF export. Normally this wouldn't seem too hard: the function that prints RDF data about a specific wiki page is OWLExport::printObject(), in the file SMW_SpecialOWLExport.php (it's a little odd that the class is contained directly in the file for a special page, but that's another story). Anyway, it seems like the solution would be to just add a call to end of that function that looks something like:

wfRunHooks('smwPrintObjectRDF', array($this));

That way, Semantic Internal Objects could register a function with the 'smwPrintObjectRDF' hook, so that every time the RDF for a specific page was created, SIO could add on the RDF for all the internal objects in that page.

Unfortunately, the problem is that nearly all of the variables and methods in the OWLExport class are either protected or private; that means there's no way for outside code to add to the RDF. This looks to me like overly-protective code; could one or more of the functions be made public instead? Or maybe the simplest solution is to create a new public function, maybe called addToRDF(), that just adds a passed-in string to the RDF being generated.

Any thoughts on this?