اسپارکل - ویکی‌پدیا، دانشنامهٔ آزاد

اسپارکل
پارادایم برنامه‌نویسیزبان پرسمان
توسعه‌دهندهائتلاف وب جهان‌گستر
ظهوریافته در۲۰۰۸؛ ۱۶ سال پیش (۲۰۰۸-خطا: زمان نامعتبر}})
انتشار پایدار
۱٫۱
۲۱ مارس ۲۰۱۳؛ ۱۱ سال پیش (۲۰۱۳-21}})
وبگاه
پیاده‌سازی‌های بزرگ
Jena,[۱] OpenLink Virtuoso

اسپارکل (به انگلیسی: SPARQL، ‎/ˈspɑːkəl/‎)، یک زبان پرسمان RDF (یک نوع زبان پرسمان معنایی) برای پایگاه‌های داده است. اسپارکل می‌تواند داده‌های ذخیره شده در فرمت چارچوب توصیف منبع (RDF) را بازیابی و دستکاری کند.[۲][۳]

SPARQL کوته‌نوشت بازگشتی برای SPARQL Protocol and RDF Query Language می‌باشد، و به صورت اسپارکل تلفظ می‌شود.[۴]

این زبان به وسیلهٔ «کارگروه دسترسی دادهٔ آردی‌اف» کوته نوشت (DAWG) از ائتلاف وب جهان‌گستر استانداردسازی شد، و به عنوان یکی از فن آوری‌های کلیدی در وب معنایی شناخته می‌شود. در ۱۵ ژانویه سال ۲۰۰۸ زبان SPARQL 1.0 تبدیل به پیشنهاد رسمی W3C شد، سپس SPARQL 1.1 در مارس سال ۲۰۱۳ تبدیل به پیشنهاد شد. اسپارکل به یک پرسمان اجازه می‌دهد تا شامل الگوهای سه تایی باشند: پیوستگی (به انگلیسی: conjunctions)، تفکیک (به انگلیسی: disjunctions) و الگوهای اختیاری.[۵]

پیاده‌سازی‌هایی برای چندین زبان برنامه‌نویسی موجود است.[۶] و ابزارهایی موجود است که به افراد اجازهٔ اتصال و ساخت نیمه-خودکار یک پرسمان اسپارکل را برای یک پایانه اسپارکل می‌دهد، که یک مثال آن ViziQuer است.[۷] بعلاوه ابزارهایی برای ترجمهٔ پرسمان‌های اسپارکل به دیگر زبان‌های پرسمان مثل SQL و XQuery موجود است.[۸]

مزایا[ویرایش]

اسپارکل به کاربران اجازه نوشتن پرسمان در برابر آنچه که دادهٔ «کلید-مقدار» نامیده می‌شود را می‌دهد، به صورت اختصاصی تر، داده‌ای که از ویژگی‌های RDF از W3C پیروی می‌کنند پرسمان می‌شوند. از این رو کل پایگاه داده مجموعه ای از سه تایی‌های «موضوع-خبر-هدف» (به انگلیسی: subject-predicate-object) می‌باشد. این روش مشابه بعضی پایگاه داده‌های NoSQL است که از عبارت «سند-کلید-مقدار» استفاده می‌کنند، مثل MongoDB.[۴]

رابطه با SQL[ویرایش]

  • به زبان پایگاه داده‌های رابطه ای SQL، دادهٔ RDF می‌تواند یک جدول با سه ستون در نظر گرفته شود- ستون موضوع، ستون گزاره یا خبر، و ستون هدف.
  • موضوع در RDF مشابه یک موجودیت (به انگلیسی: entity)در یک پایگاه داده SQL است،
    • در SQL: عناصر داده (یا فیلدها) در چندین ستون قرار می‌گیرد، گاهی نیز در بیش از یک جدول توزیع می‌شود، که توسط یک کلید یکتا مشخص می‌گردد.
    • در عوض، در RDF: این فیلدها به صورت ردیف‌های خبر/هدف مجزا نمایش می‌یابند، که دارای یک «موضوع» مشابه اند، معمولاً «کلید یکتای» مشابه دارند، و «خبر» آنها همان نام ستون است و «هدف» مشابه «دادهٔ واقعی» است.
  • بر خلاف پایگاه‌های دادهٔ رابطه ای، ستون «هدف»، ناهمگون است: در این روش، نوع داده ضمنی توسط مقدار «خبر» تعیین می‌شود (یا در آنتالوژی مشخص شده‌است).
  • در نتیجه بر خلاف SQL، در RDF می‌تواند چندین ورودی برای هر خبر وجود داشته باشد. برای مثال می‌توان چندین ورودی «فرزند» برای یک «انسان» بخصوص، و می‌تواند مجموعه ای از این نوع اشیا، مثل «فرزندان» را برگرداند.[۴]

قابلیت‌ها[ویرایش]

اسپارکل یک مجموعهٔ کامل از عملیات پرسمان تحلیلی مثل JOIN, SORT, AGGREGATE را برای داده‌ای که که طرح‌واره ی آن به صورت ذاتی بخشی از داده‌است فراهم می‌کند، و نه آنکه نیاز به یک تعریف طرح‌واره جداگانه باشد. با این حال اطلاعات طرح‌واره (آنتالوژی) معمولاً به صورت بیرونی تهیه می‌شود، زیرا اجازه اتصال دیتاست‌های مختلف را به صورت غیر مبهم را می‌دهد. بعلاوه، اسپارکل یک نحو پیمایش گراف بخصوص برای داده‌ای که می‌تواند به صورت گراف تصور شود، تهیه می‌بیند.[۴]

حالت‌های پرسمان[ویرایش]

در پرسمان‌هایی که داده را از پایگاه داده می‌خوانند، زبان اسپارکل چهار نوع مختلف پرسمان، برای چهار هدف مختلف تعیین کرده‌است.[۴]

پرسمان SELECT[ویرایش]

برای استخراج داده‌های خام، از پایانه اسپارکل استفاده می‌شود، نتایج به صورت قالب جدولی بازگردانده می‌شوند.

پرسمان CONSTRUCT[ویرایش]

برای استخراج اطلاعات از پایانه اسپارکل و تبدیل نتایج به یک RDF مجاز استفاده می‌شود.

پرسمان ASK[ویرایش]

برای تهیه یک نتیجه درست/غلط ساده برای یک پرسمان در یک پایانه اسپارکل استفاده می‌شود.

پرسمان DESCRIBE[ویرایش]

برای استخراج گراف RDF از پایانهٔ اسپارکل استفاده می‌شود، محتوای آن بر عهدهٔ پایانه است، تا بر اساس آنچه که نگهدارنده اطلاعات مفید می‌پندارد تصمیم‌گیری کند.

هر کدام از این فرم‌های پرسمان یک بلاک WHERE برای محدودسازی پرسمان می‌گیرد، اگرچه در حالت پرسمان DESCRIBE قسمت WHERE اختیاری است.

اسپارکل ۱٫۱ یک زبان برای به روزرسانی پایگاه داده به کمک چندین فرم پرسمان جدید تعیین نموده‌است.

این پرسمان‌ها می‌توانند به چندین پایانه اسپارکل (سرویس‌های که پرسمان اسپارکل را می‌پذیرند، و نتایج را برمی‌گردانند) توزیع شوند، محاسبه شوند، و نتایج جمع‌آوری گردد، این فرایند به عنوان پرسمان متحد (به انگلیسی: federated query) شناخته می‌شود.[۴]

چه در حالت پرسمان متحد یا پرسمان محلی، تعاریف سه تایی‌های اضافه در پرسمان باید اجازهٔ اتصال به انواع موضوع مختلف را بدهد، مثلاً خودرو، تا به پرسمان‌های ساده، اجازه بازگرداندن لیستی از نام‌ها و ایمیل‌ها را برای هر انسانی که «خودروهایی با راندمان سوخت بالا» را بدهد.[۴]

مثال اول[ویرایش]

مثال زیر یک پرسمان ساده را نشان می‌دهد که از تعریف آنتالوژی fof بهره می‌گیرد ("friend of a friend").[۴]

پرسمانی که در ادامه آمده‌است، نام‌ها و ایمیل‌های هر انسان موجود در دیتاست را برمی‌گرداند:[۴]

PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?name        ?email WHERE   {     ?person  a          foaf:Person .     ?person  foaf:name  ?name .     ?person  foaf:mbox  ?email .   } 

این پرسمان همهٔ سه تایی‌هایی را که موضوع منطبق دارند را به هم متصل می‌کند، که در آن نوع خبر "a" یک انسان است (foaf:Person)، و آن انسان یک یا بیشتر نام (foaf:name) و صندوق پستی (foaf:mbox) دارد.[۴]

نویسندهٔ این پرسمان برای ارجاع به موضوع از نام متغیر «?person» استفاده کرده‌است، تا وضوح خواندن افزایش یابد. به دلیل آنکه عنصر اول برای سه تایی همیشه موضوع است، نویسنده می‌تواند به سادگی هر نام متغیری را به استفاده کند، مثل "؟subj" یا "?x". هر نامی که انتخاب شود، باید در همهٔ خطوط پرسمان مشابه باشد، تا نشان بدهد که موتور پرسمان باید سه تایی‌های با موضوع مشابه را متصل کند.[۴]

نتیجهٔ این پرسمان مجموعه ای از ردیف‌ها می‌باشد- person، ?name، ?email?. این پرسمان؟name و؟email را برمی‌گرداند، زیرا؟person معمولاً یک URI پیچیده‌است، تا آنکه یک رشته انسان-خواندنی باشد. توجه کنید که هر؟person می‌تواند چندین ایمیل داشته باشد، بنابراین در مجموعه بازگشت شده، یک ردیف؟name می‌تواند چندین بار ظاهر شود، برای هر ایمیل یک بار.[۴]

مثال دوم[ویرایش]

یک مثال دیگر از پرسمان SPARQL که سؤال «پایتخت‌های همهٔ کشورهای در آفریقا کدامند؟» را برمی‌گرداند:

PREFIX ex: <http://example.com/exampleOntology#> SELECT ?capital        ?country WHERE   {     ?x  ex:cityname       ?capital   ;         ex:isCapitalOf    ?y         .     ?y  ex:countryname    ?country   ;         ex:isInContinent  ex:Africa  .   } 

در اینجا متغیرها به وسیلهٔ یک پیشوند؟ یا $ مشخص می‌شوند. اتصالات به؟capital و؟country برگردانده می‌شود. وقتیکه یک سه تایی به وسیله یک سمیکالن تمام می‌شود، موضوع از این سه تایی به صورت ضمنی جفت بعدی را پر می‌کند، و این موضوع تا انتهای سه تایی ادامه می‌یابد؛ بنابراین، برای مثال ex:isCapitalOf ?y یک خلاصه برای؟x ex:isCapitalOf ?y می‌باشد.

پردازشگر پرسمان اسپارکل به دنبال مجموعه‌های سه تایی می‌گردد که با این چهار الگوی سه تایی منطبق می‌باشند، و متغیرهای موجود در پرسمان را با قسمت‌های متناظر هر سه تایی متصل می‌کند. آنچه که در اینجا باید توجه کرد، «جهت‌گیری ویژگی» است، (یک کلاس فقط از طریق هدایت‌های ویژگی‌های کلاس، منطبق می‌شود، تایپ‌دهی اردکی را ببینید).

برای مختصر کردن پرسمان‌ها، اسپارکل به ما اجازه تعریف پیشوند، و URI‌های مبنی را، به یک روش مشابه Turtle می‌دهد. در این پرسمان، پیشوند ex برای “http://example.com/exampleOntology#” استفاده شده‌است.

پیاده‌سازی‌ها[ویرایش]

پیاده‌سازی‌های اسپارکل متن باز مرجع

  • RDF4J, formerly Sesame (framework) from Eclipse Foundation
  • Jena (framework) from Apache Software Foundation
  • OpenLink Virtuoso

منابع[ویرایش]

  1. Hebeler, John; Fisher, Matthew; Blace, Ryan; Perez-Lopez, Andrew (2009). {{جا:PAGENAME}}. Indianapolis, Indiana: جان وایلی و پسران. pp. 406. ISBN 978-0-470-41801-7.
  2. Jim Rapoza (2 May 2006). "SPARQL Will Make the Web Shine". eWeek. Retrieved 2007-01-17.
  3. Segaran, Toby; Evans, Colin; Taylor, Jamie (2009). Programming the Semantic Web. O’Reilly Media, Inc. , 1005 Gravenstein Highway North, Sebastopol, CA 95472. p. 84. ISBN 978-0-596-15381-6.
  4. ۴٫۰۰ ۴٫۰۱ ۴٫۰۲ ۴٫۰۳ ۴٫۰۴ ۴٫۰۵ ۴٫۰۶ ۴٫۰۷ ۴٫۰۸ ۴٫۰۹ ۴٫۱۰ ۴٫۱۱ "SPARQL". Wikipedia (به انگلیسی). 2020-01-29.
  5. "XML and Web Services In The News". xml.org. 6 October 2006. Retrieved 2007-01-17.
  6. "SparqlImplementations – ESW Wiki". Esw.w3.org. Retrieved 2009-10-01.
  7. "ViziQuer a tool to construct SPARQL queries automatically". lumii.lv. Retrieved 2011-02-25.
  8. "SPARQL2XQuery Framework". Retrieved 2012-02-04.