軽量でオンデマンドのデータ検証を、推論システムやトリプルストアが提供するロード時の検証の外部でセットアップしようとしています。GraphDB 8.3 を使用しています。
Ontology of Biomedical Investigations (OBI) http://purl.obolibrary.org/obo/obi.owlを使用して、次のトリプルをロードするとします。
PREFIX : <http://example.com/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
insert data {
graph :data
{
:measurement1 a <http://purl.obolibrary.org/obo/IAO_0000032> ;
<http://purl.obolibrary.org/obo/IAO_0000004> "100.1"^^xsd:double .
:measurement2 a <http://purl.obolibrary.org/obo/IAO_0000032> ;
<http://purl.obolibrary.org/obo/IAO_0000004> "100"^^xsd:int .
}
}
ということで、測定値:measurement1
を持っています。:measurement2
の範囲は<http://purl.obolibrary.org/obo/IAO_0000004>
ですxsd:double
。以下のクエリのようなものを使用して、指定された範囲とまったく同じではないデータ型を確認できることを知っています。
私のクエリに埋め込まれたコメントでわかるように、すべての整数が倍精度浮動小数点数のセット内に含まれているため、:measurement2
の値は許容可能であると言いたいです。"100"^^xsd:int
(右?)
xsd:int
のサブ何かであると言う既存のオントロジーはありxsd:double
ますか?
PREFIX : <http://example.com/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
# loaded obi into http://example.com/ontology
select distinct ?stype ?p ?ptype ?propdom ?proprange ?otype ?odatatype where {
{
graph :data
{
?s ?p ?o .
bind (datatype(?o) as ?odatatype)
}
optional {
graph <http://example.com/ontology> {
values ?ptype {
owl:ObjectProperty owl:DatatypeProperty
}
?p a ?ptype
}
}
optional {
?o a ?otype
}
optional {
?s a ?stype
}
optional {
{
graph <http://example.com/ontology> {
?p rdfs:domain ?propdom
}
}
}
optional {
{
graph <http://example.com/ontology> {
?p rdfs:range ?proprange
}
}
}
}
minus
{
?s rdf:type ?o
}
# minus
# {
# ?odatatype rdfs:subClassOf+ ?proprange
# }
filter ( ?odatatype != ?proprange )
}