Я создал несколько примеров онтологий в протеже. Согласно моей онтологии, есть класс с именем person, у которого есть подкласс под названием Student. Есть несколько учеников (john, paul, marry ...) Я определил некоторое свойство данных, называемое «электронная почта», и назначил им адреса электронной почты.
После запроса, который приводит всех людей в онтологию. Но я хочу получить каждого человека и его адрес электронной почты.
String queryStr = "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+ "select ?ind "+ "where { "+ "?ind rdf:type <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#Student> ;"+ "}\n ";
Вышеупомянутый запрос был протестирован на jena в IDE затмения.
любая идея ..?
Спасибо заранее!
Чтобы получить адреса электронной почты, вам необходимо: 1) добавить для них переменную в строку SELECT и 2) связать эту переменную в шаблоне WHERE. И вы, вероятно, захотите добавить префикс для своей собственной онтологии, поскольку теперь вам нужно будет ссылаться на него дважды. Что-то вроде:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#> SELECT ?ind ?email WHERE { ?ind rdf:type my:Student . ?ind my:Email ?email }
Более компактный способ будет следующим:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#> SELECT ?ind ?email WHERE { ?ind rdf:type my:Student ; my:Email ?email . }