Иерархия классов Notation3

У меня есть простая нотация notation3

@prefix my: <http://www.codeproject.com/KB/recipes/n3_notation#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .



    my:spec a rdfs:Class.
    my:security a rdfs:Class; rdfs:subClassOf my:spec .

    my:bluetooth a my:security;
    my:preferedby my:BusinessPerson;
    my:name "bluetooth".

я пытаюсь определить класс specи определить security класс как подкласс spec,

это мой запрос sparql, который я использую с помощью библиотеки dotNetRdf

PREFIX my: <http://www.codeproject.com/KB/recipes/n3_notation#>
SELECT ?name
WHERE {
    [ a my:spec;
        my:preferedby my:BusinessPerson;
        my:name ?name].
}";

в соответствии с иерархией классов этот запрос должен возвращать "Bluetooth" в качестве ответа, так как security это подкласс spec (по моим сведениям) . но пока никакого результата. Может ли кто-нибудь помочь мне с этим, когда я сделал свою ошибку? заранее спасибо

1 ответ

Я пытаюсь определить класс спецификации и определить класс безопасности как подкласс спецификации.

Я думаю, что вы сделали эту часть правильно.

в соответствии с иерархией классов этот запрос должен возвращать "блютус" в качестве ответа, поскольку безопасность является подклассом спецификации (насколько мне известно) .

Чтобы сделать вывод о том, что экземпляр, для которого утверждается, что он имеет тип безопасности, также является экземпляром типа spec, вам нужно как минимум вывод RDFS. SPARQL не предоставляет этого напрямую, хотя многие конечные точки и тройные хранилища могут иметь некоторую поддержку. Однако некоторые базовые формы вывода могут быть закодированы с помощью SPARQL, и вы можете заставить свой запрос работать в этом случае. Вам просто нужно настроить свой запрос (и добавить префикс rdfs:) к этому:

SELECT ?name WHERE {
    [ a rdfs:subClassOf*/my:spec;
        my:preferedby my:BusinessPerson;
        my:name ?name].
}

Это буквально говорит о том, что вы хотите найти экземпляр класса C, в котором C связан цепочкой ссылок rdfs:subClassOf нулевой или более длины с my: spec. В данном случае это означает все, что является безопасностью или спецификацией.

Для получения дополнительной информации о выводе RDFS и OWL в SPARQL вы можете найти некоторые из этих вопросов и ответов полезными:

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