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