主题和对象不是同一类的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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...