יחידה:PropertyLink: הבדלים בין גרסאות בדף
מראה
שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש שקט הוא רפש ש |
מ שוחזר מעריכות של 5.22.130.78 (שיחה) לעריכה האחרונה של יונה בנדלאק |
||
| שורה 19: | שורה 19: | ||
if not entity or not entity.claims then return end --the entity doesnt exist or have no claims | if not entity or not entity.claims then return end --the entity doesnt exist or have no claims | ||
local | local propertyVals = entity.claims[property] | ||
if not propertyVals then return end --no such property for this item | if not propertyVals then return end --no such property for this item | ||
value, error = wikidataModule.getValueOfClaim(propertyVals[1], qualifier, nil) | value, error = wikidataModule.getValueOfClaim(propertyVals[1], qualifier, nil) | ||
גרסה מ־13:43, 24 במרץ 2016
יחידה זו משמשת כדי לקשר בוויקיפדיה לפי ויקינתונים. היחידה מיועדת לשימוש בעיקר בתבניות וכוללת את הפונקציות הבאות:
- property או מאפיין - לקבלת קישור לפי "קביעה" מוויקינתונים
- label או תווית: דומה לפונקציה הקודמת, רק שלא מחזיר קישור אלא ללא קישור - מחזיר את התווית (label) וללא תלות בקישור כלשהו שקיים או לא קיים בוויקיפדיה בעברית
- פרמטרים: שם המאפיין (property) המתאים (בצורה של P123)
- imageLink או תמונה: פונקציה שמחזירה תמונה שמתאימה לשילוב בתבנית מידע בערך.
- פרמטרים:
- פרמטר ראשון - (אופציונלי) אם לא מקבל פרמטר בכלל משתמש ב־d:Property:p18 (מאפיין כללי של תמונה), אחרת משתמש בפרמטר המאפיין המכיל את התמונה
- width - גודל התמונה (אחרת 220px)
- פרמטרים:
- hasEntry או יש פריט: פונקציה שמחזירה "1" אם לערך יש פריט ויקינתונים; או "" אם אין.
- פרמטרים: אין
הערות נוספות:
- ייתכן שבעתיד תהיה תמיכה מובנית לפחות בחלק מהאפשרויות הנ"ל ראו בmeta:Wikidata/Notes/Inclusion_syntax#Items
--[[
Fetch the "as of date" property of a associated with a property
]]
function asOfDateQualifier(claim)
local AS_OF_PROPERTY = 'P585'
local wikidataModule = require('Module:Wikidata')
local value
local error
value, error = wikidataModule.getValueOfClaim(claim, AS_OF_PROPERTY, nil)
if value then
return ' (נכון ל־'..value ..')'
end
return ''
end
function getPropertyQualifier(property, qualifier)
local wikidataModule = require('Module:Wikidata')
local entity = mw.wikibase.getEntityObject()
if not entity or not entity.claims then return end --the entity doesnt exist or have no claims
local propertyVals = entity.claims[property]
if not propertyVals then return end --no such property for this item
value, error = wikidataModule.getValueOfClaim(propertyVals[1], qualifier, nil)
return value
end
--[[
Fetch property from wikidata:
* if the entity or the claim doesn't exist - nil
* if the property exist:
- for entity reference - returns link to entity (using sitelink) with label as text, otherwise wikidata label as text
- for string - returns the string
- for quantity - returns the amount
- for time - returns the time as string
- for image - returns image inclusion with 250px size
]]
function getProperty( propertyName, allowMulti, allowNA )
local entity = mw.wikibase.getEntityObject()
if not entity or not entity.claims then return end --the entity doesnt exist or have no claims
local propertyVals = entity.claims[propertyName]
if not propertyVals then return end --no such property for this item
local resTable = {}
for i, property in ipairs(propertyVals) do
local propValue = property.mainsnak and property.mainsnak.datavalue
if not propValue then
if allowNA and (property.mainsnak and property.mainsnak.snaktype)=='somevalue' then
return 'לא ידוע'
else
--property doesnt exist
return
end
end
local isImage = (property.mainsnak.datatype=='commonsMedia')
if propValue['type'] == 'wikibase-entityid' then
local linkTarget = mw.wikibase.sitelink( "Q" .. propValue.value['numeric-id'] )
-- use Hebrew label, if it doesn't exist use English and otherwise use Q id
local linkTitle = mw.wikibase.label( "Q" .. propValue.value['numeric-id'] ) or (mw.wikibase.getEntityObject( "Q" .. propValue.value['numeric-id'] ).labels['en'] and mw.wikibase.getEntityObject( "Q" .. propValue.value['numeric-id'] ).labels['en'].value) or "Q" .. propValue.value['numeric-id']
table.insert(resTable, linkTarget and linkTitle and mw.ustring.format( "[[%s|%s]]", linkTarget, linkTitle )
or linkTitle)
elseif propValue['type'] == 'string' then
if isImage then
table.insert(resTable, mw.ustring.format( '[[File:%s|250px]]', propValue.value ))
else
table.insert(resTable, propValue.value)
end
elseif propValue['type'] == 'monolingualtext' then
table.insert(resTable, propValue.value.text)
elseif propValue['type'] == 'quantity' then
local lang = mw.getContentLanguage()
local asOfDate = asOfDateQualifier(property)
table.insert(resTable, lang:formatNum( tonumber(propValue.value.amount) ) .. asOfDate)
elseif propValue['type'] == 'time' then
local timeValue = entity:formatPropertyValues( propertyName ).value
timeValue = mw.ustring.gsub(timeValue, '^(%d+ %a+) (%d+)$', '[[%1]] [[%2]]')
table.insert(resTable, timeValue)
end
if not allowMulti then
break
end
end
return table.concat( resTable, ', ' )
end
function property( frame )
return getProperty(string.upper(frame.args[1]), (frame.args[2] and string.len(frame.args[2])>0) or false, true)
end
function getLabel( propertyName )
local entity = mw.wikibase.getEntityObject()
if not entity or not entity.claims then return end--the entity doesnt exist or have no claims
local property = entity.claims[propertyName]
if not property then return end --no such property for this item
property = property[1]
local propValue = property.mainsnak.datavalue
if not propValue then return '' end --property doesnt exist
if propValue['type'] == 'wikibase-entityid' then
return mw.wikibase.label( "Q" ..propValue.value['numeric-id'] )
elseif propValue['type'] == 'string' then
return propValue.value
end
end
-- Return the label for property, or the label of the linked entiy of that property
function label( frame )
return getLabel( string.upper(frame.args[1] ))
end
function getImageLink( propName, width, align, description, border)
local entity = mw.wikibase.getEntityObject()
if not entity or not entity.claims then return end --the entity doesnt exist or have no claims
local property = entity.claims[propName or "P18"]
if property then
local width = width or "220"
local extraParameters = width..'px'
if align then extraParameters = extraParameters .. '|' .. align end
if description then extraParameters = extraParameters .. '|' .. description end
if border and (#border > 0) then extraParameters =extraParameters..'|' ..'border' end
return mw.ustring.format( '[[File:%s|%s]]', property[1].mainsnak.datavalue.value, extraParameters )
end
end
--use this function to get associated image to be used in the article
function imageLink( frame )
return getImageLink(string.upper(frame.args[1] or 'P18'), frame.args["width"], frame.args["align"], frame.args["description"], frame.args["גבול"])
end
-- returns "1" if the page has an associated wikidata entry, "" otherwise
function hasEntry()
local entity = mw.wikibase.getEntityObject()
--if not entity or not entity.claims then return end --the entity doesnt exist or have no claims
if not entity then return end --the entity doesnt exist or have no claims
return 1
end
return {
imageLink = imageLink,
['תמונה'] = imageLink,
label = label,
['תווית'] = label,
property = property,
['מאפיין'] = property,
getProperty = getProperty,
getPropertyQualifier = getPropertyQualifier,
getImageLink = getImageLink,
getLabel = getLabel,
hasEntry = hasEntry,
['יש פריט'] = hasEntry
}