Patrick, Yaron,

Thank you for your feedback!

I can see a problem with the 'result format' approach that originally forced me to start thinking about separate directive. This is what I refer to as 'inner join syndrome', i.e. you will have only those rows and columns in a matrix that have at least one relation of interest. In other words there won't be any empty rows and columns. So initially it seems that in order to build proper relationship matrix one need to specify three queries: rows of interest, columns of interest and actual cells. Other approach is to extend query expression to support something like OPTIONAL operator in SPARQL, but it doesn't seem to be any easier. However, I'll explore this possibility once I build up more understanding of how query execution works, so thanks for this idea.

As for real world example, here it is. I use SMW as an implementation for architectural knowledge base and components repository. There is a lot of stuff going on, but in particular I have simple ontology used to relate enterprise-wide data and applications. There are two categories: Systems and Data. In addition, every System page has a set of internal records (form-driven) that relate the System with a particular kind of Data and has additional metadata such as type of dependency (create/read/update), middleware used to access the data, and some arbitrary comments. What I'd like to produce (and I did, albeit in a suboptimal way) is a 'CRUD matrix' with Systems listed as rows, kinds of Data as columns and a short summary of the relation. First, it's colour-coded: 'create' is blue, 'update' is yellow, 'read' is green. Second, there is a link to the middleware page and a comment displayed. All of these is provided by custom template that uses parser functions. Hope this explanation is clear enough, but I could be more specific.
 
--
Best regards,
Igor Lobanov

From: Yaron Koren <yaron@wikiworks.com>
To: Patrick Nagel <mail@patrick-nagel.net>
Cc: semediawiki-devel@lists.sourceforge.net
Sent: Thursday, 2 June 2011, 15:45
Subject: Re: [SMW-devel] Matrix result formatter

Hi Igor,

Before I go further, let me note how refreshing it is to hear someone asking for advice on this mailing list before creating a new SMW extension. :) It happens more rarely than you might think.

So - Patrick is right that this would ideally be created as a new SMW result format, and ideally a format added to the Semantic Result Formats extension. However - it depends a lot on the complexity of your implementation, whether such a thing is doable.

Could you give an example of the "traceability" you would like to illustrate, as a calculation based on various properties and pages? In other words, for a single cell in the matrix, how would it be determined whether to put an "x" there, what color to set it to, etc.? I think that would help a lot in trying to figure out the right approach.

-Yaron

On Wed, Jun 1, 2011 at 10:36 PM, Patrick Nagel <mail@patrick-nagel.net> wrote:
Hi Igor,

On 2011-06-02 07:11, Igor Lobanov wrote:
> I'm looking for a way to produce matrices out of relations between
> arbitrary types of objects/pages in SMW. Simple example would be a
> 'traceability matrix' between pages within such categories as 'Business
> Requirement' and 'System Requirement'. Constructed matrix would have
> business requirements and system requirements as row and column headers
> respectively, while actual elements would be either emply (no
> traceability) or flagged (traceability exists).
>
> Good example is provided in the Wikipedia article:
> http://en.wikipedia.org/wiki/Traceability_matrix
>
> More complex example (one that I have in mind) would be based not on a
> simple relationship, but on internal objects representing relationships
> among various objects with additional scalar properties. In this case,
> cell content would be more flexible and somehow derived from the
> properties, e.g. color, icons, formatting, etc.
>
> Next, I'm able to produce such matrices using a moderately complex
> incantation based on obscure things like arrays and loops, but it's
> O(NxM), needs to be tailored for a particular type of matrix, and look
> awful in general.
>
> I believe that general-purpose matrix/pivot style result formatter for
> inline queries would be good for SMW. Moreover, I'd like to try to blow
> the dust from my PHP skills and actually produce one. What I'm looking
> for is some informed advice on how to approach this one.
>
> My initial idea is to create an extension that introduces a
> {{#pivot...}} instruction that actually does underlying query and
> formatting. Does it make sense? Or it is something that can't be built
> outside the SMW core?

That sounds indeed very useful. I'm just a user of SMW, but I think the
best way to implement this would be as an extension similar to Semantic
Result Formats, or even better, within that extension. It would then not
be a separate parser function, but just an output format, that can be
chosen via the 'format' parameter to an #ask query.

Patrick.

--
Key ID: 0x86E346D4            http://patrick-nagel.net/key.asc
Fingerprint: 7745 E1BE FA8B FBAD 76AB 2BFC C981 E686 86E3 46D4


------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Data protection magic?
Nope - It's vRanger. Get your free trial download today.
http://p.sf.net/sfu/quest-sfdev2dev
_______________________________________________
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel




--
WikiWorks MediaWiki Consulting http://wikiworks.com

------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Data protection magic?
Nope - It's vRanger. Get your free trial download today.
http://p.sf.net/sfu/quest-sfdev2dev
_______________________________________________
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel