使用 RDF,请求关于如何对一个集合的 OR 运算(所有)成员和一个集合的 AND 运算(所有)成员建模的建议

Using RDF, request for suggestions on how to model one to ORed (all) members of a set and one to ANDed (all) members of a set

我正在寻找一种使用 RDF 对集合关系的一对或(所有)成员以及集合的一对(所有)成员进行建模的方法。

手头的任务是如何表示(使用 RDF 语句三元组)如下所示的治疗方案。

方案 "Regimen_A" 包含药物(DB14502 或 DB09449)和 DB11094

使用 RDF/XML,我现在只能介绍由列表 A 中的一种(替代)药物和列表 B 中的所有(非可选)药物组成的药物组合(方案)。

a) 一个药物方案可能有零个、一个或多个备选药物清单,也可能有零个、一个或多个非备选药物清单。
b) 我还想将每种药物呈现为具有 URIref 的资源。 c) 这些列表(ORed 列表和 ANDed 列表)中的药物可以来自不同的数据库,例如 drugbank、ChEBI 或 WHOCC。 例如,drugbank 药物 DB14502 的 URIref 将是“https://www.drugbank.ca/drugs/DB14502". The URI for ChEBI drug would be "http://purl.obolibrary.org/obo/CHEBI_17012” 除了 URIref 之外,还需要以某种方式明确提供药物来源数据库的指示。

我一直在阅读 RDF primer https://www.w3.org/TR/rdf-primer/,目的是编码成 RDF/XML 下面的解决方案,并扩展它以满足上述要求,但我在这方面没有取得太大进展面积

下面是 RDF 数据(由 Jeen Broekstra 提供,作为对我原始问题的回答)我想转换为 RDF/XML

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

你可以通过引入自己的词汇概念来表达OR

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

对于AND,您不需要任何特殊词汇。在您的情况下,也许比通用 "logical OR" 更好的是在您介绍的词汇表中捕获您的领域语义:

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

您也可以使用标准的 RDF 词汇表,使用 rdf:Alt 容器。它在语义上 完全 与逻辑 OR 相同,但对于大多数意图和目的而言,它接近于:

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

RDF 也有用于表达列表的标准词汇表,RDF Collection 词汇表。您可以按如下方式使用它:

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

这里的潜在缺点是这种建模方式留下了列表中的项目是备选方案隐含的事实。

当然,如果您希望蕴涵适用于其中任何一个,您将不得不超越 RDF,并使用像 SPIN/SHACL 这样的规则语言,或者使用更具表现力的 ontology 语言,比如 OWL。但是,如果您的目标是有一种表达方式,以便您稍后可以通过例如查询来查询它。 SPARQL,那么上面的解决方案都可以。

发布的 Turtle 格式的 RDF 解决方案(由 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. 

将此 turtle 格式的 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>