我正在計數數據集中每個數據類型的實例。這是一個簡單的數據集,只有三種數據類型:整數,字符串和日期時間。SPARQL:如何列出和計算RDF數據集中的每個數據類型?
我可以通過查詢得到的數據類型(3)數量:
SELECT (COUNT(DISTINCT datatype(?o))
AS ?dTypeCount) {?s ?p ?o. FILTER (isLiteral(?o)) }
GROUP BY ?dTypeCount
結果像這樣: -------------- | dTypeCount | ============== | 3 | --------------
我可以(字符串,整數,日期時間)通過查詢得到的數據類型的列表:
SELECT DISTINCT (datatype(?o) AS ?dType)
{?s ?p ?o. FILTER (isLiteral(?o)) }
結果像這樣:
-----------------------------------------------
| dType |
===============================================
| <http://www.w3.org/2001/XMLSchema#dateTime> |
| <http://www.w3.org/2001/XMLSchema#string> |
| <http://www.w3.org/2001/XMLSchema#integer> |
-----------------------------------------------
我可以通過查詢獲取每個數據類型的計數:
SELECT (COUNT(?o) AS ?dTypeCount)
{?s ?p ?o. FILTER (isLiteral(?o)) }
GROUP BY datatype(?o)
結果如下所示:
--------------
| dTypeCount |
==============
| 23494 |
| 93548 |
| 228942 |
--------------
,但我不能讓它旁邊顯示的數據類型的名稱是計數即看起來像這樣:
-------------------------------------------------------------
| dType || dTypeCount |
=============================================================
| <http://www.w3.org/2001/XMLSchema#dateTime> || 23494 |
| <http://www.w3.org/2001/XMLSchema#string> || 93548 |
| <http://www.w3.org/2001/XMLSchema#integer> || 228942 |
-------------------------------------------------------------
我試圖子查詢,工會,多個組的各種組合的約束變量並且要麼沒有得到期望的結果 或在SELECT中出現「非組鍵變量:」錯誤。感謝所有的幫助。
謝謝喬舒亞,你的解決方案的第二個執行速度最快的三個,所以我會去用它。 – Hilary
@Hilary由於(取決於查詢引擎如何實現)更少的函數調用(例如,只有一個數據類型調用而不是兩個調用),第二個可能會更快,因此速度更快並不是一個巨大的驚喜。 (但是我沒有事先計算它們) –
很高興知道,謝謝Joshua。每天仍在學習。欣賞迴應。 – Hilary