Thanks Yaron, that sounds great to me; not sure why I didn't think of simply adding a namespace for voting pages.  That merges the best aspects of my first and third options.  The things I didn't know before were how to use a popup form (I'll look up #formlink), and I probably would have run into the {{CURRENTUSER}} thing.

Argbert, it sounds like I'll end up making something similar to SemanticComments, but just through existing SMW capabilities rather than writing a new extension.  Thanks for the reference :)

Thanks again!

On Fri, May 16, 2014 at 8:41 AM, Yaron Koren <> wrote:
Hi Ben,

It's not clear to me that this would require any development work. It seems to me that you could have an approach like the following:

- Have a separate page for each vote; it could be structured as a subpage of the user page, or a subpage of the canyon page, or something else - so it could be called "User:Joe User/Big Canyon rating", or "Big Canyon/Joe User rating", or "Rating of Joe User for Big Canyon" or some such.

- Each such page would hold a template with a single field, representing the rating number. The user and canyon wouldn't have to be stored on the page, because the template could extract those from the page title. The template would store all three values (canyon, user, rating) as semantic values.

- On each canyon page, the template would display the average rating for that canyon, using a semantic query (with the "average" format), and might also show the number of votes (using "count"). It would then have a link to a popup form, to let the current user either submit a new rating (if they haven't voted already) or change their rating. You could do that using #formlink, plus the {{CURRENTUSER}} variable from the MyVariables extension.

- The ratings input within the popup form, and the average rating display, could both be done using the familiar "stars" interface, using the Semantic Rating extension (

This whole thing is somewhat of a hack (a new page for every rating), but maybe not that bad. Of course, it means that users can change each others' ratings, which is not ideal, but then again malicious users can cause all sorts of mischief within a wiki, if they want to - there are already ways of dealing with that.


On Thu, May 15, 2014 at 10:47 PM, Benjamin Pelletier <> wrote:
I have a Semantic MediaWiki installation that has a large number of Canyon pages, where each of those pages describes a different hiking trip.  These pages have a number of properties on them, one of them being Quality (how "good" of a trip it is).  Currently, editors can edit the wikitext to change this property.  I would like make a feature that allows people to vote on what Quality they think a particular Canyon is, and then the overall Quality (based on the votes received) would be displayed on the page.  I can think of a few different ways this might be done, but I was hoping to get some advice from people who are really familiar with Semantic MediaWiki for which method is likely to produce the best results with the least effort.

== Single "Voting data" wiki page ==
I could make an extension that automatically edits a particular wiki page (perhaps "Voting data") in response to a click.  It would read the existing content, add the new vote, recalculate ratings, generate semantic properties with those ratings, and save the new page version.  I'm not sure if this is possible, but it seems like the best solution if it is.  Although, there might be a problem eventually if, say, 300 people each vote on 10 canyons, then my page size is going to be like 60k (which may cause performance issues?)

== Stand-alone widget ==
I could make an extension that injects custom PHP that talks to an entirely separate (non-MediaWiki) database to store and report the voting data.  This same approach would work on any website, even if it wasn't a MediaWiki install.  The down side of this approach is that I have no idea how I would (could?) integrate the voting results into a semantic search.  Can semantic data be stored stably in the SMW database without being defined in any wikitext?

== Per-page voting data ==
I could maybe make an extension that automatically edits the current page and injects an additional vote line so all the quality votes for a given page are stored on that page.  But, this seems like the most difficult option, and there would be a bunch of voting data junk in the wikitext content.

Any suggestions?


"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
Semediawiki-devel mailing list

WikiWorks · MediaWiki Consulting ·