ويكي بيانات:إنشاء بوت

This page is a translated version of the page Wikidata:Creating a bot and the translation is 78% complete.
Outdated translations are marked like this.

تشرح هذه الصفحة كيفية إنشاء بوتات لويكي بيانات. الرجاء النظر في مشاركة الأكواد، وإضافة أمثلة جديدة وأية تحسينات تريدها.

المتطلبات

لإنشاء بوتات تحتاج:

  • بعض مهارات الترميز (بايثون، بيرل، بي إتش بي ...)
  • إطار (أحد الأطر أدناه)، وبعض الأكواد للتشغيل لإكمال المهمة
  • حساب بوت (وموافق عليه)
  • محرر شفرة المصدر (Notepad++, Geany, vim, emacs)

Recommendation

Pywikibot

في الأقسام التالية تتعلم كيفية تركيب وتكوين وتسجيل الدخول باستخدام pywikibot. ما عليك سوى أن تفعل هذه الخطوات الثلاث الأولى مرة واحدة، وأيضًا، هناك بعض الأمثلة الأساسية لتعلم أساسيات عن برمجة البوت.

تثبيت

لمزيد من التفاصيل حول تثبيت pywikibot; انظر mw:Manual:Pywikibot/Installation وWikidata:Pywikibot - Python 3 Tutorial/Setting up Shop
لاستخدام pywikibot دون تثبيت; انظر mw:Manual:Pywikibot/PAWS

لتثبيت pywikibot:

تكوين

لمزيد من التفاصيل حول تكوين pywikibot; انظر mw:Manual:Pywikibot/user-config.py.

يجب عليك تكوين ملف user-config.py file باسم مستخدم بوت، ومشروع العائلة، واللغة، بالنسبة لويكي بيانات، فإن وسائط العائلة واللغة هي نفسها، wikidata.

يمكنك تقليل التأخير بين التعديلات مضيفًا: put_throttle = 1 put_throttle = 1

تسجيل الدخول

بعد تكوين ملف user-config.py file، سجل الدخول على النحو التالي:

$ python login.py

سوف يطلب منك إدخال كلمة سر البوت; اكتبها واضغط على "enter"، إذا فعلت هذا بشكل صحيح، ينبعي عليك أن تقوم بتسجيل الدخول الآن.

مثال 1: الحصول على بيانات

يحصل هذا المثال على بيانات للصفحة تشير إلى دوغلاس آدمز، احفظ الكود المصدر التالي في ملف وقم بتنفيذه باستخدام python example1.py

item.get() يصل بويكي بيانات ويجلب البيانات; الناتج هو (إعادة تهيئة للوضوح):

{
    'claims': {
        'P646': [<pywikibot.page.Claim instance at 0x7f1880188b48>],
        'P800': [<pywikibot.page.Claim instance at 0x7f1880188488>, <pywikibot.page.Claim instance at 0x7f1880188368>]
        ...
    }
    'labels': {
        'gu': '\u0aa1\u0a97\u0acd\u0ab2\u0abe\u0ab8 \u0a8f\u0aa1\u0aae\u0acd\u0ab8',
        'scn': 'Douglas Adams',
        ...
    }
    'sitelinks': {
        'fiwiki': 'Douglas Adams',
        'fawiki': '\u062f\u0627\u06af\u0644\u0627\u0633 \u0622\u062f\u0627\u0645\u0632',
        'elwikiquote': '\u039d\u03c4\u03ac\u03b3\u03ba\u03bb\u03b1\u03c2 \u0386\u03bd\u03c4\u03b1\u03bc\u03c2',
        ...
    }
    'descriptions': {
        'eo': 'angla a\u016dtoro de sciencfikcio-romanoj kaj humoristo',
        'en': 'English writer and humorist',
    },
    'aliases': {
        'ru': ['\u0410\u0434\u0430\u043c\u0441, \u0414\u0443\u0433\u043b\u0430\u0441'],
        'fr': ['Douglas Noel Adams', 'Douglas No\xebl Adams'],
        ...
    }
}
['claims', 'labels', 'sitelinks', 'descriptions', 'aliases']
[[wikidata:Q42]]

It prints a dictionary with keys for

  • the set of claims in the page: Property:P646 is the Freebase identifier, Property:P800 is "notable work", etc.
  • the label of the item in many languages
  • the sitelinks for the item, not just Wikipedias in many languages, but also Wikiquote in many languages
  • the item description in many languages
  • the aliases for the item in many languages

Then a list with all the keys for the key-values pairs in the dictionary. Finally, you can see that the Wikidata item about Douglas Adams is Q42.

البدائل

في المثال أعلاه تحصل على صفحة عنصر باستخدام مقالة في ويكيبيديا الإنجليزية، بدًلا من ذلك، يمكننا أيضًا الحصول على صفحة العنصر مباشرة:

مثال 2: الحصول على وصلات الإنترويكي

بعد item.get ()، على سبيل المثال وصلات المواقع يمكن الوصول إليها، هذه وصلات لجميع الويكيبيديات التي لديها هذه المقالة.

الإنتاج هو:

{'fiwiki': 'Douglas Adams', 'eowiki': 'Douglas Adams', 'dewiki': 'Douglas Adams', ...}

باستخدام item.iterlinks()، يتم إرجاع المكرر على جميع روابط المواقع هذه، حيث لا يتم إعطاء كل مقالة كنص عادي كما هو مذكور أعلاه ولكن ككائن صفحة لمزيد من المعالجة (على سبيل المثال، تحرير النص في مقالات ويكيبيديا المقابلة).

مثال 4: تعيين وصف

يحدد هذا المثال الوصف بالإنجليزية والألمانية لهذا البند حول دوغلاس آدامز.

وضع التسميات والأسماء المستعارة يعمل وفقًا لذلك.

مثال 6: تعيين وصلة وقع

لتعيين رابط موقع; يمكننا إما إنشاء وسيلة إرسال مقابلة تقابل المثال 4 أو استخدام كائنات الصفحة:

مثال 7: تعيين بيان

يتم تعيين البيانات باستخدام رتبة الادعاء، في ما يلي، وضعنا لدوغلاس آدامز place of birth (P19): Cambridge (Q350).

لأنواع البيانات الأخرى، وهذا يعمل بشكل مماثل، في ما يلي، نضيف الادعاءات بسلسلة (IMDb ID (P345)) وتنسيق قواعد البيانات (coordinate location (P625)) (المسار مثل السلسلة):

مثال 8: إضافة تصفيات

تتمثل تصفيات أيضا من قبل رتبة الادعاء، في ما يلي، نضيف التصفيات incertae sedis (P678): family (Q35409) لالادعاء "ادعاء".

مثال 9: إضافة مصدر

أيضا، يتم تمثيل المصادر من قبل فئة الادعاء، على خلاف المؤهلات، قد يحتوي المصدر على أكثر من ادعاء واحد، في ما يلي، نضيف stated in (P248): Integrated Taxonomic Information System (Q82575) مع retrieved (P813) 20 مارس 2014 كمصدر للادعاء "ادعاء"، يجب استرداد الادعاء من ويكي بيانات أو إضافته إلى صفحة عنصر مسبقا.

مثال 10: مولدات صفحات

TODO

مثال 11: احصل على قيم الخصائص الفرعية

في ما يلي، نحصل على قيم الخصائص الفرعية من فرع described by source (P1343) -> Great Soviet Encyclopedia (1969–1978) (Q17378135) -> خصائص reference URL (P854) وtitle (P1476).

مزيد من الأمثلة

يتشارك بعض المستخدمين رموز المصدر الخاصة بهم، اعرف المزيد في الروابط التالية:

  • User:RobotMichiel1972/wikidata lowercase.py : مثال pywikipedia كيف يمكنك تصحيح التسمية إلى أحرف صغيرة باستخدام حروف الكتابة الإنجليزية كـ"مرجع" (هنا يتم ترميزها لـnlwiki فقط) بتشغيل مجموعة مختارة من الصفحات في ويكيبيديا الخاصة.
  • تقديم File:Bots hackathon 2013.pdf "claimit.py" و"template_harvest.py" المضمن في النسخة الأساسية (إعادة الكتابة السابقة).

تكامل ويكي بيانات

تكامل ويكي بيانات هي مكتبة للقراءة والكتابة إلى ويكي بيانات/قاعدة ويكي. نحن أنشأناها لملء ويكي بيانات بمحتوى من مصادر موثوقة عن الجينات، والبروتينات، والأمراض والمخدرات وغيرها، للتفاصيل عن المهام المختلفة يمكن الاطلاع على صفحة ويكي بيانات بوت.

Pywikibot هو إطار موجود للتفاعل مع API ميدياويكي، إن السبب وراء توصلنا إلى الحل الخاص بنا هو أننا نحتاج إلى تكامل عالٍ مع نقطة نهاية سباركل ويكي بيانات لضمان تناسق البيانات (التدقيق المكرر، فحوصات التناسق، اختيار العناصر الصحيحة، إلخ). بالمقارنة مع Pywikibot، ليس WikidataIntegrator حاليا مجمع بايثون كامل لـAPI ميدياويكي ولكنه يركز فقط على توفير وسيلة سهلة لتوليد بوتات ويكي بيانات القائمة على بايثون.

لمزيد من المعلومات والوثائق، وتحميل وتثبيت التعليمات; انظر هنا: https://github.com/SuLab/WikidataIntegrator/

مثال دفتر

مثال لدفتر ملاحظات يوضح مثال بوت لإضافة مجالات علاجية لعناصر المخدرات، بما في ذلك استخدام وضع التشغيل السريع، وفحص المراجع، وإزالة البيانات القديمة:

http://public-paws.wmcloud.org/46883698/example%20ema%20bot.ipynb

WikibaseIntegrator

Forked from Wikidata Integrator by User:Myst in 2020 and has seen several improvements to the API that makes it even easier to create bots using the library.

For more information, documentation, download & installation instructions, see here: https://github.com/LeMyst/WikibaseIntegrator

Example semi-automatic script

LexUse semi-automatic tool for finding and adding usage examples to lexemes. It's free software written using Python 3 in 2020 Wikidata:LexUse.

Wikibase.NET

Wikibase.NET هي api التي تستبدل DotNetDataBot، عميل api لامتداد ميدياويكي Wikibase، الذي تم إيقافه الآن، وهو غير متوافق لأن Wikibase.NET لم تعد بحاجة إلى إطار عمل DotNetWikiBot.

تحميل وتثبيت

الإطار يمكن تحميله من جيثب هنا، فقط اتبع التعليمات في تلك الصفحة.

المشكلات المعروفة

أمثلة

لن تأتي قريبا...

DotNetDataBot (موقوف)

تثبيت

التكوين

بعد تفريغ الحزمة يمكنك رؤية ملف يُسمَّى DotNetDataBot.dll وواحد يُسمَّى DotNetDataBot.xml، مستند xml للتوثيق فقط، لاستخدامه; عليك إنشاء مرجع جديد في مشروعك، ثم يمكنك كتابة using DotNetDataBot; لاستيراد إطار العمل.

تسجيل الدخول

لتسجيل الدخول عليك إنشاء كائن Site مع مسار الويكي، واسم البوت وكلمة مروره.

مثال 1: الحصول على معرف باستخدام صفحة ويكي

يمكنك الوصول إلى معرف عنصر من خلال البحث عن الموقع وعنوان الصفحة المتصلة.

مثال 2: الحصول على وصلات الإنترويكي

يمكنك الحصول على وصلات إنترويكي البند عن طريق تحميل المحتوى والوصول إلى مجال الكائن links.

مثال 3: تعيين وصف

لوضع وصف; يجب استدعاء وظيفة setDescription.

مثال 4: تعيين تسمية

يعمل بنفس الطريقة لتحديد التسمية: فقط استدعِ setLabel.

مثال 5: الحصول على وصلات الإنترويكي ل100 صفحة

لا يتم دعم هذه الميزة; مجرد تكرار عبر القائمة.

api قاعدة الويكي لPHP

هذا عميل API لقاعدة الويكي مكتوب بPHP، ويمكن تحميله من هنا.

مثال 1: مثال بسيط

ألق نظرة على تعليقات المصدر لتفهم كيف تعمل.


مثال 2: إنشاء ادعاءات

ألق نظرة على تعليقات المصدر لتفهم كيف تعمل.

VBot (no updates since 2017)

إطار لويكي بيانات وويكيبيديا، يقرأ ويكتب في ويكي بيانات ومشاريع ويكيميديا ​​الأخرى ولديه قائمة مولدة مفيدة من صفحة ويكيبيديا وكيان ويكي بيانات، يمكن أيضا قراءة تفريغ JSON من ويكي بيانات.

نظرة عامة

بوت لقراءة وتحرير ويكي بيانات وويكيبيديا.

  • الترخيص: CC0 1.0
  • لغة سي#
  • يمكن قراءة وكتابة الكيانات بجميع أنواع البيانات على ويكي بيانات
  • يمكن قراءة وكتابة الصفحات على جميع مشاريع الويكي
  • يمكن قراءة الوسيط من قالب على صفحات ويكي
  • يمكن قراءة تفريغ JSON
  • يمكن إنشاء قوائم باستخدام:
  • تم اختباره مع مايكرسوفت فيجوال ستوديو إكسبريس لسطح مكتب ويندوز.
    • من الضروري أن يكون لديك Newtonsoft.Json، يمكنك تثبيته مع NuGet داخل فيجوال ستوديو
    • ضروري لإضافة مرجع يدويا إلى System.Web لـ"HttpUtility.UrlEncode"

تحميل

الإطار يمكن تحميله من جيثب هنا.

تعليمات

مثال 1

تحديث تسمية en لكل البنود بinstance of (P31): short film (Q24862) director (P57) والتي لديها publication date (P577) في 1908. (استخدام استعلام ويكي بيانات)

LexData (Python; for Lexicographical data)

LexData is an easy to use python libary to create and edit Lexemes, Senses and Forms.

Tips

The documentation of LexData is still a bit lacking so look at existing implementations in MachtSinn or Wikdata Lexeme Forms for ideas how to use it.

If you only want to add statements to Lexemes (not forms or senses) WikibaseIntegrator might be a better choice, as it is more versatile and support a lot of data types.

Installation

You can install LexData via pip:

$ pip install LexData

Login

For all operations you need a WikidataSession. You can create it with your credentials, a bot password or an Edit Token (for example to edit via OAUTH):


Retrieve a Lexeme

You can open existing Lexemes and read their content.

Searching and creating Lexemes

If you don't know the L-Id of a lexeme you can search for it. And if it doesn't exist you can create it.

Adding information

You can easily create forms or senses, with or without additional claims:

استخدام API ويكي بيانات مباشرة

تصف الأقسام الأخرى كيفية استخدام إطارات أعمال البوت للوصول إلى معلومات ويكي بيانات وتحديثها، يمكنك أيضا التفاعل مباشرةً مع واجهة برمجة تطبيقات قاعدة الويكي التي يقدمها ويكي بيانات، تحتاج إلى القيام بذلك إذا كنت تقوم بتطوير إطار عملك أو إذا كنت بحاجة إلى عمل شيء لا يدعمه إطار عمل، يمكن العثور على توثيق واجهة برمجة تطبيقات قاعدة الويكي على mediawiki.org، يمكنك أيضا اللعب معه في Special:ApiSandbox، جرب action=wbgetentities.

توفر قاعدة الويكي API الخاصة به كمجموعة من الوحدات لـAPI "فعل" ميدياويكي، يمكنك الوصول إليها عن طريق تقديم طلبات HTTP إلى /w/api.php، تنسيق الاستجابة الافتراضي هو JSON; لذا بالنسبة للغتك المفضلة، تحتاج فقط إلى مكتبة لتنفيذ طلبات HTTP ومكتبة JSON أو XML لتحليل الردود.

مثال 1: الحصول على عدد Q

يحصل هذا المثال على العنصر رقم Q لمقالة ويكيبيديا الإنجليزية حول المرأة المسلسلة، الوحدة الرئيسية "workhorse" الخاصة بواجهة برمجة تطبيقات API قاعدة الويكي action=wbgetentities توفر هذه المعلومات، إن طلب HTTP (باستخدام jsonfm لإخراج JSON القابل للقراءة من قبل الإنسان) هو ببساطة

https://www.wikidata.org/w/api.php?action=wbgetentities&titles=Andromeda%20Galaxy&sites=enwiki&props=&format=jsonfm&formatversion=2

حاول اتباع الرابط، لا يطلب هذا معلومات إضافية حول الكيان، أزل &props= من المسار لمشاهدة المزيد من المعلومات عنه، راجع المساعدة المولدة لـwbgetentities لمزيد من الوسائط التي يمكنك تحديدها.

Python

الإنتاج هو:

Q2469

Example 2: Get list of items without particular interwiki

... . رجاءً، ساعدني إذا كنت تعرف كيف...

انظر أيضا

Wikidata:Bots by function

وصلات خارجية