الفرق بين المراجعتين ل"وحدة:Wikibase"

من موسوعة المزرعة
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'---------- Module:Wikibase ---------------- local p = {} function p.getEntityObject(id) if not mw.wikibase then return nil end entity = mw.wikibase.getEntityObject(id)...')
 
سطر 1: سطر 1:
---------- Module:Wikibase ----------------
 
 
local p = {}
 
local p = {}
function p.getEntityObject(id)
 
if not mw.wikibase then return nil end
 
entity = mw.wikibase.getEntityObject(id)
 
return entity
 
end
 
  
-- Return the item ID of the item linked to the current page.
+
function p.wikidatacheck(frame)
function p.id(frame)
+
local pframe = frame:getParent()
if not mw.wikibase then return nil end
+
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
entity = mw.wikibase.getEntityObject()
+
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
if entity == nil then
+
 
return "no entity"
+
local property = config.property
 +
local value = config.value or ""
 +
local catbase = config.category
 +
local namespaces = config.namespaces
 +
local nocatsame = config.nocatsame or ""
 +
local ok = false -- one-way flag to check if we're in a good namespace
 +
local ns = mw.title.getCurrentTitle().namespace
 +
for v in mw.text.gsplit( namespaces, ",", true) do
 +
if tonumber(v) == ns then
 +
ok = true
 +
end
 +
end
 +
if not ok then -- not in one of the approved namespaces
 +
return ""
 
end
 
end
return entity.id
+
local entity = mw.wikibase.getEntityObject()
end
+
if not entity then -- no Wikidata item
 
+
return "[[Category:" .. catbase .. " not in Wikidata]]"
-- Return the label of a given data item, or of connected page
 
-- if no argument is provided to this method.
 
function p.label(frame)
 
if not mw.wikibase then return nil end
 
if frame.args[1] == nil then
 
entity = mw.wikibase.getEntityObject()
 
if not entity then return nil end
 
id = entity.id
 
else
 
id = mw.text.trim(frame.args[1])
 
 
end
 
end
return mw.wikibase.label( id )
+
if value == "" then
end
+
return nil -- Using Wikidata
 
 
-- Return the description of a given data item, or of connected page
 
-- if no argument is provided to this method.
 
function p.description(frame)
 
if not mw.wikibase then return nil end
 
if frame.args[1] == nil then
 
entity = mw.wikibase.getEntityObject()
 
if not entity then return nil end
 
id = entity.id
 
else
 
id = mw.text.trim(frame.args[1])
 
 
end
 
end
return mw.wikibase.description( id )
+
local claims = entity.claims or {}
end
+
local hasProp = claims[property]
 
+
if not hasProp then -- no claim of that property
-- Return the local page about a given data item, or of connected page
+
return "[[Category:" .. catbase .. " not in Wikidata]]" -- bad. Bot needs to add the property
-- if id is not specified.
 
function p.page(frame)
 
if not mw.wikibase then return nil end
 
if frame.args[1] == nil then
 
entity = mw.wikibase.getEntityObject()
 
if not entity then return nil end
 
id = entity.id
 
else
 
id = mw.text.trim(frame.args[1])
 
 
end
 
end
return mw.wikibase.sitelink( id )
+
for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values?
end
+
propValue = (v.mainsnak.datavalue or {}).value
 
+
if propValue == value then
-- Return the data type of a property
+
if nocatsame == "" then
function p.datatype(frame)
+
return "[[Category:" .. catbase .. " same as Wikidata]]" -- yay!
if not mw.wikibase then return nil end
+
else
if frame.args[1] and string.find(frame.args[1], "Property:P") then
+
return nil -- if nocatsame, the "same as" category is not added
if mw.wikibase.getEntityObject(string.gsub(frame.args[1], "Property:P", "P"))  then
+
end
return mw.wikibase.getEntityObject(string.gsub(frame.args[1], "Property:P", "P") ).datatype
 
end
 
elseif frame.args[1] and string.find(frame.args[1], "P") then
 
if mw.wikibase.getEntityObject(frame.args[1])  then
 
return mw.wikibase.getEntityObject(frame.args[1]).datatype
 
 
end
 
end
 
end
 
end
 +
return "[[Category:" .. catbase .. " different from Wikidata]]" -- needs human review :(
 
end
 
end
  
 
return p
 
return p

مراجعة 04:34، 5 أبريل 2021

هذه الوحدة تم نسخها من المثال من صفحة توثيق الوحدة في mw:Extension:Wikibase Client/Lua. ويجب أن تبقى متسقة مع تلك الصفحة.

الاستخدام

معرف
{{#invoke: Wikibase | id }}
تسمية
{{#invoke: Wikibase | label }}
{{#invoke: Wikibase | label | entity id (Q# or P#) }}
وصف
{{#invoke: Wikibase | description }}
{{#invoke: Wikibase | description | entity id (Q# or P#) }}
صفحة
{{#invoke: Wikibase | page }}
{{#invoke: Wikibase | page | item id (Q#) }}
نوع البيانات
{{#invoke: Wikibase | datatype | property id (P#) }}

أمثلة

معرف

  • {{#invoke:Wikibase | id }} ينتج ← خطأ: الوظيفة "id" غير موجودة.

تسمية

  • {{#invoke:Wikibase | label }} ينتج ← خطأ: الوظيفة "label" غير موجودة.
  • {{#invoke:Wikibase | label | Q132689 }} ينتج ← خطأ: الوظيفة "label" غير موجودة.
  • {{#invoke:Wikibase | label | P31 }} ينتج ← خطأ: الوظيفة "label" غير موجودة.

وصف

  • {{#invoke:Wikibase | description }} ينتج ← خطأ: الوظيفة "description" غير موجودة.
  • {{#invoke:Wikibase | description | Q132689 }} ينتج ← خطأ: الوظيفة "description" غير موجودة.
  • {{#invoke:Wikibase | description | P31 }} ينتج ← خطأ: الوظيفة "description" غير موجودة.

صفحة

  • {{#invoke:Wikibase | page }} ينتج ← خطأ: الوظيفة "page" غير موجودة.
  • {{#invoke:Wikibase | page | Q132689 }} ينتج ← خطأ: الوظيفة "page" غير موجودة.

نوع البيانات

⧼datatypes-type-commonsMedia⧽: [[d:Property:P18|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P18)]]

  • {{#invoke:Wikibase | datatype | P18 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P18 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-globe-coordinate⧽: [[d:Property:P625|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P625)]]

  • {{#invoke:Wikibase | datatype | P625 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P625 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-wikibase-item⧽: [[d:Property:P6|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P6)]]

  • {{#invoke:Wikibase | datatype | P6 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P6 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-wikibase-property⧽: [[d:Property:P1647|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P1647)]]

  • {{#invoke:Wikibase | datatype | P1647 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P1647 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-string⧽: [[d:Property:P225|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P225)]]

  • {{#invoke:Wikibase | datatype | P225 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P225 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-monolingualtext⧽: [[d:Property:P1448|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P1448)]]

  • {{#invoke:Wikibase | datatype | P1448 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P1448 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-quantity⧽: [[d:Property:P1082|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P1082)]]

  • {{#invoke:Wikibase | datatype | P1082 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P1082 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-time⧽: [[d:Property:P569|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P569)]]

  • {{#invoke:Wikibase | datatype | P569 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P569 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-url⧽: [[d:Property:P856|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P856)]]

  • {{#invoke:Wikibase | datatype | P856 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P856 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-math⧽: [[d:Property:P2534|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P2534)]]

  • {{#invoke:Wikibase | datatype | P2534 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P2534 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

⧼datatypes-type-external-id⧽: [[d:Property:P212|

  • عنصر قائمة منقطة
  1. تحويل قالب:تسمية
Light Bulb Icon.svg
هذه تحويلة لقالب:
فضلًا اطلب حذف هذه التحويلة حذفًا سريعًا إن لم تكن ضرورية.
طالع عدد استخدامات القالب في المقالات (من هنا)

(P212)]]

  • {{#invoke:Wikibase | datatype | P212 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.
  • {{#invoke:Wikibase | datatype | Property:P212 }} ينتج ← خطأ: الوظيفة "datatype" غير موجودة.

local p = {}

function p.wikidatacheck(frame)
	local pframe = frame:getParent()
	local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
	local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template

	local property = config.property
	local value = config.value or ""
	local catbase = config.category
	local namespaces = config.namespaces
	local nocatsame = config.nocatsame or ""
	local ok = false -- one-way flag to check if we're in a good namespace
	local ns = mw.title.getCurrentTitle().namespace
	for v in mw.text.gsplit( namespaces, ",", true) do
		if tonumber(v) == ns then
			ok = true
		end
	end
	if not ok then -- not in one of the approved namespaces
		return ""
	end
	local entity = mw.wikibase.getEntityObject()
	if not entity then -- no Wikidata item
		return "[[Category:" .. catbase .. " not in Wikidata]]"
	end
	if value == "" then
		return nil -- Using Wikidata
	end
	local claims = entity.claims or {}
	local hasProp = claims[property]
	if not hasProp then -- no claim of that property
		return "[[Category:" .. catbase .. " not in Wikidata]]" -- bad. Bot needs to add the property
	end
	for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values?
		propValue = (v.mainsnak.datavalue or {}).value
		if propValue == value then
			if nocatsame == "" then
				return "[[Category:" .. catbase .. " same as Wikidata]]" -- yay!
			else
				return nil -- if nocatsame, the "same as" category is not added
			end
		end
	end
	return "[[Category:" .. catbase .. " different from Wikidata]]" -- needs human review :(
end

return p