如何解决主题和对象不是同一类的SPARQL路径
对于此示例模式中的某些数据,我想找到所有可能的“行程谱系”。
例如:当前一个行程的乘客是下一个行程的驾驶员时,第2-4个行程就是沿袭。
在这个过于简化的示例中,您显然可以向一个人添加tp:drove
属性,以便我们可以使用SPARQL 1.1来执行类似?p1 tp:drove+/tp:person ?pn .
的操作。
不幸的是,在我的应用程序中这是不可能的。
这是本体:
tp:trip a owl:Class ;
rdfs:label "trip"@en ;
rdfs:comment "an 'asymmetric encounter' where someone is driving another person."@en .
tp:driver a owl:ObjectProperty ;
rdfs:label "driver"@en ;
rdfs:comment "has keys."@en ;
rdfs:domain tp:trip ;
rdfs:range tp:person .
tp:passenger a owl:ObjectProperty ;
rdfs:label "passenger"@en ;
rdfs:comment "has drinks."@en ;
rdfs:domain tp:trip ;
rdfs:range tp:person .
以下是数据:
<alice> a tp:person .
<grace> a tp:person .
<tim> a tp:person .
<ruth> a tp:person .
<trip1> a tp:trip ;
tp:participants <alice>,<grace> ;
tp:driver <alice> ;
tp:passenger <grace> .
<trip2> a tp:trip ;
tp:participants <alice>,<tim> ;
tp:driver <alice> ;
tp:passenger <tim> .
<trip3> a tp:trip ;
tp:participants <tim>,<grace> ;
tp:driver <tim> ;
tp:passenger <grace> .
<trip4> a tp:trip ;
tp:participants <grace>,<ruth> ;
tp:driver <grace> ;
tp:passenger <ruth> .
<trip5> a tp:trip ;
tp:participants <grace>,<tim> ;
tp:driver <grace> ;
tp:passenger <tim> .
我需要什么:
每个唯一的行程序列(不包括子序列或循环),其中前一个行程的乘客是下一个行程的驾驶员。
trip1
trip1,trip4
trip1,trip5
trip2,trip3,trip4
trip2,trip3,trip5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。