உள்ளடக்கத்துக்குச் செல்

Module:Wd

கட்டற்ற கலைக்களஞ்சியமான விக்கிப்பீடியாவில் இருந்து.
Thayts (பேச்சு | பங்களிப்புகள்) பயனரால் செய்யப்பட்ட 20:21, 20 ஆகத்து 2016 அன்றிருந்தவாரான திருத்தம் (Created page with 'local p = {} local function formatAmount(amount) -- strip + signs from front amount = mw.ustring.gsub(amount, "\+(.+)", "%1") return amount end local func...')

This module is intended to fetch data from விக்கித்தரவுகள் with or without a link to the connected Wikipedia article.

The module is under development and is not yet complete. Of the available datatypes, it currently supports strings, quantities, monolingual text, time and globe coordinates.

Usage

{{#invoke:wd|command1|flag1a|flag1b|flag1c|command2|flag2a|flag2b|flag2c|flag0a|flag0b|flag0c|arg1|arg2|arg3}}

Commands

Value class

The value class commands can be combined, meaning that multiple commands of different types from this class can be given at one time.

Combine multiple commands into one call to this module instead of making multiple calls to this module with one command each to be sure that all the returned pieces of information belong to each other.

Type Command Returns Basic usage Description
1 property first match* {{#invoke:wd|property|P1}} Returns the requested property – or list of properties – from the current item, or a given item.
properties all matches {{#invoke:wd|properties|P1}}
2 qualifier first match* {{#invoke:wd|qualifier|P1|P2}} Returns the requested qualifier – or list of qualifiers – from the given property of the current item, or a given item.
qualifiers all matches {{#invoke:wd|qualifiers|P1|P2}}
3 reference first match* {{#invoke:wd|reference|P1}} Returns a reference – or list of references – from the given property of the current item, or a given item.
references all matches {{#invoke:wd|references|P1}}
* Returns only a single value instead of multiple (if multiple claims or statements match). The returned value is the first match found from the best-ranked claims.

Name class

The name class commands cannot be combined.

Command Basic usage Description
label {{#invoke:wd|label}} Returns the label of the current item, or a given item or property. In case of an item that has no label, the title of the linked page will be returned instead if it exists.
title {{#invoke:wd|title}} Returns the title of the page linked to the current item, or a given item, if such page exists. The label of the item will never be returned instead.

Main class

Command Basic usage Description
main {{#invoke:wd|main|command|P1}} Intended for use by a wrapper template (around this module) to invoke one of the above commands, returning their respective output.

The parameters passed to the wrapper template are the ones that will be used by the module, e.g. {{wikidata|property|P1549}}{{#invoke:Wd|main}}{{#invoke:Wd|main|property|P1549}}.

Therefore, any parameters set by the wrapper template itself will be discarded, e.g. {{wikidata|property|P1549}}{{#invoke:Wd|main|qualifier|P1082|P585}}{{#invoke:Wd|main|property|P1549}}.

Flags

The following (optional) flags are available which can be used to alter this module's behaviour. They must be given after the (first) command and before the other arguments. For convenience, empty flags (i.e. ||) are allowed and will simply be ignored.

Command flags

These flags (flag1*, flag2*, ...) apply to the command that precedes them directly.

Flag Description
linked Creates a link to the Wikipedia article that is connected to the property or qualifier if it exists. Also links units of measurement that may be appended to values.

If this parameter is omitted, then the plain property or qualifier value will be returned.

short EXPENSIVE Gets the short name (P1813) of any item returned if they have one attached. If that is not the case, then the default behaviour of returning the item label will occur.
raw Returns the raw value if applicable.

If this flag is used with item or property datatypes, then this will return the Q-identifier or P-identifier.

For quantity datatypes, this flag will strip off any units of measurement.

If this flag is used with time datatypes, then the returned date will be in the format of year-month-day (e.g. 1731-2-11). Dates in the Julian calendar stored with a precision of days through millenniums will have /Julian attached to the output (e.g. 1731-2-11/Julian, which may be split off using the {{#titleparts}} template function).

If it is used with globe coordinate datatypes, then it replaces the various symbols with forward slashes in the returned value (e.g. 52/5/3/N/4/19/3/E, which may be split into parts using the {{#titleparts}} template function).

Configuration flags

These flags (flag0*) are general configuration flags and can be given anywhere after the first command (but before the other arguments).

Flag Description
Combination of: preferred Sets a rank constraint for the selected claim(s).

The first three set the ranks for which claim(s) will be selected. They can optionally be followed by a + or a -, e.g. normal+ or preferred-, where the first selects claims with a 'normal' rank or higher and the second selects claims with a 'preferred' rank or lower. To get claims of all ranks, use preferred- or deprecated+.

If the best flag is given additionally, then only the claims that have the highest rank amongst the selected claims will be returned.

The default is normal+|best (so by default claims with a 'deprecated' rank are never returned).

Output is always sorted from highest rank to lowest (regardless of any of these flags being set).

normal
deprecated
best
Combination of: future Sets a time constraint for the selected claim(s). Uses the claims' qualifiers of "start time" (P580) and "end time" (P582) to determine if the claim is valid for the selected time period(s).

The default is future|current|former (so by default claims that are valid for any time period are returned).

current
former
mdy Returns date values in month_day_year order instead of day_month_year order.

Arguments

The following table shows the available arguments (arg*) in their fixed order. For each command, the minimal set of arguments is marked (i.e. if the commands properties and qualifiers have been given, then at least both the arguments property_id and qualifier_id should be given as well).

(required) (optional) (optional) (required) (optional) (required)
{{#invoke:wd commands flags item_id property_id claim_id_or_lit_value qualifier_id }}
label, title
property/properties
reference/references
qualifier/qualifiers

Below follows a description of all arguments.

Argument Description
item_id

(optional)

EXPENSIVE Q-identifier of the item to be accessed (e.g. Q55).

In case of the label command, a P-identifier (or an available alias) of a property (e.g. P38) can also be given.

If this parameter is omitted, then the item connected to the current page will be used.

property_id P-identifier or an available alias of the property to be accessed (e.g. P38).
claim_id_or_lit_value

(optional)

Either the Q-identifier equal to the property value of the particular claim to be accessed (e.g. Q6655) or a literal value (i.e. string or quantity etc., no item label) equal to the property value (in its raw form) of the claim to be accessed.

Dates as literal values must be formatted year-month-day (e.g. 1731-2-11) for dates with a precision of days, year-month (e.g. 1731-2) for dates with a precision of months, and year (e.g. 1731) for dates of lesser precision without any spaces or leading zeros. Dates BCE require a minus sign in front of the year (e.g. -2950-1-31). Dates stored in the Julian calendar must have /Julian attached to the end (e.g. 1731-2-11/Julian). Decades like the 2010s must be given as 2010 (but the 2010s BCE as -2019), centuries like the 20th century as 1901 (but the 20th century BCE as -2000), and millenniums like the 3rd millennium as 2001 (but the 3rd millennium BCE as -3000).

Globe coordinates as literal values must be formatted with forward slashes (i.e. /) between the parts and no symbols (e.g. 52/5/3/N/4/19/3/E) without any spaces or leading zeros.

The special type 'no value' can be given by entering the empty string (i.e. ||) and the special type 'unknown value' can be given by entering a space (i.e. ||).

If this parameter is omitted, then all claims (matching any other constraints) within the property will be accessed.

qualifier_id P-identifier or an available alias of the qualifier to be accessed (e.g. P518).

Named properties

Named properties are aliases for P-identifiers. The following named properties (which are case-sensitive) are currently available:

Alias translates
to
P-identifier
coord P625
author P50
publisher P123
importedFrom P143
statedIn P248
publicationDate P577
startTime P580
endTime P582
retrieved P813
referenceURL P854
archiveURL P1065
title P1476
quote P1683
shortName P1813
language P2439
archiveDate P2960

Advanced usage

The layout of the output from value class commands can be customized by using a number of named flags, which are name-value pairs (i.e. |flag=value). The table below shows the available named flags.

Named flags can be given anywhere after the first command. To insert a space at the beginning or end of a value, use the HTML entity  .

Named flag Default Default condition Description
format= %p[%s][%r] if the property/properties command was given and the qualifier/qualifiers command was not given The format of a single claim. The available parameters are as follows.
Parameter Description
%p The claim's property value applied by the property/properties command.
%q The claim's qualifier value or list of qualifier values applied by the qualifier/qualifiers command.
%r The claim's reference value or list of reference values applied by the reference/references command.
%s The movable separator placeholder. This is a special parameter that is not applied by a command, but instead is filled automatically between each pair of claims (if a list of claims is returned). This is handy in case a reference is returned as well, since it allows the reference to be placed after the punctuation mark as prescribed by Wikipedia's manual of style. The default value is a comma (,) and can be overridden with the sep%s flag (see below).

Optional parameters can be given by encapsulating them between square brackets: [...]. All content between the square brackets is only displayed if a value for each optional parameter that has been defined between the same brackets has been found. Optional content can also be nested.

At least one parameter must be given that is not optional, while the %s parameter must always be defined as optional.

To get a literal [, ], % or \, escape the character by placing a backslash (\) directly in front of it (e.g. \%).

%q[%s][%r] if the property/properties command was not given and the qualifier/qualifiers command was given
%r if only the reference/references command was given
%p[ <span style="font-size:smaller">(%q)</span>][%s][%r] if the property/properties command was given and the qualifier/qualifiers command was given
sep= வார்ப்புரு:Dfn default The fixed separator between each pair of claims.
வார்ப்புரு:Dfn if only the reference/references command was given without the raw flag
sep%s= , default The movable separator between each pair of claims. This will be the value of the %s parameter applied to all claims except for the last in the list.
sep%q= வார்ப்புரு:Dfn default The separator between each pair of qualifiers of a single claim. This is the value separator for the %q parameter.
sep%r= வார்ப்புரு:Dfn default The separator between each pair of references of a single claim. This is the value separator for the %r parameter.
வார்ப்புரு:Dfn if the raw flag was given for the reference/references command
punc= வார்ப்புரு:Dfn default A punctuation mark placed at the end of the output. This will be placed on the %s parameter applied to the last claim in the list.

This allows any references to be placed after the punctuation mark when the output is used as part of a sentence.

Examples

Parameters and output types Example Description
Q55 = "நெதர்லாந்து", P1549 = "demonym"

[monolingual text]

{{#invoke:wd|property|Q55|P1549}}

Nederlander, голландцы, нидерландцы, нидерландец, нидерландка, голландец, голландка, Nederlanner, neerlandés, neerlandesa, オランダ人, Ολλανδός, Dutch, holland, nederlandano, Niederländer, nederlænder, nederlender, jan Netelan, Nederlandano, Nedänan, هولنديون, голандець, нідерландець, голандка, нідерландка, голандці, нідерландці, הולנדי, הולנדית, ওলন্দাজ, Nizozemec, olandese, olandesi, הולנדים, הולנדיות, neerlandès, neerlandesa, neerlandesos, nederlandes, Niederländerin, Niederländerinnen, neerlandés, neerlandesa, néerlandais, néerlandaise, néerlandaises, Ollannach, Холанђанин, Холанђанка, Холанђани, ولندیزی, ڈچ, ڈچ, neerlandezo, neerlandezi, neerlandeza, neerlandeze, ołandezo, ołandezi, ołandeza, ołandeze, هولاندي, هولاندية, هولانديين, هولانديات, Hollänner, Hollännerin, Ísiltíreach
Gets a monolingual text value in the current wiki's language.
P1549 = "demonym"

[monolingual text]

{{#invoke:wd|property|P1549}}

Nederlander, голландцы, нидерландцы, нидерландец, нидерландка, голландец, голландка, Nederlanner, neerlandés, neerlandesa, オランダ人, Ολλανδός, Dutch, holland, nederlandano, Niederländer, nederlænder, nederlender, jan Netelan, Nederlandano, Nedänan, هولنديون, голандець, нідерландець, голандка, нідерландка, голандці, нідерландці, הולנדי, הולנדית, ওলন্দাজ, Nizozemec, olandese, olandesi, הולנדים, הולנדיות, neerlandès, neerlandesa, neerlandesos, nederlandes, Niederländerin, Niederländerinnen, neerlandés, neerlandesa, néerlandais, néerlandaise, néerlandaises, Ollannach, Холанђанин, Холанђанка, Холанђани, ولندیزی, ڈچ, ڈچ, neerlandezo, neerlandezi, neerlandeza, neerlandeze, ołandezo, ołandezi, ołandeza, ołandeze, هولاندي, هولاندية, هولانديين, هولانديات, Hollänner, Hollännerin, Ísiltíreach
If the module is transcluded on the Script error: The function "title" does not exist. page (which is linked to Q55), then the Q55 can be omitted.
Q55 = "நெதர்லாந்து", P395 = "licence plate code"

[string]

{{#invoke:wd|property|Q55|P395}}

NL
Gets a literal string value.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை"

[quantity]

{{#invoke:wd|property|normal+|Q55|P1082}}

Gets a single property value from claims with a 'normal' rank or higher.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை"

[quantity]

{{#invoke:wd|properties|normal+|Q55|P1082}}

Script error: The function "properties" does not exist.
Gets multiple property values from claims with a 'normal' rank or higher.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[quantity], [time]

{{#invoke:wd|properties|qualifier|normal+|Q55|P1082|P585}}

Script error: The function "properties" does not exist.
Gets a single qualifier value for each claim, additional to the property value.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[quantity], [time], [reference]

{{#invoke:wd|properties|qualifier|references|normal+|Q55|P1082|P585}}

Script error: The function "properties" does not exist.
Gets references for each claim.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை"

[quantity], [reference]

A total of {{#invoke:wd|property|references|Q55|P1082}} people live in the Netherlands.

A total of people live in the Netherlands.
Gets a property with its references.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை"

[quantity], [reference]

The Netherlands has a population of {{#invoke:wd|property|references|Q55|P1082|punc=.}}

The Netherlands has a population of
Adds a punctuation mark at the end of the output, in front of the references.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[quantity], [time], [reference]

<ul>{{#invoke:wd|properties|qualifier|references|normal+|Q55|P1082|P585|format=<li>%p[%r][<ul><li>%q</li></ul>]</li>}}</ul>

    Script error: The function "properties" does not exist.
Returns the output in a custom format.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[time]

{{#invoke:wd|qualifier|normal+|Q55|P1082|P585}}

Gets a single qualifier per claim, by default for multiple matching claims.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[time]

{{#invoke:wd|property|qualifier|normal+|Q55|P1082|P585|format=%q[%s][%r]}}

The ID "qualifier" is unknown to the system. Please use a valid entity ID.
To get a single qualifier for only a single claim, give the property command too along with the regular qualifier format.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[time]

{{#invoke:wd|qualifier|Q55|P1082|'|P585}}

Gets a qualifier from claims for which the (raw) property value matches a given literal value.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[time]

{{#invoke:wd|qualifier|mdy|Q55|P1082||P585}}

Gets dates in month_day_year order.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை", P585 = "கால கட்டம்"

[time]

{{#invoke:wd|qualifier|raw|Q55|P1082||P585}}

Gets a raw date value.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை"

[reference]

{{#invoke:wd|'references|Q55|P1082|'}}

Script error: The function "references" does not exist.
Gets the references from a particular claim.
Q55 = "நெதர்லாந்து", P1082 = "மக்கள் தொகை"

[reference]

{{#invoke:wd|'references|raw|Q55|P1082|'}}

Script error: The function "references" does not exist.
Gets references from a particular claim in their raw form.
Q55 = "நெதர்லாந்து", P2855 = "VAT rate", P518 = "applies to part"

[item label]

{{#invoke:wd|qualifier|Q55|P2855|P518}}

Lua error at line 102: attempt to index field 'qualifiers' (a nil value).
Gets a single qualifier value (for each matching claim).
Q55 = "நெதர்லாந்து", P2855 = "VAT rate", P518 = "applies to part"

[item label]

{{#invoke:wd|qualifiers|Q55|P2855|P518}}

Script error: The function "qualifiers" does not exist.
Gets multiple qualifier values (for each matching claim).
Q55 = "நெதர்லாந்து", P2855 = "VAT rate", P518 = "applies to part"

[quantity], [item label]

{{#invoke:wd|properties|qualifiers|Q55|P2855|P518}}

Script error: The function "properties" does not exist.
Gets multiple property values along with multiple qualifier values.
Q55 = "நெதர்லாந்து", P2855 = "VAT rate", P518 = "applies to part"

[quantity], [item label]

{{#invoke:wd|properties|qualifiers|Q55|P2855|P518|sep=&#32;+&#32;|sep%s=|sep%q=&#32;/&#32;}}

Script error: The function "properties" does not exist.
Returns the output with custom separators.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|qualifiers|normal+|current|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets claims that are currently valid.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|linked|qualifiers|normal+|current|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets claims with linked property values.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|qualifiers|linked|normal+|current|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets claims with linked qualifier values.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|linked|short|qualifiers|linked|normal+|current|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets claims with linked property and qualifier values, with short property values wherever available.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", Q4917 = "அமெரிக்க டாலர்", P518 = "applies to part"

[item label]

{{#invoke:wd|qualifiers|linked|normal+|current|Q55|P38|Q4917|P518}}}}

Script error: The function "qualifiers" does not exist.
Gets qualifiers from claims for which the (raw) property value matches a given item ID.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|qualifiers|normal+|former|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets claims that were valid in the past.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|raw|qualifiers|normal+|former|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets raw property values.
Q55 = "நெதர்லாந்து", P38 = "நாணயம்", P518 = "applies to part"

[item label]

{{#invoke:wd|properties|raw|linked|qualifiers|normal+|former|Q55|P38|P518}}}}

Script error: The function "properties" does not exist.
Gets raw property values that are linked to Wikidata.
Q55 = "நெதர்லாந்து", P2884 = "mains voltage"

[quantity]

{{#invoke:wd|property|Q55|P2884}}

230 வோல்ட்டு
Gets a quantity value with its associated unit of measurement.
Q55 = "நெதர்லாந்து", P2884 = "mains voltage"

[quantity]

{{#invoke:wd|property|linked|Q55|P2884}}

Gets a quantity value with a linked unit of measurement.
Q55 = "நெதர்லாந்து", P2884 = "mains voltage"

[quantity]

{{#invoke:wd|property|raw|Q55|P2884}}

Gets a raw quantity value.
Q55 = "நெதர்லாந்து", P625 = "ஆயமுறை இடங்குறிப்பு"

[globe coordinate]

{{#invoke:wd|property|Q55|P625}}

52°19'N, 5°33'E
Gets a globe coordinate value.
Q55 = "நெதர்லாந்து", P625 = "ஆயமுறை இடங்குறிப்பு"

[globe coordinate]

{{#invoke:wd|property|linked|Q55|P625}}

Gets a linked globe coordinate value.
Q55 = "நெதர்லாந்து", P625 = "ஆயமுறை இடங்குறிப்பு"

[globe coordinate]

{{#invoke:wd|property|raw|Q55|P625}}

Gets a raw globe coordinate value.
Q55 = "நெதர்லாந்து", P625 = "ஆயமுறை இடங்குறிப்பு"

[globe coordinate]

{{#invoke:wd|property|Q55|coord}}

A named property (or alias) can be used instead of the P-identifier.
Q4917 = "அமெரிக்க டாலர்"

[item label]

{{#invoke:wd|label|Q4917}}

அமெரிக்க டாலர்
Gets an item's label.
Q4917 = "அமெரிக்க டாலர்"

[item label]

{{#invoke:wd|label|short|linked|Q4917}}

Gets an item's short and linked label.
P38 = "நாணயம்"

[property label]

{{#invoke:wd|label|P38}}

நாணயம்
Gets a property's label.
P38 = "நாணயம்"

[property label]

{{#invoke:wd|label|linked|P38}}

Gets a property's label that is linked to Wikidata.
Q776 = "யூடிரெக்ட்"

[item label]

{{#invoke:wd|label|Q776}}

யூடிரெக்ட்
Gets an item's label.
Q776 = "யூடிரெக்ட்"

[item label]

{{#invoke:wd|label|linked|Q776}}

Gets an item's linked label.


[item label]

{{#invoke:wd|label}}

யூடிரெக்ட்
If the module is transcluded on the Script error: The function "title" does not exist. page (which is linked to Q776), then the Q776 can be omitted.
Q776 = "யூடிரெக்ட்"

[page title]

{{#invoke:wd|title|Q776}}

Script error: The function "title" does not exist.
Gets the title of the page on the current wiki that is linked to the given item.
Q776 = "யூடிரெக்ட்"

[page title]

{{#invoke:wd|title|linked|Q776}}

Script error: The function "title" does not exist.
Gets the linked title of the page on the current wiki that is linked to the given item.


[page title]

{{#invoke:wd|title}}

Script error: The function "title" does not exist.
If the module is transcluded on the Script error: The function "title" does not exist. page (which is linked to Q776), then the Q776 can be omitted.

Example references

See also

  • {{Wikidata}}, a user-friendly wrapper template for this module.
  • {{WikidataOI}}, a wrapper template for this module that adds an opt-in toggle.

local p = {}

local function formatAmount(amount)
	-- strip + signs from front
	amount = mw.ustring.gsub(amount, "\+(.+)", "%1")
	
	return amount
end

local function getRawValue(snak)
	if snak.snaktype ~= 'value' then return "" end
	
	if snak.datavalue.type == "wikibase-entityid" then
		return "Q" .. snak.datavalue.value["numeric-id"]
	elseif snak.datavalue.type == "quantity" then
		return formatAmount(snak.datavalue.value["amount"])
	else
		return snak.datavalue.value
	end
end

local function getValue(snak)
	if snak.snaktype ~= 'value' then return "" end
	
	if snak.datavalue.type == "wikibase-entityid" then
		return mw.wikibase.label("Q" .. snak.datavalue.value["numeric-id"])
	elseif snak.datavalue.type == "quantity" then
		return formatAmount(snak.datavalue.value["amount"])
	else
		return snak.datavalue.value
	end
end

local function snakEqualsValue(snak, value)
	local snakValue = getRawValue(snak)
	
	if snak.datavalue.type == "wikibase-entityid" then value = value:upper() end
	
	return snakValue == value
end

p.property = function(frame)
	local entity, propertyID, claims
	local firstArg = mw.text.trim(frame.args[1] or "")
	
	if firstArg:sub(1,1):upper() == "Q" then
		entity = mw.wikibase.getEntity(firstArg)
		propertyID = mw.text.trim(frame.args[2] or "")
	else
		entity = mw.wikibase.getEntity()
		propertyID = firstArg
	end
	
	if entity and entity.claims then claims = entity.claims[propertyID] end
	if claims then
		local result = entity:formatPropertyValues(propertyID, mw.wikibase.entity.claimRanks).value
		
		-- if number type: remove thousand separators, bounds and units
		if (claims[1] and claims[1].mainsnak.snaktype == "value" and claims[1].mainsnak.datavalue.type == "quantity") then
			result = mw.ustring.gsub(result, "(%d),(%d)", "%1%2")
			result = mw.ustring.gsub(result, "(%d)±.*", "%1")
		end
		return result
	else
		return ""
	end
end

p.qualifier = function(frame)
	local entity, propertyID, propertyValue, qualifierID, claims
	local firstArg = mw.text.trim(frame.args[1] or "")
	local nextIndex = 2
	
	if firstArg:sub(1,1):upper() == "Q" then
		entity = mw.wikibase.getEntity(firstArg)
		propertyID = mw.text.trim(frame.args[nextIndex] or "")
		nextIndex = nextIndex + 1
	else
		entity = mw.wikibase.getEntity()
		propertyID = firstArg
	end
	
	local nextArg = mw.text.trim(frame.args[nextIndex] or "")
	nextIndex = nextIndex + 1
	
	if nextArg:sub(1,1):upper() == "P" then
		propertyValue = nil
		qualifierID = nextArg
	else
		-- Escaping: if the first character is '\' followed by 'P' or '\' (i.e. "\P" or "\\") then remove the '\'
		if nextArg:sub(1,2):upper() == "\\P" or nextArg:sub(1,2) == "\\\\" then nextArg = nextArg:sub(2) end
		propertyValue = nextArg
		qualifierID = mw.text.trim(frame.args[nextIndex] or "")
		nextIndex = nextIndex + 1
	end
	
	if entity and entity.claims then claims = entity.claims[propertyID] end
	if claims then
		local out = {}
		for k, v in pairs(claims) do
			if not propertyValue or v.mainsnak.snaktype == 'value' and snakEqualsValue(v.mainsnak, propertyValue) then
				for k2, v2 in pairs(v.qualifiers[qualifierID]) do
					if v2.snaktype == 'value' then
						out[#out + 1] = getValue(v2)
					end
				end
			end
		end
		return table.concat(out, ", ")
	else
		return ""
	end
end

p.label = function(frame)
	if frame.args[1] then
		return mw.wikibase.label(mw.text.trim(frame.args[1]))
	else
		return mw.wikibase.label()
	end
end

return p
"https://ta.wikipedia.org/w/index.php?title=Module:Wd&oldid=2857420" இலிருந்து மீள்விக்கப்பட்டது