Jump to content

Extension:Semantic Compound Queries: Difference between revisions

From mediawiki.org
Content deleted Content added
about "Result limits and links to further results"
Usage: Cleaned up recent addition - I don't believe an example is needed to explain the "limit" issue
Line 50: Line 50:
|format=table}}</nowiki></pre>
|format=table}}</nowiki></pre>


One important exception to this rule is the <tt>limit=</tt> parameter, which sets the maximum number of results displayed: it must be used '''per sub-query''', not for the overall compound query.
===Map===

===Maps===
To make things more interesting, we can place all these results on a map, using the [[Extension:Semantic Maps|Semantic Maps]] extension. Here is the same set of results, using SM's 'googlemaps' format, and a different property displayed for both sets of points to set their geographical coordinates:
To make things more interesting, we can place all these results on a map, using the [[Extension:Semantic Maps|Semantic Maps]] extension. Here is the same set of results, using SM's 'googlemaps' format, and a different property displayed for both sets of points to set their geographical coordinates:


Line 75: Line 77:
[[File:Sm-qp-gmaps-referata.jpg|400px]]
[[File:Sm-qp-gmaps-referata.jpg|400px]]


===Calendar===
===Calendars===
There's also special handling for the [[Extension:Semantic Result Formats/calendar format|'calendar' format, defined in Semantic Result Formats]] - if you display a calendar, you can set a different color for each set of events displayed. Here is an example:
There's also special handling for the [[Extension:Semantic Result Formats/calendar format|'calendar' format, defined in Semantic Result Formats]] - if you display a calendar, you can set a different color for each set of events displayed. Here is an example:


Line 83: Line 85:
|format=calendar}}</nowiki></pre>
|format=calendar}}</nowiki></pre>


====Limitations====
===Result limits and links to further results===
As with regular #ask-queries, you can use the <tt>limit</tt> parameter to impose a maximum limit on the number of results shown <u>per query</u>. You cannot use this parameter for the combined query.
* Unlike regular #ask queries, #compound_query does not display a "further results" link if the number of results exceeds the limit. For this reason, the <tt>searchlabel</tt> parameter available for regular #ask queries cannot be used.

<div class="toccolours mw-collapsible mw-collapsed" style="text-align:left;" data-expandtext="Show example" data-collapsetext="Hide example">
<pre>
{{#compound_query:[[Category:Stores]] ;limit=10
|[[Category:Restaurants]] ;limit=10
|format=table}}
</pre>
not:
<pre>
{{#compound_query:[[Category:Stores]]
|[[Category:Restaurants]]
|format=table
|limit=10}}
</pre>
</div>

Unlike regular #ask-queries, a compound query does not currently offer a "further results" link if the number of results exceeds the default or manually defined limit. For this reason, the <tt>searchlabel</tt> parameter as used in single #ask queries is not available for use in compound queries.


==Authors==
==Authors==

Revision as of 12:40, 12 April 2013

MediaWiki extensions manual
Semantic Compound Queries
Release status: stable
Implementation Parser function
Description Defines a parser function, #compound_query, that can make multiple Semantic MediaWiki queries at the same time
Author(s) Yaron Koren <yaron57@gmail.com>
Latest version 0.3.4 (November 2012)
MediaWiki 1.16.* or greater
License GPL
Download See here
Example A map showing people, organizations and events, with a different icon for each

A calendar of opinion items about the 2012 U.S. presidential election, color-coded by candidate

Semantic Compound Queries is an extension to MediaWiki, meant to work with Semantic MediaWiki, that allows for the display of more than one SMW inline query in one results display set. It uses its own parser function, #compound_query, that takes inputs similar to that of #ask but can take in an unlimited number of queries, instead of just one.

Semantic MediaWiki version 1.6 or later is required for this extension to work.

Download

You can download the Semantic Compound Queries code, in .tgz format, here.

You can also download the code directly via Git from the MediaWiki source code repository. From a command line, you can call the following:

git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/SemanticCompoundQueries.git

To view the code online, including version history for each file, go here.

Installation

To install this extension, create a 'SemanticCompoundQueries' directory (either by extracting a compressed file or downloading via Git), and place this directory within the main MediaWiki 'extensions' directory. Then, in the file 'LocalSettings.php', somewhere below the inclusion of Semantic MediaWiki (both the main 'include_once' line and the 'enableSemantics' line), add the following line:

include_once( "$IP/extensions/SemanticCompoundQueries/SemanticCompoundQueries.php" );

Usage

A normal inline query, using the #ask parser function, takes in arguments of three types: (1) a filter that determines the results, (2) the names of properties to be displayed, and (3) arguments that determine the format and other aspects of the display. Here is an example of a normal inline query:

{{#ask:[[Category:Stores]][[Has type::Clothing]]|?Has country=Country|format=table}}

In this query there are three arguments separated by pipes and they belong to argument types 1, 2 and 3, respectively.

For compound queries the first two types of argument are unique to each sub-query and are separated from each other by semicolons instead of pipes; pipes are used to separate one sub-query from the rest. The third type of argument, setting the display of the results, is common across all sub-queries. Here is an example of a call to #compound_query that shows both clothing stores and fast-food restaurants in a table:

{{#compound_query:[[Category:Stores]][[Has type::Clothing]];?Has country=Country
    |[[Category:Restaurants]][[Has cuisine::Fast food]];?Has country=Country
    |format=table}}

One important exception to this rule is the limit= parameter, which sets the maximum number of results displayed: it must be used per sub-query, not for the overall compound query.

Maps

To make things more interesting, we can place all these results on a map, using the Semantic Maps extension. Here is the same set of results, using SM's 'googlemaps' format, and a different property displayed for both sets of points to set their geographical coordinates:

{{#compound_query: [[Category:Stores]] [[Has type::Clothing]]; ?Has coordinates
    | [[Category:Restaurants]] [[Has cuisine::Fast food]]; ?Has coordinates
    | format=googlemaps}}

We can set a different icon to appear for each location type in the map, by using the "icon" parameter, which Semantic Maps understands (note that this feature only works with MediaWiki 1.13 or higher). Assuming your wiki contains uploaded images by the name of "Shirt.png" and "Hamburger.png", you could call the following:

{{#compound_query: [[Category:Stores]] [[Has type::Clothing]]; ?Has coordinates; icon=Shirt.png
    | [[Category:Restaurants]] [[Has cuisine::Fast food]]; ?Has coordinates; icon=Hamburger.png
    | format=googlemaps|height=400|width=600}}

This query also sets the height and width of the map - additional arguments of the third type.

#compound_query avoids displaying the same page more than once, so if a page gets returned by more than sub-query, it's displayed only for the first one. In this way, a compound query can have specific sub-queries, and then a general catch-all sub-query at the end:

{{#compound_query:[[Category:Restaurants]][[Has cuisine::Fast food]];?Has coordinates;icon=Hamburger.png
    |[[Category:Restaurants]][[Has cuisine::Italian]];?Has coordinates;icon=Spaghetti.png
    |[[Category:Restaurants]];?Has coordinates;icon=Fork.png
    |format=googlemaps}}

Semantic Maps displaying the result of a compound query with Google Maps: File:Sm-qp-gmaps-referata.jpg

Calendars

There's also special handling for the 'calendar' format, defined in Semantic Result Formats - if you display a calendar, you can set a different color for each set of events displayed. Here is an example:

{{#compound_query:[[Category:Events]][[Has priority::High]];?Has date;color=red
    |[[Category:Events]][[Has priority::Low]];?Has date;color=#99cc99
    |[[Category:Events]];?Has date
    |format=calendar}}

Limitations

  • Unlike regular #ask queries, #compound_query does not display a "further results" link if the number of results exceeds the limit. For this reason, the searchlabel parameter available for regular #ask queries cannot be used.

Authors

Semantic Compound Queries was mostly written by Yaron Koren, reachable at yaron57 -at- gmail.com. Important contributions were made by Jeroen De Dauw.

Semantic Compound Queries was funded initially by the KDZ - Centre for Public Administration Research in Vienna, Austria.

Version history

Semantic Compound Queries is currently at version 0.3.4. See the entire version history.

Bugs and feature requests

You should use the Semantic MediaWiki mailing list, semediawiki-user, for any questions, suggestions or bug reports about Semantic Compound Queries. If possible, please add "[SCQ]" at the beginning of the subject line, to clarify the subject matter.

You can also send specific code patches to Yaron Koren, at yaron57 -at- gmail.com.