SMW notes: Difference between revisions

From zooid Wiki
Jump to navigation Jump to search
Line 92: Line 92:


   <nowiki>{{#arraymap:{{{Eating disorders behaviors|}}}|,|x|[[Eating disorders behaviors::x|]]}}</nowiki>
   <nowiki>{{#arraymap:{{{Eating disorders behaviors|}}}|,|x|[[Eating disorders behaviors::x|]]}}</nowiki>
(why not just use #set?)
=== Protecting #ask results ===
(from Markus Kr?tzsch)
* make a new property "has checked" of type page,
* make and a new page "main page news editor" (or whatever) and protect this
page just like your main page,
* add an entry <nowiki>[[has checked::some page]]</nowiki> on "main page news editor" for every
page that the editor has found to be okay to make it on the main page news
feed,
* extend your #ask query on the main page with the condition <nowiki>[[-has
checked::main page news editor]]</nowiki>.
... Note that you can also have a group of editors with separate (protected)
pages. You can also work with categories of editors for different topics etc.
Of course, this is no longer a spam protection since categories are not
protected either, but you can use another level of "has checked" to have a
master editor who checks other editors to grant them trust. All of this
readily works with subqueries+inverses. Applying similar methods but without
actually protecting any pages maybe still be useful for managing feeds
together in cases where spam is not a major issue.


== Misc ==
== Misc ==

Revision as of 16:41, 28 September 2009

Some tips and tricks for using Semantic Mediawiki from SMW mailing list, various web sites, etc.

Other tip sources

http://smwforum.ontoprise.com/smwforum/images/a/ad/Manual_SMW.pdf

http://smw.referata.com/wiki/Special:BrowseData/Tips

http://smwforum.ontoprise.com/smwforum/index.php/Example:All_libraries

http://help.wikia.com/wiki/Help:Semantic_MediaWiki/Tips_and_tricks

http://semantic-mediawiki.org/wiki/Image:SMW_quick_reference.pdf

Data design

http://www.mediawiki.org/wiki/Extension:Semantic_Forms#Data_design_issues

- Create a top category for Semantic Classes. I called mine 'Categories'. It holds only categories used to define a 'Is-a' relationship. Doing so has at least two benefits : 1- You can do a query on your core content by restricting it to the 'Categories' level. 2- You can define other categories outside of that structure for whatever your system needs.

http://smwforum.ontoprise.com/smwforum/index.php/Example:How_to_realize_a_range_constraint_for_a_property

Redirects can be used to create property synonyms.

Discussion

Categories can be hierarchical; properties can't (yet).

When to use categories vs properties?

MW tricks

If you want to clear out old pages you can delete them and use deleteArchivedRevisions.php to erase the deleted revisions from the database.

Variables

You can make use of the VariablesExtension [1] and store the query (or its result? I'd like to know which one, but in the end it doesn't really matter) in a variable, which is helpful when you need the same query multiple times within a page. It looks like this:

{{ #vardefine: some_variable_name | {{#show:{{PAGENAME}}| ?propertyname}} }}
(silent) or
 {{ #vardefineecho: some_variable_name | {{#show:{{PAGENAME}}| ?propertyname}} }} (with output)

Further down in the page you can write

{{ #var: some_variable_name }}

Specific searches

 
  <inputbox>
  type=search
  width=30
  namespaces=Help**,Wikipedia**,Template** 
  searchbuttonlabel=Search help pages
  bgcolor=#cee0f2
  break=no
  </inputbox>
  

(requires the Input Box extension)

Profiling mediawiki

http://www.mediawiki.org/wiki/How_to_debug#Profiling

Mediawiki performance tuning

http://www.mediawiki.org/wiki/Manual:Performance_tuning

  • APC can be used with SMW without problems

SMW tricks

[[Went past deadline::{{#expr:{{{End date|}}}>{{{Deadline|}}} }}]]

Hiding set data

 [[propertyA::{{{propertyA|}}}|]]

By adding the | after the enclosing }}}, the property value will not show.

For multi value properties:

 {{#arraymap:{{{Eating disorders behaviors|}}}|,|x|[[Eating disorders behaviors::x|]]}}

(why not just use #set?)

Protecting #ask results

(from Markus Kr?tzsch)

  • make a new property "has checked" of type page,
  • make and a new page "main page news editor" (or whatever) and protect this

page just like your main page,

  • add an entry [[has checked::some page]] on "main page news editor" for every

page that the editor has found to be okay to make it on the main page news feed,

  • extend your #ask query on the main page with the condition [[-has checked::main page news editor]].

... Note that you can also have a group of editors with separate (protected) pages. You can also work with categories of editors for different topics etc. Of course, this is no longer a spam protection since categories are not protected either, but you can use another level of "has checked" to have a master editor who checks other editors to grant them trust. All of this readily works with subqueries+inverses. Applying similar methods but without actually protecting any pages maybe still be useful for managing feeds together in cases where spam is not a major issue.

Misc

Enable links in property values

$smwgLinksInValues = true;

Must add namespaces to config

Otherwise they won't have semantic properties.

$smwgNamespacesWithSemanticLinks array

Media

Neat talk on MW, with refs to SMW: http://www.youtube.com/watch?v=Ukytqe9pwDM