次の VB コードを使用して、リピーター コントロールのデータソースを埋めようとしています。
Dim queryString As SparqlParameterizedString = New SparqlParameterizedString()
For Each nsPrefix In UrlManager.namespaces.Keys
queryString.Namespaces.AddNamespace(nsPrefix, New Uri(UrlManager.namespaces(nsPrefix)))
Next
queryString.CommandText = commandText
Dim parser As New SparqlQueryParser()
Dim query = parser.ParseFromString(queryString)
Dim r As SparqlResultSet = g.ExecuteQuery(query)
If r.Count > 0 Then
datasource = r
Else
datasource = Nothing
End If
変数g
は私の作業グラフです
私は同じクエリで作業します
SELECT DISTINCT ?context ?label {
?s a my:Client .
?s rdfs:label ?label .
BIND ( IF(EXISTS {?s rdf:type my:Subscriber}, 1, 0) AS ?priority )
} ORDER BY DESC(?priority) ASC(?label)
シンプルな aspx ページでこの vb コードを試すたびに、正しく動作しますが、リピーターOnLoad
イベントで失敗すると、VDS.RDF.Query.RdfQueryException: Cannot add a Set to the Null Multiset
エラーはBIND ( IF(EXISTS {?s rdf:type my:Subscriber}, 1, 0) AS ?priority )
句が原因のようです: 句を削除すると、リピーターは期待どおりに動作します!
例外が発生する理由とそれを修正する方法はありますか?