1

次の 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 )句が原因のようです: 句を削除すると、リピーターは期待どおりに動作します!

例外が発生する理由とそれを修正する方法はありますか?

4

1 に答える 1

0

これは、関連する質問で特定されたバグに関連している可能性があります ( BIND 句に関する Sparql の問題)

別の式の子として使用されたときにバグがありました。EXISTSソースから自分でビルドできる場合は、その修正でこの問題が解決するかどうかを確認できます。それでも問題が発生する場合は、Issue Trackerに新しいバグを報告してください。

于 2013-04-22T23:26:02.127 に答える