Sparql-запрос между онтологиями
Я загружаю Йену двумя онтологиями. У них обоих определен класс Person. У них обоих есть личность по имени Джон. Они не "тот же" Джон; другой человек, другой префикс, другой IRI. Без изменения исходных онтологий существует ли система (скажем, добавление тройки в магазин), чтобы они могли быть эквивалентными. Rdfs:subClassOf встроенный?
1 ответ
Как указано в комментариях, одним из решений является определение ресурсов как эквивалентных с помощью owl: sameAs и запуск рассуждения. Это определит правильное объединение свойств для каждого, означая, что каждый ресурс будет иметь одинаковые свойства и значения.
Если запуск аргумента не то, что вам нужно, вы можете запустить эквивалентный SPARQL для вставки данных:
CONSTRUCT {
<person1> ?p2 ?o2
<person2> ?p1 ?o1 .
}
WHERE {
<person1> ?p1 ?o1 .
<person2> ?p2 ?o2 .
}
Это возвращает набор построенных троек, то есть тех, которые еще не существуют, и, следовательно, дает вам то же объединение, что и рассуждатель OWL.
Если вам нужно сделать это только при загрузке данных, просто вставьте эти данные, используя тот же шаблон запроса:
INSERT {
GRAPH <graph-uri> {
<person1> ?p2 ?o2
<person2> ?p1 ?o1 .
}
}
WHERE {
<person1> ?p1 ?o1 .
<person2> ?p2 ?o2 .
}