Moduł:Wikidane

Z Wikipodróży

Moduł do odczytywania i prezentowania wartości cech z wikidanych powiązanych z bieżącym artykułem.

P[edytuj]

Funkcja do odczytu i prezentacji wartości cechy.

parametry[edytuj]

Pole Do czego służy? Jak wypełnić?
1 Numer cechy Np. 94 (herb) lub 395 (tablice rejestracyjne).
id Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną. Np. Q42.
separator Separator wartości, gdy dostępna jest więcej niż jedna (zbiór):
i
przecinek oraz spójnik i przed ostatnią wartością
lub
przecinek oraz spójnik lub przed ostatnią wartością
inny
jawnie podany inny separator
brak
przecinek (wartość domyślna)
Np. lub aby wyświetlić więcej niż jedną datę urodzin.
linkuj Wartość logiczna do sterowania generowaniem linków:
tak
generuj link zawsze (jeśli możliwy)
nie
generuj tylko opis
brak
generuj w zależności od typu, tj. tak dla artykułów i koordynat, nie dla dat
Np. tak dla daty urodzin lub śmierci
procesor Wtyczka do formatowania wartości Pełna nazwa modułu, który w jest odpowiedzialny za formatowanie zawartości cechy.
bez wartości Treść wartości specjalnej oznaczająca brak danej cechy. Zaleca się podawanie odpowiedniej treści, gdyż zależy ona silnie od kontekstu cechy. Domyślna treść bez wartości raczej nie oddaje jasno informacji i dlatego artykuły, które korzystają z domyślnego tekstu umieszczane są w kategorii technicznej Kategoria:Cecha bez wartości.
ile Maksymalna liczba wartości do odczytania. Cecha może zawierać więcej niż jedną wartość oraz domyślnie zwracane są wszystkie najlepsze wyniki. Tym polem można ten zbiór dodatkowo ograniczyć. Pole musi mieć wartość nie mniejszą niż 1.
P518 Filtr kwalifikatora „odnosi się do części Lista akceptowanych wartości Qnnn. Dopuszczalne są też wartości specjalne novalue, somevalue i missing. Elementy należy oddzielać znakiem odstępu.
P625 Filtr kwalifikatora „współrzędne geograficzne Wartość globe oznacza, że wymagana jest obecność kwalifikatora z jakimikolwiek współrzędnymi.

T[edytuj]

Funkcja do sprawdzenia obecności cechy.

parametry[edytuj]

Pole Do czego służy? Jak wypełnić?
1 Numer cechy Np. 94 (herb) lub 395 (tablice rejestracyjne).
id Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną. Np. Q42.
P518 Filtr kwalifikatora „odnosi się do części Lista akceptowanych wartości Qnnn. Dopuszczalne są też wartości specjalne novalue, somevalue i missing. Elementy należy oddzielać znakiem odstępu.
P625 Filtr kwalifikatora „współrzędne geograficzne Wartość globe oznacza, że wymagana jest obecność kwalifikatora z jakimikolwiek współrzędnymi.

etykieta[edytuj]

Funkcja do nazwy elementu (domyślnie z bieżącej strony). Jeśli nazwa nie istnieje to zwracana jest nazwa strony bez prefiksów.

parametry[edytuj]

Pole Do czego służy?
1..N Kod języka, w którym nazwę chcemy uzyskać. Jeśli podane jest więcej kodów niż jeden (w kolejnych parametrach) to zwracana jest pierwsza znaleziona nazwa. Brak parametrów oznacza domyślnie wybór nazwy w języku polskim.
id Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną.

id[edytuj]

Funkcja do odczytu identyfikatora strony na wikidanych.

parametry[edytuj]

Pole Do czego służy?
1 Opcjonalny tytuł strony. Domyślnie brana jest strona bieżąca.

label[edytuj]

Funkcja do odczytu nazwy elementu w Wikidanych.

parametry[edytuj]

Pole Do czego służy?
1 Identyfikator elementu w Wikidanych. Identyfikator musi się zaczynać na P lub Q, po których następuje ciąg cyfr dziesiętnych.

page[edytuj]

Funkcja do odczytu nazwy strony na Wikipedii.

parametry[edytuj]

Pole Do czego służy?
1 Identyfikator elementu w Wikidanych. Identyfikator musi się zaczynać na P lub Q, po których następuje ciąg cyfr dziesiętnych.

V i Dump[edytuj]

Funkcje techniczne do odczytu dowolnej gałęzi lub liścia z drzewa danych. V zwraca wartość liścia, jeśli istnieje. Dump robi zrzut diagnostyczny wybranej gałęzi.

parametry[edytuj]

Pole Do czego służy?
1..N Nazwa lub indeks coraz bardziej zagnieżdżonej gałęzi danych. Interesujące identyfikatory dla pierwszego poziomu to:
  • id z identyfikatorem Qid
  • claims ze zbiorem cech
  • labels ze zbiorem etykiet w różnych językach
  • sitelinks z interwiki i „medalami”
  • bestclaims ze zbiorem odfiltrowanych cech, który można zawęzić parametrami opisanymi w funkcji P
id Opcjonalny identyfikator danych z Wikidanych. Domyślnie odczytywane są cechy z danych powiązanych z bieżącą stroną.

przykłady[edytuj]

  • {{#invoke:Wikidane|V|sitelinks|plwikivoyage|title}} – tytuł strony w Wikipodróżach
  • {{#invoke:Wikidane|V|sitelinks|commonswiki|title}} – tytuł strony w
  • {{#invoke:Wikidane|V|bestclaims|P18|1|mainsnak|datavalue|value}} – nazwa pierwszego pliku z ilustracją w
  • {{#invoke:Wikidane|V|bestclaims|P625|1|mainsnak|datavalue|value|latitude}} – szerokość geograficzna z pierwszych dostępnych współrzędnych
  • {{#invoke:Wikidane|V|bestclaims|P159|P625=globe|1|qualifiers|P625|1|datavalue|value|latitude}} – szerokość geograficzna z pierwszych dostępnych współrzędnych podanych jako kwalifikator dla siedziby przedsiębiorstwa

uwagi[edytuj]



Na stronie Moduł:Wikidane wykorzystano treści ze strony Moduł:Wikidane w polskiej Wikipedii (link do wersji).
Jej autorzy wymienieni są w historii edycji. Prawa autorskie: na licencji Creative Commons CC-BY-SA.



local moduleData = mw.loadData("Module:Wikidane/data")

local function loadArg(frame,id)
	local result = frame.args[id]
	if not result or (#result == 0) then
		result = frame:getParent().args[id]
		if not result or (#result == 0) then
			return nil
		end
	end
 
	return result
end

local function getEntityData(frame)
	local qid = loadArg(frame, "id")
	local data = mw.wikibase.getEntityObject(qid)
	if not data then
		return
	end

	local f = frame.args[1] and frame or frame:getParent()
	local i = 1
	if f.args[1] == "bestclaims" then
		local pid = f.args[2]
		if not pid then
			return f, {}, 2
		end
		
		local sd = require("Module:Wikidane/select")
		local _, qid, prop = sd.selectProperty(pid, sd.prepareFilters(frame), qid)
		if not qid then
			return nil
		end
		
		data = prop
		i = 3
	end

	return f, data, i
end

return {

	T = function(frame)
		local qid = loadArg(frame, "id")
		local pid = loadArg(frame, 1)
		if not pid then
			return moduleData.errorMissingPropertyId
		end
		
		local sd = require("Module:Wikidane/select")
		local pid, qid, prop = sd.selectProperty(pid, sd.prepareFilters(frame), qid)
		if qid then
			return #prop
		end
	end,
	
	P = function(frame)
		local qid = loadArg(frame, "id")
		local pid = loadArg(frame, 1)
		if not pid then
			return moduleData.errorMissingPropertyId
		end
		
		local sd = require("Module:Wikidane/select")
		local pid, qid, prop = sd.selectProperty(pid, sd.prepareFilters(frame), qid, tonumber(loadArg(frame, "ile")))
		if qid then
			return require("Moduł:Wikidane/format").run(frame, pid, prop)
		end
	end,
	
	etykieta = function(frame)
		local qid = loadArg(frame, "id")
		local entity = mw.wikibase.getEntityObject(qid)
		if entity then
			local i = 1
			local lang = true
			while lang do
				lang = frame.args[i]
				local result = entity:getLabel(lang)
				if result and (#result > 0) then
					return result
				end
				
				i = i + 1
			end
		end
	
		return mw.title.getCurrentTitle().text .. moduleData.itemWithoutLabelCat
	end,

	id = function(frame)
		local title = loadArg(frame, 1)
		return title
			and mw.wikibase.getEntityIdForTitle(title)
			or mw.wikibase.getEntityIdForCurrentPage()
	end,
	
	label = function(frame)
		local id = loadArg(frame, 1)
		if id and string.match(id, "^[PQ]%d+$") then
			return mw.wikibase.label(id)
		end
	end,
	
	page = function(frame)
		local id = loadArg(frame, 1)
		if id then
			return mw.wikibase.sitelink(id)
		else
			return nil
		end
	end,

	V = function(frame)
		local f, data, i = getEntityData(frame)
		if not data then
			return nil
		end

		while true do
			local index = f.args[i]
			if not index then
				return tostring(data)
			end

			data = data[index] or data[tonumber(index)]
			if not data then
				return
			end

			i = i + 1
		end
	end,

	Dump = function(frame)
		local f, data, i = getEntityData(frame)
		if not data then
			return moduleData.warnDump
		end

		while true do
			local index = f.args[i]
			if not index then
				return "<pre>"..mw.dumpObject(data).."</pre>"..moduleData.warnDump
			end

			data = data[index] or data[tonumber(index)]
			if not data then
				return moduleData.warnDump
			end

			i = i + 1
		end
	end,
}