我尝试通过以下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 )
子句引起的:如果我删除它,我的转发器就会按预期运行!
知道异常发生的原因以及如何纠正它?
答案 0 :(得分:0)
这可能与您的相关问题(Sparql issue on BIND clause)
指出的错误有关当EXISTS
用作另一个表达式的子节点时,有一个错误,如果您能够自己构建源代码,则可以检查该修复是否可以解决此问题。如果您仍然遇到问题,请在Issue Tracker