我想构建一组实例的知识图,其中每个实例本身就是有序子实例的集合。举个简单的例子,假设我的实例是弹珠链,{CHAIN1, CHAIN2, CHAIN3, ...}
子实例是彩色弹珠{CHAIN1: YELLOW-RED-BLUE-RED; CHAIN2: BLUE-YELLOW-GREEN; CHAIN3: GREEN-RED-BLUE-RED}
。
澄清一下,不正确的方法会定义 CHAIN1 如下所示:
:CHAIN1 :has_marble :YELLOW, :RED, :BLUE, :RED
但查询这个显然只会产生“一袋弹珠”的情况。
我希望能够:
- 查询知识图,以便我可以按正确顺序取回每个链的弹珠。
- 匹配不同链之间的弹珠序列。例如,我可能想获取所有将序列
:RED-:BLUE-:RED
作为子序列的链(即CHAIN1
和CHAIN3
)。
问题:
- 构建此知识图谱的最佳方式是什么?我应该使用 rdf:first/rdf:rest 将弹珠存储为 RDF 序列吗?还是有更好、更灵活的选择?如果可能的话,我希望能够定义弹珠之间的关系类型,比如说
:RED :is_followed_by :BLUE
。 - 我追求的图形匹配类型是否可能?如果我想使用一些描述每个弹珠的属性来匹配序列呢?说,
:BLUE :has_shape :SQUARE
, 并按形状匹配弹珠的顺序?
注意:我真正想要建模的是 DNA 和蛋白质序列链,所以如果有人对此类应用有具体建议,那将更有帮助。