Предикат, используемый в rdfs
для отношений подкласса / суперкласса состояния, равен rdfs:subClassOf
.Имея это в виду, вам просто нужно написать тройные шаблоны в запросе SPARQL, которые связывают этот предикат и тему или объект, которому вы хотите соответствовать --- AcousticWave
в вашем случае.
Я надеюсь, что следующеезапросы не требуют пояснений.
для суперклассов ...
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ns: <http://www.domain.com/your/namespace/>
SELECT ?superClass WHERE { ns:AcousticWave rdfs:subClassOf ?superClass . }
И для подклассов ...
SELECT ?subClass WHERE { ?subClass rdfs:subClassOf ns:Wave . }
Если вы хотите получить меткидля каждого подкласса ns:Wave
вы должны сделать что-то вроде ...
SELECT ?subClass ?label WHERE {
?subClass rdfs:subClassOf ns:Wave .
?subClass rdfs:label ?label .
}
Если вам нужно транзитивное замыкание подклассов / суперклассов, тогда у вас есть два варианта:
- Итеративно повторяйте эти запросы до тех пор, пока не соберете замыкание.
- Передайте данные RDF через рассуждение RDF / RDFS, чтобы переадресовать цепочки всех соединений и утвердить их в базе данных RDF.