Отрицание SPARQL: Все foaf:Agents, которые не являются foaf:Persons

Клиентская Конфигурация

, Возможно, Ваш ServiceReferences.ClientConfig для Вашего клиента Silverlight указывает на неправильный URL?

кроме того, проверьте местоположение своего междоменного файла политики. Эта статья MSDN имеет больше информации.

Локально Рабочий Silverlight

Дополнительное примечание для выполнения Silverlight локально (Боковая панель Vista, например). Как сообщается в эта запись в блоге , "Silverlight не может использовать поставщика сетевых услуг при выполнении локально". обходное решение должно использовать JavaScript для взаимодействия через интерфейс к веб-сервису в этой ситуации.

11
задан Community 23 May 2017 в 12:32
поделиться

3 ответа

Причина, по которой это не работает, заключается в том, что у вас есть две отдельные привязки переменных (? X и ? Y ), которые не связаны в вашем запросе . Итак, ? X должен обязательно появиться в наборе результатов (что вам и нужно), но если ? Y не привязан, вы не узнали ничего нового о ? x .

Обновление: в идеальном запросе вообще не было бы необходимости в ? y ; вы можете напрямую тестировать входящие / исходящие edeg ? x . Это сложно (невозможно?) Сделать в SPARQL 1.0, если вы хотите проверить, не существует ли края для данной привязки переменной. Однако SPARQL 1.1 будет поддерживать отрицание:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 

SELECT ?agent
WHERE 
{
    ?agent rdf:type foaf:Agent .
    FILTER NOT EXISTS { ?agent rdf:type foaf:Person . }
}

@Kingsley Idehen '

11
ответ дан 3 December 2019 в 04:13
поделиться

Чтобы сделать это в SPARQL 1.0, вам нужно написать:

SELECT * WHERE { 
     ?x rdf:type foaf:Agent 
     OPTIONAL { ?y rdf:type foaf:Person . FILTER (?x = ?y) . } 
     FILTER ( !BOUND(?y) ) 
}

Как говорит Фил М. , SPARQL 1.1 представит новый синтаксис, чтобы упростить запись.

9
ответ дан 3 December 2019 в 04:13
поделиться

С помощью расширений Virtuoso SPARQL конечная точка для проверки http://lod.openlinksw.com/sparql (LOD Cloud Cache Instance)

SELECT distinct ?x ?o 
WHERE { 
?x a foaf:Agent .
?x ?p ?o.
filter (!bif:exists ((select (1) where { ?x a foaf:Person } ))) 
} 
limit 10
DESCRIBE ?x 
WHERE { 
?x a foaf:Agent .
filter (!bif:exists ((select (1) where { ?x a foaf:Person } ))) 
} 
limit 200 
2
ответ дан 3 December 2019 в 04:13
поделиться