Используя RDF, запросите предложения о том, как смоделировать один для ORed (все) члены набора и один для ANDed (все) члены набора - PullRequest
0 голосов
/ 29 мая 2019

Я ищу способ моделировать с использованием RDF членов типа «один к ORed» (все) отношения набора, а также членов набора «один к ANDed» (все).

Задача состоит в том, как изобразить (используя тройки операторов RDF) схему лечения, такую ​​как приведенную ниже.

Схема «Схема_А» состоит из препарата (DB14502 ИЛИ DB09449) И DB11094

Используя RDF / XML, я застрял при представлении комбинации лекарств (схемы), состоящей из одного (альтернативного) препарата из списка А плюс все (не обязательные) препараты из списка Б.

a) Схема приема лекарств может иметь ноль, один или несколько альтернативных списков, а также ноль, один или несколько списков необязательных лекарств.
б) Я также хотел бы представить каждый препарат в качестве ресурса, имеющего URIref. c) Лекарства в этих списках (список ORed и список ANDed) могут быть из разных баз данных, таких как банк лекарств, ChEBI или WHOCC. Например, URIref для препарата банка наркотиков DB14502 будет «https://www.drugbank.ca/drugs/DB14502". URI для препарата ChEBI будет» http://purl.obolibrary.org/obo/CHEBI_17012" В дополнение к URIref существует требование как-то явно предоставить указание на исходную базу данных препарата.

Я читал учебник по RDF https://www.w3.org/TR/rdf-primer/ с целью кодирования в RDF / XML нижеприведенного решения, а также расширения его для удовлетворения вышеуказанных требований, но я не достиг большого прогресса в этой области.

Ниже приведены данные RDF (предоставленные Jeen Broekstra в качестве ответа на мой оригинальный вопрос), которые я хотел бы преобразовать в RDF / XML

:regimenA :consistsOf [ a :DrugAlternative; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Опубликованное решение RDF в формате Turtle (предоставленное Jeen Broekstra в качестве ответа на мой первоначальный вопрос) плюс его префиксы будут

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://someplace.org/stuff/1.0/> .
:regimenA :consistsOf [ a :DrugAlternative; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

Передача данных RDF в формате черепахи в конвертер RDF / Turtle в RDF / XML, например "http://www.easyrdf.org/converter", дает

<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ns0="http://someplace.org/stuff/1.0/">

  <rdf:Description rdf:about="http://someplace.org/stuff/1.0/regimenA">
    <ns0:consistsOf>
      <ns0:DrugAlternative>
        <ns0:option rdf:resource="http://someplace.org/stuff/1.0/DB14502"/>
        <ns0:option rdf:resource="http://someplace.org/stuff/1.0/DB09449"/>
      </ns0:DrugAlternative>
    </ns0:consistsOf>

    <ns0:consistsOf rdf:resource="http://someplace.org/stuff/1.0/DB11094"/>
  </rdf:Description>

</rdf:RDF>
0 голосов
/ 30 мая 2019

Вы можете выразить это, введя свою собственную концепцию словаря для OR.

:regimenA :consistsOf [ a :Or; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

Для AND вам не нужен какой-либо специальный словарь.Возможно, в вашем случае лучше, чем общее «логическое ИЛИ», захватить семантику вашего домена в словаре, который вы вводите:

:regimenA :consistsOf [ a :DrugAlternative; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

Вы также можете использовать стандартный словарь RDF для такого рода вещей,используя контейнер rdf:Alt.Семантически это не совсем то же самое, что логическое ИЛИ, но для большинства намерений и целей оно близко:

:regimenA :consistsOf [ a rdf:Alt; 
                        rdfs:member :DB14502;
                        rdfs:member :DB09449 ],
                      :DB11094. 

RDF также имеет стандартный словарь для выражения списка, Коллекция RDF словарный запас.Вы можете использовать это следующим образом:

:regimenA :consistsOf (:DB14502 :DB09449), :DB11094;

Потенциальным недостатком здесь является то, что этот способ моделирования оставляет тот факт, что элементы в списке являются альтернативами неявными.

Конечно, если вы хотите, чтобы entail применялось ко всему этому, вам придется выйти за рамки RDF и использовать либо язык правил, такой как SPIN / SHACL, либо более выразительный язык онтологий, такой как OWL.Однако, если ваша цель состоит в том, чтобы иметь способ выразить это так, чтобы вы могли запросить его позже, например, через SPARQL, тогда вышеприведенные решения подойдут.

...