我是语义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:))