Проблема в том, что первый элемент prov:type
в do c имеет объявленный тип схемы:
<prov:type xsi:type="xsd:QName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">foaf:OnlineAccount</prov:type>
Когда есть типы схем для элементов (либо через явный атрибут xsi:type
, или когда схемы загружаются в базу данных схем), тогда код оценивает «осведомленные о схеме» и знает, к какому типу данных относятся элементы и атрибуты. Это может изменить поведение кода. В подобных случаях вы не обязательно получите ожидаемое приведение типа c, а вместо этого выдается ошибка, сообщающая, что вы не можете сравнить xs:QName
со строкой.
Если Вы хотите трактовать значение prov:type
как строку, а затем либо удалите @xsi:type
, либо измените предложение where
, чтобы явно оценить значение строки:
where $i//prov:type/string() = 'assetTypeDescription'