RDFS аналог совы: equalClass?

У меня есть тройки, которые говорят, что пациент P участвует в медицинской встрече с E, которая выдала рецепт на лекарство M. По рецепту может быть mention препарат из Онтологии лекарств или DrOn.

В этом случае предположим, что M1 упоминает о препарате для снижения уровня холестерина аторвастатин, который был импортирован в DrOn из ChEBI как http://purl.obolibrary.org/obo/CHEBI_39548:

prefix obo: <http://purl.obolibrary.org/obo/> :M1 obo:IAO_0000142 obo:CHEBI_39548 .

У ChEBI есть аксиома, что obo: CHEBI_39548 играет роль http://purl.obolibrary.org/obo/CHEBI_35821, «антихолестеринемический препарат». Это упрощает поиск пациентов, которым прописали аторвастатин или другие препараты с той же ролью.

К сожалению, DrOn создал собственные термины для некоторых лекарств вместо того, чтобы импортировать их из ChEBI. Например, другой препарат, снижающий уровень холестерина, розувастатин, моделируется как http://purl.obolibrary.org/obo/DRON_00018679 вместо http://purl.obolibrary.org/obo/CHEBI_38545. Термин ChEBI для розувастатина также аннотируется ролью obo: CHEBI_39548, но obo: DRON_00018679 - нет. Таким образом, пациенты из моего набора данных, которым прописали розувастатин, не отображаются в моем существующем ролевом запросе.

У меня есть эти данные в репозитории GraphDB RDFS-plus, и я бы предпочел не менять уровень рассуждений прямо сейчас. Если бы это был репозиторий OWL, я бы просто сказал

obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

Могу ли я сделать что-то подобное с RDFS или настраиваемым набором правил GraphDB?

Вам нужен только obo:CHEBI_38545 rdfs:subClassOf obo:DRON_00018679 . obo:DRON_00018679 rdfs:subClassOf obo:CHEBI_38545? Кроме того, не входит ли owl:equivalentClass в RDFS +?

Stanislav Kralin 12.04.2018 17:43

@StanislavKralin Спасибо, я думаю, ответный rdfs:subClassOf подойдет, даже если выглядит немного забавно. Извините, я еще не пробовал утверждать owl:equivalentClass. Я сделаю это сейчас с небольшим набором данных для тщательности.

Mark Miller 12.04.2018 17:55

Учитывая, что owl:equivalentClass - это просто синтаксический сахар, единственный ответ, как сказал Станислав, - rdfs:subClassOf в обоих направлениях.

UninformedUser 12.04.2018 18:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
109
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

If it was an OWL repository, I would just say

obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

Is there something similar I can do with RDFS, or a GraphDB custom ruleset?

Первый

Очевидно, вы можете заменить owl:equivalentClass двумя противоположными rdfs:subClassOf. Что касается самой эквивалентности этих формулировок, я полагаю, это уместно:

Второй

owl:equivalentClass уже находится в RDFS-Plus.

Из главы 7 1-го издания Семантическая сеть для рабочего онтолога, где впервые был представлен RDFS-Plus:

RDFS-Plus provides a more intuitive expression of class equivalence, using the construct owl:equivalentClass.

В GraphDB наборы правил RDFS-Plus и RDFS-Plus (оптимизированный) поддерживают owl:equivalentClass. В файле builtin_rdfsPlus-optimized.pie действует следующее правило:

Id: owl_EquivClassBySubClass

  a <rdfs:subClassOf> b [Constraint b != a]
  b <rdfs:subClassOf> a [Cut]
------------------------------------
  a <owl:equivalentClass> b

и следующие аксиомы:

<owl:equivalentClass> <rdf:type> <owl:TransitiveProperty>
<owl:equivalentClass> <rdf:type> <owl:SymmetricProperty>
<owl:equivalentClass> <rdfs:subPropertyOf> <rdfs:subClassOf>

В более высоких профилях вместо этого используются два правила:

Id: scm_eqc1
  c1 <owl:equivalentClass> c2            [Constraint c1 != c2 ]
  -------------------------------
  c1 <rdfs:subClassOf> c2
  c2 <rdfs:subClassOf> c1

Id: scm_eqc2
  c1 <rdfs:subClassOf> c2                [Constraint c1 != c2 ]
  c2 <rdfs:subClassOf> c1                
  -------------------------------
  c1 <owl:equivalentClass> c2

Когда я использую обратную оценку rdfs:subClassOf @ StanislavKralin в репозитории RDFS + GraphDB ...

  • вставка нескольких троек о классах :x и :y, с экземпляром :z класса :x
  • утверждение, что :x и :y являются подклассами друг друга

PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix : <http://localhost/> insert data { :x a owl:Class . :y a owl:Class . :z a :x . :x rdfs:subClassOf :y . :y rdfs:subClassOf :x . }

Затем запросите все тройки о :x, :y и :z.

select * where { ?s ?p ?o . filter(regex(str(?s), "localhost")) } order by ?s ?p ?o

Я получаю owl:equivalentClass бесплатно!

+----+---------------------+-----------+ | s | p | o | +----+---------------------+-----------+ | :x | rdf:type | owl:Class | | :x | rdfs:subClassOf | :x | | :x | rdfs:subClassOf | :y | | :x | owl:equivalentClass | :x | | :x | owl:equivalentClass | :y | | :y | rdf:type | owl:Class | | :y | rdfs:subClassOf | :x | | :y | rdfs:subClassOf | :y | | :y | owl:equivalentClass | :x | | :y | owl:equivalentClass | :y | | :z | rdf:type | :x | | :z | rdf:type | :y | +----+---------------------+-----------+

Другие вопросы по теме