如何在Notation3规则中针对特定语言标签定义规则?
问题
我有使用Turtle/Notation3语法编写的本地化事实,示例如下:
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix ex: <http://www.example.org/#>. ex:A rdfs:label "example"@en; rdfs:label "beispiel"@de.
想针对特定语言标签定义规则,尝试编写了如下规则但不知道如何筛选en语言标签:
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix ex: <http://www.example.org/#>. { ?s rdfs:label ?v@en. # 需要筛选'en'语言标签的机制 } => { ?s a ex:EnglishLabeledThing. }.
试过多种语法变体,包括访问langString相关属性都没成功,使用的是EYE v2.3.0,求解决方案。
解决方案
EYE(Notation3推理引擎)支持通过内置的lang()函数来筛选带语言标签的字符串,你可以修改规则如下:
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix ex: <http://www.example.org/#>. @prefix log: <http://www.w3.org/2000/10/swap/log#>. { ?s rdfs:label ?v. log:lang(?v) "en". } => { ?s a ex:EnglishLabeledThing. }.
说明
log:lang(?v)是EYE提供的内置函数,用于获取字符串?v的语言标签- 配合条件
log:lang(?v) "en",就能精准筛选出带en语言标签的rdfs:label值 - 执行该规则后,带英文标签的资源(比如示例中的
ex:A)会被推断为ex:EnglishLabeledThing类型
内容的提问来源于stack exchange,提问作者florian k
相关产品推荐
相关产品推荐

