[英]How can you predefine a variable in a SPARQL query
我創建了一個SPARQL查詢來檢索有關工作流元素的大量信息。 查詢與數據庫進行通信,並從Python調用。 查詢的形式如下:
"""SELECT ?input ?value1 ?value2 ?value3 ....
WHERE {?input rdf:type InputVar.
?input property1 ?value1.
?input property2 ?value2.
?input property3 ?value3.
.... etc....
}"""
然后,此查詢將返回與我想要知道的屬性對應的所有值。
我現在希望我的查詢能夠做的是我希望它能夠同時查找所有輸入變量(就像它現在一樣)並且我希望它能夠收集ONE,指定輸入的信息。 這可能是這樣的:
%s property1 ?value1
%s property2 ?value2
在哪里我會讓%s,取決於是否有指定的名稱,是?input或inputname(指定的名稱)。
但是,如果我這樣做,我需要很多%s,因為我提取了很多屬性。
在SPARQL中,是否可以定義要查找的變量的名稱? 那么可以這樣做嗎?
"""SELECT ?input ?value1 ?value2 ?value3 ....
WHERE {(?input=inputname)
?input rdf:type InputVar.
?input property1 ?value1.
?input property2 ?value2.
?input property3 ?value3.
.... etc....
}"""
所以在開頭添加類似(?input = inputname)的東西,所以它只查找這個值?
在一般情況下,您可以嘗試使用VALUES
子句,例如
SELECT *
WHERE
{
VALUES ?input { <http://myConstant> }
?input rdf:type InputVar.
?input property1 ?value1.
?input property2 ?value2.
?input property3 ?value3.
# etc.
}
但重要的是要明白,這實際上並不是你想要的。 它在語義上的作用是將常量連接到圖形模式的匹配中,從而消除匹配,其中?input
與您的常量不匹配。 一些查詢引擎可能足夠聰明,可以將其簡化為替換,但並非所有查詢引擎都將這樣,並且只適用於相對簡單的查詢。
聽起來你真的在使用大多數SQL API中的某種准備/參數化查詢支持?
看看參數化SPARQL查詢的最佳方法是什么 ,討論如何在各種API中執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.