将rdfs:range的xsd:string限制为[A-Z]

将rdfs:range的xsd:string限制为[A-Z],rdf,owl,rdfs,Rdf,Owl,Rdfs,如何将数据类型属性的范围指定为文本形式匹配[a-Z]的xsd:strings?至少乍一看,猫头鹰的限制对我来说不起作用。有没有办法用正则表达式实现这一点?如果有,在哪里?曼彻斯特语法中的以下表达式应该可以做到这一点: string[模式“A-Z”] 你可以直接把它作为Protege中的数据范围。我不确定是什么推理机实现了这个构造,但我以前从未使用过它 更多信息:我想你的意思是“单大写字母”,它是字符串[pattern”[A-Z]] 如果您使用的是Protege,请将其输入“数据范围表达式”选项卡

如何将数据类型属性的范围指定为文本形式匹配[a-Z]的xsd:strings?至少乍一看,猫头鹰的限制对我来说不起作用。有没有办法用正则表达式实现这一点?如果有,在哪里?

曼彻斯特语法中的以下表达式应该可以做到这一点:

string[模式“A-Z”]

你可以直接把它作为Protege中的数据范围。我不确定是什么推理机实现了这个构造,但我以前从未使用过它

更多信息:

我想你的意思是“单大写字母”,它是
字符串[pattern”[A-Z]]

如果您使用的是Protege,请将其输入“数据范围表达式”选项卡


HermiT 1.3.7可以检查这一点,并提供有关不一致属性值的解释。

其他答案解释说,可以使用XSD方面将属性的字符串范围限制为与模式匹配的字符串范围
[A-Z]
,但没有显示结果RDF。我在Protégé中创建了一个非常简单的本体,并定义了一个数据属性
hasLatinInitial
。如其他答案所述,范围被指定为
string[pattern”[A-Z]]
。然后我创建了一个单独的
JohnDoe
,并添加了

JohnDoe hasLatinInitial "J" .
JohnDoe hasLatinInitial "D" .
HermiT 1.3.7确实运行了,并且没有报告不一致。然后我添加了断言

JohnDoe hasLatinInitial "3" .
HermiT 1.3.7报告了不一致性:

以下是N3和RDF/XML中生成的本体的外观:

@prefix :        <http://www.example.com/example#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix example:  <http://www.example.com/example#> .

<http://www.example.com/example>
      a       owl:Ontology .

example:hasLatinInitial
      a       owl:DatatypeProperty ;
      rdfs:range
              [ a       rdfs:Datatype ;
                owl:onDatatype xsd:string ;
                owl:withRestrictions
                        ([ xsd:pattern "[A-Z]"
                          ])
              ] .

example:JohnDoe
      a       owl:NamedIndividual ;
      example:hasLatinInitial
              "3" , "J" , "D" 
@前缀:。
@前缀rdfs:。
@前缀owl:。
@前缀xsd:。
@前缀rdf:。
@前缀示例:。
猫头鹰:本体论。
例:haslatinginitial
owl:DatatypeProperty;
rdfs:范围
[a rdfs:数据类型;
owl:onDatatype xsd:string;
猫头鹰:有限制吗
([xsd:pattern“[A-Z]”
])
] .
例子:约翰多
猫头鹰:名字叫个人;
例:haslatinginitial
“3”、“J”、“D”

[A-Z]
3.
D
J


这是非常有用的,尤其是N3部分,因为我不使用Pelgg @ @智利,如果这是有帮助的,你可能想考虑让其他用户知道它对你有用,减少未回答的问题的数量,并给你和我两个信誉点。因此,我没有实施它,也无法确定哪一个是正确的答案。无论如何,你的解决方案在我看来似乎很合理。有没有一种简单的方法可以让它对一行中的多个字符起作用?因此,我可以告诉它在一行中接受(min=)1到(max=)3个(或更多)字符,而不必将
字符串[模式“[A-Z][A-Z][A-Z]]”]