SMWpc Documentation API Object

From FollowTheScore
Jump to: navigation, search

SMWpc: API on Object level

The following functions operate on object level (instance level). This means that they are applied to a a MediaWiki page which is an Instance of a SMWpc Class. See also the complete list of SMWpc interfaces.

Template:.obj is a

Declares a MediaWiki article page to be an instance of a SMWpc Class.

Syntax: {{.obj is a|<class>}}

  • expects as first parameter the name of the class without the 'Class' prefix.
  • generates a statment like 'Obj is a Class'
  • generates a link to a page which shows inverted links, i.e. other article which have a property that points to the current object

Implementation notes

  • This template sets internal variables to allow other templates faster access to the class name
  • proposed syntax for a parser function: {{#object:class|<class>}}.
  • This template assigns the meta property .obj is a to the object.


Template:.obj get , Template:.obj getText , Template:.obj getMy , Template:.obj getMyText

Return the value of a property.

Syntax: {{.obj get|<instance>|<property>|[<default value>]}}
or {{.obj getMy|<property>|[<default value>]}}

  • The standard variant expects as first parameter the name of an instance of a class.
  • The getMy-variants take the instance name from a variable named 'this' which is for example filled by a preceding call of {{.obj is a|<class>}}.
  • expects as second parameter the name of a property (without "Property:")
  • takes a default value as an optional third parameter. This will be delivered if the requested property is not set for the object.
  • if there is no default value given and the property is not set an empty string will be returned.
  • .obj get and .obj getMy return the value of the property; if its type is a page you will get a hyperlink to the page
  • the Text-variants always return plain text, even if the value is of Type 'page'.

Examples

  • {{.obj get|Peter|Born at}} returns '{{#vardefine:x|{{#replace:{{#ask:format=list|PeterBorn at::*}}|/^[^\]]*\]\] */|}}}}{{#var:x}}'.
  • {{.obj getText|Peter|Born at}} returns '{{#vardefine:x|{{#replace:{{#ask:format=list|PeterBorn at::*}}|/^.*\|([^\]]*)\]\] */|\1}}}}{{#var:x}}'.
  • {{.obj get|Tony|Born at}} returns '{{#vardefine:x|{{#replace:{{#ask:format=list|TonyBorn at::*}}|/^[^\]]*\]\] */|}}}}{{#var:x}}'.
  • {{.obj get|Tony|Born at|''unknown''}} returns '{{#vardefine:x|{{#replace:{{#ask:format=list|TonyBorn at::*}}|/^[^\]]*\]\] */|}}}}{{#var:x}}'.
Now we set 'this' to 'Lucie' : {{#vardefine:this|Lucie}}{{#vardefine:this|Lucie}}
  • {{.obj getMy|Born at}} returns '{{#vardefine:x|{{#replace:{{#ask:format=list|[[{{#var:this}}]]Born at::*}}|/^[^\]]*\]\] */|}}}}{{#var:x}}'.

Implementation notes

  • This template uses an internal variable which holds the class name
  • proposed syntax for a parser function: {{#object:get|<instance>|<property>|[<default value>]}}.


Template:.obj set

Assign a value to a property of the current object.

Syntax: {{.obj set|<property>|<value>|[<prefix>]}}

  • assigns the value if the property is valid for the object's Type or on of its ancestors' Types.
  • If the property is invalid, a wrning will be issued and no assignment is made
  • If 'prefix' is a '-' the assignment will be silently made; otherwise the the assignment will be 'verbose', i.e. the value of the property will be printed; in addition the prefix will be printed before the property value. Skipping the third parameter completely will make a verbose assignment with no prefix being displayed.


Template:-

Print the argument and store its value as the 'current property'.

Syntax: {{-|<property>}}

  • display the property name
  • store its name as 'the current property'; successive calls of Template:+ can be used to assign a value to this property.

Implementation notes

  • An internal variable called 'prop' is used to store the property. There is no such thing like a property stack.


Template:+

Assign a value to the 'current property'.

Syntax: {{+|<value>|[<prefix>]}}

  • assign the value using Template:.obj set
  • The second parameter is passed to 'Template:.obj set'.



Template:.obj is referenced by

Display a list of objects which have a property that points to the object. This is kind of a 'semantic what links here'.

Syntax: {{.obj is referenced by|<instance>|<class>}}

  • expects an instance name
  • expects a class name (without 'Class ' prefix)

Examples

{{.obj is referenced by|Bassoon|Musical Instrument}} returns {{#vardefine:self|Bassoon}}{{#ask:format=template|template=.obj is referenced by.ask|link=none|.prop refers to::Class Musical Instrument}}

Implementation notes

  • This template uses an internal variable which holds the class name
  • This template uses the subtemplate Template:.obj is referenced by.ask
  • proposed syntax for a parser function: {{#object:get|<class>|<property>|[<default value>]}}.