Hi, I used initially also the addProperty/storeData method and run into the same problem. But SMW updates its store and as no property declarations are on the page the stored properties get lost during the update. I therefore switched to using the SMWWriter extension to store property values retrieved by my parser function from an external DB 'permanently' on a 'cache sub-page' of the actual page (which always includes this subpage). If the cache has expired the values are fetched again from the external DB and SMWWriter updates the #set statements on the 'cache sub-page'.
Only during the initial creation of the pages (via a script) I initially store the properties via the SMWParseData::addProperty and SMWParseData::storeData method in order to have the property values immediatly available for statistical SMW queries. The page itself contains a call to the parser function (which retrieves the external data) and the also created 'cache subpage' is left empty. (Note as the page also contains some Category declarations I have also to manually update the SMW tables to store the category information as otherwise MW knows about them but not SMW and #ask queries don't work as expected). When the page is actually shown in the wiki the parser function checks the content of the 'cache-subpage' and if it's empty (or the cache time is expired) it fetches the data again from the external DB and now uses SMWWriter to write/update the #set statements on the 'cache sub-page' which keeps the properties 'permanently' stored. This procedure seems to work so far quite well. Gu On Tue, 21 Dec 2010 18:08:19 -0500, Laurent Alquier <laur...@alquier.org> wrote: > I have been playing with ideas from this thread to do the same thing - add > predefined properties from an extension. > > I came down to this basic code to add user defined properties (based on a > predefined string $propertyName and a calculated value from my extension > $value) > > $property = SMWPropertyValue::makeUserProperty( $propertyName ); > $dv = SMWDataValueFactory::newPropertyObjectValue( $property, > $value > ); > SMWParseData::getSMWData( $parser )->addPropertyObjectValue( > $property, $dv ); > > I am also using the 'ParserAfterTidy' hook since it seems more appropriate > to my extension is doing (add semantic annotations for authors of a page). > > At this point, my problem is this : > > 1- If I use this code as-is, no value seems to be saved for this page > > 2- If I use SMWParseData::storeData as indicated above, I lose some > properties since storeData assumes parsing has been done when it is called. > > 3- If I use a direct access to the store by replacing : > SMWParseData::getSMWData( $parser ) by : > smwfGetStore()->getSemanticData($wgTitle) , values are saved but they get > wiped out at the next refresh job. > > My question (and I assume, the original question as well) : > > How do I go from this user property code to saved values that will persist > after a refresh ? > > Based on Markus recommendation, I did check the custom properties added by > SME_ParseData and it seems that nothing more is needed than what I have > above. > > Any insight ? code sample ? nudge in any direction ? :) > > - Laurent > > > On Thu, Nov 4, 2010 at 4:51 AM, Harwarth, Stefan (Bundeswehr) < > stefan.harwa...@cassidian.com> wrote: > >> Using SMWParseData::storeData at the end of my parserhook solves the >> problem with the data that I generate, but now any other semantic data >> contained in the rest of the article is discarded... I guess it's >> because of what the documentation for storeData says, that the parsing >> is assumed to be complete. >> >> So this is not the fix for my problem :( >> >> Stefan >> >> > -----Original Message----- >> > From: zehetner [mailto:zehet...@molgen.mpg.de] >> > Sent: Monday, November 01, 2010 10:24 AM >> > To: Harwarth, Stefan (Bundeswehr) >> > Cc: semediawiki-devel@lists.sourceforge.net >> > Subject: Re: [SMW-devel] Problem with storing semantic >> > attributes in a parserhook >> > >> > I use >> > SMWParseData::addProperty( $property, $prop_val, false, >> > $wgParser, true ); >> > SMWParseData::storeData( $wgParser->getOutput(), $title, >> > false ); which seems to work so far ok to store properties >> > generated within an extension (although it might not be the >> > correct or official way to do it) $property is a string with >> > the property name, $prop_value the value of the property (in >> > case of multi-valued properties a string like e.g. >> > 'p1;p2;;p3') and $title a title object. >> > >> > Cheers, >> > Gu >> > >> > On Fri, 29 Oct 2010 16:21:03 +0200, "Harwarth, Stefan (Bundeswehr)" >> > <stefan.harwa...@cassidian.com> wrote: >> > > Hi, >> > > >> > > I'm working on an Mediawiki extension that uses the >> > > SMWData::addProperty function to store semantic data inside >> > a parser >> > > hook function, which is working perfectly when saving a >> > page. But when >> > > I use the ApprovedRevs extension to approve the revision of an >> > > article, my semantic data isn't stored, even though the call to >> > > addProperty is executed and a valid DataValue object is returned. >> > > >> > > For debugging reasons I added regular semantic markup, so >> > that my page >> > > looks like the following: >> > > [[Property1::Value1]] >> > > {{#set:Property2=Value2}} >> > > <mystuff>Some text</mystuff> >> > > The first two property values are stored when I approve a >> > revision of >> > > this article and my parserhook is called, only that the properties >> > > that I create via addProperty() don't appear in the factbox and in >> > > queries :( >> > > >> > > Do I need to call any other functions besides addProperty? I tried >> > > SMWOuputs::commitToParser, but that didn't help.. >> > > >> > > Regards, >> > > Stefan >> > >> >> >> ------------------------------------------------------------------------------ >> The Next 800 Companies to Lead America's Growth: New Video Whitepaper >> David G. Thomson, author of the best-selling book "Blueprint to a >> Billion" shares his insights and actions to help propel your >> business during the next growth cycle. Listen Now! >> http://p.sf.net/sfu/SAP-dev2dev >> _______________________________________________ >> Semediawiki-devel mailing list >> Semediawiki-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/semediawiki-devel >> ------------------------------------------------------------------------------ Forrester recently released a report on the Return on Investment (ROI) of Google Apps. They found a 300% ROI, 38%-56% cost savings, and break-even within 7 months. Over 3 million businesses have gone Google with Google Apps: an online email calendar, and document program that's accessible from your browser. Read the Forrester report: http://p.sf.net/sfu/googleapps-sfnew _______________________________________________ Semediawiki-devel mailing list Semediawiki-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/semediawiki-devel