2

軽量でオンデマンドのデータ検証を、推論システムやトリプルストアが提供するロード時の検証の外部でセットアップしようとしています。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 )
}
4

4 に答える 4

3

XSD データ型にはサブクラスがありません。派生型があります:xsd:intの派生型ですxsd:integer。これは XSD 定義の機能です。

xsd:int の派生型ではありませんxsd:double

データ型で重要なのは値です:"100"^^xsd:int"100"^^xsd:doubleは同じ値です。SHACL はこれを表現できます。

https://www.w3.org/TR/xpath-datamodel-3/#types-hierarchyの「アトミック型」を参照してください。

于 2017-09-22T21:30:49.417 に答える
1

そのようなオントロジーが存在する場合、それらは間違いなくカスタム ユーザーが設計したものです。私は、この趣旨の W3C 標準を認識していません。この ( https://www.w3.org/TR/xmlschema-2/#built-in-datatypes ) 図は、整数が 10 進数から「派生」することを示していますが、これがどの程度まで使用できるかはわかりません。 ersatz subClassOf またはそのようなもの。

于 2017-09-22T17:06:37.593 に答える