diff --git a/test/comunica/README.md b/test/comunica/README.md index 8efd2070..8575af2a 100644 --- a/test/comunica/README.md +++ b/test/comunica/README.md @@ -22,12 +22,16 @@ http://example.org/subject3 NamedNode http://example.org/predicate3 http://example.org/object3` -Без `FILTER(?o = )` выдавало ошибку: TypeError: Cannot read properties of undefined (reading 'value'), потому что: +Без `FILTER(?o = )` выдавало ошибку: TypeError: Cannot read properties of undefined (reading 'value'), потому что (ИИ): - В SPARQL-запросе вы ищете триплеты, где объект (?o) равен . Однако в коде вы пытаетесь вывести значение ?o с помощью binding.get('o').value, хотя ?o в данном случае является константой (не переменной) и не будет присутствовать в результирующих привязках (bindings). SPARQL-запрос возвращает только переменные, указанные в SELECT. В вашем случае это ?s и ?p, так как ?o заменён на конкретное значение . - Когда вы вызываете binding.get('o'), вы пытаетесь получить значение переменной ?o, которой нет в результатах, потому что она была заменена на константу. Это приводит к ошибке, так как binding.get('o') возвращает undefined, и попытка обратиться к свойству value у undefined вызывает ошибку. - Если вы хотите вывести значение объекта, которое вы ищете (в данном случае ), вам нужно либо явно указать его в коде, либо изменить запрос, чтобы ?o оставался переменной. -Естественно выбор за вторым вариантом. +Второй вариант - как раз FILTER. +Третий вариант, см. `sparql-file_local1.mjs`\ +В исходном примере comunica добавляет вниз запроса `?s ?p ?o` видимо чтобы как раз и дать значение перемененой: + `?s ?p .`\ + `?s ?p ?o` #### 2) JS query-sparql-file (SPARQL endpoint) https://www.npmjs.com/package/@comunica/query-sparql-file (Usage within application) Не заработал, см. исходный файл `/sparql_file/sparql-file1_no.js`\