I got it, thank you Markus and Jeroen! I used to use the cleaner way (not as clean as Markus recommend though) of getting the property values and even once documented that here: [1]. However since my last visit some of the methods got deprecated and some got removed.
If I can make a suggestion: that would be very cool if we have some kind of programming API in SMW for extension developers. It can be just a set of classes that are not likely to change very much and on which the third-party developers can rely on. I understand how busy core developers are, but such API can increase the number of SMW-based extensions and, in the future, the number of core developers. And of course if anybody continues to work on Architecture Guide that would be terrific! [1] http://semantic-mediawiki.org/wiki/User:Yury_Katkov/programming_examples ----- Yury Katkov On Tue, Aug 7, 2012 at 1:34 PM, Markus Krötzsch <mar...@semantic-mediawiki.org> wrote: > On 06/08/12 15:59, Yury Katkov wrote: >> >> Hi Jeroen! >> >> Each piece of programming documentation is as valuable as gold! Please do. >> I've spent about two days recently before I figured out these two >> lines that allow to want the value of the semantic property. >> >> $params = array ("[[Pagename]]", "?ExampleProperty=", "mainlabel=-"); >> $result = SMWQueryProcessor::getResultFromFunctionParams( $params, >> SMW_OUTPUT_WIKI ); > > > The above is a very complicated way to get the data you want (constructing a > whole query with printouts to get a single data value). It's short, but it > invokes all kinds of string-based parsing that may not be needed. Instead, > you can do: > > // Assuming that you have the names of page and property fixed: > // (all strings are DBKeys, that is, use '_' instead of ' ') > $propertyDi = new SMWDIProperty( 'ExampleProperty' ); > $pageDi = new SMWDIWikiPage( 'Pagename', NS_MAIN, '' ); > $valueDis = smwfGetStore()->getPropertyValues( $pageDi, $propertyDi ); > // $valueDis now is an array of all property values, given as DI objects > > // To create DV objects: > foreach ( $valueDis as $valueDi ) { > $valueDv = SMWDataValueFactory::newDataItemValue( $valueDi, > $propertyDi ); > // do something ... > } > > If page or property name comes from user input, then you can do something > like: > > $propertyDv = SMWDataValueFactory::newTypeIdValue( '__pro', $propertyName ); > $pageDv = SMWDataValueFactory::newTypeIdValue( '_wpg', $pageName ); > > and then call getDataItem() to get the DIs. The strings '__pro' and '_wpg' > are the type ids that control how SMW will handle the string to create a > suitable DV object. You can see all builtin type ids in SMWDatavalueFactory, > if you want to know this for other datatypes as well. However, if you have > "clean" internal values, you can always create DI objects directly, rather > than parsing them from a string. > > Please take advantage of the devel list for such questions :-) > > Cheers, > > Markus > > >> >> I'm pretty sure that making custom datatypes is pretty common task and >> not only I will find your docs useful. >> ----- >> Yury Katkov >> >> >> >> >> On Mon, Aug 6, 2012 at 5:47 PM, Jeroen De Dauw <jeroended...@gmail.com> >> wrote: >>> >>> >>> Hey, >>> >>>> The sorting is not ideal, but of course there's no "IP address" type, >>> >>> which is what would be required here. >>> >>> It's pretty trivial to create a DataValue for this, which is all that's >>> needed to have such a build in type. If anyone is interested in doing the >>> little programming work, I can write up some docs :) >>> >>> Cheers >>> >>> -- >>> Jeroen De Dauw >>> http://www.bn2vs.com >>> Don't panic. Don't be evil. >>> -- >>> >>> ------------------------------------------------------------------------------ >>> Live Security Virtual Conference >>> Exclusive live event will cover all the ways today's security and >>> threat landscape has changed and how IT managers can respond. Discussions >>> will include endpoint security, mobile security and the latest in malware >>> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >>> _______________________________________________ >>> Semediawiki-user mailing list >>> semediawiki-u...@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> >> >> >> ------------------------------------------------------------------------------ >> Live Security Virtual Conference >> Exclusive live event will cover all the ways today's security and >> threat landscape has changed and how IT managers can respond. Discussions >> will include endpoint security, mobile security and the latest in malware >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >> _______________________________________________ >> Semediawiki-user mailing list >> semediawiki-u...@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/semediawiki-user >> > > ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Semediawiki-devel mailing list Semediawiki-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/semediawiki-devel