この付録では、SEM_MATCHでの空間問合せを実行するためのSPARQL拡張ファンクションのリファレンス情報を示します。これらのファンクションを使用するには、1.6.6項「空間のサポート」で説明されている概念を理解する必要があります。
この付録には、次のファンクションが含まれています。
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
測定単位。MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で(たとえば"unit=SQ_KM"
)を指定します。測定単位の仕様の詳細については、『Oracle Spatial開発者ガイド』の測定単位の項を参照してください。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
書式
orageo:buffer(geom1 : orageo:WKTLiteral, distance : xsd:decimal, unit : Literal) : orageo:WKTLiteral
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
距離値。距離値。値が正の場合、バッファはgeom1
の周りに生成され、値が負の場合(ポリゴンに対してのみ有効)、バッファはgeom1
の内部に生成されます。
測定単位。MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で(たとえば"unit=KM"
)を指定します。測定単位の仕様の詳細については、『Oracle Spatial開発者ガイド』の測定単位の項を参照してください。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
使用方法
複数のオブジェクトで構成される入力ジオメトリの場合、ジオメトリ・オブジェクトの各ポリゴンの面積によって結果が重み付けされます。ジオメトリ・オブジェクトにポリゴンおよび点が混在する場合、中心の計算では点が使用されません。ジオメトリ・オブジェクトがすべて点で構成される場合、それらの点は均等に重み付けされます。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
説明
geom1
の凸型部分を表現するポリゴンタイプ・オブジェクトを戻します。(凸型とは、ジオメトリ・オブジェクトを完全に囲む最小ポリゴンを作成するために、使用する直線の辺をできるだけ少なくした、ジオメトリ・オブジェクトを完全に囲む単純な凸型のポリゴンです)。
使用方法
凸型は、複雑なジオメトリ・オブジェクトの近似値を取る場合に便利です。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
書式
orageo:distance(geom1 : orageo:WKTLiteral, geom2 : orageo:WKTLiteral, unit : Literal) : xsd:decimal
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
測定単位。MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で(たとえば"unit=KM"
)を指定します。測定単位の仕様の詳細については、『Oracle Spatial開発者ガイド』の測定単位の項を参照してください。
使用方法
orageo:withinDistanceは、より効率的な索引ベースの実装が行われているため、可能な場合は、orageo:distance
のかわりにorageo:withinDistance
を使用します。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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;
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
測定単位。MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で(たとえば"unit=KM"
)を指定します。測定単位の仕様の詳細については、『Oracle Spatial開発者ガイド』の測定単位の項を参照してください。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
書式
orageo:nearestNeighbor(geom1: orageo:WKTLiteral, geom2 : orageo:WKTLiteral, param : Literal) : xsd:boolean
パラメータ
ジオメトリ・オブジェクト。問合せ変数で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
演算子の動作を指定します。使用可能なキーワードと値のペアの詳細は、「使用方法」を参照してください。
使用方法
paramパラメータで使用可能なキーワードと値のペアは次のとおりです。
distance=
n
は、最も近い隣接の検索に対して最大許容距離を指定します。
sdo_num_res=
n
は、最も近い隣接の検索に対して設定のサイズを指定します。
unit=
unit
は、distance
値で使用する測定単位を指定します。値を指定しない場合、データに関連付けられている測定単位が使用されます。
geom1
は、ローカル変数(つまり、orageo:nearestNeighbor
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var.
に対する制限的なorageo:relate
空間フィルタを含む場合は、'LEADING(?var)' HINT0
ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
書式
orageo:relate(geom1: orageo:WKTLiteral, geom2 : orageo:WKTLiteral, param : Literal) : xsd:boolean
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
チェックするマスク関係のリストを指定します。「使用方法」のキーワードのリストを参照してください。
使用方法
次の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
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での空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '
));
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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: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 '));
書式
orageo:withinDistance(geom1 : orageo:WKTLiteral, geom2 : orageo:WKTLiteral, distance : xsd:decimal, unit : Literal) : xsd:boolean
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
距離値。
測定単位。MDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で(たとえば"unit=KM"
)を指定します。測定単位の仕様の詳細については、『Oracle Spatial開発者ガイド』の測定単位の項を参照してください。
使用方法
問合せ変数と定数ジオメトリを使用してこのファンクションをコールする場合は、常に、問合せ変数を1番目のパラメータとして、定数ジオメトリを2番目のパラメータとして使用します。
最適なパフォーマンスを得るには、geom1
は、ローカル変数(つまり、orageo:withinDistance
空間フィルタを含む基本的なグラフ・パターンに出現する変数)である必要があります。
問合せが、?var.
に対する制限的なorageo:withinDistance
空間フィルタを含む場合は、'LEADING(?var)' HINT0
ヒントを使用することをお薦めします。
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));
パラメータ
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
ジオメトリ・オブジェクト。問合せ変数または定数orageo:WKTLiteral
の値で指定します。
使用方法
RDFでの空間データの表現、索引付けおよび問合せの詳細は、1.6.6項を参照してください。
『Oracle Spatial開発者ガイド』の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 '));