سؤال

يجب الاستعلام التالي:

SELECT ?tag WHERE {
  ?r ns9:taggedWithTag ?tagresource.
  ?tagresource ns9:name ?tag
}
LIMIT 5000

والنتائج هي:

abc
abc
abc
abc
abc
abc
abc
abd
ads
anb

أريد الحصول على بعض الاشياء مثل:

tag | count
-----------------
abc     7
abd     1
ads     1
anb     1

لقد حاولت ذلك مع count(*) و count(?tag), ولكن مما كنت تحصل على رسالة الخطأ "Variable or "*" expected." يمكن أن تقولوا لي كيف ؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم جافا و جينا أساسا ، يمكنك استخدام أساسا هو امتداد ل المجاميع.الاستعلام الخاص بك سوف ننظر بشيء من مثل:

SELECT ?tag (count(distinct ?tag) as ?count)
WHERE {
    ?r ns9:taggedWithTag ?tagresource.
    ?tagresource ns9:name ?tag
}
LIMIT 5000

على الأصلي وسباركل مواصفات من عام 2008 لم تدرج الركام ، ولكن النسخة الحالية ، 1.1 ، من عام 2013 لا.

نصائح أخرى

<ع> استخدام COUNT ()، MIN ()، MAX () SUM ()، AVG () مع GROUP BY يمكن أن تنتج القيم ملخص لمجموعات من ثلاثة أضعاف. ملاحظة هذه الأنماط قد تكون محددة لSPARQL 1.1.

وعلى سبيل المثال، هذا واحد يمكن تلخيص هذا؟ قيمة لكل؟ الفئة،

SELECT ?category (SUM(?value) as ?valueSum)
WHERE
{
  ?s ?category ?value .
}
GROUP BY ?category

وهذا واحد يمكن الاعتماد على عدد من الاستخدامات لالمسند؟ ص،

SELECT ?p (COUNT(?p) as ?pCount)
WHERE
{
  ?s ?p ?o .
}
GROUP BY ?p

وهي من وحي هذه الأمثلة من المواد من بوب دوشارم (2011)، "التعلم SPARQL". أورايلي وسائل الإعلام، سيباستوبول، CA، الولايات المتحدة الأمريكية؛ يمكنك الاطلاع على http://www.learningsparql.com/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top