我尝试通过以下 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 )
子句引起的:如果我删除它,我的转发器会按预期运行!
知道为什么会发生异常以及如何纠正它吗?