Вы можете выразить это, введя свою собственную концепцию словаря для 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, тогда вышеприведенные решения подойдут.