Джена Влияние различных трехвлеченных режимов
Вопрос
Я пытаюсь Sparql и использование влечения.
Как пример я использовал http://www.w3.org/tr/2010/wd-sparql11-entailment-20100126/#T112.
Я пытаюсь положить их в Йену.
OntClass book1= model.createClass(NS+"book1");
OntClass book2=model.createClass(NS+"book2");
OntClass book3=model.createClass(NS+"book3");
OntClass publication=model.createClass(NS+"publication");
OntClass article=model.createClass(NS+"article");
OntClass mit=model.createClass(NS+"MIT");
ObjectProperty a = model.createObjectProperty(NS+"a");
ObjectProperty publishes = model.createObjectProperty(NS+"publishes");
book1.addProperty(a, publication);
book2.addProperty(a, article);
publication.addSubClass(article);
publishes.addRange(publication);
mit.addProperty(publishes, book3);
Где модель типа ontmodel.
и я использовал запрос, похожий на проблему
"PREFIX table: "I have correct namespace here"+
"SELECT *"+
"WHERE"+
"{"+
" ?x ?y table:publication ."+
"}";
Модель была создана так. Надежда Ontmodelspec в порядке.
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RDFS_INF, null);
Я получаю как результаты по запросу
x y
| http://www.example.com/ontologies/sample.owl#publishes | rdfs:range |
| http://www.example.com/ontologies/sample.owl#article | rdfs:subClassOf |
| http://www.example.com/ontologies/sample.owl#book1 | http://www.example.com/ontologies/sample.owl#a |
| http://www.example.com/ontologies/sample.owl#publication | rdfs:subClassOf |
| http://www.example.com/ontologies/sample.owl#book3 | rdf:type |
Кто-нибудь может дать мне пример, с и без влечения и без него, поэтому не могу попробовать код, может получить правильные результаты.
Решение
Ваша онтология выглядит немного рыбной.
book1
, book2
, book3
а также mit
не являются классами, они люди. Вы должны использовать model.createIndividual(NS + "bookX", publication)
для книг и создать класс для «организации» или похоже, а затем создать mit
как человек этого класса. Обратите внимание, что createIndividual
Уже заботится о присвоении типово к человеку, поэтому вам не нужно беспокоить с вашимa
" имущество. Вы должны сначала исправить эти вещи, а затем попробуйте снова и обновить свой вопрос.
О влечения: посмотрите на последнюю строку вашего результата запроса. Ты где угодно не сказал book3
это книга, но в любом случае заявление. Это потому, что оно было повлечено за собой другие заявления, и поэтому двигатель вывода RDFS делает заявление, видимое, когда вы запрашиваете модель. Заявление влечет за собой из-за диапазона на publishes
: Все, что публикуется, повлечено за собой тип publication
.