B 空間問合せのSEM_MATCHサポート
この付録では、SEM_MATCHでの空間問合せを実行するためのSPARQL拡張関数のリファレンス情報を示します。
これらのファンクションを使用するには、「空間のサポート」に説明する概念を理解する必要があります。
ノート:
この付録では、geomLiteral
が、orageo:WKTLiteral
、ogc:wktLiteral
およびogc:gmlLiteral
(これらは形式表現およびパラメータ記述で同義的に使用可能)のプレースホルダとして使用されます。(ただし、orageo:WKTLiteral
またはogc:wktLiteral
が実際の例で使用されます。)
この付録には、次のGeoSPARQLおよびOracle固有の関数が含まれます。
GeoSPARQL関数:
Oracle固有の関数:
- ogcf:boundary
- ogcf:buffer
- ogcf:convexHull
- ogcf:difference
- ogcf:distance
- ogcf:envelope
- ogcf:getSRID
- ogcf:intersection
- ogcf:relate
- ogcf:sfContains
- ogcf:sfCrosses
- ogcf:sfDisjoint
- ogcf:sfEquals
- ogcf:sfIntersects
- ogcf:sfOverlaps
- ogcf:sfTouches
- ogcf:sfWithin
- ogcf:symDifference
- ogcf:union
- orageo:aggrCentroid
- orageo:aggrConvexHull
- orageo:aggrMBR
- orageo:aggrUnion
- orageo:area
- orageo:buffer
- orageo:centroid
- orageo:convexHull
- orageo:difference
- orageo:distance
- orageo:getSRID
- orageo:intersection
- orageo:length
- orageo:mbr
- orageo:nearestNeighbor
- orageo:relate
- orageo:sdoDistJoin
- orageo:sdoJoin
- orageo:union
- orageo:withinDistance
- orageo:xor
B.1 ogcf:boundary
書式
ogcf:boundary(geom : geomLiteral) : ogc:wktLiteral
説明
geom
の境界の閉包であるジオメトリ・オブジェクトを戻します。
例
次の例では、米国下院議員選挙区ポリゴンの境界を検出します。
SELECT cb
FROM table(sem_match(
'SELECT (ogcf:boundary(?cgeom) AS ?cb)
WHERE
{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom }'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.2 ogcf:buffer
書式
ogcf:buffer(geom : geomLiteral, radius : xsd:decimal, units : xsd:anyURI) : ogc:wktLiteral
説明
ジオメトリの周りの指定された半径(単位で測定)のバッファ・ポリゴンを戻します。
パラメータ
- geom
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - radius
-
バッファを定義するために使用される半径の値。
- units
-
測定単位。
<http://xmlns.oracle.com/rdf/geo/uom/{SDO_UNIT}>
形式のURI(<http://xmlns.oracle.com/rdf/geo/uom/KM>
など)。MDSYS.SDO_DIST_UNITS表からのSDO_UNIT値がすべて認識されます。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
例
次の例では、指定された点の周り100kmのバッファ内にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ # HINT0={LEADING(?cgeom)}
?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (
ogcf:sfWithin(?cgeom,
ogcf:buffer("POINT(-71.46444 42.7575)"^^ogc:wktLiteral,
100,
<http://xmlns.oracle.com/rdf/geo/uom/KM>)) }'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.3 ogcf:convexHull
書式
ogcf:convexHull(geom : geomLiteral) : ogc:wktLiteral
説明
geomの凸型部分を表現するポリゴン・ジオメトリを戻します。(凸型とは、ジオメトリ・オブジェクトを完全に囲む最小ポリゴンを作成するために、使用する直線の辺をできるだけ少なくした、ジオメトリ・オブジェクトを完全に囲む単純な凸型のポリゴンです)。
例
次の例では、凸型が、指定された点を含む米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfContains(ogcf:convexHull(?cgeom),
"POINT(-71.46444 42.7575)"^^ogc:wktLiteral)) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.4 ogcf:difference
書式
ogcf:difference(geom1 : geomLiteral, geom2 : geomLiteral) : ogc:wktLiteral
説明
geom1
とgeom2
で位相的に差(MINUS演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
例
次の例では、中心が、2つの指定されたポリゴンの差の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfWithin(orageo:centroid(?cgeom),
ogcf:difference("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^ogc:wktLiteral))) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.5 ogcf:distance
書式
ogcf:distance(geom1 : geomLiteral, geom2 : geomLiteral, units : xsd:anyURI) : xsd:decimal
説明
geom1
とgeom2
の2点間の最短距離を、指定された単位で戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - geom2
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - units
-
測定単位。
<http://xmlns.oracle.com/rdf/geo/uom/{SDO_UNIT}>
形式のURI(<http://xmlns.oracle.com/rdf/geo/uom/KM>
など)。MDSYS.SDO_DIST_UNITS表からのSDO_UNIT値がすべて認識されます。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
例
次の例では、指定された点からの距離に基づいて米国下院議員選挙区を順序付けします。
SELECT name, cdist
FROM table(sem_match(
'SELECT ?name ?cdist
WHERE
{ # HINT0={LEADING(?cgeom)}
?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
}
ORDER BY ASC(ogcf:distance(?cgeom,
"POINT(-71.46444 42.7575)"^^ogc:wktLiteral,
<http://xmlns.oracle.com/rdf/geo/uom/KM>))'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '))
ORDER BY sem$rownum;
親トピック: 空間問合せのSEM_MATCHサポート
B.6 ogcf:envelope
書式
ogcf:envelope(geom : geomLiteral) : ogc:wktLiteral
説明
geom
の最小境界矩形(MBR)、つまり、geom
を囲む単一の最小の矩形を戻します。
例
次の例では、最小境界矩形が、指定された点を含む米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfContains(ogcf:envelope(?cgeom),
"POINT(-71.46444 42.7575)"^^ogc:wktLiteral)) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.7 ogcf:getSRID
書式
ogcf:getSRID(geom : geomLiteral) : xsd:anyURI
説明
geom
の空間参照システムURIを戻します。
例
次の例では、米国下院議員選挙区ポリゴンの空間参照システムURIを検出します。
SELECT csrid
FROM table(sem_match(
'SELECT (ogcf:getSRID(?cgeom) AS ?csrid)
WHERE
{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom }'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.8 ogcf:intersection
書式
ogcf:intersection (geom1 : geomLiteral, geom2 : geomLiteral) : ogc:wktLiteral
説明
geom1
とgeom2
で位相的に共通部分(AND演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
例
次の例では、中心が、2つの指定されたポリゴンの共通部分の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfWithin(orageo:centroid(?cgeom),
ogcf:intersection("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^ogc:wktLiteral))) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.9 ogcf:relate
書式
ogcf:relate(geom1 : geomLiteral, geom2 : geomLiteral, pattern-matrix : xsd:string) : xsd:boolean
説明
geom1
とgeom2
間の位相関係が、指定されたDE-9IMパターンマトリックスを満たす場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してogcf:relate
をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:relate
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:relate
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
DE-9IM交差パターンの詳細は、OGCのシンプル・フィーチャの仕様(OGC 06-103r3)を参照してください。OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、指定された点を含む米国下院議員選挙区を検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:relate(?cgeom, "POINT(-71.46444 42.7575)"^^ogc:wktLiteral, "TTTFFTFFT")) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T ' ));
親トピック: 空間問合せのSEM_MATCHサポート
B.10 ogcf:sfContains
書式
ogcf:sfContains(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているようにgeom1
がgeom2
を空間的に含む場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfContains
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfContains
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンを空間的に含む米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfContains(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.11 ogcf:sfCrosses
書式
ogcf:sfCrosses(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているようにgeom1
がgeom2
を空間的に横断する場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfCrosses
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfCrosses
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンを空間的に横断する米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfCrosses(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.12 ogcf:sfDisjoint
書式
ogcf:fDisjoint(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているように2つのジオメトリが空間的に非接続である場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
ogcf:sfDisjoint
フィルタは、評価のために空間索引を使用できないため、パフォーマンスは、多くの場合、他のシンプル・フィーチャの空間関数よりも非常に悪くなります。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンから空間的に非接続である米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfDisjoint(?cgeom,
"Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.13 ogcf:sfEquals
書式
ogcf:sfEquals(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているように2つのジオメトリが空間的に同じである場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfEquals
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfEquals
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンと空間的に同じである米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfEquals(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.14 ogcf:sfIntersects
書式
ogcf:sfIntersects(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているように2つのジオメトリが非接続でない
場合、trueを戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfIntersects
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfIntersects
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンと交差する米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfIntersects(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.15 ogcf:sfOverlaps
書式
ogcf:sfOverlaps(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているようにgeom1
がgeom2
に空間的に重なる場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfOverlaps
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfOverlaps
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンに空間的に重なる米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfOverlaps(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.16 ogcf:sfTouches
書式
ogcf:sfTouches(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているように2つのジオメトリが空間的に接している場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfTouches
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfTouches
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、定数ポリゴンに空間的に接している米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfTouches(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.17 ogcf:sfWithin
書式
ogcf:sfWithin(geom1 : geomLiteral, geom2 : geomLiteral) : xsd:boolean
説明
OGCのシンプル・フィーチャの仕様(OGC 06-103r3)で定義されているようにgeom1
が空間的にgeom2
の内部にある場合、true
を戻します。それ以外の場合はfalse
を返します。
パラメータ
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、ogcf:sfWithin
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なogcf:sfWithin
空間フィルタを含む場合は、LEADING(?var)
HINT0ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
OGCのGeoSPARQLの仕様も参照してください。
例
次の例では、空間的に定数ポリゴンの内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (ogcf:sfWithin(?cgeom, "Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral)) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/') ) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.18 ogcf:symDifference
書式
ogcf:symDifference(geom1 : geomLiteral, geom2 : geomLiteral) : ogc:wktLiteral
説明
geom1
とgeom2
で位相的に排他的論理和(XOR演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
例
次の例では、指定された点の周り100kmのバッファ内にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfWithin(orageo:centroid(?cgeom),
ogcf:symDifference("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^ogc:wktLiteral))) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.19 ogcf:union
書式
ogcf:union(geom1 : geomLiteral, geom2 : geomLiteral) : ogc:wktLiteral
説明
geom1
とgeom2
で位相的に結合部分(OR演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
例
次の例では、中心が、2つの指定されたポリゴンの結合部分の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (ogcf:sfWithin(orageo:centroid(?cgeom),
ogcf:union("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^ogc:wktLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^ogc:wktLiteral))) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.20 orageo:aggrCentroid
書式
orageo:aggrCentroid(geom : geomLiteral) : ogc:wktLiteral
説明
指定されたジオメトリ・オブジェクトのグループの中心であるジオメトリ・リテラルを戻します。(中心は「重心」とも呼ばれます。)
使用上のノート
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_AGGR_CENTROID関数も参照してください。
例
次の例では、すべての米国下院議員選挙区ポリゴンの中心を検出します。
SELECT centroid
FROM table(sem_match(
'select (orageo:aggrCentroid(?cgeom) as ?centroid)
{?cdist orageo:hasExactGeometry ?cgeom } '
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.21 orageo:aggrConvexHull
書式
orageo:aggrConvexhull(geom : geomLiteral) : ogc:wktLiteral
説明
指定されたジオメトリ・オブジェクトのグループの凸型であるジオメトリ・オブジェクトを戻します。(凸型とは、この関数の場合、ジオメトリ・オブジェクトを完全に囲む最小ポリゴンを作成するために、使用する直線の辺をできるだけ少なくした、ジオメトリ・オブジェクトのグループを完全に囲む単純な凸型のポリゴンです)。
使用上のノート
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_AGGR_CONVEXHULL関数も参照してください。
例
次の例では、すべての米国下院議員選挙区ポリゴンの凸型を検出します。
SELECT chull
FROM table(sem_match(
'select (orageo:aggrConvexhull(?cgeom) as ?chull)
{
?cdist orageo:hasExactGeometry ?cgeom } '
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.22 orageo:aggrMBR
書式
orageo:aggrMBR(geom : geomLiteral) : ogc:wktLiteral
説明
指定されたジオメトリ・オブジェクトのグループの最小境界矩形(MBR)であるジオメトリ・リテラルを戻します。
使用上のノート
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_AGGR_MBR関数も参照してください。
例
次の例では、すべての米国下院議員選挙区ポリゴンのMBRを検出します。
SELECT mbr
FROM table(sem_match(
'select (orageo:aggrMBR(?cgeom) as ?mbr)
{
?cdist orageo:hasExactGeometry ?cgeom } '
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.23 orageo:aggrUnion
書式
orageo:aggrUnion(geom : geomLiteral) : ogc:wktLiteral
説明
指定されたジオメトリ・オブジェクトのグループの位相的な和集合であるジオメトリ・オブジェクトを戻します。
使用上のノート
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_UNION関数も参照してください。
例
次の例では、すべての米国下院議員選挙区ポリゴンの和集合を検出します。
SELECT u
FROM table(sem_match(
'select (orageo:aggrUnion(?cgeom) as ?u)
{
?cdist orageo:hasExactGeometry ?cgeom } '
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.24 orageo:area
書式
orageo:area(geom1 : geomLiteral, unit : Literal) : xsd:decimal
説明
指定された測定単位でgeom1
の面積を戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - unit
-
測定単位(MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で、たとえば
"unit=SQ_KM"
)を指定します。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_AREA関数も参照してください。
例
次の例では、10,000平方kmを超える面積の米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:area(?cgeom, "unit=SQ_KM") > 10000) }'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.25 orageo:buffer
書式
orageo:buffer(geom1 : geomLiteral, distance : xsd:decimal, unit : Literal) : geomLiteral
説明
ジオメトリの周りまたは内部の、指定された距離にあるバッファ・ポリゴンを戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - distance
-
距離の値。距離の値。値が正の場合、バッファは
geom1
の周りに生成され、値が負の場合(ポリゴンに対してのみ有効)、バッファはgeom1
の内部に生成されます。 - unit
-
測定単位(MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で、たとえば
"unit=KM"
)を指定します。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_BUFFERファンクションも参照してください。
例
次の例では、指定された点の周り100kmのバッファの内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ # HINT0={LEADING(?cgeom)}
?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (
orageo:relate(?cgeom,
orageo:buffer("POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
100, "unit=KM"),
"mask=inside")) }'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.26 orageo:centroid
書式
orageo:centroid(geom1 : geomLiteral) : geomLiteral
説明
geom1
の中心である点ジオメトリを戻します。(中心は「重心」とも呼ばれます。)
使用上のノート
複数のオブジェクトで構成される入力ジオメトリの場合、ジオメトリ・オブジェクトの各ポリゴンの面積によって結果が重み付けされます。ジオメトリ・オブジェクトにポリゴンおよび点が混在する場合、中心の計算では点が使用されません。ジオメトリ・オブジェクトがすべて点で構成される場合、それらの点は均等に重み付けされます。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_CENTROID関数も参照してください。
例
次の例では、中心が、指定された点の200km以内にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:withinDistance(orageo:centroid(?cgeom),
"POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
"distance=200 unit=KM")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.27 orageo:convexHull
書式
orageo:convexHull(geom1 : geomLiteral) : geomLiteral
説明
geom1
の凸型部分を表現するポリゴンタイプ・オブジェクトを戻します。(凸型とは、ジオメトリ・オブジェクトを完全に囲む最小ポリゴンを作成するために、使用する直線の辺をできるだけ少なくした、ジオメトリ・オブジェクトを完全に囲む単純な凸型のポリゴンです)。
使用上のノート
凸型は、複雑なジオメトリ・オブジェクトの近似値を取る場合に便利です。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_CONVEX_HULL関数も参照してください。
例
次の例では、凸型が、指定された点を含む米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (orageo:relate(orageo:convexHull(?cgeom), "POINT(-71.46444 42.7575)"^^orageo:WKTLiteral, "mask=contains")) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.28 orageo:difference
書式
orageo:difference(geom1 : geomLiteral, geom2 : geomLiteral) : geomLiteral
説明
geom1
とgeom2
で位相的に差(MINUS演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_UNION関数も参照してください。
例
次の例では、中心が、2つの指定されたポリゴンの差の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:relate(orageo:centroid(?cgeom),
orageo:difference("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^orageo:WKTLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^orageo:WKTLiteral),
"mask=inside")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.29 orageo:distance
書式
orageo:distance(geom1 : geomLiteral, geom2 : geomLiteral, unit : Literal) : xsd:decimal
説明
指定された測定単位で、2つの点またはセグメントgeom1
とgeom2
の最短距離を戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - geom2
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - unit
-
測定単位(MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で、たとえば
"unit=KM"
)を指定します。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
使用上のノート
orageo:withinDistanceにはより効率的な索引ベースが実装されているため、可能な場合はorageo:distance
のかわりにorageo:withinDistance
を使用します。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_DISTANCE関数も参照してください。
例
次の例では、指定された点に最も近い10の米国下院議員選挙区を検出し、点からの距離によって順序付けします。
SELECT name, cdist
FROM table(sem_match(
'SELECT ?name ?cdist
WHERE
{ # HINT0={LEADING(?cgeom)}
?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:nearestNeighbor(?cgeom,
"POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
"sdo_num_res=10")) }
ORDER BY ASC(orageo:distance(?cgeom,
"POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
"unit=KM"))'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '))
ORDER BY sem$rownum;
親トピック: 空間問合せのSEM_MATCHサポート
B.30 orageo:getSRID
書式
orageo:getSRID(geom : geomLiteral) : xsd:anyURI
説明
geom
のOracle空間参照システム(SRID) URIを戻します。
使用上のノート
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
例
次の例では、米国下院議員選挙区ポリゴンの空間参照システムURIを検出します。
SELECT csrid
FROM table(sem_match(
'SELECT (orageo:getSRID(?cgeom) AS ?csrid)
WHERE
{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom }'
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')
)
,null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.31 orageo:intersection
書式
orageo:intersection(geom1 : geomLiteral, geom2 : geomLiteral) : geomLiteral
説明
geom1
とgeom2
で位相的に共通部分(AND演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_INTERSECTIONファンクションも参照してください。
例
次の例では、中心が、2つの指定されたポリゴンの共通部分の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:relate(orageo:centroid(?cgeom),
orageo:intersection("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^orageo:WKTLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^orageo:WKTLiteral),
"mask=inside")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.32 orageo:length
書式
orageo:length(geom1 : geomLiteral, unit : Literal) : xsd:decimal
説明
指定された測定単位でgeom1
の長さ、つまり周囲を戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - unit
-
測定単位(MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で、たとえば
"unit=KM"
)を指定します。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_LENGTHファンクションも参照してください。
例
次の例では、1000kmを超える長さ(周囲)の米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:legnth(?cgeom, "unit=KM") > 1000) }'
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.33 orageo:mbr
書式
orageo:mbr(geom1 : geomLiteral) : geomLiteral
説明
geom1
の最小境界矩形、つまりgeom1
を囲む単一の最小の矩形を戻します。
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_MBRファンクションも参照してください。
例
次の例では、最小境界矩形が、指定された点を含む米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:relate(orageo:mbr(?cgeom),
"POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
"mask=contains")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.34 orageo:nearestNeighbor
書式
orageo:nearestNeighbor(geom1: geomLiteral, geom2 : geomLiteral, param : Literal) : xsd:boolean
説明
geom1
がgeom2
の最も近い隣接である場合(設定される最も近い隣接のサイズはparam
によって指定されます)、true
を戻し、そうでない場合はfalse
を戻します。
パラメータ
使用上のノート
paramパラメータで使用可能なキーワードと値のペアは次のとおりです。
-
distance=
n
には、最近傍探索における最大許容距離を指定します。 -
sdo_num_res=
n
には、最近傍探索におけるセットのサイズを指定します。 -
unit=
unit
には、distance
値で使用する測定単位を指定します。値を指定しない場合、データに関連付けられている測定単位が使用されます。
geom1
は、ローカル変数(つまり、orageo:nearestNeighbor
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なorageo:relate
空間フィルタを含む場合は、'LEADING(?var)' HINT0
ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_NN演算子も参照してください。
例
次の例では、指定された点に最も近い10の米国下院議員選挙区を検出します。
SELECT name, cdist FROM table(sem_match( '{ # HINT0={LEADING(?cgeom)} ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (orageo:nearestNeighbor(?cgeom, "POINT(-71.46444 42.7575)"^^orageo:WKTLiteral, "sdo_num_res=10")) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.35 orageo:relate
書式
orageo:relate(geom1: geomLiteral, geom2 : geomLiteral, param : Literal) : xsd:boolean
説明
geom1
とgeom2
がparam
パラメータによって指定される空間的な位相関係を満たす場合、true
を戻し、そうでない場合はfalse
を戻します。
パラメータ
使用上のノート
次のparam
値(マスク関係)をテストできます。
-
ANYINTERACT: オブジェクトが非接続ではない場合にTRUEを戻します。
-
CONTAINS: 第2オブジェクトが完全に第1オブジェクトの内部にあり、かつオブジェクト境界が接していない場合にCONTAINSを戻し、そうでない場合はFALSEを戻します。
-
COVEREDBY: 第1オブジェクトが完全に第2オブジェクトの内部にあり、かつオブジェクト境界が1つ以上の点で接している場合にCOVEREDBYを戻し、そうでない場合はFALSEを戻します。
-
COVERS: 第2オブジェクトが完全に第1オブジェクトの内部にあり、かつ境界が1つ以上の位置で接している場合にCOVERSを戻し、そうでない場合はFALSEを戻します。
-
DISJOINT: 2つのオブジェクトが、境界または内部の点を共有していない場合にDISJOINTを戻し、そうでない場合はFALSEを戻します。
-
EQUAL: オブジェクトの境界と内部(オブジェクト内のすべての穴を含む)のすべての点を2つのオブジェクトが共有している場合にEQUALを戻し、そうでない場合はFALSEを戻します。
-
INSIDE: 第1オブジェクトが完全に第2オブジェクトの内部にあり、かつオブジェクト境界が接していない場合にINSIDEを戻し、そうでない場合はFALSEを戻します。
-
ON: 線(第1オブジェクト)の境界および内部が完全にポリゴン(第2オブジェクト)の境界上に存在する場合にONを戻し、そうでない場合はFALSEを戻します。
-
OVERLAPBDYDISJOINT: 2つのオブジェクトは重なっているが、その境界が相互作用しない場合にOVERLAPBDYDISJOINTを戻し、そうでない場合はFALSEを戻します。
-
OVERLAPBDYINTERSECT: 2つのオブジェクトが重なり、かつその境界が1つ以上の位置で交差する場合にOVERLAPBDYINTERSECTを戻し、そうでない場合はFALSEを戻します。
-
TOUCH: 2つのオブジェクトが1つの境界点を共有しているが、内部の点は共有していない場合にTOUCHを戻し、そうでない場合はFALSEを戻します。
param
の値は、論理ブール演算子ORを使用して組み合せることができます。たとえば、ジオメトリ間の関係がINSIDEまたはTOUCHまたはINSIDEとTOUCHの両方である場合、「INSIDE + TOUCH」はINSIDE+TOUCH
を戻し、ジオメトリ間の関係がINSIDEまたはTOUCHのいずれでもない場合、FALSE
を戻します。
問合せ変数と定数ジオメトリを使用してorageo:relate
をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、orageo:relate
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なorageo:relate
空間フィルタを含む場合は、'LEADING(?var)' HINT0
ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_RELATE演算子も参照してください。
例
次の例では、指定された点を含む米国下院議員選挙区を検出します。
SELECT name, cdist
FROM table(sem_match(
'{ # HINT0={LEADING(?cgeom)}
?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:relate(?cgeom,
"POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
"mask=contains")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '
));
親トピック: 空間問合せのSEM_MATCHサポート
B.36 orageo:sdoDistJoin
書式
orageo:sdoDistJoin(geom1 : geomLiteral, geom2 : geomLiteral, param : Literal) : xsd:boolean
説明
2つのジオメトリ間の距離に基づいて空間結合を実行します。geom1
とgeom2
間の距離がparam
で指定された一定の値以内である場合はtrue
を戻し、それ以外の場合はfalse
を戻します。
パラメータ
使用上のノート
2つの大規模なジオメトリ・コレクション間で距離ベースの空間結合を実行する場合は、orageo:sdoDistJoinを使用してください。1つの小規模なジオメトリ・コレクションと1つの大規模なジオメトリ・コレクション間で距離ベースの空間結合を実行する場合、最初の引数として小規模なジオメトリ・コレクションを指定してorageo:withinDistanceを起動すると、通常、orageo:sdoDistJoinより高いパフォーマンスとなります。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_JOIN演算子も参照してください。
例
次の例では、互いに100m以内にある米国下院議員選挙区ポリゴンのペアを検出します。
SELECT cdist1, cdist2
FROM table(sem_match(
'{ ?cdist1 orageo:hasExactGeometry ?cgeom1 .
?cdist2 orageo:hasExactGeometry ?cgeom2
FILTER (orageo:sdoDistJoin(?cgeom1, ?cgeom2,
"distance=100 unit=m")) } '
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, ' ALLOW_DUP=T '
));
親トピック: 空間問合せのSEM_MATCHサポート
B.37 orageo:sdoJoin
書式
orageo:sdoJoin(geom1 : geomLiteral, geom2 : geomLiteral, param : Literal) : xsd:boolean
説明
位相関係に基づいて空間結合を実行します。geom1
とgeom2
がparam
によって指定される空間的な関係を満たす場合、true
を戻し、そうでない場合はfalse
を戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - geom2
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - param
-
チェックするマスク関係のリストを指定します。位相関係を指定します。有効な値は'mask=<value>'です。<value>は、SDO_RELATE演算子(TOUCH、OVERLAPBDYDISJOINT、OVERLAPBDYINTERSECT、EQUAL、INSIDE、COVEREDBY、CONTAINS、COVERS、ANYINTERACT、ON)について有効な1つ以上のマスク値です。複数のマスクが論理ブール演算子ORで結合されます(
"mask=inside+touch"
など)。
使用上のノート
2つの大規模なジオメトリ・コレクション間で空間結合を実行する場合は、orageo:sdoJoinを使用してください。1つの小規模なジオメトリ・コレクションと1つの大規模なジオメトリ・コレクション間で空間結合を実行する場合、最初の引数として小規模なジオメトリ・コレクションを指定してorageo:relateを起動すると、通常、orageo:sdoJoinより高いパフォーマンスとなります。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_JOIN演算子も参照してください。
例
次の例では、空間相互作用がある米国下院議員選挙区ポリゴンのペアを検出します。
SELECT cdist1, cdist2
FROM table(sem_match(
'{ ?cdist1 orageo:hasExactGeometry ?cgeom1 .
?cdist2 orageo:hasExactGeometry ?cgeom2
FILTER (orageo:sdoJoin(?cgeom1, ?cgeom2,
"mask=anyinteract")) } '
,sem_models('gov_all_vm'), null
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, ' ALLOW_DUP=T '
));
親トピック: 空間問合せのSEM_MATCHサポート
B.38 orageo:union
書式
orageo:union(geom1 : geomLiteral, geom2 : geomLiteral) : geomLiteral
説明
geom1
とgeom2
で位相的に結合部分(OR演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_UN ION関数も参照してください。
例
次の例では、中心が、2つの指定されたポリゴンの結合部分の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist FROM table(sem_match( '{ ?person usgovt:name ?name . ?person pol:hasRole ?role . ?role pol:forOffice ?office . ?office pol:represents ?cdist . ?cdist orageo:hasExactGeometry ?cgeom FILTER (orageo:relate(orageo:centroid(?cgeom), orageo:union("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5, -83.6 34.5, -83.6 34.1))"^^orageo:WKTLiteral, "Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5, -83.2 34.5, -83.2 34.3))"^^orageo:WKTLiteral), "mask=inside")) } ' ,sem_models('gov_all_vm'), null, ,sem_aliases( sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'), sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/')) ,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.39 orageo:withinDistance
書式
orageo:withinDistance(geom1 : geomLiteral, geom2 : geomLiteral, distance : xsd:decimal, unit : Literal) : xsd:boolean
説明
geom1
とgeom2
の間の距離がunit
で測定されるdistance
以下である場合、true
を戻し、そうでない場合はfalse
を戻します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - geom2
-
ジオメトリ・オブジェクト。問合せ変数または定数
geomLiteral
の値で指定します。 - distance
-
距離の値。
- unit
-
測定単位(MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で、たとえば
"unit=KM"
)を指定します。測定単位の仕様の詳細は、『Oracle Spatial and Graph開発者ガイド』の測定単位の項を参照してください。
使用上のノート
問合せ変数と定数ジオメトリを使用してこの関数をコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、orageo:withinDistance
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var
に対する制限的なorageo:withinDistance
空間フィルタを含む場合は、'LEADING(?var)' HINT0
ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_WITHIN_DISTANCE演算子も参照してください。
例
次の例では、指定された点の100km以内にある米国下院議員選挙区を検出します。
SELECT name, cdist
FROM table(sem_match(
'{ # HINT0={LEADING(?cgeom)}
?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:withinDistance(?cgeom,
"POINT(-71.46444 42.7575)"^^orageo:WKTLiteral,
100, "KM")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート
B.40 orageo:xor
書式
orageo:xor(geom1 : geomLiteral, geom2 : geomLiteral) : geomLiteral
説明
geom1
とgeom2
で位相的に排他的論理和(XOR演算)となるジオメトリ・オブジェクトを戻します。
パラメータ
使用上のノート
RDFでの空間データの表現、索引付け、および問合せの詳細は、「空間のサポート」を参照してください。
『Oracle Spatial and Graph開発者ガイド』のSDO_GEOM.SDO_XOR関数も参照してください。
例
次の例では、中心が、2つの指定されたポリゴンの対称差の内部にある米国下院議員選挙区ポリゴンを検出します。
SELECT name, cdist
FROM table(sem_match(
'{ ?person usgovt:name ?name .
?person pol:hasRole ?role .
?role pol:forOffice ?office .
?office pol:represents ?cdist .
?cdist orageo:hasExactGeometry ?cgeom
FILTER (orageo:relate(orageo:centroid(?cgeom),
orageo:xor("Polygon((-83.6 34.1, -83.2 34.1, -83.2 34.5,
-83.6 34.5, -83.6 34.1))"^^orageo:WKTLiteral,
"Polygon((-83.2 34.3, -83.0 34.3, -83.0 34.5,
-83.2 34.5, -83.2 34.3))"^^orageo:WKTLiteral),
"mask=inside")) } '
,sem_models('gov_all_vm'), null,
,sem_aliases(
sem_alias('usgovt','http://www.rdfabout.com/rdf/schema/usgovt/'),
sem_alias('pol','http://www.rdfabout.com/rdf/schema/politico/'))
,null, null, null, ' ALLOW_DUP=T '));
親トピック: 空間問合せのSEM_MATCHサポート