我正在寻找一种使用RDF建模集合关系中一个对ORed(所有)成员以及一个集合中一个AND对(所有)成员的方法。
当前的任务是如何(使用RDF语句三倍)表示一种治疗方案,例如以下方案。
“ Regimen_A”方案由药物(DB14502或DB09449)和DB11094组成
答案 0 :(得分:0)
您可以通过为OR
引入自己的词汇概念来表达它。
:regimenA :consistsOf [ a :Or;
:option :DB14502;
:option :DB09449 ],
:DB11094.
对于AND
,您不需要任何特殊词汇。在您的情况下,也许最好是在引入的词汇中捕获域语义,而不是通用的“逻辑或”:
:regimenA :consistsOf [ a :DrugAlternative;
:option :DB14502;
:option :DB09449 ],
:DB11094.
您也可以使用rdf:Alt
容器将标准RDF词汇用于此类操作。从语义上讲,它与逻辑或不是完全相同的,但对于大多数意图和目的而言,它是接近的:
:regimenA :consistsOf [ a rdf:Alt;
rdfs:member :DB14502;
rdfs:member :DB09449 ],
:DB11094.
RDF还具有用于表达列表的标准词汇表RDF Collection词汇表。您可以按以下方式使用它:
:regimenA :consistsOf (:DB14502 :DB09449), :DB11094;
这里的潜在缺点是这种建模方式使列表中的项目是替代品隐含的事实。
当然,如果您希望将其应用于其中任何一项,则必须超越RDF,使用诸如SPIN / SHACL之类的规则语言,或者使用诸如OWL之类的更具表现力的本体语言。但是,如果您的目标是要有一种表达方式,以便以后可以通过例如SPARQL,那么上述解决方案就可以了。
答案 1 :(得分:0)
发布的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.
将此乌龟格式的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>