2

私のデータベースには、文字列プロパティを持つものがあります。一部のプロパティ値は、数値文字列 (数字のみを含む) と一致します。これらのものに特別なタイプ (サブタイプ) を与えたいと思います。そんなことがOWLで可能なのでしょうか?

4

2 に答える 2

1

Datatype Restrictions必要なのはとの組み合わせだと思いますxsd:pattern

次の公理はOWL2入門書からのものです...

: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すると、正規表現に基づいてデータ型の制限を行うことができます。

これがあなたにいくつかの方向性を与えることを願っています。

于 2010-10-31T09:40:08.543 に答える
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 仕様に記載されているもののみを使用してください。

必要に応じて独自のデータ型を作成し、次のようなものにすることができます。

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

さらに進んで、次のように言うこともできます...

ns:MyClassificationScheme rdfs:subClassOf xsd:integer .

データに対して SPARQL クエリを発行すると、次のように適用フィルターを発行するときにタイプを指定できます。

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

これがあなたの質問に答えたことを願っています。

編集済み

パンジが言ったように、私の答えは間違った方向に進んでいました。とにかく残します。

于 2010-10-30T22:32:22.907 に答える