Как получить все ресурсы данного класса, связанные с заданным значением

Можно ли с помощью запроса SPARQL получить все ресурсы данного класса C в модели, связанной с данным литералом?

Например:

S1, p1, o1
S1, type, C
O1, p2, L1

S2, p3, o2
S2, type, C
O2, p4, o3
O3, p5, L1

Для буквального L1 я хочу получить S1 и S2.


person user3493042    schedule 20.06.2016    source источник
comment
Это S1,p1,o1 или S1,p1,O1? (относительно o2)   -  person Ivo Velitchkov    schedule 20.06.2016


Ответы (1)


Всегда проще, если вы предоставляете данные, которые мы действительно можем использовать. Например, вот ваши данные в Черепахе, причем таким образом, что мы можем запросить их. В будущем, пожалуйста, постарайтесь предоставить минимальный образец данных, которые мы можем использовать.

@prefix : <urn:ex:>

:s1 a :C ;
    :p1 :o1 .

:o1 :p2 "l1" .

:s2 a :C ;
    :p3 :o2 .

:o2 :p4 :o3 .

:o3 :p5 "l1" .

Вот запрос, который находит путь от субъекта ?s, который является экземпляром :C, к буквальному "l1". (:|!:)* — это путь к свойству с использованием «подстановочного знака». Поскольку мы определили префикс :, : — это IRI, а поскольку каждый IRI либо :, либо нет (!:), путь с нулевым или большим числом повторений :|!: — это путь от ?s до "l1". См. раздел запросы путей свойств SPARQL с произвольными свойствами, чтобы узнать больше о путях свойств с подстановочными знаками. .

prefix : <urn:ex:>

select ?s {
  ?s a :C ; (:|!:)* "l1"
}
-------
| s   |
=======
| :s2 |
| :s1 |
-------
person Joshua Taylor    schedule 20.06.2016
comment
Ооооо @Джошуа, спасибо тебе большое... Я этого не знал. Спасибо также за то, что нашли время, чтобы объяснить это :) - person user3493042; 21.06.2016