Предложение SPARQL BIND вызывает исключение для источника данных повторителя

Я пытаюсь заполнить источник данных элемента управления повторителем с помощью следующего кода 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)

Всякий раз, когда я пытаюсь этот код VB на простой странице ASPX, он работает правильно, но если на ретрансляторе происходит сбой 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 ) предложение: если я уберу его, мой повторитель будет вести себя как положено!

Есть идеи, почему возникает исключение и как его исправить?

1 ответ

Решение

Это может быть связано с ошибкой, идентифицированной вашим связанным вопросом ( проблема Sparql в предложении BIND)

Была ошибка в EXISTS если оно использовалось в качестве дочернего элемента другого выражения, если вы можете строить из исходного кода самостоятельно, вы сможете проверить, решает ли это исправление эту проблему. Если вы все еще сталкиваетесь с проблемой, пожалуйста, отправьте новую ошибку в систему отслеживания проблем.

Другие вопросы по тегам