我想在基于sparql的Lahman棒球数据库中对两个数据集进行选择查询和连接

我想在基于sparql的Lahman棒球数据库中对两个数据集进行选择查询和连接,sparql,jena,Sparql,Jena,我想写一个查询,看起来像这样 PREFIX ma: <http://mydataset.com/ns/master#> PREFIX ap: <http://mydataset.com/ns/appearances#> SELECT DISTINCT ?masterID ?nameFirst ?nameLast WHERE { ap:LAN ap:masterID ?masterID . ?masterID ma:nameLast ?nameLast . ?

我想写一个查询,看起来像这样

PREFIX ma: <http://mydataset.com/ns/master#>
PREFIX ap: <http://mydataset.com/ns/appearances#> 
SELECT DISTINCT ?masterID ?nameFirst ?nameLast
WHERE
{
  ap:LAN ap:masterID ?masterID .
  ?masterID ma:nameLast ?nameLast .
  ?masterID ma:nameFirst ?nameFirst .
}
ORDER BY ?nameLast ?nameFirst

在第一组数据中,我构建了它,因此它是按团队ID分组的,然后是与该团队关联的球员的ID。然后,我创建了另一组数据,以便它是与他们的名字和姓氏相关联的玩家的id。我想查询与团队LAN关联的所有玩家的名字和姓氏。我觉得我离他们很近了,我真的不太明白如何加入他们,因为现在我什么都没有得到。我上面的数据应该只返回两个玩家Don Aase和Tony Abreu。

感谢AKSW的解决方案是更改我的数据,使其不使用字符串文字,而是像这样使用URI。。。ap:LAN ap:masterID ma:aasedo01

No,在第一组数据中分别为。三元组使用字符串文字,第二个使用URI。例如,ap:LAN ap:masterID aasedo01-这里的对象只是字符串aasedo01。文字没有标识,也与URI ma:aasedo01没有任何共同之处。您还必须在第一个三元组中使用URI,即ap:LAN ap:masterID ma:aasedo01来拥有一些连接的三元组。这是一个很好的捕获。老实说,我只是在网上跟着例子,甚至不知道你可以有三重的第三部分是一个URI,所以这是伟大的,它的工作!现在我可以继续我的其他问题了。谢谢你的帮助!
ap:LAN ap:masterID "aasedo01" .
ap:LAN ap:masterID "abreuto01" .
ap:ALT ap:masterID "berrych01" .
ap:ALT ap:masterID "brownji01" .
ap:ALT ap:masterID "carropa01" .
ap:ALT ap:masterID "connojo01" .
ap:ALT ap:masterID "crosscl01" .
...

ma:aasedo01 ma:nameFirst "Don" .
ma:aasedo01 ma:nameLast "Aase" .
ma:abadan01 ma:nameFirst "Andy" .
ma:abadan01 ma:nameLast "Abad" .
ma:abadfe01 ma:nameFirst "Fernando" .
ma:abadfe01 ma:nameLast "Abad" .
ma:abadijo01 ma:nameFirst "John" .
ma:abadijo01 ma:nameLast "Abadie" .
ma:abreuto01 ma:nameFirst "Tony" .
ma:abreuto01 ma:nameLast "Abreu" .
...