در این نوشته چندین پرس و جوی Sparql ساده بر روی داده های ویکی داده گفته خواهد شد که پیش تر در نوشته های زیر درباره چگونگی به کارگیری عبارت SELECT WHERE گفته شده است و این نوشته تنها برای یادآوری و تمرین بیشتر و انجام پرس و جو بر روی داده های واقعی است. کدهای گفته شده در این نوشته را می توانید از اینجا دانلود کنید و می بایست برای دیدن برآیندها آنها، پرس وجوها را در سایت https://query.wikidata.org اجرا کنید.

نخستین گام در زبان پرس و جوی SPARQL – عبارت SELECT

متعیرها و عبارت SELECT چند الگو سه تایی SPARQL

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

در کد زیر فهرست نام همه کشورها یپدا می شود به گونه ای که در اینجا نام کشور موضوع (Subject) است. در کد زیر دو متغیر به نام های country? و countryLabel? پیش روی عبارت SELECT نوشته شده است. به یاد داشته باشید همانند SQL که ستون های پیش روی SELECT، ستون های برآیند پرس و جو هستند، در SPARQL نیز نام متغیرهایی که پیش روی SELECT نوشته می شوند، نام ستون هایی در نمایش جدولی در ویکی داده خواهند بود.

در کد بالا متغیر country? سر راست به نشانی URI موضوع یا آیتم در سه تایی RDF اشاره دارد که در شکل زیر درستون نخست نشان داده شده اند. همانگونه که گفته شد در ویکی داده هر آیتم یا موضوع دارای یک برچسب و یک توصیف است که در شکل زیر می توانید ببینید. برچسب ها و توصیف ها همیشه به زبان انگلیسی هستند ولی شاید به زبان های دیگر مانند فارسی نیز باشند. بنابراین دومین متغیر، یعنی countryLabel? مقدار برچسب که قابل خوانده شدن و درک شدن برای کاربر است را در خود نگه می دارد و در ستون دوم نشان داده می شوند.

برچسب ها در ویکی داده

توجه کنید آنچه که در دسته نوشته های آشنایی با ویکی داده گفته می شود در کنار فراگیری Sparql، تنها مفاهیمی محدود به همان ویکی داده است. در ویکی داده می توان به کمک http://wikiba.se/ontology#label برچسب ها، توصیف ها و نام های مستعار را برای یک آیتم بدست آوریم. در کد بالا متغیر countryLabel? به برچسبی مطابق با موضوع متغیر country? اشاره می کند. یا اگر گمان کنیم متغیری به نام item همانند زیر پیش روی SELECT نوشته شده است، پس متغیر دیگر یعنی itemLabel? به برچسب این آیتم اشاره می کند. کد زیر فهرستی از نام گربه سان ها را پیدا می کند.

ولی چگونه برچسب مطابق با آیتم پیدا می شود؟پاسخ در سه تایی نوشته شده در پرس جو است. برای نمونه در اینجا سه تایی مورد پرس و جو برابر با country wdt:P31 wd:Q6256? است که در واقع به دنبال آیتم هایی (موضوع هایی) هستیم که مقدار ویژگی با شناسه P31 آنها برابر با مقدار شناسه Q6256 باشد که این شناسه برای آیتمی به نام country است. به عبارت دیگر country Instance of Country? را می خواهیم پیدا کنیم. بنابراین برچسب که با الگوی countryLabel یا itemLabel یا هر الگوی همسان دیگری از روی مقدار آیتم پیدا شده برای متغیر country? یا item? در نمونه کدهای بالا یافت می شود. از این رو می توانیم کد زیر را بری پیدا کردن و نمایش توصیف با متغیر countryDescription? پیدا کنیم.

به یاد داشته باشید ویژگی با شناسه P31 اشاره به instance of دارد که بسیار پر کاربرد است.

پیدا کرده فهرست همه کشورهایی در خاور میانه هستند

در کد زیر در سه تایی یکم، نخست فهرست همه کشورها پیدا می شود و در سه تایی دوم تنها فهرست کشورهایی پیدا می شود که مقدار ویژگی به شناسه P361 آنها برابر با مقدار آیتمی با شناسه Q7204 باشد. در واقع در پرس و جو، سه تایی یکم، فهرستی فراگیر تر از کشورها را بر پایه یک ویژگی و مقدار آن بدست می آورد که در متغیر country? نگهداری می شود و در دومین سه تایی، از میان این موضوع ها یا آیتم های بدست آمده، تنها آنهایی پاسخ هستند که مقدار ویژگی Q361 آنها برابر با Q7204 باشد.

در ویکی داده ویژگی با شناسه P361 به نام Part of است.

دو آیتم با شناسنه های Q6256 و Q7204 به ترتیب به آیتم های Country و Middle East اشاره دارند.

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

در کد زیر دو سه تایی آغازین همانند پیشین است که فهرست کشورهای خاورمیانه پیدا می شود و در سومین سه تایی مقدار پایتخت کشورهای خاورمیانه پیدا می شود. در واقع در سومین سه تایی، ویژگی با شناسه P36 برابر با Capital است و اینگونه تفسیر می شود که مقدارهایی را برای وژگی P36 پیدا کن که مربوط به آیتمی باشد که درون متغیر country? نگهداری می شود و سپس این مقدارها را در متغیر capital? نگهداری کن. 

در شکل بالا می بینید که ستون های country و countryLabel و capital ساخته شده اند زیرا این سه برابر با سه متغیر پیش روی عبارت SELECT هستند. توجه کنید، زمانی که برای نمونه در اینجا capitalLabel? در پیش روی SELECT نوشته نشده، پس دیگر برچسب نشان داده نمی شود بلکه تنها نشانی URI آیتم اگر پیدا شود، نشان داده خواهد شد. بنابراین در سومین سه تایی بدست امدن مقدار برای متغیر capital? بر پایه ویژگی به شناسه P36 است.

بنابراین در ویکی داده ویژگی با شناسه P36 اشاره به Capital دارد که مقدار آن آیتم هایی با شناسه هایی هستند (با Q آغاز می شوند) که هر یک به نام یک پایتخت اشاره دارند. در کد زیر برای آنکه در کنار نشانی URI پایتخت کشورها، نام یا برچسب آنها نیز نشان داده شود، می باید متغیر دیگری به نام capitalLabel? را پیش روی SELECT بی افزاییم.