وحدة:Wikidata2/filter claims

من دار الحكمة
اذهب إلى التنقلاذهب الى البحث
رتبة القيم / rank
  • |rank= يحدد نوع البيانات المطلوب عرضها:
|rank=all جميع البنود في الخاصية |rank=valid البنود المفضلة والتي بوضع "ترتيب عادي" ولكن لا يظهر المهملة. |rank=best (افتراضي) يظهر القيم المفضلة.
عام
  • |firstvalue=1
    • يعرض القيمة المطلوبة في الخاصية إن كانت موجودة، مالم سيعرض أول قيمة.
  • |numval=
    • يعرض عدد محدد من القيم في الخاصية، مثال: |numval=4 يعرض القيم الأربع الأولى في الخاصية إن كانت موجودة.
  • |justthisqual=
    • يظهر فقط قيمة التصفية، إذا لم تكن التصفية موجودة لن يظهر شيء.
التحديد والإزاحة
|limit= |offset=
  • يُستخدم ولتحديد عدد القيم التي يتم العمل عليها، (ملاحظة: قد تظهر عدد القيم كما حددتها أو أقل بناءًا على عوامل تصفية وتحديد أخرى)
    • مثال عند وضع |limit=4:
    • توصيفيظهر
      {{#invoke:Wikidata2|formatStatements| limit=4| noref=t| property=P106| entityId=Q76| rank=all}}
      سياسي، محام، كاتب سياسي و منظم مجتمع
التصفيات
تجنب
  • |avoidqualifier= يتجاهل القيم التي تحتوي تصفيات معينة. مثال: |avoidqualifier=P518 يظهر البند الذي لا يحتوي على تصفية ينطبق على جزء (P518).
  • الوسيط |avoidqualifiervalue= اختياري
    • بإستخدامه مع |avoidqualifier= فإن ذلك يحدد قيمة التصفية إذا طابقت الوسيط |avoidqualifiervalue= فلن يتم إظهارها، يدعم حالياً العناصر/items فقط.
طواف فرنسا 2020 (Q50411777)>|property=المشاركون (P710)>|avoidqualifier=سبب النهاية (P1534):
  • الوسيط |avoidqualifiervalue= فارغ
توصيفيظهر
{{#invoke:wikidata2 |formatStatements |entityId=Q50411777 |noref=t |avoidqualifiervalue= |withdate=t |separator=br |property=P710 |hidden=t |avoidqualifier=P1534 }}
  القائمة ...
أندريه أمادور
ريتشارد كاراباز
ميكال كوياتكووسكي
لوقا رو
بافل سيفاكوف
ديلان فان بارلي
بريمو روغيليتش
جورج بينيت
اموند جروندل يانسن
توم دومولين
روبرت جاسنك
سيب كوس
طوني مارتين
فاوت فان آرت
بيتر ساجان
إيمانويل بوخمان
فيليكس جروس شارتنر
لينارد كامنا
دانيال أوس
ماكسيميليان شاخمان
Mikaël Cherel
بينوا كوسنيفروي
أوليفر ناسن
Nans Peters
كليمان فنتوريني
الكسيس فويليرموز
جوليان ألافيليب
كاسبر أصغرين
سام بينيت
Tim Declercq
درايس ديفينينز
بوب جونهيلس
مايكل موركوف
ريمي كافانيا
تيبو بينو
ماثيو لاداجنوس
فالنتين مادواس
رودي مولار
سيباستيان رايشنباخ
مايكل اندا
بيلو بلباو
داميانو كاروسو
سوني كولبريلي
ماركو هالر
ماتج موهوريك
ووت بويلس
ريغوبيرتو أوران
البرتو بيتول
هيو كارثي
ينس كوكلاير
دانييل مارتينيز
نيلسون بوولس
تجي فان جارد إرين
نيرو كوينتانا
وينر أنكونا
وارن بارجويل
Kévin Ledanois
Dayer Quintana
كليمنت روسو
كونور سويفت
أليخاندرو بالبيردي
داريو كاتالدو
إيمانول إرفيتي
إنريك ماس
نيلسون أوليفيرا
خوسيه خواكين روخاس
مارك سولير
كارلوس فيرونا
ريتشي بورت
Niklas Eg
كيني إليسوند
مادس بيدرسن
توم سكوجين
جاسبر ستوفين
إدوارد ثيونس
جريج فان أفرمت
أليساندرو دي مارشي
سيمون جيشكي
جان هيرت
يوناس كوخ
مايكل شير
ماتيو ترينتين
ويليام مارتن
سيموني كونسوني
نيكولاس ايديت
خيسوس هييرادة
كريستوف لابورت
بيير لوك بيريشون
إيليا فيفياني
تادي بوجار
ديفيد دي لا كروز
ألكسندر كريستوف
فيجارد ستيك لاينجن
ماركو ماركاتو
جان بولانك
ميغل أنغل لوبز
عمر فريل
هوغو هول
جوركا إيزاجير
أليكسي لوتزينكو
لويس ليون سانشيز
Harold Tejada
كاليب إيوان
جاسبر دي بويست
توماس دي جيندت
فريدريك فريزون
روجر كلوج
آدم ييتس
جاك باور
استيبان تشافيس
داريل إيمبي
كريستوفر جول جينسين
لوكا ميزجيك
دانيال مارتن
بن هيرمانز
هوغو هوفستيتر
كريستس نيولاندز
Guy Niv
Nils Politt
توم فان أسبروك
نيكولو بونيفازيو
Mathieu Burgaudeau
Fabien Grellier
رومان سيكار
Geoffrey Soupe
أنتوني تورجيس
إيدفالد بواسون هاغن
ريان جيبونز
مايكل فالغرين
رومان كريوزيجير
ماكس والشيد
تيسج بنوت
نيكياس أرندت
سيس بول
مارك هيرشي
سورين كراغ أندرسن
Joris Nieuwenhuis
كاسبر بيدرسين
نيكولاس روش
بيير رولان
Cyril Barthe
Maxime Chevalier
بريان كوكار
سيريل غوتييه
كوينتين باشر
Kévin Réza
  • بإضافة الوسيط |avoidqualifiervalue=> (Q1210382)
توصيفيظهر
{{#invoke:wikidata2 |formatStatements |entityId=Q50411777 |noref=t |avoidqualifiervalue=Q1210382 |withdate=t |separator=br |hidden=t |property=P710 |qual1=P1534 |avoidqualifier=P1534 }}
  القائمة ...
أندريه أمادور
ريتشارد كاراباز
ميكال كوياتكووسكي
لوقا رو
بافل سيفاكوف
ديلان فان بارلي
بريمو روغيليتش
جورج بينيت
اموند جروندل يانسن
توم دومولين
روبرت جاسنك
سيب كوس
طوني مارتين
فاوت فان آرت
بيتر ساجان
إيمانويل بوخمان
فيليكس جروس شارتنر
لينارد كامنا
غريغور مولبرغر (لم يكمل السباق)
دانيال أوس
لوكاس بوستلبيرغر (لم يكمل السباق)
ماكسيميليان شاخمان
Mikaël Cherel
بينوا كوسنيفروي
بيير لاتور (لم يكمل السباق)
أوليفر ناسن
Nans Peters
كليمان فنتوريني
الكسيس فويليرموز
جوليان ألافيليب
كاسبر أصغرين
سام بينيت
Tim Declercq
درايس ديفينينز
بوب جونهيلس
مايكل موركوف
ريمي كافانيا
تيبو بينو
وليام بونيه (لم يكمل السباق)
ديفيد جودو (لم يكمل السباق)
ماثيو لاداجنوس
فالنتين مادواس
رودي مولار
سيباستيان رايشنباخ
مايكل اندا
بيلو بلباو
داميانو كاروسو
سوني كولبريلي
ماركو هالر
ماتج موهوريك
ووت بويلس
ريغوبيرتو أوران
البرتو بيتول
هيو كارثي
سيرجيو هيغويتا (لم يكمل السباق)
ينس كوكلاير
دانييل مارتينيز
نيلسون بوولس
تجي فان جارد إرين
نيرو كوينتانا
وينر أنكونا
وارن بارجويل
Kévin Ledanois
Dayer Quintana
دييغو روزا (لم يكمل السباق)
كليمنت روسو
كونور سويفت
أليخاندرو بالبيردي
داريو كاتالدو
إيمانول إرفيتي
إنريك ماس
نيلسون أوليفيرا
خوسيه خواكين روخاس
مارك سولير
كارلوس فيرونا
ريتشي بورت
Niklas Eg
كيني إليسوند
باوك موليما (لم يكمل السباق)
مادس بيدرسن
توم سكوجين
جاسبر ستوفين
إدوارد ثيونس
جريج فان أفرمت
أليساندرو دي مارشي
سيمون جيشكي
جان هيرت
يوناس كوخ
مايكل شير
ماتيو ترينتين
النر زكرين (لم يكمل السباق)
ويليام مارتن
سيموني كونسوني
نيكولاس ايديت
خيسوس هييرادة
كريستوف لابورت
أنتوني بيريز (لم يكمل السباق)
بيير لوك بيريشون
إيليا فيفياني
تادي بوجار
فابيو آرو (لم يكمل السباق)
ديفيد دي لا كروز
ألكسندر كريستوف
فيجارد ستيك لاينجن
ماركو ماركاتو
جان بولانك
ميغل أنغل لوبز
عمر فريل
هوغو هول
جوركا إيزاجير
جون ازقيراي (لم يكمل السباق)
أليكسي لوتزينكو
لويس ليون سانشيز
Harold Tejada
كاليب إيوان
Steff Cras (لم يكمل السباق)
جاسبر دي بويست
توماس دي جيندت
جون ديجينكولب
فريدريك فريزون
روجر كلوج
آدم ييتس
جاك باور
سام بولي (لم يكمل السباق)
استيبان تشافيس
داريل إيمبي
كريستوفر جول جينسين
لوكا ميزجيك
ميكيل نييف (لم يكمل السباق)
دانيال مارتن
أندريه جريبيل (لم يكمل السباق)
بن هيرمانز
هوغو هوفستيتر
كريستس نيولاندز
Guy Niv
Nils Politt
توم فان أسبروك
نيكولو بونيفازيو
Mathieu Burgaudeau
ليليان كالجمان (لم يكمل السباق)
جيروم كزن
Fabien Grellier
رومان سيكار
Geoffrey Soupe
أنتوني تورجيس
جياكومو نيزولو (لم يكمل السباق)
إيدفالد بواسون هاغن
ريان جيبونز
مايكل فالغرين
رومان كريوزيجير
ماكس والشيد
تيسج بنوت
نيكياس أرندت
سيس بول
مارك هيرشي
سورين كراغ أندرسن
Joris Nieuwenhuis
كاسبر بيدرسين
نيكولاس روش
بيير رولان
Cyril Barthe
Maxime Chevalier
بريان كوكار
ينس ديبوشار
سيريل غوتييه
كوينتين باشر
Kévin Réza
تفضيل
  • |preferqualifier= يظهر فقط القيم التي تحتوي تصفيات معينة. مثال: |preferqualifier=P518 يظهر البند الذي

يحتوي على تصفية ينطبق على جزء (P518).

  • الوسيط |preferqualifiervalue= اختياري
    • بإستخدامه مع |preferqualifier= فإن ذلك يحدد قيمة التصفية إذا طابقت الوسيط |preferqualifiervalue= ليتم إظهارها، يدعم حالياً العناصر/items فقط.
طواف فرنسا 2020 (Q50411777)>|property=المشاركون (P710)>|preferqualifier=سبب النهاية (P1534):
  • الوسيط |preferqualifiervalue= فارغ
توصيفيظهر
{{#invoke:wikidata2 |formatStatements |entityId=Q50411777 |noref=t |hidden=t |withdate=t |preferqualifiervalue= |separator=br |property=P710 |qual1=P1534 |preferqualifier=P1534 }}
  القائمة ...
إيغان بيرنال
جوناثان كاستروفيجو
غريغور مولبرغر (لم يكمل السباق)
لوكاس بوستلبيرغر (لم يكمل السباق)
رومان بارديه
بيير لاتور (لم يكمل السباق)
وليام بونيه (لم يكمل السباق)
ديفيد جودو (لم يكمل السباق)
ستيفان كونغ
رافائيل فالس
سيرجيو هيغويتا (لم يكمل السباق)
دييغو روزا (لم يكمل السباق)
باوك موليما (لم يكمل السباق)
النر زكرين (لم يكمل السباق)
أنتوني بيريز (لم يكمل السباق)
فابيو آرو (لم يكمل السباق)
دافيد فورمولو
جون ازقيراي (لم يكمل السباق)
Steff Cras (لم يكمل السباق)
جون ديجينكولب
فيليب جيلبير
سام بولي (لم يكمل السباق)
ميكيل نييف (لم يكمل السباق)
أندريه جريبيل (لم يكمل السباق)
ليليان كالجمان (لم يكمل السباق)
جيروم كزن
جياكومو نيزولو (لم يكمل السباق)
Michael Gogl
دومينيكو بوزوفيفو
ينس ديبوشار
  • بإضافة الوسيط |preferqualifiervalue=> (Q1210382)
توصيفيظهر
{{#invoke:wikidata2 |formatStatements |entityId=Q50411777 |noref=t |hidden=t |withdate=t |preferqualifiervalue=Q1210382 |separator=br |property=P710 |qual1=P1534 |preferqualifier=P1534 }}
  • |langpref=
القيم
  • |avoidvalue=
  • |prefervalue=
prefervalue
  • |prefervalue= يستخدم هذا الوسيط بشكل معاكس للوسيط |avoidvalue= حيث نقوم بتحديد القيمة التي نريد ظهورها |prefervalue=Q19481 فتظهر النتيجة للعنصر ليستر سيتي (Q19481) فقط، ولكن الفائدة من إستخدام هذا الوسيط هي التأكد من وجود العنصر في هذه الخاصية أو للحصول على التصفيات، مثال يظهر عناصر الفائز (P1346) مع تصفية الفِرَق المشاركة (P1923) بين قوسين.
توصيف {{#invoke:Wikidata2 |formatStatements |property=P1923 |qual1=P1355 |entityId=Q39052816 }}
يظهر نادي آرسنال (21 )، نادي بورنموث (13 )، برايتون أند هوف ألبيون (9 )، نادي بيرنلي (11 )، كارديف سيتي (10 )، نادي تشيلسي (21 )، كريستال بالاس (14 )، نادي إيفرتون (15 )، ليستر سيتي (15 )، نادي ليفربول (30 )، مانشستر سيتي (32 )، مانشستر يونايتد (19 )، نيوكاسل يونايتد (12 )، توتنهام هوتسبير (23 )، نادي واتفورد (14 )، وست هام يونايتد (15 )، نادي ساوثهامبتون (9 )، نادي فولهام (7 )، وولفرهامبتون واندررز (16 ) و هدرسفيلد تاون (3 )

إذا كنا قد حصلنا عبر خاصية الفائز (P1346) عن الفريق الفائز في الدوري الإنجليزي الممتاز 2018–19 (Q39052816). وأردنا الحصول على عدد مرات الفوز للفريق الفائز، من الجدول السابق ويتم ذلك بإستخدام الوسيط |justthisqual= ما ينتج:

توصيف {{#invoke:Wikidata2 |formatStatements |property=P1923 |justthisqual=P1355 |entityId=Q39052816 }}
يظهر 21 ، 13 ، 9 ، 11 ، 10 ، 21 ، 14 ، 15 ، 15 ، 30 ، 32 ، 19 ، 12 ، 23 ، 14 ، 15 ، 9 ، 7 ، 16 و 3

ولكننا نريد ظهور التصفية للفريق الفائز فقط وهو مانشستر سيتي (Q50602):

توصيف {{#invoke:Wikidata2 |formatStatements |prefervalue=Q50602 |property=P1923 |qual1=P1355 |entityId=Q39052816 }}
يظهر مانشستر سيتي (32 )
توصيف {{#invoke:Wikidata2 |formatStatements |prefervalue=Q50602 |property=P1923 |justthisqual=P1355 |entityId=Q39052816 }}
يظهر 32
avoidvalue
  • |avoidvalue= يستخدم هذا الوسيط بشكل معاكس للوسيط |prefervalue= إذا أردنا أن نتجاهل أو نلغي ظهور عنصر معين، مثال عند وضع |avoidvalue=Q50602 فتظهر النتائج دون ظهور مانشستر سيتي (Q50602).
توصيف {{#invoke:Wikidata2 |formatStatements |qual1=P1355 |property=P1923 |entityId=Q39052816 |avoidvalue=Q50602 }}
يظهر نادي آرسنال (21 )، نادي بورنموث (13 )، برايتون أند هوف ألبيون (9 )، نادي بيرنلي (11 )، كارديف سيتي (10 )، نادي تشيلسي (21 )، كريستال بالاس (14 )، نادي إيفرتون (15 )، ليستر سيتي (15 )، نادي ليفربول (30 )، مانشستر يونايتد (19 )، نيوكاسل يونايتد (12 )، توتنهام هوتسبير (23 )، نادي واتفورد (14 )، وست هام يونايتد (15 )، نادي ساوثهامبتون (9 )، نادي فولهام (7 )، وولفرهامبتون واندررز (16 ) و هدرسفيلد تاون (3 )
القيم في خاصية محددة
getonly
  • |getonly= يستخدم هذا الوسيط إذا أردنا الحصول على عناصر معينة التي تكون قيمة نموذج من (P31) فيها تساوي قيمة هذا الوسيط، مثال: |getonly=Q5 للحصول على الأفراد فقط.
    • القيم المتعددة ممكنة، مثل :|getonly=Q127448,Q193556 للحصول على البلديات السويدية والمناظر الطبيعية.
  • |getonlyproperty= إذا أردنا استخدام خاصية أخرى بدلاً من نموذج من (P31) في البند السابق.
  • |getonly= (Q804574) و|getonlyproperty=النشيد (P85) (لنحصل على مانشستر سيتي فقط)
توصيفوحدة:wikidata2وحدة:wikidata2/ملعبمطابق؟
{{#invoke:wikidata2|formatStatements| entityId=Q39052816| noref=t| getonlyproperty=P85| separator=#| property=P1923| getonly=Q804574}}
true
dontget
  • الوسيط |dontget= استخدامه عكس الوسيط السابق |getonly=.
  • |dontget= (Q804574) و|dontgetproperty=النشيد (P85) (لنحصل على جميع القيم ما عدا مانشستر سيتي)
توصيفوحدة:wikidata2وحدة:wikidata2/ملعبمطابق؟
{{#invoke:wikidata2|formatStatements| entityId=Q39052816| noref=t| dontgetproperty=P85| separator=#| dontget=Q804574| property=P1923}}
true

باستخدام القالب:

توصيفقالب:قيمة ويكي بياناتقالب:قيمة ويكي بيانات/ملعبمطابق؟
{{قيمة ويكي بيانات| dontgetproperty=P85| property=P1923| separator=#| noref=t| dontget=Q804574| entityId=Q39052816}}
true

local p = {}
local sandbox = "ملعب"
local sandbox_added = ""
if nil ~= string.find(mw.getCurrentFrame():getTitle(), sandbox, 1, true) then
	sandbox_added = "/" .. sandbox
end
local config = mw.loadData('Module:Wikidata2/config' .. sandbox_added)
local function isvalid(x)
	if x and x ~= nil and x ~= "" then return x end
	return nil
end
local function table_or_nil(values)
	local q_values = {}
	if not isvalid(values) then return nil end
	if type(values) == "string" then
		q_values = mw.text.split(values, ",")
	elseif type(values) == "table" then
		q_values = values
	end
	if #q_values == 0 then q_values = nil end
	return q_values
end
local function parse_number(value)
	return (type(value) == "number") and value or tonumber(value)
end
function p.get_snak_id(snak)
	if snak and snak.type and
		snak.type == "statement" and snak.mainsnak and snak.mainsnak.snaktype and
		snak.mainsnak.snaktype == "value" and
		snak.mainsnak.datavalue and
		snak.mainsnak.datavalue.type and
		snak.mainsnak.datavalue.type == "wikibase-entityid" and
		snak.mainsnak.datavalue.value and
		snak.mainsnak.datavalue.value.id
	then
		return snak.mainsnak.datavalue.value.id
	end
end
local function table_contains(table, element)
	for _, value in pairs(table) do
		if value == element then
			return true
		end
	end
	return false
end
local function filter_by_value(claims, option, mode)
	option = table_or_nil(option)
	if not isvalid(option) then
		return claims
	end
	local filtered_claims = {}
	for _, claim in pairs(claims) do
		local snak_id = p.get_snak_id(claim)
		local is_included = table_contains(option, snak_id)
		if snak_id and ((mode == "avoid" and not is_included) or (mode == "prefer" and is_included)) then
			table.insert(filtered_claims, claim)
		end
	end
	return filtered_claims
end
local function any_qualifier_matches(qualifiers, values)
	if not qualifiers then return false end
	for _, qual in pairs(qualifiers) do
		if qual.snaktype == "value"
			and qual.datavalue
			and qual.datavalue.value
			and qual.datavalue.value.id
			and table_contains(values, qual.datavalue.value.id) then
			return true
		end
	end
	return false
end
local function filter_by_qualifier(claims, option, values, mode)
	if not isvalid(option) then return claims end
	local qualifier_id = option:upper()
	local q_values = table_or_nil(values)
	local filtered_claims = {}
	for _, statement in pairs(claims) do
		local qualifiers = statement.qualifiers and statement.qualifiers[qualifier_id]
		if mode == "prefer" then
			if qualifiers then
				if isvalid(q_values) then
					if any_qualifier_matches(qualifiers, q_values) then
						table.insert(filtered_claims, statement)
					end
				else
					table.insert(filtered_claims, statement)
				end
			end
		elseif mode == "avoid" then
			if not qualifiers then
				table.insert(filtered_claims, statement)
			elseif isvalid(q_values) then
				if not any_qualifier_matches(qualifiers, q_values) then
					table.insert(filtered_claims, statement)
				end
			end
		end
	end
	return filtered_claims
end
local function claims_limit(claims, maxCount)
	if #claims <= maxCount then return claims end
	return { unpack(claims, 1, maxCount) }
end
local function claims_offset(claims, startOffset)
	if #claims <= startOffset then return claims end
	return { unpack(claims, startOffset + 1, #claims) }
end
local function filter_langs(claims)
	local filtered_claims = {}
	local arabic_ids = config.i18n.local_lang_qids
	for _, statement in pairs(claims) do
		if statement.qualifiers then
			for prop, id in pairs(arabic_ids) do
				local qualifier_values = statement.qualifiers[prop]
				if qualifier_values then
					for _, v in pairs(qualifier_values) do
						if v.snaktype == "value" and v.datavalue.value["numeric-id"] == id then
							table.insert(filtered_claims, statement)
							break
						end
					end
				end
			end
		end
	end
	if #filtered_claims > 0 then
		claims = filtered_claims
	end
	return claims
end
local function filter_get_only_or_dont(claims, option, f_property, mode)
	f_property = f_property or "P31"
	local claims2 = {}
	local values = table_or_nil(option) or {}
	local is_dont_mode = (mode == "dont")
	for _, claim in pairs(claims) do
		local id = p.get_snak_id(claim)
		if id then
			local valid = is_dont_mode
			local t2 = mw.wikibase.getBestStatements(id, f_property)
			if t2 and #t2 > 0 then
				for _, claim2 in pairs(t2) do
					local snak2 = p.get_snak_id(claim2)
					if snak2 and table_contains(values, snak2) then
						valid = not is_dont_mode
						break
					end
				end
			end
			if valid then
				table.insert(claims2, claim)
			end
		end
	end
	return claims2
end
local function filter_numval(claims, numval)
	if #claims > 1 and #claims > numval then
		local claimsnumval = { unpack(claims, 1, numval) }
		return claimsnumval
	end
	return claims
end
local function filter_first(claims, firstvalue)
	local first = tonumber(firstvalue)
	if isvalid(first) and #claims > 1 then
		local va = math.max(1, math.min(first, #claims)) -- Ensure 'first' is within bounds
		return { claims[va] }
	elseif isvalid(firstvalue) and #claims > 0 then
		return { claims[1] }
	end
	return claims
end
function p.filter_claims(claims, options)
	local claims = claims
	-- options.getonly
	if isvalid(options.getonly) then
		claims = filter_get_only_or_dont(claims, options.getonly, options.getonlyproperty, "get")
	end
	-- options.dontget
	if isvalid(options.dontget) then
		claims = filter_get_only_or_dont(claims, options.dontget, options.dontgetproperty, "dont")
	end
	local offset = parse_number(options.offset)
	if isvalid(offset) then
		claims = claims_offset(claims, offset)
	end
	local limit = parse_number(options.limit)
	if isvalid(limit) then
		claims = claims_limit(claims, limit)
	end
	if isvalid(options.avoidqualifier) then -- to avoid value with a given qualifier
		claims = filter_by_qualifier(claims, options.avoidqualifier, options.avoidqualifiervalue, "avoid")
	end
	if isvalid(options.preferqualifier) then
		claims = filter_by_qualifier(claims, options.preferqualifier, options.preferqualifiervalue, "prefer")
	end
	-- options.avoidvalue
	if isvalid(options.avoidvalue) then
		claims = filter_by_value(claims, options.avoidvalue, "avoid")
	end
	-- options.prefervalue
	if isvalid(options.prefervalue) then
		claims = filter_by_value(claims, options.prefervalue, "prefer")
	end
	if not isvalid(options.langpref) then
		claims = filter_langs(claims)
	end
	local firstvalue = isvalid(options.enbarten) or isvalid(options.firstvalue)
	if firstvalue then
		claims = filter_first(claims, firstvalue)
	end
	local numval = parse_number(options.numval)
	if isvalid(numval) then
		claims = filter_numval(claims, numval)
	end
	return claims
end
return p