让我们考虑这个简单的本体论Events
。
< Event, rdf:type, owl:Thing >
< Event, follow, Event >
< Event, precede, Event >
< Event, hasRank, integer^^sxd:integer >
如果 r2 = r1 + 1,则等级为 r1precede
的事件 e1 等级为 r2 的事件 e2。我们也称 e2 follow
e1。
RDFS
属性的语义follow
和precede
使用以下 SPARQL 查询在三元组存储中实现
CONSTRUCT {
<?e1, precede, ?e2> .
<?e2, follow, ?e1> .
}
WHERE {
<?e1, hasRank, ?r1> .
<?e2, hasRank, ?r2> .
FILTER (?r2 = ?r1+1)
}
现在考虑我们要添加 的概念Pattern
。模式可以是项集(即事件集)或序列(有序事件集)
an itemset is a set of events
P = {e1,...,eN}
a sequence is an itemset with a constraint in order
P = {e1, ..., eN} + \forall e_i, e_{i+1} < e_i, precede, e_i+1 > and < e_{i+1}, follow , e_i >
< Pattern, rdf:type, owl:Thing >
< Itemset, rdfs:subClassOf, Pattern >
< Sequence, rdfs:subClassOf, Pattern >
< Pattern, contains, Event >
如何表示序列中顺序约束的语义,以清楚地区分它与中的项集RDFS
?