שיחת משתמש: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)
- תודה. אם אני רוצה שקריאה לפונקציה תחזיר את „data.claims[Pro][0].mainsnak.datavalue.value” שכרגע בconsole.log כstring, במקום כהודעה בקונסול, זה אפשרי? אור • שיחה • 13:14, 8 באפריל 2017 (IDT)
- אור: ראה את השינוי האחרון שעשיתי. ערן - שיחה 13:07, 8 באפריל 2017 (IDT)
- תיוג אור • שיחה • 12:55, 8 באפריל 2017 (IDT)
- לא הבנתי. תוכל לערוך? אור • שיחה • 12:53, 8 באפריל 2017 (IDT) אור • שיחה • 12:54, 8 באפריל 2017 (IDT)
הבנתי עכשיו את העניין של הקולבקס האלה, וזה פשוט גאוני הצלחתי לבדוק אם:
- אם הנתון שהוזן בתבנית תואם את הנתון בוויקינתונים במידה והנתון הוא Q ולא string
- בדיקה אם לQ של הP שהוזן בתבנית יש תווית בעברית
בעיות שהתעוררו:
- אם הנתון הוא string ולא קישור לQ, אז ככל הנראה הקוד נכשל
- מה לעשות מכאן? איך לעשות מכאן? הרי בשביל להחליף 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)
- אור: זו התחלה מצוינת בתור הוכחת היתכנות. לדעתי מה שצריך לעשות טכנית כדי להפוך את הסקריפט לשימושי בקנה מידה רחב:
- להחליט באיזה מצב אנחנו רוצים להשוות את הנתון המקומי לנתון בוויקינתונים (אפשר במצב קריאה או במצב עריכה). בהקשר זה אשמח לשמוע גם את דעתם של Tomtom והנדב הנכון שפתרו לא מעט בעיות של אי התאמות במסגרת קטגוריה:דפים עם שנות חיים שלא תואמים את ויקינתונים ויוכלו להציע איך לדעתם יהיה הכי שימושי לעורכים לזהות טעויות. אני חושב שסקריפט שימושי בעיקר בהקשר של עריכה (במוד של קריאה, אפשר לגרום ליחידה:תבנית מידע לפלוט קטגוריות של אי התאמה ביחס לנתון מוויקינתונים כפי שזה נעשה בקטגוריה:דפים עם שנות חיים שלא תואמים את ויקינתונים).
- בהנחה שהסקריפט עובד במצב עריכה אז הוא יצטרך לדעתי להשתמש ב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)
- 1. אני מעדיף במצב קריאה, אבל אשמח לשמוע את דעתם. 2. סבבה, נחכה לתשובתם. אור • שיחה • 17:37, 14 באפריל 2017 (IDT)
- אור: זו התחלה מצוינת בתור הוכחת היתכנות. לדעתי מה שצריך לעשות טכנית כדי להפוך את הסקריפט לשימושי בקנה מידה רחב:
- העברתי. אם אני מבין נכון, עכשיו צריך להעביר את התבנית שכתבתי בדף משנה לתבנית במרחב תבניות, ולהכניס אותה לכמה תבניות כדי שזה יעבוד. ערן, עכשיו זה רק מודיע בקונסול אם הנתון תואם או לא, הוא לא מציע לערוך או לעשות דברים נוספים. מה צריך לעשות מכאן? אור • שיחה • 18:41, 13 באפריל 2017 (IDT)
- אור: יפה. אני חושב שהשלב הבא זה להוציא את זה לדף נפרד, למשל משתמש:1Or/WikidataCV ולגרום לזה לעבוד בצורה יותר סטנדרטית עם תבניות. אז אפשר יהיה לגייס כמה משתמשים להתנסות בסקריפט (אני מתנדב ) ולבדוק אותו, ובשלב הבא כשהוא יהיה מספיק נוח להפוך אותו לגדג'אט. בברכה, ערן - שיחה 18:35, 13 באפריל 2017 (IDT)
- ערן? אור • שיחה • 14:19, 13 באפריל 2017 (IDT)
- תודה. עכשיו זה מצליח לזהות גם אם הזמן תואם. מה עושים מכאן? אור • שיחה • 15:43, 10 באפריל 2017 (IDT)
- אור: תיקנתי את הדוגמה לעיל. ערן - שיחה 14:59, 10 באפריל 2017 (IDT)
- הפונקציה לא עובדת כי היא לא יודעת מה זה pad ואם הinput שווה לדוגמה ל"2 באפריל 2017" אז הregex לא עובד וככה הקוד נכשל כי אין date הוא null. הניקוי של פרמטר 1 כלומר {{{1}}} ובתבנית עצמה דרך לואה לנקות את הפרמטר מהקישורים. אור • שיחה • 08:07, 9 באפריל 2017 (IDT)
- לא הבנתי מה הכוונה הניקוי של פרמטר 1? בברכה, ערן - שיחה 23:13, 8 באפריל 2017 (IDT)
- צריך לשים לב בתאריך ל-precision כלומר רמת הדיוק של התאריך. אפשר לטפל למשל רק ב-11 שנדמה לי שזה בדיוק של יום. את התאריך הטקסטואלי אתה יכול לתרגם לפורמט של ויקינתונים כך: