SPARQL

SPARQL (تُنطق " سباركل "، وهي اختصار متكرر [ 2 ] لبروتوكول SPARQL ولغة استعلام RDF ) هي لغة استعلام RDF ، أي لغة استعلام دلالية لقواعد البيانات ، قادرة على استرجاع البيانات المخزنة بتنسيق إطار وصف الموارد (RDF) ومعالجتها . [ 3 ] [ 4 ] وقد اعتمدتها مجموعة عمل الوصول إلى بيانات RDF (DAWG) التابعة لاتحاد شبكة الويب العالمية (W3C) كمعيار ، وتُعدّ من التقنيات الرئيسية للويب الدلالي . في 15 يناير 2008، أقرّ اتحاد شبكة الويب العالمية (W3C) الإصدار 1.0 من SPARQL كتوصية رسمية، [ 5 ] [ 6 ] ثم الإصدار 1.1 في مارس 2013. [ 7 ]

يمكن استخدام خدمة الاستعلام في ويكي بيانات للاستعلام عن البيانات من ويكي بيانات باستخدام SPARQL [ 8 ] [ 9 ]

تسمح لغة SPARQL بأن يتكون الاستعلام من أنماط ثلاثية ، وروابط ، وفصل ، وأنماط اختيارية . [ 10 ]

توجد تطبيقات للغات برمجة متعددة . [ 11 ] كما توجد أدوات تُمكّن من الاتصال وإنشاء استعلام SPARQL لنقطة نهاية SPARQL بشكل شبه تلقائي، مثل ViziQuer. [ 12 ] بالإضافة إلى ذلك، توجد أدوات لترجمة استعلامات SPARQL إلى لغات استعلام أخرى، مثل SQL [ 13 ] و XQuery . [ 14 ]

سمات

تتيح لغة SPARQL للمستخدمين كتابة استعلامات تتبع مواصفات RDF الصادرة عن اتحاد شبكة الويب العالمية (W3C) . وبالتالي، تتكون مجموعة البيانات بأكملها من ثلاثيات "موضوع-مسند-مفعول به". تكون الموضوعات والمسندات دائمًا مُعرّفات URI، بينما يمكن أن تكون المفعول به مُعرّفات URI أو قيمًا حرفية. يُعد هذا المخطط المادي الواحد المكون من ثلاثة "أعمدة" مُنظّمًا بشكل مفرط ، حيث أن ما كان سجلًا علائقيًا واحدًا (على سبيل المثال، بأربعة أعمدة) أصبح الآن أربع ثلاثيات، حيث يتكرر الموضوع باستمرار، والمسند هو اسم العمود، والمفعول به هو قيمة العمود. توفر صيغة SPARQL الميزات التالية:

1. يمكن استخدام الفاعل والمفعول به لإيجاد الآخر بما في ذلك بشكل متعدٍ.

فيما يلي مجموعة من الثلاثيات. من الواضح أن ex:sw001و ex:sw002ترتبط بـ ex:sw003، والتي بدورها تحتوي على روابط:

مثال : sw001 مثال : روابط مع مثال : sw003 . مثال : sw002 مثال : روابط مع مثال : sw003 . مثال : sw003 مثال : روابط مع مثال : sw004 ، مثال : sw006 . مثال : sw004 مثال : روابط مع مثال : sw005 .

في لغة SPARQL، عند أول ظهور لمتغير في مسار التعبير، يتم ملؤه بالنتيجة. وفي المرات اللاحقة، يُستخدم كمدخل. إذا قمنا بتعيين ("bind") عنوان URI ex:sw003للمتغير ?targets، فإنه يُمرر النتيجة إلى متغير آخر ?src؛ وهذا يُخبرنا بكل العناصر المرتبطة بهex:sw003 (التبعية الأصلية).

SELECT * WHERE { BIND ( ex : sw003 AS ?targets ) ?src ex : linksWith ?targets . # ?src fillulated with ex:sw001, ex:sw002 }

لكن بتغيير بسيط في متغير الربط، ينعكس السلوك. وهذا سينتج عنه كل العناصر التي ex:sw003تعتمد عليها (التبعية اللاحقة):

SELECT * WHERE { BIND ( ex : sw003 AS ?src ) ?src ex : linksWith ?targets . # ملاحظة! لا يوجد تغيير في الصيغة! تم ملء ?targets بـ ex:sw004، ex:sw006 }

والأكثر جاذبية هو أنه يمكننا بسهولة توجيه SPARQL لاتباع المسار بشكل متعدٍ:

حدد * حيث { ربط ( مثال : sw003 كـ ?src )# لاحظ علامة الجمع (+)؛ الآن سيجد SPARQL أيضًا ex:sw005 بشكل غير مباشر عبر ex:sw004؛ ?targets هو ex:sw004، ex:sw005، ex:sw006 ?src ex : linksWith + ?targets . }

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

إذا كانت ?S مرتبطة بـ ( مثال : A ، مثال : B ) وكانت ?O غير مرتبطة، فإن ? S مثال : روابط مع ? O تتصرف كسلسلة أمامية : لكل s في ?S : لكل جلب ( s ، مثال : روابط مع ) : التقاط o وإلحاق o بـ ? Oإذا كانت ?O مرتبطة بـ ( مثال : A ، مثال : B ) وكانت ? S غير مرتبطة، فإن ? S مثال : روابط مع ?O تتصرف كسلسلة عكسية : لكل o في ? O : لكل جلب ( مثال : روابط مع ، o ) : التقاط s إلحاق s بـ ? S

2. تعبيرات SPARQL عبارة عن سلسلة من العمليات

على عكس لغة SQL التي تحتوي على استعلامات فرعية وعبارات CTE، فإن SPARQL أقرب إلى MongoDB أو SPARK. تُقيّم التعبيرات تمامًا بالترتيب الذي تُصرّح به، بما في ذلك تصفية البيانات وربطها. يصبح نموذج البرمجة مشابهًا لعبارة SQL مع عبارات WHERE متعددة. يمكن أن يؤدي الجمع بين عناصر قائمة الكائنات والمواضيع، بالإضافة إلى منهجية خط الأنابيب، إلى استعلامات معبرة للغاية تغطي مجالات بيانات متنوعة. لا يُعدّ استخدام JOIN كما هو مستخدم في قواعد البيانات العلائقية، وفهم ديناميكياته (مثل تحديد العمود المناسب للربط بجدول آخر، والربط الداخلي مقابل الخارجي، إلخ) ذا صلة في SPARQL (بل هو أبسط في بعض النواحي)، لأن الكائنات، إذا كانت URI وليست قيمة حرفية، يمكن استخدامها ضمنيًا فقط للعثور على موضوع. إليك مثال أكثر شمولًا يوضح خط الأنابيب باستخدام بعض اختصارات بناء الجملة.

# حدد فقط القيم النهائية التي نحتاجها. إذا استخدمنا SELECT * (وهو # ليس بالضرورة أمرًا سيئًا)، فإن المتغيرين "الوسيطين" ?vendor و ?owner # سيكونان جزءًا من الناتج. SELECT ?slbl ?vlbl ?lei ?lname WHERE { # ?sw غير مُرتبط. عيّن الشرط إلى rdf:type والكائن إلى ex:Software # واجمع جميع مثيلات البرامج. في الوقت نفسه، استخرج تسمية البرنامج # (وصف موجز) واملأ ?slbl، والتقط أيضًا # كائن vendor في ?vendor. ?sw rdf : type ex : Software ; rdfs : label ?slbl ; ex : vendor ?vendor .# يوضح ما سبق "بشكل مطول" عملية الربط: # ?sw rdf:type ex:Software . # ?sw UNBOUND; يتم تعيينه هنا # ?sw rdfs:label ?slbl . # ?sw bound; تعيين unbound ?slbl # ?sw ex:vendor ?vendor . # ?sw still bound; تعيين ?vendor# استبعاد البرامج مفتوحة المصدر. ملاحظة: ex:oss هو معرّف موارد موحد (URI) لأنه # سلسلة نصية غير مُقتبسة: FILTER ( ?vendor NOT IN ( ex : oss ))# بعد ذلك، تعمّق في كائن ?vendor واستخرج مُعرّف الكيان القانوني # ومالك البيانات - حيث يكون المالك أيضًا كائنًا. ?vendor مُرتبط #؛ أما ?vlbl و?lei و?owner فهي غير مُرتبطة وسيتم ملؤها: ?vendor rdfs : label ?vlbl ; ex : LEI ?lei ; ex : owner ?owner .# وأخيرًا، من كائن المالك، استخرج اسم العائلة: ?owner مثال : lastname ?lname . }

على عكس قواعد البيانات العلائقية، فإن عمود الكائن غير متجانس: فنوع بيانات الكائن، إن لم يكن معرّف موارد موحد (URI)، يُستنتج عادةً (أو يُحدد في الأنطولوجيا ) من قيمة المسند . تحمل العقد الحرفية معلومات النوع المتوافقة مع مساحة اسم XSD الأساسية، بما في ذلك الأعداد الصحيحة القصيرة والطويلة الموقعة وغير الموقعة، والأعداد العشرية أحادية وثنائية الدقة، والتاريخ والوقت، والأعداد العشرية الدقيقة، والقيم المنطقية، والسلاسل النصية. عادةً ما تخزن تطبيقات التخزين الثلاثي في ​​قواعد البيانات العلائقية التقليدية القيمة كسلسلة نصية، ويحدد عمود رابع النوع الحقيقي. أما قواعد البيانات متعددة الأشكال، مثل MongoDB وSQLite، فيمكنها تخزين القيمة الأصلية مباشرةً في حقل الكائن.

وبالتالي، توفر لغة SPARQL مجموعة كاملة من عمليات الاستعلام التحليلي ، مثل الاستعلامات التحليلية JOIN، للبيانات التي يُعد مخططها جزءًا لا يتجزأ منها، دون الحاجة إلى تعريف مخطط منفصل. مع ذلك، غالبًا ما تُقدم معلومات المخطط (الأنطولوجيا) خارجيًا، للسماح بربط مجموعات البيانات المختلفة بشكل واضح. إضافةً إلى ذلك، توفر SPARQL صيغةً محددةً لاجتياز الرسوم البيانية للبيانات التي يمكن اعتبارها رسمًا بيانيًا.SORTAGGREGATE

يوضح المثال أدناه استعلامًا بسيطًا يستفيد من تعريف الأنطولوجياfoaf ("صديق صديق").

وبالتحديد، يُعيد الاستعلام التالي أسماء وعناوين البريد الإلكتروني لكل شخص في مجموعة البيانات :

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قد يظهر صف واحد عدة مرات، مرة لكل صندوق بريد، مما يؤدي إلى تكرار ?name.

من الاعتبارات المهمة في لغة SPARQL أنه عند عدم استيفاء شروط البحث في مسار البيانات لكيانات طرفية مثل ?email، يتم استبعاد الصف بأكمله ، على عكس لغة SQL التي عادةً ما تُرجع عمودًا فارغًا. سيعرض الاستعلام أعلاه فقط العناصر التي يمكن العثور ?personفيها على كل من ?nameو على الأقل . إذا لم يكن لدى عنصر بريد إلكتروني، فسيتم استبعاده. لمواءمة الناتج مع الناتج المتوقع من استعلام SQL مكافئ، يلزم استخدام الكلمة المفتاحية .?email?personOPTIONAL

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

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

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

نماذج الاستفسار

في حالة الاستعلامات التي تقرأ البيانات من قاعدة البيانات، تحدد لغة SPARQL أربعة أنواع مختلفة من الاستعلامات لأغراض مختلفة.

SELECTاستفسار
تُستخدم لاستخراج القيم الأولية من نقطة نهاية SPARQL، ويتم إرجاع النتائج بتنسيق جدول.
CONSTRUCTاستفسار
تُستخدم لاستخراج المعلومات من نقطة نهاية SPARQL وتحويل النتائج إلى RDF صالح.
ASKاستفسار
تُستخدم لتوفير نتيجة بسيطة صحيحة/خاطئة لاستعلام على نقطة نهاية SPARQL.
DESCRIBEاستفسار
يستخدم لاستخراج رسم بياني RDF من نقطة نهاية SPARQL، ويتم ترك محتوى الرسم البياني لنقطة النهاية لتحديده، بناءً على ما يعتبره القائم بالصيانة معلومات مفيدة.

يتطلب كل نموذج من نماذج الاستعلام هذه WHEREكتلة لتقييد الاستعلام، على الرغم من أن هذا الخيار اختياري في حالة DESCRIBEالاستعلام WHERE.

تحدد SPARQL 1.1 لغة لتحديث قاعدة البيانات مع العديد من أشكال الاستعلام الجديدة. [ 15 ]

مثال

مثال آخر لاستعلام 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 . }

تُشار إلى المتغيرات بالبادئة a ?أو $. سيتم إرجاع قيم الربط لـ ?capitalو ?country. عندما تنتهي ثلاثية بفاصلة منقوطة، فإن العنصر من هذه الثلاثية سيكمل ضمنيًا الزوج التالي لتكوين ثلاثية كاملة. على سبيل المثال، ex:isCapitalOf ?yهي اختصار لـ ?x ex:isCapitalOf ?y.

سيقوم معالج استعلامات SPARQL بالبحث عن مجموعات من الثلاثيات التي تطابق أنماط الثلاثيات الأربعة هذه، وربط المتغيرات في الاستعلام بالأجزاء المقابلة من كل ثلاثية. من المهم ملاحظة "التوجيه الخاصي" هنا (يمكن إجراء مطابقة الفئات فقط من خلال سمات الفئة أو خصائصها - انظر Duck typing ).

لتبسيط الاستعلامات، يسمح SPARQL بتعريف البادئات ومعرّفات الموارد الموحدة الأساسية بطريقة مشابهة لـ Turtle . في هذا الاستعلام، تشير البادئة " ex" إلى http://example.com/exampleOntology#" .

تتضمن لغة SPARQL عمليات التاريخ والوقت الأصلية أيضًا. إليك استعلامًا يُعيد جميع البرامج التي يكون تاريخ انتهاء دعمها (EOL) أكبر من أو يساوي 1000 يوم من تاريخ إصدارها، وسنة إصدارها 2020 أو أحدث:

SELECT ?lbl ?version ?released ?eol ?duration WHERE { ?software a ex : Software ; rdfs : label ?lbl ; ex : EOL ?eol ; # is xsd:dateTime ex : version ?version ; # string ex : released ?released ; # is xsd:dateTime# بعد هذه المرحلة، يتم ربط ?duration كنوع xsd:duration # (في تطبيقات Java، org.apache.jena.datatypes.xsd.XSDDuration) # ويكون متاحًا في مسار المعالجة، وفي عبارة SELECT، وفي # عوامل GROUP أو ORDER، إلخ: BIND ( ?eol - ?released AS ?duration )# تمثيل المدة في toString يكون بالتنسيق PnYnMnDTnHnMnS. # يجب استخدام التحويل ^^ لإخبار المحرك بأنه يجب التعامل مع هذا كقيمة للمدة. # يحتوي بناء جملة SPARQL (وRDF) الحرفي على اختصارات رقمية مدمجة لتبسيط # التعبيرات بدون تحويلات: # 16 xsd:int java.lang.Integer # 16.7 xsd:decimal java.math.BigDecimal يحافظ على الدقة # 16.700 xsd:decimal java.math.BigDecimal يحافظ على الدقة # 1.0632e6 xsd:double java.lang.Double صحيح double float؛ كن حذرًا # 2147483649 xsd:long java.lang.Long >32 بت int تم اكتشافه تلقائيًا # # تعمل معظم التحويلات كما هو متوقع، على سبيل المثال "16.700"^^xsd:double. # ملاحظة: في الفلتر أدناه، نستخدم اختصار العدد الصحيح 2020:FILTER ( ?duration >= "P1000D" ^^ xsd : duration && YEAR ( ?released ) >= 2020 ) } ORDER BY DESC ( ?duration ) LIMIT 5

الإضافات

يحدد GeoSPARQL وظائف التصفية لاستعلامات نظم المعلومات الجغرافية (GIS) باستخدام معايير OGC المفهومة جيدًا ( GML و WKT وما إلى ذلك).

SPARUL هو امتداد آخر للغة SPARQL. وهو يمكّن من تحديث مخزن RDF باستخدام لغة الاستعلام التصريحية هذه، عن طريق إضافة INSERTطرق DELETE.

XSPARQL هي لغة استعلام متكاملة تجمع بين XQuery و SPARQL للاستعلام عن مصادر بيانات XML و RDF في آن واحد. [ 16 ]

التطبيقات

تطبيقات SPARQL المرجعية مفتوحة المصدر

راجع قائمة تطبيقات SPARQL للحصول على تغطية أكثر شمولاً، بما في ذلك مخزن البيانات الثلاثية ، وواجهات برمجة التطبيقات ، ووحدات التخزين الأخرى التي طبقت معيار SPARQL.

انظر أيضاً

مراجع

  1. 1 2 3 4 هيبيلر، جون؛ فيشر، ماثيو؛ بليس، رايان؛ بيريز لوبيز، أندرو (2009). برمجة الويب الدلالي . إنديانابوليس : جون وايلي وأولاده، ص 406. ISBN  978-0-470-41801-7.
  2. بيكيت، ديف (6 أكتوبر 2011). "ماذا يرمز إليه SPARQL؟" . semantic-web@w3.org .
  3. جيم رابوزا (2 مايو 2006). "لغة SPARQL ستجعل الويب يتألق" . eWeek . تم الاطلاع عليه في 17 يناير 2007 .
  4. سيغاران، توبي؛ إيفانز، كولين؛ تايلور، جيمي (2009). برمجة الويب الدلالي . دار نشر أورايلي ميديا، 1005 طريق غرافنشتاين السريع الشمالي، سيباستوبول، كاليفورنيا 95472. ص 84. ISBN  978-0-596-15381-6.
  5. "أخبار أنشطة الويب الدلالي من W3C - SPARQL توصية" . W3.org. 15 يناير 2008. مؤرشف من الأصل في 20 يناير 2008. تم الاطلاع عليه في 1 أكتوبر 2009 .
  6. "الجدول الزمني لمعايير W3C الخاصة بـ XML والويب الدلالي" (ملف PDF) . 4 فبراير 2012. مؤرشف (ملف PDF) من الأصل في 8 ديسمبر 2017. تم الاطلاع عليه في 27 نوفمبر 2013 .
  7. هيرمان، إيفان (21 مارس 2013). "إحدى عشرة مواصفة من مواصفات SPARQL 1.1 هي توصيات من اتحاد شبكة الويب العالمية" . مدونة اتحاد شبكة الويب العالمية. مؤرشف من الأصل في 17 أبريل 2013. تم الاطلاع عليه في 4 أكتوبر 2025 .
  8. "SPINACH: نظام توجيه المعلومات القائم على SPARQL للإجابة على أسئلة واقعية صعبة" . تم الاطلاع عليه بتاريخ 15 أبريل 2025 .
  9. "خدمة استعلام ويكي بيانات - ويكي تك" . wikitech.wikimedia.org . مؤرشف من الأصل في 15 أبريل 2025. تم الاطلاع عليه في 15 أبريل 2025 .
  10. "XML وخدمات الويب في الأخبار" . xml.org . 6 أكتوبر 2006. مؤرشف من الأصل في 22 مايو 2007. تم الاطلاع عليه في 17 يناير 2007 .
  11. "SparqlImplementations – ESW Wiki" . Esw.w3.org. مؤرشف من الأصل بتاريخ 28 سبتمبر 2009. تم الاطلاع عليه بتاريخ 1 أكتوبر 2009 .
  12. "ViziQuer أداة لإنشاء استعلامات SPARQL تلقائيًا" . lumii.lv. مؤرشف من الأصل في 19 أبريل 2012. تم الاطلاع عليه في 25 فبراير 2011 .
  13. "خادم D2R" . مؤرشف من الأصل بتاريخ 26 فبراير 2012. تم الاطلاع عليه بتاريخ 4 فبراير 2012 .
  14. "إطار عمل SPARQL2XQuery" . مؤرشف من الأصل بتاريخ 12 مايو 2013. تم الاطلاع عليه بتاريخ 4 فبراير 2012 .
  15. يو، ليانغ (2014). دليل المطور للويب الدلالي . سبرينغر. ص 308. ISBN  978-3-662-43796-4.
  16. «تم نشر XSPARQL كمساهم في W3C» . W3.org. 23 يونيو 2009. مؤرشف من الأصل في 27 نوفمبر 2022. تم الاطلاع عليه في 22 مايو 2022 .