我有这样的三元组,其中对象是 CURIe 的
anyURI
类型的字符串表示形式。我想用对象作为真正的 CURIe 或 IRI 来构造三元组。
@prefix source: <https://example.org/source> .
@prefix external: <https://example.org/external> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
source:sample1 source:external_identifiers "external:0110680"^^xsd:anyURI .
IRI(?o)
不返回任何内容。IRI(str(?o))
返回<external:0110680>
<https://example.org/external/0110680>
tarql:expandPrefixedName
,但是当我尝试这样做时(使用前缀或直接使用expandPrefixedName
),我在arq
或GraphDB中收到以下错误消息。我认为这是因为这些工具中不提供 tarql
功能?格式错误的查询:第 12 行第 28 列出现词法错误。遇到:'40' (40),在前缀“expandPrefixedName”之后
我更喜欢在 SPARQL 中执行此操作,但也会尝试使用 rdflib 之类的 Python 解决方案。
要将其转换为 IRI,您可以使用:
BIND( IRI(REPLACE(STR(?o), "external:", STR(external:))) AS ?o_iri ) .
REPLACE()
将 "external:"
中的字符串 STR(?o)
(即前缀标签)替换为 STR(external:)
STR(?o)
将 ?o
("external:0110680"^^xsd:anyURI
) 转换为字符串 ("external:0110680"
)STR(external:)
采用前缀 IRI (<https://example.org/external>
) 并将其转换为字符串 ("https://example.org/external"
)IRI()
将替换的字符串转换为 IRI