שיחת משתמש:1Or/WikidataCV

תוכן הדף אינו נתמך בשפות אחרות.
הוספת נושא
מתוך ויקיפדיה, האנציקלופדיה החופשית
תגובה אחרונה: לפני 7 שנים מאת הנדב הנכון

ערן, בדקתי עם ויקיפדיה:ארגז חול. החלק של שליפת הנתונים מהתבנית עובד מצוין, אבל הפונקציה מסיבה מסוימת לא עובדת. אם תריץ את הקוד בפונקציה לבד, הוא יעבוד מצוין, אבל ברגע שמכניסים אותו לפונקציה וקוראים לו הוא לא עובד. הערך של data עובד והתוצאה מגיעה, אבל מסיבה כלשהי החלק בניווט לא עובד (data.claims.Pro). אתה יודע למה? אורשיחה11:37, 8 באפריל 2017 (IDT)תגובה

אור: במקום .Pro תשתמש ב[Pro], ולצורך בדיקה עם קיים בclaims, אפשר להשתמש בhasOwnProperty. אחרת אי אפשר לדעת שמדובר בערך Pro, ולא במשתנה בשם Pro. ערן - שיחה 12:50, 8 באפריל 2017 (IDT)תגובה
לא הבנתי. תוכל לערוך? אורשיחה • 12:53, 8 באפריל 2017 (IDT) אורשיחה12:54, 8 באפריל 2017 (IDT)תגובה
תיוג אורשיחה12:55, 8 באפריל 2017 (IDT)תגובה
אור: ראה את השינוי האחרון שעשיתי. ערן - שיחה 13:07, 8 באפריל 2017 (IDT)תגובה
תודה. אם אני רוצה שקריאה לפונקציה תחזיר את „data.claims[Pro][0].mainsnak.datavalue.value” שכרגע בconsole.log כstring, במקום כהודעה בקונסול, זה אפשרי? אורשיחה13:14, 8 באפריל 2017 (IDT)תגובה
אור: אתה צריך להשתמש בcallback - זאת אומרת שבמקום לקרוא לconsole.log תקרא לפונקציה שמטפלת בפלט. ערן - שיחה 13:19, 8 באפריל 2017 (IDT)תגובה

──────────────────────────────────────────────────────────────────────────────────────────────────── ‏הבנתי עכשיו את העניין של הקולבקס האלה, וזה פשוט גאוני הצלחתי לבדוק אם:

  1. אם הנתון שהוזן בתבנית תואם את הנתון בוויקינתונים במידה והנתון הוא Q ולא string
  2. בדיקה אם לQ של הP שהוזן בתבנית יש תווית בעברית

בעיות שהתעוררו:

  1. אם הנתון הוא string ולא קישור לQ, אז ככל הנראה הקוד נכשל
  2. מה לעשות מכאן? איך לעשות מכאן? הרי בשביל להחליף Q אחד צריך להשתמש בQ אחר ולא בstring. אשמ לרעיונות או להכוונה.

בברכה, אורשיחה14:38, 8 באפריל 2017 (IDT)תגובה

אור: צריך יהיה לטפל בכל סוג של נתון בצורה שונה: מחרוזת, יישות, מספר, תאריך וכו':
  • אם הנתון הוא מסוג תאריך, אפשר לייצר את התאריך בעברית, למשל בצורה של "1 באפריל 2017" - הבדיקה גם צריכה להתעלם מהימצאות של קישורים
  • אם הנתון הוא מסוג של מחרוזת, צריך פשוט להשוות אותה
  • אם הנתון הוא מסוג של יישות צריך לקבל את הlabel שלה בעברית ולבדוק התאמה.
אני חושב שכדאי להתחיל קודם מתאריך שהוא אולי יותר פשוט מהאחרים, ובכל מקרה שהProperty הוא מסוג אחר להתעלם ממנו, ואחר כך להוסיף תמיכה ביתר הסוגים (ראה רשימה מלאה בתיבה שמופיעה בd:Special:ListProperties) ערן - שיחה 14:51, 8 באפריל 2017 (IDT)תגובה
‏מחרוזת ויישות: בוצע בוצע, תאריך: זה בא בתבנית כזאת +1896-00-00T00:00:00Z, ואין לי מושג איך להמיר אותה. יש לך רעיון? אגב, את החלק של הניקוי של פרמטר 1 חשבתי לעשות בצורה תבניתית ולא דרך JS. ‏אורשיחה15:33, 8 באפריל 2017 (IDT)תגובה
צריך לשים לב בתאריך ל-precision כלומר רמת הדיוק של התאריך. אפשר לטפל למשל רק ב-11 שנדמה לי שזה בדיוק של יום. את התאריך הטקסטואלי אתה יכול לתרגם לפורמט של ויקינתונים כך:
function pad( x, digits ) {
	x = String( x );
	return ( x.length >= digits )? x : new Array( digits - x.length + 1 ).join( '0' ) + x;
}

function parseDate(year, month, day) {
	var localMonths = ["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"];
	month = localMonths.indexOf(month)+1;
	var yPrefix = String(year).charAt(0) === '-' ? '-' : '+';
	if ( year < 0 ) year = String(year).substr(1)
	return yPrefix + year + '-' + pad( month, 2 ) + '-' + pad( day, 2 ) + 'T' + '00:00:00Z'
}
var date = /([0-9]+) ב([א-ת]+)\]* \[*([0-9]+)/.exec(input); // extract day, month, year
if (date) {
	var wikidataDate = parseDate(date[3], date[2], date[1]);
}
לא הבנתי מה הכוונה הניקוי של פרמטר 1? בברכה, ערן - שיחה 23:13, 8 באפריל 2017 (IDT)תגובה
‏הפונקציה לא עובדת כי היא לא יודעת מה זה pad ואם הinput שווה לדוגמה ל"2 באפריל 2017" אז הregex לא עובד וככה הקוד נכשל כי אין date הוא null. הניקוי של פרמטר 1 כלומר {{{1}}} ובתבנית עצמה דרך לואה לנקות את הפרמטר מהקישורים. אורשיחה08:07, 9 באפריל 2017 (IDT)תגובה
אור: תיקנתי את הדוגמה לעיל. ערן - שיחה 14:59, 10 באפריל 2017 (IDT)תגובה
תודה. עכשיו זה מצליח לזהות גם אם הזמן תואם. מה עושים מכאן? אורשיחה15:43, 10 באפריל 2017 (IDT)תגובה
ערן? אורשיחה14:19, 13 באפריל 2017 (IDT)תגובה
אור: יפה. אני חושב שהשלב הבא זה להוציא את זה לדף נפרד, למשל משתמש:1Or/WikidataCV ולגרום לזה לעבוד בצורה יותר סטנדרטית עם תבניות. אז אפשר יהיה לגייס כמה משתמשים להתנסות בסקריפט (אני מתנדב ) ולבדוק אותו, ובשלב הבא כשהוא יהיה מספיק נוח להפוך אותו לגדג'אט. בברכה, ערן - שיחה 18:35, 13 באפריל 2017 (IDT)תגובה
העברתי. אם אני מבין נכון, עכשיו צריך להעביר את התבנית שכתבתי בדף משנה לתבנית במרחב תבניות, ולהכניס אותה לכמה תבניות כדי שזה יעבוד. ערן, עכשיו זה רק מודיע בקונסול אם הנתון תואם או לא, הוא לא מציע לערוך או לעשות דברים נוספים. מה צריך לעשות מכאן? אורשיחה18:41, 13 באפריל 2017 (IDT)תגובה
אור: זו התחלה מצוינת בתור הוכחת היתכנות. לדעתי מה שצריך לעשות טכנית כדי להפוך את הסקריפט לשימושי בקנה מידה רחב:
  1. להחליט באיזה מצב אנחנו רוצים להשוות את הנתון המקומי לנתון בוויקינתונים (אפשר במצב קריאה או במצב עריכה). בהקשר זה אשמח לשמוע גם את דעתם של Tomtom והנדב הנכון שפתרו לא מעט בעיות של אי התאמות במסגרת קטגוריה:דפים עם שנות חיים שלא תואמים את ויקינתונים ויוכלו להציע איך לדעתם יהיה הכי שימושי לעורכים לזהות טעויות. אני חושב שסקריפט שימושי בעיקר בהקשר של עריכה (במוד של קריאה, אפשר לגרום ליחידה:תבנית מידע לפלוט קטגוריות של אי התאמה ביחס לנתון מוויקינתונים כפי שזה נעשה בקטגוריה:דפים עם שנות חיים שלא תואמים את ויקינתונים).
  2. בהנחה שהסקריפט עובד במצב עריכה אז הוא יצטרך לדעתי להשתמש בtemplatedata על התבנית הראשונה שיש בה פרמטרים בשורות נפרדות (כך אפשר בערך לזהות תבנית מידע ביחס לתבנית אחרת) במקום להשתמש ב-UsingPro (שבשבילו צריך לקבל גם parser/HTML בדרך). תוכל להיעזר בקטע שטוען templatedata במדיה ויקי:Gadget-TemplateParamWizard.js. אם יש אי התאמה אפשר להוסיף התרעה מתחת לתיבת העריכה שמציינת את הערך של הנתון בוויקינתונים, והערך של הנתון בוויקיפדיה עם קישורים לשניהם (בוויקיפדיה - חיפוש בתיבת העריכה של שם הפרמטר, בוויקינתונים - קישור לProperty המתאים ביישות הנוכחית). אם תרצה עזרה בהתאמה של הסקריפט לכך אשמח לעזור לך.
בברכה, ערן - שיחה 16:54, 14 באפריל 2017 (IDT)תגובה
1. אני מעדיף במצב קריאה, אבל אשמח לשמוע את דעתם. 2. סבבה, נחכה לתשובתם. אורשיחה17:37, 14 באפריל 2017 (IDT)תגובה
הרעיון הכללי הוא שבמקרה של אי התאמה תופיע הודעת שגיאה כמו בניהול פרמטרים? הנדב הנכון - שיחה 18:33, 14 באפריל 2017 (IDT)תגובה