در دو نوشته آشنایی با ویکی داده – انجام پرس و جوهای ساده Sparql و آشنایی با ویکی داده – انجام پرس و جوهای ساده Sparql – بخش دوم درباره ساخت پرس و جوهای Sparql در داده های پیوندی Wikidata و دریافت پاسخ به کمک دو عبارت SELECT WHERE گفته شد. در پرس و جوهای Sparql همانند آنچه که در SQL هست، می توان پاسخ را بر پایه یک یا چند ستون و به گونه صعودی (ASC) یا نزولی (DESC) مرتب سازی کرد. کدهای Sparql این نوشته را می توانید از اینجا دانلود کنید.

پیدا کردن فهرست کشورهای خاورمیانه به همراه سال بنیان گذاری

برای نمونه کشور ایران از این دید در سال ۱۹۷۹ با انقلاب پایه گذاری شده است. در نوشته های پیشین درباره چگونگی بدست آوردن کشورهای خاورمیانه گفته شده است که با دو ویژگی به شناسه P31 و مقدار Q6256 که فهرست همه کشورها را می دهد و ویژگی با شناسه P361 با مقدار Q7204 که خاورمیانه را نشان می دهد. همچنین ویژگی با شناسه P371 برای inspection است. در کد زیر و در سه تایی سوم، مقدار ویژگی inspection با شناسه P371 برای کشورهایی بدست می آید که هم اکنون در متغیر country? ریخته شده اند و سپس مقدار ibspection بدست آمده در متغیر inspection? ریخته خواهد شد. توجه کنید این دو متغیر و دیگری countryLabel? در پیش روی SELECT شناسانده شده اند.

بنابراین در پرس و جوهای Sparql می شود هم برای Subject و هم برای Object از متغیرها کمک گرفت.

مرتب سازی پرس و جوی بالا

در Sparql همانند SQL عبارت ORDER BY را می توان برای مرتب سازی برآیند پرس و جو به به دو شیوه صعودی و نزولی به کار برد. در کد زیر مرتب سازی بر پایه متغیر countryLabel? انجام می شود. مقدار این ستون قاعدتا یک رشته (برچسب) است و چون ASC یا DESC را ننوشته ایم، پس مرتب سازی پیش فرض و به شیوه صعودی است.

در کد زیر به کمک ASC آشکار مشخص شده است که مرتب سازی بر پایه متغیر countryLabel? باید صعودی باشد ولی در Sparql یک تفاوت در استفاده از ASC یا DESC است. همانگونه که در کد زیر می بینید باید نام متغیر مورد نظر میان پرانتزهای باز و بسته نوشته شود. کد بالا و کد زیر هر دو یک نتیجه را خواهند داشت.

در کد زیر و همانند آنچه که درباره کد بالا گفته شد، مرتب سازی نزولی با کمک DESC برای متغیر inspection? انجام شده است. این متغیر دارای مقدار تاریخ است و از این رو از بیشترین زمان که نزدیکترین زمان نیز هست به کمترین زمان که دورترین زمان نیز هست مرتب سازی انجام می شود. در برآیند این کد، کشور یمن با تاسیس یکم ژانویه ۱۹۹۰ در بالا و عربستان سعودی با تاسیس در یکم ژانویه سال ۱۷۲۷ در پایین جای دارد.

مرتب سازی صعودی کشورها بر پایه جمعیت

در کد زیر نخست با ویژگی P31 و مقدار Q6256 فهرست همه کشورها در متغیر country? ریخته می شود و سپس با ویژگی P1082 جمعیت هر کشور مقدارش در متغیر population? ریخته خواهد شد و در پایان مرتب سازی صعودی بر پایه جمعیت از بیشترین جمعیت تا کمترین جمعیت انجام می شود.

همانند SQL در Sparql نیز می توانیم مرتب سازی را بر پایه دو یا چند متغیر انجام دهیم ولی تفاوت نخست در اینجا است که نباید ویرگولی میان نام متغیرها نوشته شود و دوم آنکه اگر می خواهید همانند کد زیر از ASC یا DESC استفاده کنید، پس بازهم باید نام متغیرها در پرانتزهای باز و بسته نوشته شود و همچنین ویرگولی میان آنها نیست. همچنین می توان بر پایه دومین کد زیر، مرتب سازی صعودی را برای دو یا چند ستون انجام داد که دیگر ASC استفاده نشده است.