Hi Leonard,

is the SMWQueryResult object that you get from query answering not 
exactly what you want? It basically encodes the structure of a three 
dimensional array (rows -- cells in row -- values in cell), but using 
custom SMW classes for convenient (and efficient) access to the data.

The table format, for example, preserves this structure, while the list 
format (as you rightly remark) does not separate the values coming from 
different cells if property labels are not shown. If you need another 
form of display, you should easily be able to create it from the 
SMWQueryResult. Basically, this means you are writing your own result 
printer. If you look at the code of the table result printer in SMW, you 
can see that the iteration over a three dimensional array is a bit 
cumbersome (esp. if interleaved with formatting customizations), but in 
the end it should not be too difficult to understand. From your email, 
it does not sound as if you really want to print data anyway, but the 
iteration over the data could be the same in other code, just without 
creating text from the data values.

I hope this helps,

Markus


On 11/06/11 00:02, Leonard Wallentin wrote:
> Hello, I'm sorry if this is a very simple question, but I've been
> reading the manual for the whole day without getting it right. I'm
> making a query from an extension, asking for two properties, one of
> which will have multiple values. Problem is that when using
> SMWQueryProcessor I am stuck with a few predefined formats, more
> suitable for printing to the screen. What I would like is to get an
> array or an object, something like this would be neat:
>
> 0 => { title => Article 1, property 1=> value, property 2=>{0 => a
> value, 1 => another value}}, 1 => ...
>
> Using the 'list' format I get something like this:
>
> ”Article 1 (value, a value, another value)”
>
> Starting to write complex parsing functions to convert that into an
> array seems wrong, as I'm sure the data must, at some point, have been
> stored in a more progammatically accesible way, after being fetched from
> the database, but before being written to a string like such.
>
>
> My function is something like this:
>
> function doRequest ( $query, $properties = array() ) {
>
> $params = array('link'=>'none');
> $context = SMWQueryProcessor::INLINE_QUERY;
> $format = 'list';
> $printouts = array();
> foreach ( $properties as $p ) {
>
> $printouts[] = new SMWPrintRequest(SMWPrintRequest::PRINT_PROP, "",
> SMWPropertyValue::makeUserProperty($p));
>
> }
>
> $query = SMWQueryProcessor::createQuery($qs, $params, $context, $format,
> $printouts);
> $result = SMWQueryProcessor::getResultFromQuery($query, $params,
> $printouts, SMW_OUTPUT_WIKI, $context, $format);
>
> return ($result);
>
> }
>
> Any directions on how to proceed would be very appreciated!
>
> Best regards
> Leo Wallentin
>
> Leonard Wallentin
> leo_wallen...@hotmail.com
> +46 (0)735-933 543
> http://säsongsmat.nu
> http://nairobikoll.se/
> http://twitter.com/leo_wallentin
> Skype: leo_wallentin
>
> -----BEGIN PGP PUBLIC KEY BLOCK-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> mQENBE1JuiUBCADsAnoxo1o3G2Apkjs8NHSfbN4g/H8HbS4XXfjruZ6Afu6PBMJI
> CoiopKmTzQojjUZEjM2i4QsynU2xX4PmpMloPCOXEWxQg7q6HgHKyBU9NroL+17T
> WA/30jGTmi2pkuznX1LpYKz0r8oSUsrg9oIeJmSbPRP6bNjwlgaDzarfYjcfEFXu
> Y0s8KdVT1M8Zw2Sq7QuYPaiT+gfLMN5FaCzCZPdHZu8L1lXszTtFxztiF0hTd2C6
> 8yAW3DlTqTOSWqQtt10tf8VxeXPGxfqs6Ti8s5MsAsUtg9vw0A7gQC36SmRXel7W
> l/rYbkESqDKANgIT6ofbIru0ozdy/BxnL2wXABEBAAG0LUxlb25hcmQgV2FsbGVu
> dGluIDxsZW9fd2FsbGVudGluQGhvdG1haWwuY29tPokBOAQTAQIAIgUCTUm6JQIb
> AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQOYTL0NQ4Ju9AwQf+L655KY1W
> 9Q43IOfZ6hJBwfPjhC4pWppptxe4atsSIo+wh+UHd4Zle59LjMZqCGJrFmhRNk+E
> DtReKuZT/9aZ6yIoqIf0qgqs2L+NPsFprLlsl284cZZtU7YR9oeOVwAK6l58pWfD
> 1YQnZEOZDcklvunXI7SpFesB3YbuEnlcU3AJQ9hBJquEuMsGXlcXin/1zid+wEWW
> lkJz4nqp/EaZ9ITHpSzhftsvknskttLqbbEiXyGjMH+FO99S5Vbn9PZAs3axRCHV
> MWZqx7DLM6FOTlowklLR4lH0UGawwDwjRICDJQlhcS4fA5ORByXE3zbZ45MleQJK
> aTYuzxb6IVBzBrkBDQRNSbolAQgAv2RTauQ/aQbpS718FPoxPCdA/GgRXvYQ/dle
> G7m+p0EBUuu+XlDThyQOrWMBy4UICp2OvChfeb0x7SQ2Xg7ahRkWuKnhGiPKkvoZ
> qBVrbZ1bKcjA6QXcImelICtSjd3UTtCHcfNttEe5d000GaRJBAzsZseDVebpblLt
> X1z/n/9nsas+moAdRpiyfSPX1HFW57429GzDUsyCvQfqaPwPCuZa4OBtqxw/ydyn
> hGh1fBcm4bwOU5nqUt+N/d7GXSpZtYChuNhQZj0uwtvMnXJoKyIEPRIx1xkRJTaC
> uZTZKqnNU3EGwtYDhAgMQpVzFXXBoSBAfV9Jz9XPHd4RidakEwARAQABiQEfBBgB
> AgAJBQJNSbolAhsMAAoJEDmEy9DUOCbviRgH/3Tm05nqdsFk531eOLMkCqSoPupM
> YSId04pE9qgKZCGHvqYYxWuksgDj9BFCm+vMfW+e45bX4nd2bxkZecMCVvAOQrsB
> yKnk7g4BFI6YxYluCt5ouaRPcB73ztk+08z9j0GvlCo3IAp06neoC/IH1XhUvkts
> bXBzxQt7zO7Gic54U516Qzsr4iD6MQsBkGoaSKtLtk4v8xFMgDWIl1ODy70qabES
> 7+5IJn0vnh9DWJqkosofRMcqYoblwvf7orDuSgr76wokaTKCCsNEOt7TTbO8XVyQ
> r3wzIiopALjOj/2N9kxaHg9MQOfERV6prfZmkxPP69ptlCnJVZL7vwTO/0E=
> =KIpq
> -----END PGP PUBLIC KEY BLOCK-----
>
>
>
>
> ------------------------------------------------------------------------------
> EditLive Enterprise is the world's most technically advanced content
> authoring tool. Experience the power of Track Changes, Inline Image
> Editing and ensure content is compliant with Accessibility Checking.
> http://p.sf.net/sfu/ephox-dev2dev
>
>
>
> _______________________________________________
> Semediawiki-devel mailing list
> Semediawiki-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/semediawiki-devel


------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel

Reply via email to