From: Igor L. <igo...@ym...> - 2011-06-01 23:11:53
|
Dear All, 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? -- Best regards, Igor Lobanov |
From: Patrick N. <ma...@pa...> - 2011-06-02 02:37:01
Attachments:
signature.asc
|
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 |
From: Yaron K. <ya...@wi...> - 2011-06-02 14:45:11
|
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 <ma...@pa...>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 > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-devel > > -- WikiWorks · MediaWiki Consulting · http://wikiworks.com |
From: Igor L. <igo...@ym...> - 2011-06-03 23:03:37
|
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 <ya...@wi...> >To: Patrick Nagel <ma...@pa...> >Cc: sem...@li... >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 <ma...@pa...> 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 >>Sem...@li... >>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 >Sem...@li... >https://lists.sourceforge.net/lists/listinfo/semediawiki-devel > > > |
From: Yaron K. <ya...@wi...> - 2011-06-06 15:00:56
|
Hi Igor, It seems to me like this could be done as a query result... the example you gave might be callable like this: {{#ask:[[Category:Systems]]|?create=blue|?update=yellow|?read=green|format=traceabilitymatrix}} There might be no reason to need to specify the "Data" category, i.e. the set of columns, if they're already covered by the values of the properties. But if there are any empty columns, you might want to specify it manually - you could do that with something like: {{#ask:[[Category:Systems]]|?create=blue|?update=yellow|?read=green|columns=Data|format=traceabilitymatrix}} In general, I would say, if you can implement this as a result format, that would definitely be the better approach - it'll be easier for you to implement, easier for admins to install (assuming it were added to Semantic Result Formats), and easier for users to use, since they would already know the #ask syntax. -Yaron On Fri, Jun 3, 2011 at 7:03 PM, Igor Lobanov <igo...@ym...> wrote: > 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 <ya...@wi...> > *To:* Patrick Nagel <ma...@pa...> > *Cc:* sem...@li... > *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 <ma...@pa...>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 > Sem...@li... > 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 > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-devel > > > -- WikiWorks · MediaWiki Consulting · http://wikiworks.com |
From: Jeroen De D. <jer...@gm...> - 2011-06-06 16:01:53
|
Hey Igor, Awesome you are interesting in creating such a result format (I agree with Yaron that this is the right approach). If you need any help with or review of your code, feel free to poke me. You can find examples of existing formats in SRF, of which this one [0] is perhaps one of the more clear ones. I also encourage you to request commit access to the WMF SVN repository (which is where SMW and other extensions are developed), more info on that can be found here [1]. [0] http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/SemanticResultFormats/TagCloud/SRF_TagCloud.php?view=markup [1] https://secure.wikimedia.org/wikipedia/mediawiki/wiki/Commit_access_requests#Requesting_commit_access Cheers -- Jeroen De Dauw http://www.bn2vs.com Don't panic. Don't be evil. -- |
From: Igor L. <igo...@ym...> - 2011-06-06 19:42:34
|
Jeroen, Definitely, I'm going to explore what's Yaron has suggested. However, getting commit access is something too far down the road for me :) I think I'll start with a github repo. Thanks a lot for your support! -- Best regards, Igor Lobanov >________________________________ >From: Jeroen De Dauw <jer...@gm...> >To: "sem...@li..." <sem...@li...> >Cc: Igor Lobanov <igo...@ym...> >Sent: Monday, 6 June 2011, 17:01 >Subject: Re: [SMW-devel] Matrix result formatter > > >Hey Igor, > >Awesome you are interesting in creating such a result format (I agree with Yaron that this is the right approach). If you need any help with or review of your code, feel free to poke me. You can find examples of existing formats in SRF, of which this one [0] is perhaps one of the more clear ones. I also encourage you to request commit access to the WMF SVN repository (which is where SMW and other extensions are developed), more info on that can be found here [1]. > >[0] http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/SemanticResultFormats/TagCloud/SRF_TagCloud.php?view=markup >[1] https://secure.wikimedia.org/wikipedia/mediawiki/wiki/Commit_access_requests#Requesting_commit_access > >Cheers > >-- >Jeroen De Dauw >http://www.bn2vs.com >Don't panic. Don't be evil. >-- > > > > |
From: Yaron K. <ya...@wi...> - 2011-06-17 21:53:02
|
Hi Igor, I just realized I never responded to this - sorry for the long delay. So - I didn't realize that all the columns would be defined by values of a single property. Given that, what you're saying makes sense. I would just suggest some slight changes to the syntax you proposed. For the "traceability matrix", with just an 'X' in each cell, a query like this: {{#ask:[[Category:Components]] |?implements |format=pivot |columns property=implements }} (i.e., no need to set "X" - it's assumed.) ...and for the more-complex "dependency matrix", a query like this: {{#ask:[[Category:Dependencies]] |?declared for |?depends on |?comment |format=pivot |rows property=declared for |columns property=depends on |cells property=comment }} In both cases, the parameter names are hopefully a little clearer, and parameters are all separated by pipes, not commas. -Yaron On Mon, Jun 6, 2011 at 6:01 PM, Igor Lobanov <igo...@ym...> wrote: > Yaron, > > I agree with you with regard to benefits of having this feature implemented > as a result formatter, thank you. So this is my primary approach. > > I find the syntax you've proposed a bit confusing. The question mark sign > in the #ask query means that you're adding additional fields to the output. > However, in our 'reference example' there's no such properties as 'create' > and 'read', they are string literal values of the 'access type' property. > Have you meant that there is a 'create' relation between System and Data? > > I've thought about the syntax and I'd like to share my idea. Yaron, sorry > if it's exactly what's you had in mind, in this case I think detailed > explanation is useful to have and probably reuse later. > > Idea is that the query is used to fetch actual cell contents. Then you just > specify which properties of query result are used to define rows and > columns. This approach effectively allows to use the either internal objects > or normal pages to fill out the cells. > > Couple of examples to illustrate the idea: > > (1) Requirements to components traceability > - there are categories: Requirement, Component > - each Requirement has title (page name) > - each Component has title (page name) and a multi-valued relation > 'implements' to Requirement > > In order to build traceability matrix, you have to query Components. The > Component title is used to produce values for rows. Values for cells are > constant, that is 'X' literal value since we are only interested in showing > if there a relation. In addition we only need to specify which property is > used to derive columns, that is 'implements' in this case. > > The in-line query is looks like the following: > {{#ask:[[Category:Components]] > |?implements > |format=pivot,columns=implements,cells='X'}} > > (2) Dependencies matrix > - there are categories: Components, Dependencies > - each Component has a title (page name) and a set of internal objects of > category Dependencies (category is assigned by template) > - each Dependency has an internal name (not interesting), a back reference > to a declaring Component 'declared for', a reference 'depends on' to another > component which the declaring component has the dependency from, and a > string value property 'comment' that adds come informal insight on the > nature of the dependency. > > Dependency matrix should have components both on rows and columns. In order > to build it we need to query Dependencies. Values for cells are taken from > the dependencies comments, values for rows are from 'declared for' values of > dependencies, and finally values for columns are from 'depends on' values. > > The query should look like the following: > {{#ask:[[Category:Dependencies]] > |?declared for > |?depends on > |?comment > |format=pivot,rows=declared for,columns=depends on,cells=comment}} > > It seems that this approach is versatile and still concise. What's your > view? > > -- > Best regards, > Igor Lobanov > > ------------------------------ > *From:* Yaron Koren <ya...@wi...> > *To:* Igor Lobanov <igo...@ym...> > *Cc:* Patrick Nagel <ma...@pa...>; " > sem...@li..." < > sem...@li...> > *Sent:* Monday, 6 June 2011, 16:00 > > *Subject:* Re: [SMW-devel] Matrix result formatter > > Hi Igor, > > It seems to me like this could be done as a query result... the example you > gave might be callable like this: > > > {{#ask:[[Category:Systems]]|?create=blue|?update=yellow|?read=green|format=traceabilitymatrix}} > > There might be no reason to need to specify the "Data" category, i.e. the > set of columns, if they're already covered by the values of the properties. > But if there are any empty columns, you might want to specify it manually - > you could do that with something like: > > > {{#ask:[[Category:Systems]]|?create=blue|?update=yellow|?read=green|columns=Data|format=traceabilitymatrix}} > > In general, I would say, if you can implement this as a result format, that > would definitely be the better approach - it'll be easier for you to > implement, easier for admins to install (assuming it were added to Semantic > Result Formats), and easier for users to use, since they would already know > the #ask syntax. > > -Yaron > > On Fri, Jun 3, 2011 at 7:03 PM, Igor Lobanov <igo...@ym...>wrote: > > 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 <ya...@wi...> > *To:* Patrick Nagel <ma...@pa...> > *Cc:* sem...@li... > *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 <ma...@pa...>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 > Sem...@li... > 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 > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-devel > > > > > > -- > WikiWorks · MediaWiki Consulting · http://wikiworks.com > > > -- WikiWorks · MediaWiki Consulting · http://wikiworks.com |
From: Jesse W. <wj...@gm...> - 2011-06-17 22:52:16
|
Hi, Igor - Will this http://wiking.vulcan.com/dev/index.php/Mock:PSEN1-2 similar to what you want? Jesse On Wed, Jun 1, 2011 at 4:11 PM, Igor Lobanov <igo...@ym...> wrote: > Dear All, > > 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? > > -- > Best regards, > Igor Lobanov > > > ------------------------------------------------------------------------------ > 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 > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-devel > > |