我是语义Web编程的新手,我正在尝试对SPARQL查询做一些事情,但我不确定是否完全可能。但是,我认为在尝试其他方法之前,我会先问问大师。

我有一个SPARQL查询,它返回URI资源作为列之一。下面的例子:

http://purl.uniprot.org/uniprot/Q9UKM9


我想使用该URL的最后一部分(Q9UKM9),并将其放入变量中,以便在regex命令中使用,以在另一资源中找到相同的蛋白质(由我提取的数字标识)。

我不能像这样直接查询:

?random_resource_one X:propertyOne ?what_I_am_interested_in .
?random_resource_two Y:hasURI ?what_I_am_interested_in .


因为资源URI不同:

http://purl.uniprot.org/interpro/IPR000504




http://purl.org/obo/owl/InterPro#InterPro_IPR000504


我完全愿意接受想法!谢谢!

最佳答案

您可以为此使用SPARQL的STRAFTER函数:

 STRAFTER("http:xx//purl.uniprot.org/uniprot/Q9UKM9", "http:xx//purl.uniprot.org/uniprot/")


将返回“ Q9UKM9”。

作为进一步的技巧,您可以重用名称空间前缀作为速记。因此,假设您的查询中包含以下内容:

PREFIX uniprot: <http:xx//purl.uniprot.org/uniprot/>


你可以这样做:

 STRAFTER("http:xx//purl.uniprot.org/uniprot/Q9UKM9", str(uniprot:))

09-26 16:57