در نوشته آشنایی با ویکی داده – انجام پرس و جوهای ساده Sparql برخی از پرس و جوهای Sparql بر روی داده های RDF ویکی داده گفته شد و در دنباله در اینجا درباره برخی از نمونه پرس و جوهای دیگر برای فراگیری بیشتر گفته خواهد شد و همچنین یک عبارت دیگر به نام SERVICE آموزش داده می شود. می توانید از اینجا پرس و جوهای این نوشته را دانلود کنید.

پیدا کردن فهرست نام کشورها همراه با نام رییس جمهور آن کشور

در پرس و جوی زیر بر پایه آنچه که در نوشته آشنایی با ویکی داده – انجام پرس و جوهای ساده Sparql گفته شد، سه تایی country wdt:P31 wd:Q6256? فهرست همه کشورها را برگشت می داد. کد زیر یک سه تایی دیگر را افزوده است که به کمک ویژگی P6 که به نام head of gowerment است، نام رییس جمهور کشور نگهداری شده در country? در متغیر دیگر به نام president? ریخته می شود.

عبارت SERVICE

تا بدین جا گفتیم که هر ایتم دارای برچسب و توصیفی است که پیش فرض به انگلیسی آماده شده اند ولی شاید به دیگر زبان ها مانند فارسی نیز باشند. همچینن تا بدین جا در همه پرس و جوهای بر روی ویکی داده دستور زیر نوشته شده است. SERVICE برای این است که بر پایه یک زبان یا چندین زبان مانند en, fa برای انگلیسی و فارسی برچسب ها گردآوری و نمایش داده شوند.

بنابراین اگر بخواهیم برچسب بر پایه اولویت زبان نشان داده شود، پس می بایست نام زبان مانند fa یا ar یا tr یا ku به ترتیب برای زبان های فارسی، عربی، تورکی و کوردی است و همچنین برای زبان های دیگر می توان به jp برای ژاپنی اشاره کرد. بنابراین در کد زیر چون fa پیش از en آمده، پس برچسب ها و توصیف ها نخست برای زبان پارسی و سپس اگر برچسب فارسی نبود، برای انگلیسی نشان داده می شوند.

ساخت نام مستعار با عبارت AS در SPARQL

در پایگاه داده های رابطه ای، ستون هایی که نمایش داده می شوند، آنهایی هستند که پیش روی عبارت SELECT فهرست شده اند. در برآیند پرس و جو نام ستون همنام با این ستون های پیش روی SELECT است. در برآیند پرس و جوهای Sparql متغیر هایی که پیش روی عبارت SELECT نوشته شده اند، نام ستون هایی هستند که در نمایش برآیند پرس و جو در ویکی داده نمایش داده می شوند. البته نمایش ستونی تنها یکی از دسته نمایش ها است و برای نمونه، نمایش دیگر گرافی می تواند باشد.

در کد زیر و برای هر دو متغیر نام های مستعار با عبارت AS شناسانده شده است که دو نکته در آن هست. یکم آنکه شناساندن نام جایگزین میان پرانتزهای باز و بسته انجام شده و همچنین نام جایگزین که پس از عبارت AS آمده خودش یک متغیر است و از این رو با ? آغاز شده است. توجه کنید که نام های مستعار برای نمایش جدولی برآیند پرس و جو در ویکی داده هستند و از این رو نام متغیر پیش از عبارت AS درون سه تایی های پرس و جو به کار رفته است.

در کد بالا برای متغیر country? نام جایگزین دلخواه Country_URI? و برای countryLabel? نام جایگزین Country_Name? را برگزیده ایم ولی شاید نام متغیر country? پسندیده تر باشد که در اینجا تنها جنبه آموزشی داشته است. نکته ای که برجسته است آن که، اگر برای یک متغیر مانند country? که به آیتمی اشاره دارد می خواهید متغیر دیگری برچسب آن آیتم را در متغیری مانند countryLabel? نگهداری کند، باید درون بدنه عبارت SERVICE خط زیر نوشته شود، زیرا باید مشخص کنیم که متغیری که برچسب را برای متغیر country? نگه می دارد، متغیر countryLabel? است.

در کدهای بالا به نقطه هایی پایانی در که پایان هر بخش از عبارت های درون آکولادهای باز و بسته عبارت SERVICE آمده اند، دقت کنید.

متغیرها در Sparql پیش روی عبارت SELECT نوشته و با ? آغاز می شوند و باید قواعد نام متغیرها مانند آغاز نشدن با شماره یا نبود فضای خالی میان آنها را دنبال کنند.

در واپسین کدی که در زیر گفته شده است برای دو متغیر countryLabel? و population? نام جایگزین شناسانده است و چونکه متغیر country? هست، پس باید در بدنه عبارت SERVICE دستور country rdfs:label ?countryLabel? نوشته شود ولی چون population در واقع یک مقدار شماره ای و بی برچسب است، پس نخست آنکه برای آن متغیر populationLabel? معنی ندارد و دوم آنکه پس از شناساندن نام جایگزین، دیگری نیازی به دستوری همچون population rdfs:label ?populationLabel? در عبارت SERVICE نیست. همچنین در کد زیر چون زبان ku (کوردی) آورده شده، پس اولویت برچسب های countryLabel? با این زبان است.

  • ar برای عربی
  • tr برای تورکی
  • mzn برای مازرونی
  • lrc برای لری
  • bal برای بلوچی
  • البته شاید برای برخی آیتم ها تنها زبان انگلیسی باشد که پیش فرض هست.