String OWL:将属性值限制为数字字符串
在我的数据库中,我有一些字符串属性的东西。某些属性值与数字字符串匹配(仅包含数字)。我想给这些东西一个特殊的类型(它们是什么的子类型)。在OWL中这样做可能吗?实际上是您可以在RDF中做的事情。对于RDF中的任何文本,您都可以使用类似以下内容指定类型(在turtle/RDF中) 你可以更进一步说String OWL:将属性值限制为数字字符串,string,rdf,numeric,owl,String,Rdf,Numeric,Owl,在我的数据库中,我有一些字符串属性的东西。某些属性值与数字字符串匹配(仅包含数字)。我想给这些东西一个特殊的类型(它们是什么的子类型)。在OWL中这样做可能吗?实际上是您可以在RDF中做的事情。对于RDF中的任何文本,您都可以使用类似以下内容指定类型(在turtle/RDF中) 你可以更进一步说 ns:MyClassificationScheme rdfs:subClassOf xsd:integer . 针对数据发出SPARQL查询时,可以在发出应用过滤器时指定类型,如下所示: SELECT
ns:MyClassificationScheme rdfs:subClassOf xsd:integer .
针对数据发出SPARQL查询时,可以在发出应用过滤器时指定类型,如下所示:
SELECT * WHERE {
?person :born ?birthDate .
FILTER ( ?birthDate > "2005-02-28"^^xsd:date ) .
}
我希望这回答了你的问题
已编辑
正如panzi提到的,我的回答是错误的。不管怎样,我还是离开它。我认为您需要将数据类型限制与
xsd:pattern
结合起来
以下公理来自
。。。如果你用xsd:pattern
稍微移动一下,我们可以得到类似于
:YourClass rdfs:subClassOf
[ rdf:type owl:Restriction ;
owl:onProperty :yourHasNumericProperty ;
owl:someValuesFrom
[ rdf:type rdfs:Datatype ;
owl:onDatatype xsd:integer ;
owl:withRestrictions ([xsd:pattern "E[1-9][0-9]*"])
]
] .
使用xsd:pattern
可以基于正则表达式进行数据类型限制
我希望这能给你一些指导。我知道,但这不是我想要的。我有一个
xsd:string
datatype属性,它已经在我的数据库中填充了值。其中一些值恰好与整数匹配。我希望这些属性自动属于某个特殊的子类。它比查询中的过滤器REGEX
更方便(但这样的查询也可以,只是没有那么方便)。基本上我想要一个基于正则表达式(或“类型转换为xsd:integer
支持字符串”)的值限制。我想我完全误解了你的问题。我添加了一个不同的答案..嗯,出于某种原因,这对我不起作用。但是我从另一个文件中导入子类作为超类,即使我没有添加任何限制,也无法获取任何实例。奇怪。
ns:MyClassificationScheme rdfs:subClassOf xsd:integer .
SELECT * WHERE {
?person :born ?birthDate .
FILTER ( ?birthDate > "2005-02-28"^^xsd:date ) .
}
:Teenager rdfs:subClassOf
[ rdf:type owl:Restriction ;
owl:onProperty :hasAge ;
owl:someValuesFrom
[ rdf:type rdfs:Datatype ;
owl:onDatatype xsd:integer ;
owl:withRestrictions ( [ xsd:minExclusive "12"^^xsd:integer ]
[ xsd:maxInclusive "19"^^xsd:integer ]
)
]
] .
:YourClass rdfs:subClassOf
[ rdf:type owl:Restriction ;
owl:onProperty :yourHasNumericProperty ;
owl:someValuesFrom
[ rdf:type rdfs:Datatype ;
owl:onDatatype xsd:integer ;
owl:withRestrictions ([xsd:pattern "E[1-9][0-9]*"])
]
] .