Иерархия классов 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 вы можете найти некоторые из этих вопросов и ответов полезными: