OWL:将属性值限制为数字字符串

时间:2010-10-30 17:19:25

标签: string rdf numeric owl

在我的数据库中,我有一些字符串属性。某些属性值与数字字符串匹配(仅包含数字)。我想给这些东西一个特殊的类型(它们是什么的子类型)。在OWL中这样的事情可能吗?

2 个答案:

答案 0 :(得分:1)

我认为您需要将Datatype Restrictionsxsd:pattern结合使用。

以下公理来自OWL 2 Primer ......

: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 ]
            )
          ]
       ] .

...如果你用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,您可以根据正则表达式执行数据类型限制。

我希望这会给你一些指示。

答案 1 :(得分:0)

实际上你可以在RDF中做些什么。对于RDF中的任何文字,您可以使用类似的内容(在turtle / RDF中)指定类型...

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:x :myDataTypeProperty "123"^^xsd:integer .
:y :myDataTypeProperty "some string"^^xsd:string .
:z :myDataTypeProperty "2004-12-06"^^xsd:date .

RDF / XML中的相同示例

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns="http://www.foo.bar.com#">
  <rdf:Description rdf:about="http://www.foo.bar.com#x">
    <myDataTypeProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">123</myDataTypeProperty>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.foo.bar.com#y">
    <myDataTypeProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#string">some string</myDataTypeProperty>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.foo.bar.com#z">
    <myDataTypeProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2004-12-06</myDataTypeProperty>
  </rdf:Description>
</rdf:RDF>

XMLSchema(XSD)规范中,您可以找到所有支持的数据类型。但请确保您只使用SPARQL spec

中提到的内容

如果您愿意,可以使用自己的数据类型,并使用以下内容:

:x :myDataTypeProperty "123"^^ns:MyClassificationScheme .

你可以更进一步说......

ns:MyClassificationScheme rdfs:subClassOf xsd:integer .

当您针对数据发出SPARQL查询时,您可以在发出应用过滤器时指定类型,如下所示:

SELECT * WHERE { 
   ?person :born ?birthDate .
   FILTER ( ?birthDate > "2005-02-28"^^xsd:date ) .
}

我希望这能回答你的问题。

<强>被修改

潘齐提到我的回答是错误的指示。无论如何我还是留下了。