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 .
}
Другие вопросы по тегам