Nik*_*pal 4 semantic-web sparql
我是语义网络编程的新手,我正在尝试使用 SPARQL 查询做一些事情,但我不完全确定是否可行。然而,我想在尝试另一种方法之前我应该询问专家。
我有一个 SPARQL 查询,它返回 URI 资源作为列之一。下面的例子:
http://purl.uniprot.org/uniprot/Q9UKM9
Run Code Online (Sandbox Code Playgroud)
我想获取该 URL 的最后一部分 ( Q9UKM9) 并将其放入一个变量中,以便在正则表达式命令中使用,以在另一个资源中查找相同的蛋白质(由我提取的数字标识)。
我不能直接进行如下查询:
?random_resource_one X:propertyOne ?what_I_am_interested_in .
?random_resource_two Y:hasURI ?what_I_am_interested_in .
Run Code Online (Sandbox Code Playgroud)
因为资源 URI 不同:
http://purl.uniprot.org/interpro/IPR000504
Run Code Online (Sandbox Code Playgroud)
与
http://purl.org/obo/owl/InterPro#InterPro_IPR000504
Run Code Online (Sandbox Code Playgroud)
我完全愿意接受想法!谢谢!
您可以使用 SPARQL 的STRAFTER函数来实现此目的:
STRAFTER("http:xx//purl.uniprot.org/uniprot/Q9UKM9", "http:xx//purl.uniprot.org/uniprot/")
Run Code Online (Sandbox Code Playgroud)
将返回“Q9UKM9”。
作为进一步的提示,您可以重复使用名称空间前缀作为简写。因此,假设您的查询中有以下内容:
PREFIX uniprot: <http:xx//purl.uniprot.org/uniprot/>
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
STRAFTER("http:xx//purl.uniprot.org/uniprot/Q9UKM9", str(uniprot:))
Run Code Online (Sandbox Code Playgroud)