- Tổng quan
- Nội dung
- Tiêu chuẩn liên quan
- Lược đồ
- Tải về
Tiêu chuẩn TCVN ISO 19142:2025 Thông tin địa lý - Dịch vụ đối tượng địa lý trên web
| Số hiệu: | TCVN ISO 19142:2025 | Loại văn bản: | Tiêu chuẩn Việt Nam |
| Cơ quan ban hành: | Bộ Khoa học và Công nghệ | Lĩnh vực: | Thông tin-Truyền thông |
|
Ngày ban hành:
Ngày ban hành là ngày, tháng, năm văn bản được thông qua hoặc ký ban hành.
|
02/04/2025 |
Hiệu lực:
|
Đã biết
|
| Người ký: | Đang cập nhật |
Tình trạng hiệu lực:
Cho biết trạng thái hiệu lực của văn bản đang tra cứu: Chưa áp dụng, Còn hiệu lực, Hết hiệu lực, Hết hiệu lực 1 phần; Đã sửa đổi, Đính chính hay Không còn phù hợp,...
|
Đã biết
|
TÓM TẮT TIÊU CHUẨN VIỆT NAM TCVN ISO 19142:2025
Nội dung tóm tắt đang được cập nhật, Quý khách vui lòng quay lại sau!
Tải tiêu chuẩn Việt Nam TCVN ISO 19142:2025
TIÊU CHUẨN QUỐC GIA
TCVN ISO 19142:2025
ISO 19142:2010
THÔNG TIN ĐỊA LÝ - DỊCH VỤ ĐỐI TƯỢNG ĐỊA LÝ TRÊN WEB
Geographic information - Web Feature Service
Mục lục
Lời nói đầu
Lời giới thiệu
1 Phạm vi áp dụng
2 Sự phù hợp
3 Tài liệu viện dẫn
4 Thuật ngữ và định nghĩa
5 Quy ước
5.1 Ký hiệu và chữ viết tắt
5.2 Cách sử dụng các ví dụ
5.3 Lược đồ XML
5.4 Ký hiệu UML
5.4.1 Sơ đồ lớp
5.4.2 Ký hiệu máy trạng thái
6 Phần tử dịch vụ cơ bản
6.1 Giới thiệu
6.2 Thống nhất đánh số phiên bản
6.2.1 Hình thức và giá trị của số phiên bản
6.2.2 Xuất hiện trong siêu dữ liệu dịch vụ và trong các yêu cầu
6.2.3 Thống nhất số phiên bản
6.2.4 Mã hóa yêu cầu
6.2.5 Quy tắc mã hóa tham số KVP
6.3 Không gian tên
6.4 Ràng buộc dịch vụ
7 Phần tử chung
7.1 Mã hóa các đối tượng địa lý
7.2 Định danh tài nguyên
7.2.1 Gán định danh tài nguyên
7.2.2 Mã hóa định danh tài nguyên
7.2.3 Nhận dạng phiên bản
7.3 Tài liệu tham chiếu đặc tính
7.3.1 Tập con XPath
7.3.2 Hàm truy cập
7.4 Mã hóa biểu thức điều kiện
7.5 Báo cáo ngoại lệ
7.6 Thông số yêu cầu chung
7.6.1 Giới thiệu
7.6.2 Loại yêu cầu cơ sở
7.6.3 Các tham số trình bày tiêu chuẩn
7.6.4 Các tham số phân giải tiêu chuẩn
7.6.5 Các thông số đầu vào tiêu chuẩn
7.6.6 Các từ khóa phổ biến bổ sung cho các yêu cầu được mã hóa KVP
7.7 Các tham số phản hồi tiêu chuẩn
7.7.1 Ngữ nghĩa tham số
7.7.2 Mã hóa XML
7.7.3 Mã hóa KVP
7.7.4 Thảo luận tham số
7.8 Sử dụng thuộc tính schemaLocation.
7.9 Biểu thức truy vấn
7.9.1 Giới thiệu
7.9.2 Biểu thức truy vấn tùy chỉnh
7.9.3 Biểu thức truy vấn được lưu trữ
8 Thao tác GetCapabilities
8.1 Giới thiệu
8.2 Lời yêu cầu
8.2.1 Ngữ nghĩa yêu cầu
8.2.2 Mã hóa XML
8.2.3 Mã hóa KVP
8.3 Phản hồi
8.3.1 Ngữ nghĩa phản hồi
8.3.2 Mã hóa XML
8.3.3 Tài liệu năng lực
8.3.4 Phần FeatureTypeList
8.3.5 Miền tham số và ràng buộc
8.4 Các điểm mở rộng
8.5 Ngoại lệ
9 Thao tác DescriptionFeatureType
9.1 Giới thiệu
9.2 Yêu cầu
9.2.1 Yêu cầu ngữ nghĩa
9.2.2 Mã hóa XML
9.2.3 Mã hóa KVP
9.2.4 Thảo luận tham số
9.3 Phản hồi
9.3.1 Giới thiệu
9.3.2 Hỗ trợ nhiều không gian tên
9.4 Ngoại lệ
10 Thao tác GetPropertyValue
10.1 Giới thiệu
10.2 Yêu cầu
10.2.1 Yêu cầu ngữ nghĩa
10.2.2 Mã hóa XML
10.2.3 Mã hóa KVP
10.2.4 Thảo luận tham số
10.3 Phản hồi
10.3.1 Ngữ nghĩa phản hồi
10.3.2 Mã hóa XML
10.3.3 Tham số State
10.3.4 Các tham số đáp ứng tiêu chuẩn
10.4 Ngoại lệ
11 Thao tác GetFeature
11.1 Giới thiệu
11.2 Yêu cầu
11.2.1 Yêu cầu ngữ nghĩa
11.2.2 Mã hóa XML
11.2.3 Mã hóa KVP
11.2.4 Thảo luận tham số
11.3 Phản hồi
11.3.1 Phản hồi ngữ nghĩa
11.3.2 Mã hóa XML
11.3.3 Tham số thảo luận
11.3.4 Đối tượng bổ sung
11.3.5 Phản hồi GetFeatureByld
11.4 Ngoại lệ
12 Thao tác LockFeature
12.1 Giới thiệu
12.2 Yêu cầu
12.2.1 Yêu cầu ngữ nghĩa
12.2.2 Mã hóa XML
12.2.3 Mã hóa KVP
12.2.4 Thảo luận tham số
12.2.5 Máy trạng thái đối với khóa WFS
12.3 Phản hồi
12.3.1 Ngữ nghĩa phản hồi
12.3.2 Mã hóa XML
12.4 Ngoại lệ
13 Thao tác GetFeatureWithLock
13.1 Giới thiệu
13.2 Yêu cầu
13.2.1 Yêu cầu ngữ nghĩa
13.2.2 Mã hóa XML
13.2.3 Mã hóa KVP
13.2.4 Thảo luận tham số
13.2 Phản hồi
13.3.1 Giới thiệu
13.3.2 Tham số lockld
13.4 Ngoại lệ
14 Quản lý truy vấn lưu trữ
14.1 Giới thiệu
14.2 Xác định các truy vấn lưu trữ
14.2.1 Mã hóa XML
14.2.2 Thảo luận tham số
14.3 Thao tác ListStoredQuery
14.3.1 Yêu cầu ngữ nghĩa
14.3.2 Mã hóa XML
14.3.3 Mã hóa KVP
14.3.4 Phản hồi
14.3.5 Ngoại lệ
14.4 Thao tác DescribeStoredQuery
14.4.1 Yêu cầu ngữ nghĩa
14.4.2 Mã hóa XML
14.4.3 Mã hóa KVP
14.4.4 Phản hồi
14.5 Thao tác CreateStoredQuery
14.5.1 Yêu cầu ngữ nghĩa
14.5.2 Mã hóa XML
14.5.3 Mã hóa KVP
14.5.4 Thảo luận tham số
14.5.5 Phản hồi
14.6 Thao tác DropStoredQuery
14.6.1 Yêu cầu ngữ nghĩa
14.6.2 Mã hóa XML
14.6.3 Mã hóa KVP
14.6.4 Phản hồi
14.7 Ngoại lệ
15 Thao tác Transaction
15.1 Giới thiệu
15.2 Yêu cầu
15.2.1 Yêu cầu ngữ nghĩa
15.2.2 Mã hóa XML
15.2.3 Thảo luận về tham số
15.2.4 Thao tác Insert
15.2.5 Thao tác Update
15.2.6 Thao tác Replace
15.2.7 Thao tác Delete
15.2.8 Thao tác Native
15.3 Phản hồi
15.3.1 Phản hồi ngữ nghĩa
15.3.2 Phần tử TransactionResponse
15.3.3 Phần tử TransactionSummary
15.3.4 Phần tử InsertResults
15.3.5 Phần tử UpdateResults
15.3.6 Phần tử Replace Results
15.4 Ngoại lệ
PHỤ LỤC A (Quy định) Kiểm tra sự phù hợp
A.1 Các lớp phù hợp
A. 1.1 WFS đơn giản (Simple WFS)
A. 1.2 WFS cơ bản (Basic WFS)
A.1.3 WFS giao dịch (Transactional WFS)
A. 1.4 Khóa WFS (Locking WFS)
A.1.5 HTTP GET
A.1.6 HTTP POST
A.1.7 SOAP
A.1.8 Thừa kế (Inheritance)
A.1.9 Phân giải từ xa (Remote resolve)
A.1.10 Phân trang phản hồi (Response paging)
A.1.11 Kết hợp tiêu chuẩn (Standard joins)
A.1.12 Kết hợp không gian (Spatial joins)
A.1.13 Kết hợp tạm thời (Temporal joins)
A.1.14 Phiên bản đối tượng địa lý (Feature versions)
A.1.15 Quản lý lưu trữ truy vấn (Manage stored queries)
A.2 Thử nghiệm cơ bản (Basic tests)
A.2.1 Đàm phán phiên bản (Version Negotiation)
A.2.2 Liệt kê phiên bàn 2.0.0 dưới dạng số phiên bản yêu cầu được hỗ trợ
A.2.3 Số phiên bản không hợp lệ
A2.4 Đàm phán phiên bản cho yêu cầu GetCapabilities
A.2.5 Phản hồi các yêu cầu được mã hóa XML và KVP
A.2.6 Thứ tự tham số và trường hợp
A.2.7 Các tham số không được nhận dạng
A.2.8 Máy chủ hoạt động trên các đối tượng địa lý GML
A.2.9 Định danh đối tượng địa lý (Feature identifiers)
A.2.10 Định danh bất biến (Invariant identifier)
A. 2.11 Phiên bản (Versioning)
A.2.12 Tập conXPath
A.2.13 Mã hóa điều kiện (Predicate encoding)
A. 2.14 Báo cáo ngoại lệ (Exception reporting)
A.2.15 Các tham số yêu cầu chung
A.2.16 Các thông số trình bày tiêu chuẩn
A.2.17 Các tham số phản hồi tiêu chuẩn
A.2.18 Thông số đầu vào tiêu chuẩn
A.2.19 Tham số đáp ứng tiêu chuẩn
A.2.20 Phân trang phản hồi
A.2.21 Tham số schemaLocation
A.2.22 Biểu thức truy vấn (Query expressions)
A. 2.23 Công bố sự phù hợp (Declaring conformance)
Phụ lục B (Tham khảo) Ví dụ
B.1 Ví dụ về báo cáo ngoại lệ
B.2 Các ví dụ về DescribeFeatureType
B.2.1 Ví dụ 1
B.2.2 Ví dụ 2
B.3 Các ví dụ về GetFeature
B.3.1 Giới thiệu
B.3.2 Ví dụ 1
B.3.3 Ví dụ 2
B.3.4 Ví dụ 3
B.3.5 Ví dụ 4
B.3.6 Ví dụ 5
B.3.7 Ví dụ 6
B.3.8 Ví dụ 7
B.3.9 Ví dụ 8
B.3.10 Ví dụ 9
B.3.11 Ví dụ 10
B.3.12 Ví dụ 11
B.3.13 Ví dụ 12
B.3.14 Ví dụ 13
B.3.15 Ví dụ 14
B.3.16 Ví dụ 15
B.3.17 Ví dụ 16
B.3.18 Ví dụ 17
B.3.19 Ví dụ 18
B.3.20 Ví dụ 19
B.4 Các ví dụ về GetPropertyValue
B.4.1 Giới thiệu
B.4.2 Ví dụ 1
B.4.3 Ví dụ 2
B.4.4 Ví dụ 3
B.4.5 Ví dụ 4
B.4.6 Ví dụ 5
B.4.7 Ví dụ 6
B.4.8 Ví dụ 7
B.4.9 Ví dụ 8
B.4.10 Ví dụ 9
B.5 Ví dụ về LockFeature
B.5.1 Ví dụ 1
B.5.2 Ví dụ 2
B.5.3 Ví dụ 3
B.5.4 Ví dụ 4
B.6 Ví dụ về Transaction
B.6.1 Ví dụ về thêm mới
B.6.2 Ví dụ về cập nhật
B.6.3 Ví dụ về xóa
B.6.4 Ví dụ về giao dịch hỗn hợp
B.6.5 Ví dụ phản hồi giao dịch
B.7 Ví dụ về GetCapabilities
B.8 Các ví dụ về KVP
B.8.1 Quy ước
B.8.2 Các ví dụ về DescribeFeatureType
B.8.3 Các ví dụ về GetPropertyValue
B.8.4 Các ví dụ về GetFeature
B.8.5 Các ví dụ về LockFeature
Phụ lục C (Tham khảo) Lược đồ XML hợp nhất
C.1 Giới thiệu
C.2 wfs.xsd
PHỤ LỤC D (Quy định) Ràng buộc dịch vụ
D.1 Giới thiệu
D.2 Ràng buộc HTTP GET và POST
D.3 Mã trạng thái HTTP
D. 4 Ràng buộc SOAP
D.4.1 Giới thiệu
D.4.2 SOAP Envelope
D.4.3 SOAP Header
D.4.4 SOAP Body
D.4.5 Mã hóa XML Schema trong phần SOAP Body
D.4.6 SOAP Fault
D. 4.7 Ràng buộc HTTP SOAP
PHỤ LỤC E (Quy định) Ngôn ngữ mô tả dịch vụ web (WSDL)
E.1 Giới thiệu
E.2 Thao tác của WFS trong WSDL
E.3 Ràng buộc SOAP
E.4 Binding style
E.5 Dịch vụ
E.6 Mô tả dịch vụ sử dụng WSDL
E.6.1 Giới thiệu
E.6.2 wfs-xml-interfaces.wsdl
E.6.3 wfs-kvp-bindings.wsdl
E.6.4 wfs-responses.wsdl
E.6.5 wfs-htip-bindings.wsdl
E.6.6 wfs-kvp-bindings.wsdl
E.6.7 wfs-soap-bindings.wsdl
E.6.8 Tệp bổ trợ
E.6.9 Ví dụ (Tham khảo)
PHỤ LỤC F (Tham khảo) Mô hình trừu tượng
F.1 Tổng quan
F.2 Mô hình tài nguyên trừu tượng
F.2.1 Giới thiệu
F.2.2 Các hàm truy cập cơ bản
F.3 Ánh xạ của Mô hình Đối tượng Tổng quan (General Feature Model - GFM) đến Mô hình Trừu tượng dịch vụ đối tượng địa lý trên web (WFS Abstract Model)
F.4 Định danh
F.5 Hàm valueOf()
F.6 Vận hành WFS
F.6.1 Giới thiệu
F.6.2 Hàm featureTypeNameList()
F.6.3 Hàm featureType()
F.6.4 Hàm Query
F.6.5 Hàm propertyValue()
F.6.6 Hàm lock()
F.6.7 Hàm transaction()
F.6.8 Các thao tác truy vấn lưu trữ
F.7 Thao tác WFS
F.8 Lược đồ khái niệm
Thư mục tài liệu tham khảo
Danh mục hình
Hình 1 - Ký hiệu UML trong sơ đồ lớp
Hình 2 - Tóm tắt các ký hiệu sơ đồ trạng thái UML
Hình 3 - BaseRequest
Hình 4 - StandardPresentationParameters
Hình 5 - StandardResolveParameters
Hình 6 - StandardInputParameters
Hình 7 - StandardResponseParameters
Hình 8 - Biểu thức truy vấn tùy chỉnh
Hình 9 - Mệnh đề hệ quy chiếu truy vấn
Hình 10 - Mệnh đề sắp xếp truy vấn
Hình 11 - StoredQuery
Hình 12 - Yêu cầu GetCapabilities
Hình 13 - Phản hồi GetCapabilities
Hình 14 - Yêu cầu DescriptionFeatureType
Hình 15 - Yêu cầu GetPropertyValue
Hình 16 - Phản hồi GetPropertyValue
Hình 17 - Yêu cầu GetFeature
Hình 18 - Phản hồi GetFeature
Hình 19 - Yêu cầu LockFeature
Hình 20 - Mô hình trạng thái đối với khóa WFS
Hình 21 - Phản hồi LockFeature
Hình 22 - Yêu cầu GetFeatureWithLock
Hình 23 - Yêu cầu ListStoredQueries
Hình 24 - ListStoredQueriesResponse
Hình 25 - Yêu cầu DescribeStoredQueries
Hình 26 - DescriptionStoredQueriesResponse
Hình 27 - Yêu cầu CreateStoredQuery
Hình 28 - Phân hồi CreateStoredQuery
Hình 29 - Yêu cầu DropStoredQuery
Hình 30 - Yêu cầu Transaction
Hình 31 - Phản hồi Transaction
Hình F.1 - Tổng quan Giao diện dịch vụ đối tượng địa lý trên web
Danh mục bảng
Bảng 1 - Các lớp phù hợp
Bảng 2 - Mã hóa yêu cầu thao tác
Bảng 3 - Mã ngoại lệ WFS
Bảng 4 - Mã hóa KVP của loại yêu cầu cơ sở
Bảng 5 - Mã hóa KVP của các tham số trình bày tiêu chuẩn
Bảng 6 - Mã hóa KVP của các tham số phản hồi tiêu chuẩn
Bảng 7 - Các từ khóa phổ biến bổ sung cho các yêu cầu WFS được mã hóa KVP
Bảng 8 - Từ khóa cho mã hóa KVP truy vấn tùy chỉnh
Bảng 9 - Mã hóa KVP của hệ quy chiếu
Bảng 10 - Từ khóa cho mã hóa KVP truy vấn được lưu trữ
Bảng 11- Các phần tử để mô tả các loại đối tượng địa lý
Bảng 12 - Miền tham số cho thao tác WFS
Bảng 13 - Các ràng buộc về dịch vụ
Bảng 14 - Các ràng buộc vận hành
Bảng 15 - DescribeFeatureType Mã hóa KVP
Bảng 16 - Từ khóa cho mã hóa GetPropertyValue KVP
Bảng 17 - Từ khóa cho mã hóa GetFeature KVP
Bảng 18 - Từ khóa cho mã hóa LockFeature KVP
Bảng 19 - Các từ khóa bổ sung cho mã hóa GetFeatureWithLock KVP
Bảng 20 - Từ khóa cho ListStoredQueries KVP-encoding
Bảng 21 - Từ khóa cho mã hóa DescribeStoredQueries KVP
Bảng 22 - Từ khóa cho mã hóa DropStoredQuery KVP
Bảng D.1 - Yêu cầu thao tác mã hóa và truyền nhận
Bảng D.2 - Tương quan mã ngoại lệ OWS và WFS với mã trạng thái HTTP
Bảng F.1 - Ánh xạ các hoạt động trong Mô hình Trừu tượng của WFS sang các thao tác của WFS .
Lời nói đầu
TCVN ISO 19142:2025 hoàn toàn tương đương ISO 19142:2010 Geographic information - Web Feature Service.
TCVN ISO 19142:2025 do Cục Chuyển đổi số và Thông tin dữ liệu tài nguyên môi trường biên soạn, Bộ Tài nguyên và Môi trường đề nghị, Bộ Khoa học và Công nghệ thẩm định, công bố.
Lời giới thiệu
Dịch vụ đối tượng địa lý trên web (WFS) thể hiện sự thay đổi trong cách tạo, sửa đổi và trao đổi thông tin địa lý trên Internet. Chẳng hạn, thay vì chia sẻ thông tin địa lý ở dạng tệp bằng Giao thức truyền tệp (FTP), WFS cung cấp quyền truy cập chi tiết trực tiếp vào thông tin địa lý ở cấp đối tượng địa lý và đặc tính đối tượng địa lý. Các dịch vụ đối tượng địa lý trên web cho phép máy khách chỉ truy xuất hoặc sửa đổi dữ liệu đang tìm kiếm, thay vì truy xuất tệp chứa dữ liệu đang tìm kiếm và có thể nhiều hơn nữa. Dữ liệu sau đó có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm các mục đích khác với mục đích của nhà sản xuất.
Trong phân loại dịch vụ được xác định trong ISO 19119, WFS chủ yếu là dịch vụ truy cập đối tượng địa lý nhưng cũng bao gồm các phần tử của dịch vụ loại đối tượng địa lý, dịch vụ chuyển đổi/chuyển đổi tọa độ và dịch vụ chuyển đổi định dạng địa lý.
THÔNG TIN ĐỊA LÝ - DỊCH VỤ ĐỐI TƯỢNG ĐỊA LÝ TRÊN WEB
Geographic information - Web Feature Service
1 Phạm vi áp dụng
Tiêu chuẩn này quy định cách hoạt hông của một dịch vụ đối tượng địa lý trên web để cung cấp các giao dịch và truy cập vào các đối tượng địa lý theo cách độc lập với kho lưu trữ dữ liệu cơ sở. Tiêu chuẩn này quy định các thao tác khám phá, thao tác truy vấn, thao tác khóa, thao tác giao dịch và các thao tác để quản lý các biểu thức truy vấn tham số hóa đã lưu.
Các thao tác khám phá cho phép dịch vụ được truy vấn để xác định khả năng của nó và truy xuất lược đồ ứng dụng xác định các loại đối tượng địa lý mà dịch vụ cung cấp.
Các thao tác truy vấn cho phép các đối tượng địa lý hoặc giá trị của các đặc tính đối tượng địa lý được truy xuất từ kho lưu trữ dữ liệu cơ bản dựa trên các ràng buộc do máy khách xác định trên các đặc tính đối tượng địa lý.
Các thao tác khóa cho phép truy cập độc quyền vào các đối tượng địa lý nhằm mục đích sửa đổi hoặc xóa các đối tượng địa lý.
Các thao tác giao dịch cho phép các đối tượng địa lý được tạo, thay đổi, thay thế và xóa khỏi kho lưu trữ dữ liệu cơ bản.
Các thao tác truy vấn được lưu trữ cho phép máy khách tạo, xóa, liệt kê và mô tả các biểu thức truy vấn được tham số hóa do máy chủ lưu trữ và có thể được gọi nhiều lần bằng cách sử dụng các giá trị tham số khác nhau.
CHÚ THÍCH: Tiêu chuẩn này không đề cập đến các vấn đề kiểm soát truy cập.
Tiêu chuẩn này định nghĩa 11 thao tác:
- GetCapabilities (thuộc nhóm thao tác khám phá);
- DescribeFeatureType (thuộc nhóm thao tác khám phá);
- GetPropertyValue (thuộc nhóm thao tác truy vấn);
- GetFeature (thuộc nhóm thao tác truy vấn);
- LockFeature (thuộc nhóm thao tác khóa);
- GetFeatureWithLock (thuộc nhóm thao tác truy vấn và khóa);
- Transaction (thuộc nhóm thao tác giao dịch);
- CreateStoredQuery (thuộc nhóm thao tác truy vấn được lưu trữ);
- DropStoredQuery (thuộc nhóm thao tác truy vấn được lưu trữ);
- ListStoredQueries (thuộc nhóm thao tác truy vấn được lưu trữ);
- DescribeStoredQueries (thuộc nhóm thao tác truy vấn được lưu trữ).
2 Sự phù hợp
Bảng 1 chỉ định các lớp phù hợp được xác định bởi Tiêu chuẩn này và các thử nghiệm được chỉ định trong Phụ lục A phải được đáp ứng để tuân thủ theo từng loại.
Bảng 1 cũng liệt kê những điều sau đây:
a) Các kiểm tra phù hợp mã hóa bộ lọc (xem ISO 19143:2010, Điều 2), nếu có, cần phải được thỏa mãn với từng lớp phù hợp WFS.
b) Nếu có, các kiểm tra phù hợp GML (xem TCVN 12155:2018) cần phải được thỏa mãn với từng lớp phù hợp WFS.
Bảng 1 - Các lớp phù hợp
| Tên lớp phù hợp | Thao tác hoặc hành vi | Kiểm tra phù hợp WFS | Các bài kiểm tra phù hợp FES | Các bài kiểm tra phù hợp GML |
| Simple WFS | Máy chủ sẽ thực hiện các thao tác sau: thao tác GetCapabilities, DescripfeatureType, ListStoredQueries, DescripStoredQueries, GetFeature với ít nhất có hành động StoredQuery. Một truy vấn được lưu trữ tìm nạp một đối tượng bằng cách sử dụng id của nó sẽ khả dụng, nhưng máy chủ cũng có thể cung cấp các truy vấn được lưu trữ bổ sung. Ngoài ra, máy chủ phải tuân thủ ít nhất một trong các lớp phù hợp HTTP GET, HTTP POST hoặc SOAP. | A.1.1 | ISO 19143:2010, A.1 | TCVN 12155:2018, A.1.1, A.1.4, A.1.5, A.1.7, B.3, B. 5, B.2.3. |
| Basic WFS | Máy chủ sẽ triển khai lớp phù hợp Basi WFS và sẽ triển khai thêm thao tác GetFeature với thao tác Query và thao tác GetPropertyValue. | A.1.2 | ISO 19143:2010, A.2, A.7, A.8, A.10, A.11, A.12, A.14 | TCVN 12155:2018, B4 |
| Transactional WFS | Máy chủ sẽ triển khai lớp phù hợp Basic WFS và cũng sẽ triển khai thao tác Transaction. | A.1.3 |
|
|
| Locking WFS | Máy chủ sẽ triển khai lớp phù hợp lớp Transactional WFS và sẽ triển khai ít nhất một trong các thao tác GetFeatureWithLock hoặc LockFeature. | A.1.4 |
|
|
| HTTP GET | Máy chủ sẽ triển khai mã hóa cặp Khóa - giá trị cho các thao tác mà máy chủ cung cấp. | A.1.5 |
|
|
| HTTP POST | Máy chủ sẽ triển khai mã hóa XML cho các thao tác mà máy chủ thực hiện. | A.1.6 |
|
|
| SOAP | Máy chủ sẽ triển khai các yêu cầu và kết quả được mã hóa XML trong gói SOAP. | A.1.7 |
|
|
| Inheritance | Máy chủ sẽ triển khai hàm schema- element() cho các biểu thức XPath. | A.1.8 | ISO 19143:2010, A.15 |
|
| Remote resolve | Máy chủ sẽ triển khai khả năng phân giải các tham chiếu tài nguyên bên ngoài. | A.1.9. |
| TCVN 12155:2018, B.2.1 |
| Response paging | Máy chủ sẽ triển khai khả năng phân trang thông qua tập hợp các đối tượng hoặc giá trị phản hồi. | A.1.10 |
| TCVN 12155:2018, B.3 |
| Standard joins | Máy chủ sẽ triển khai các điều kiện kết hợp bằng cách sử dụng tất cả các toán tử Filter ngoại trừ các toán tử không gian và thời gian. | A.1.11 | ISO 19143:2010, A.8, A.10 |
|
| Spatial joins | Máy chủ sẽ triển khai các điều kiện kết hợp bằng cách sử dụng các toán tử không gian. | A.1.12 | ISO 19143:2010, A.11, A.12 |
|
| Temporal joins | Máy chủ sẽ triển khai các điều kiện kết hợp bằng cách sử dụng các toán tử thời gian. | A.1.13 | ISO 19143:2010, A.9, A.10 |
|
| Feature versions | Máy chủ sẽ triển khai khả năng điều hướng các phiên bản đối tượng địa lý. | A.1.14 | ISO 19143:2010, A 11 |
|
| Manage stored queries | Máy chủ sẽ triển khai các thao tác CreateStoredQuery và DropStoredQuery. | A.1.15 | ISO 19143:2010, A.1 |
|
3 Tài liệu viện dẫn
Các tài liệu viện dẫn dưới đây là cần thiết cho việc áp dụng tiêu chuẩn này. Đối với các tài liệu ghi năm công bố thì áp dụng phiên bản được nêu. Đối với các tài liệu không ghi năm công bố thì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi, bổ sung (nếu có).
TCVN 12155:2018 (ISO 19136:2007), về Thông tin địa lý - Khuôn thức trao đổi dữ liệu địa /ý;
ISO/TS 19103:2005, Geographic information - Conceptual schema language; Thông tin địa lý- Ngôn ngữ lược đồ khái niệm;
ISO 19143:2010, Geographic information - Filter encoding; Thông tin địa lý- Mã hóa bộ lọc;
IETF RFC 2616, Hypertext Transfer Protocol - HTTP/1.1 (June 1999); Giao thức truyền tải siêu văn bản - HTTP/1.1;
IETF RFC 4646, Tags for Identifying Languages (September 2006); Nhãn để xác định ngôn ngữ,
OGC 06-121r3, OGC Web Services Common Specification, OGC® Implementation Specification (9 February 2009); Đặc tả chung của Dịch vụ Web OGC, Đặc tả triển khai OGC®;
OGC 07-092r3, Definition identifier URNs in OGC namespace, OGC® Best Practices (15 January 2009); Định nghĩa các URN định danh trong không gian tên OGC, Thực hành tốt nhất OGC®;
W3C SOAP, Simple Object Access Protocol (SOAP) 1.2, W3C Note (27 April 2007); Giao thức truy cập đối tượng đơn giản (SOAP) 1.2, Tài liệu W3C;
W3C WSDL, Web Services Description Language (WSDL) 1.1, W3C Note (15 March 2001); Ngôn ngữ mô tả dịch vụ Web (WSDL) 1.1, Tài liệu W3C;
W3C XML Namespaces, Namespaces in XML, W3C Recommendation (14 January 1999); Không gian tên trong XML, Khuyến nghị W3C;
W3C XML Path Language, XML Path Language (XPath) 2.0, W3C Recommendation (23 January 2007); Ngôn ngữ đường dẫn XML (XPath) 2.0, Khuyến nghị W3C;
W3C XML Schema Part 1, XML Schema Part 1: Structures, W3C Recommendation (2 May 2001); Lược đồ XML Phần 1: Cấu trúc, Khuyến nghị W3C;
W3C XML Schema Part 2, XML Schema Part 2: Datatypes, W3C Recommendation (2 May 2001); Lược đồ XML Phần 2: Kiểu dữ liệu, Khuyến nghị W3C.
4 Thuật ngữ và định nghĩa
Tiêu chuẩn này sử dụng các thuật ngữ và định nghĩa sau đây.
4.1
Thuộc tính <XML> (attribute <XML>)
Cặp tên-giá trị có trong một phần tử (4.6)
[TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.3, có sửa đổi]
CHÚ THÍCH: Trong Tiêu chuẩn này, một thuộc tính là một thuộc tính XML trừ khi có quy định khác.
4.2
Máy khách (Client)
Hợp phần phần mềm có thể gọi một thao tác (4.17) từ máy chủ (4.28).
[TCVN 12266:2018]
4.3
Tọa độ (coordinate)
Một trong chuỗi n con số xác định vị trí của một điểm trong không gian n chiều.
[TCVN 12155:2018, định nghĩa 4.1.12]
4.4
Hệ quy chiếu tọa độ (coordinate reference system)
Hệ tọa độ (4.5) có quan hệ với đối tượng thông qua tham số hoặc tập tham số định nghĩa vị trí điểm gốc, tỷ lệ và hướng của hệ toạ độ (các tham số, hoặc tập tham số được gọi là datum).
[TCVN 12155:2018, định nghĩa 4.1.13]
4.5
Hệ tọa độ (coordinate system)
Tập qui tắc toán học để xác định các tọa độ (4.3) sẽ được quy thành các điểm như thế nào.
[TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.14]
4.6
Phần tử <XML> (element <XML>)
Mục thông tin cơ bản của một tài liệu XML có chứa các phần tử con, thuộc tính và dữ liệu ký tự.
[TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.23]
4.7
Đối tượng địa lý (feature)
Trừu tượng hóa các hiện tượng trong thế giới thực [ISO 19101:2002, định nghĩa 4.11]
CHÚ THÍCH: Một đối tượng địa lý có thể xuất hiện dưới dạng một loại hoặc một thể hiện. Thuật ngữ "loại đối tượng" hoặc "thể hiện đối tượng" nên được sử dụng khi chỉ có một ý nghĩa.
4.8
Định danh đối tượng địa lý (feature identifier)
Mã định danh chỉ định duy nhất một thể hiện đối tượng địa lý (4.7)
4.9
Biểu thức lọc (filter expression)
Biểu thức lọc dữ liệu được mã hóa bằng XML
[ISO 19143:2010, định nghĩa 4.11]
4.10
Giao diện (interface)
Tập hợp các thao tác (4.17) được đặt tên đặc trưng cho hành vi của một thực thể
[ISO 19119:2005, định nghĩa 4.2]
4.11
Điều kiện kết hợp (join predicate)
Biểu thức lọc (4.9) bao gồm một hoặc nhiều mệnh đề ràng buộc các đặc tính từ hai loại thực thể khác nhau
[ISO 19143:2010, định nghĩa 4.16]
CHÚ THÍCH: Trong Tiêu chuẩn này, các loại thực thể sẽ là các loại đối tượng (4,7).
4.12
Bộ dữ liệu kết hợp (join tuple)
Tập hợp hai hoặc nhiều thể hiện đối tượng đáp ứng bộ lọc bao gồm các điều kiện kết hợp (4.11)
CHÚ THÍCH: Trong Tiêu chuẩn này, các thể hiện đối tượng phải là các thể hiện đối tượng địa lý (4.7).
4.13
Tài nguyên cục bộ (local resource)
Tài nguyên nằm dưới sự kiểm soát trực tiếp của một hệ thống
CHÚ THÍCH: Trong Tiêu chuẩn này, hệ thống là một dịch vụ đối tượng địa lý trên web và tài nguyên được lưu trữ trong một kho lưu trữ dữ liệu được kiểm soát trực tiếp bởi dịch vụ đó.
4.14
Thuộc tính định vị (locator attribute)
Thuộc tính (4.1) có giá trị là tham chiếu đến tài nguyên cục bộ (4.13) hoặc tài nguyên bên. ngoài (4.20)
CHÚ THÍCH: Trong XML, thuộc tính này thường được gọi là href và chứa tham chiếu URI tới tài nguyên bên ngoài (xem W3C XLink).
4.15
Phần mở rộng thư điện tử đa mục tiêu (MIME) (Multipurpose Internet Mail Extensions (MIME) type)
Loại phương tiện và loại phụ của dữ liệu trong phần nội dung của thông báo chỉ định cách biểu diễn gốc (dạng chính tắc) của dữ liệu đó
[IETF RFC 2045:1996]
4.16
Không gian tên <XML> (namespace <XML>)
Tập hợp các tên, được xác định bởi một tham chiếu URI, được sử dụng trong các tài liệu XML dưới dạng tên phần tử (4.6) và tên thuộc tính (4.1)
[W3C XML Namespaces: 1999]
4.17
Thao tác (operation)
Mô tả một phép biến đổi hoặc truy vấn mà một đối tượng có thể được gọi để thực thi
[ISO 19119:2005, định nghĩa 4.3]
4.18
Đặc tính (property)
Khía cạnh hoặc thuộc tính của một đối tượng, được tham chiếu bởi một tên
[TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.49, có sửa đổi]
4.19
Tài nguyên (resource)
Tài sản hoặc phương tiện đáp ứng yêu cầu
[ISO 19115:2003, định nghĩa 4.10]
CHÚ THÍCH: Trong Tiêu chuẩn này, tài nguyên là một đối tượng địa lý (4.7) hoặc bất kỳ thành phần có thể nhận dạng nào của đối tượng địa lý (ví dụ: đặc tính của đối tượng địa lý).
4.20
Tài nguyên bên ngoài (remote resource)
Tài nguyên không nằm dưới sự kiểm soát trực tiếp của một hệ thống
CHÚ THÍCH: Trong Tiêu chuẩn này, hệ thống là một dịch vụ đối tượng địa lý trên web. Tài nguyên không được giữ trong bất kỳ kho lưu trữ dữ liệu nào được kiểm soát trực tiếp bởi dịch vụ đó và do đó dịch vụ không thể truy xuất trực tiếp.
4.21
Yêu cầu (Request)
Yêu cầu của thao tác (4.17) bởi máy khách (4.2)
[ISO 19128:2005, định nghĩa 4.10]
4.22
Di dời (relocate)
Cập nhật tham chiếu <reference> tới tài nguyên đã được di chuyển hoặc sao chép tới vị trí mới
VÍ DỤ: Một máy chủ (4.28) đang tạo phản hồi (4.24) cho yêu cầu (4.21) GetFeature, nó phải sao chép một đối tượng địa lý (4.7) được tham chiếu vào tài liệu phản hồi và máy chủ phải "di dời" liên kết ban đầu có trong tài liệu tham khảo đối tượng cho bản sao được đặt trong tài liệu phản hồi.
4.23
Phân giải (resolve)
Truy xuất tài nguyên được tham chiếu và thêm mới tài nguyên đó vào tài liệu phản hồi do máy chủ tạo
CHÚ THÍCH: Việc thêm mới có thể được thực hiện bằng cách thay thế tham chiếu nội tuyến bằng một bản sao của tài nguyên hoặc bằng cách di dời tham chiếu để trỏ đến một bản sao của tài nguyên đã được đặt trong tài liệu phản hồi.
4.24
Phản hồi (response)
Kết quả của thao tác (4.17) được trả về từ máy chủ (4.28) cho máy khách (4.2)
[ISO 19128:2005, định nghĩa 4.11]
4.25
Mô hình phản hồi (response model)
Lược đồ (4.26) xác định các đặc tính của từng loại đối tượng địa lý (4.7) có thể xuất hiện trong phản hồi (4.24) cho thao tác (4.17) truy vấn
CHÚ THÍCH: Đây là lược đồ các loại đối tượng mà máy khách (4.2) có thể nhận được bằng thao tác DescribeFeatureType (xem Điều 9).
4.26
Lược đồ (schema)
Mô tả hình thức của một mô hình [ISO 19101:2002, định nghĩa 4.25]
CHÚ THÍCH: Nói chung, một lược đồ là một biểu diễn trừu tượng về các thuộc tính của một đối tượng và các mối quan hệ với các đối tượng khác. Một lược đồ XML biểu thị mối quan hệ giữa các thuộc tính (4.1) và các phần tử (4.6) của một đối tượng XML (ví dụ: một tài liệu hoặc một phần của tài liệu).
4.27
Lược đồ <Lược đồ XML> (schema <XML Schema>)
Tập các thành phần lược đồ (4.26) trong không gian tên cùng một mục tiêu (4.16)
[TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.54]
VÍ DỤ: Thành phần lược đồ của lược đồ W3C XML là các kiểu, các phần tử, các thuộc tính, các nhóm...
4.28
Máy chủ (server)
Trường hợp cụ thể của một dịch vụ (4.29)
[ISO 19128:2005, định nghĩa 4.12]
4.29
Dịch vụ (service)
Phần riêng biệt của chức năng được cung cấp bởi một thực thể thông qua các giao diện (4.10)
[ISO 19119:2005, định nghĩa 4.1]
4.30
Siêu dữ liệu dịch vụ (service metadata)
Siêu dữ liệu mô tả các thao tác (4.17) và thông tin địa lý có sẵn tại máy chủ (4.28)
[ISO 19128:2005, định nghĩa 4.14]
4.31
Duyệt <XML> (traversal <XML>)
Sử dụng hoặc theo liên kết XLink cho bất kỳ mục đích nào
[W3C XLink:2001]
4.32
Bộ dữ liệu (Tuple)
Danh sách các giá trị được sắp xếp theo thứ tự
[TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.63]
CHÚ THÍCH: Trong tiêu chuẩn này, danh sách được sắp xếp nói chung sẽ là một chuỗi hữu hạn các đối tượng (4.7), mỗi đối tượng thuộc một loại đối tượng cụ thể.
4.33
Định danh tài nguyên thống nhất (Uniform Resource Identifier - URI)
Định danh duy nhất cho một tài nguyên, cấu trúc phù hợp với IETF RFC 2396 [TCVN 12155:2018 (ISO 19136:2007), định nghĩa 4.1.65]
CHÚ THÍCH: Cú pháp chung là <scheme>::<scheme-specified-part>. Cú pháp phân cấp với không gian tên (4.16) là <scheme>://<authority><path>?<query>.
5 Quy ước
5.1 Ký hiệu và chữ viết tắt
| CGI | Common Gateway Interface | Giao diện cổng chung |
| CRS | Coordinate Reference System | Hệ quy chiếu tọa độ |
| DCP | Distributed Computing Platform | Nền tảng điện toán phân tán |
| EPSG | European Petroleum Survey Group | Tập đoàn Khảo sát Dầu khí Châu Âu |
| FES | Filter Encoding Specification | Thông số kỹ thuật mã hóa bộ lọc |
| GML | Geography Markup Language | Ngôn ngữ đánh dấu địa lý |
| HTTP | Hypertext Transfer Protocol | Giao thức truyền siêu văn bản |
| HTTPS | Secure Hypertext Transfer Protocol | Giao thức truyền siêu văn bản an toàn |
| IETF | Internet Engineering Task Force | Lực lượng đặc nhiệm kỹ thuật Internet |
| KVP | Keyword-value pairs | Cặp từ khóa-giá trị |
| MIME | Multipurpose Internet Mail Extensions | Phần mở rộng thư điện tử đa mục tiêu |
| OGC | Open Geospatial Consortium | Hiệp hội không gian địa lý mở |
| OWS | OGC Web Service | Dịch vụ web OGC |
| SQL | Structured Query Language | Ngôn ngữ truy vấn có cấu trúc |
| SOAP | Simple Object Access Protocol | Giao thức truy cập đối tượng đơn giản |
| UML | Unified Modelling Language | Ngôn ngữ mô hình hóa thống nhất |
| URI | Uniform Resource Identifier | Định danh tài nguyên thống nhất |
| URL | Uniform Resource Locator | Trình định vị tài nguyên thống nhất |
| URN | Uniform Resource Name | Tên tài nguyên thống nhất |
| VSP | Vendor Specific Parameter | Thông số cụ thể của nhà cung cấp |
| WFS | Web Feature Service | dịch vụ đối tượng địa lý trên web |
| WSDL | Web Services Description Language | Ngôn ngữ mô tả dịch vụ web |
| XML | Extensible Markup Language | Ngôn ngữ đánh dấu mở rộng |
5.2 Cách sử dụng các ví dụ
Tiêu chuẩn này sử dụng rộng rãi các ví dụ XML. Các ví dụ này nhằm minh họa các khía cạnh khác nhau của dịch vụ đối tượng địa lý trên web được quy định trong Tiêu chuẩn này. Phần lớn các ví dụ có thể được tìm thấy trong Phụ lục B với một số ví dụ được nhúng trong phần nội dung của thông số kỹ thuật. Tất cả các ví dụ tham khảo các máy chủ và dữ liệu hư cấu. Do đó, Tiêu chuẩn này không khẳng định rằng bất kỳ ví dụ mã hóa XML hoặc cặp từ khóa-giá trị nào, được sao chép từ Tiêu chuẩn này, nhất thiết sẽ thực thi chính xác hoặc xác thực bằng cách sử dụng một công cụ xác thực XML cụ thể.
5.3 Lược đồ XML
Trong toàn bộ Tiêu chuẩn này, các đoạn Lược đồ XML (xem Lược đồ XML W3C Phần 1 và Lược đồ XML W3C Phần 2) được sử dụng để xác định mã hóa XML của các thao tác WFS. Các đoạn này được tập hợp thành một tệp lược đồ đã được xác thực duy nhất trong Phụ lục C.
5.4 Ký hiệu UML
5.4.1 Sơ đồ lớp
Hình 1 mô tả các ký hiệu Ngôn ngữ mô hình hóa thống nhất (UML) được sử dụng trong Tiêu chuẩn này chỗ sơ đồ lớp UML.


Hình 1 - Ký hiệu UML trong sơ đồ lớp
Trong các sơ đồ lớp này, các khuôn mẫu sau của các lớp UML được sử dụng:
a) «DataType» Một bộ mô tả của một tập hợp các giá trị thiếu danh tính (tồn tại độc lập và có khả năng xảy ra trạng thái không mong muốn). DataType là một lớp không có thao tác nào, với mục đích chính là lưu giữ thông tin.
b) «Enumeration» Một loại dữ liệu có các thể hiện tạo thành một danh sách các giá trị bằng chữ thay thế. Liệt kê có nghĩa là một danh sách ngắn các giá trị tiềm năng được hiểu rõ trong một lớp.
c) «CodeList» Một phép liệt kê linh hoạt để thể hiện một danh sách dài các giá trị thay thế tiềm năng. Nếu các lựa chọn thay thế danh sách đã được biết đầy đủ, một phép liệt kê sẽ được sử dụng; nếu các lựa chọn thay thế duy nhất có khả năng được biết, một danh sách mã sẽ được sử dụng.
d) «lnterface» Định nghĩa về một tập hợp các thao tác được hỗ trợ bởi các đối tượng có giao diện này. Một lớp Giao diện không thể chứa bất kỳ thuộc tính nào.
đ) «Type» Một lớp rập khuôn được sử dụng để đặc tả một miền các thể hiện (đối tượng), cùng với các thao tác áp dụng cho các đối tượng. Một lớp Type có thể có các thuộc tính và liên kết.
e) «Union» Một danh sách các thuộc tính thay thế trong đó chỉ một trong các thuộc tính đó có thể xuất hiện bất cứ lúc nào.
Xem thêm ISO/TS 19103:2005, 6.8.2 và D.8.3.
Trong tiêu chuẩn này, các kiểu dữ liệu tiêu chuẩn sau đây được sử dụng;
1) Characterstring - Một dãy ký tự;
2) Localised Characterstring - Một chuỗi ký tự được liên kết với một ngôn ngữ bản địa;
3) Boolean - Một giá trị chỉ định TRUE hoặc FALSE;
4) URI - Mã định danh của tài nguyên cung cấp thêm thông tin;
5) Integer - Một số nguyên.
5.4.2 Ký hiệu máy trạng thái
Cách tiếp cận mô hình động được sử dụng là cách được mô tả trong Sách hướng dẫn tham chiếu UML. Kỹ thuật chính là chế độ xem máy trạng thái. Một bản tóm tắt về ký hiệu UML chỗ sơ đồ trạng thái được hiển thị trong Hình 2.

Hình 2 - Tóm tắt các ký hiệu sơ đồ trạng thái UML
6 Phần tử dịch vụ cơ bản
6.1 Giới thiệu
Điều khoản này mô tả các khía cạnh về hành vi của dịch vụ đối tượng địa lý trên web độc lập với các thao tác cụ thể hoặc chung cho một số thao tác hoặc giao diện.
6.2 Thống nhất đánh số phiên bản
6.2.1 Hình thức và giá trị của số phiên bản
Số phiên bản sẽ được mã hóa như mô tả trong OGC 06-121r3:2009, 7.3.1. Việc triển khai Tiêu chuẩn này sẽ sử dụng giá trị "2.0.0" làm số phiên bản giao thức.
6.2.2 Xuất hiện trong siêu dữ liệu dịch vụ và trong các yêu cầu
Máy chủ đối tượng web tuân thủ Tiêu chuẩn này sẽ liệt kê phiên bản "2.0.0" trong siêu dữ liệu dịch vụ của mình (xem 8.3). Máy chủ có thể hỗ trợ một số phiên bản có giá trị mà máy khách có thể khám phá theo một bộ quy tắc đàm phán phiên bản (xem OGC 06-121r3:2009, 7.3.2).
Số phiên bản được sử dụng trong các yêu cầu tới máy chủ phải bằng số phiên bản mà máy chủ đã tuyên bố rằng nó hỗ trợ (ngoại trừ trong quá trình đàm phán như được mô tả trong 6.2.3). Nếu máy chủ nhận được yêu cầu có số phiên bản mà nó không hỗ trợ, thì máy chủ sẽ đưa ra một ngoại lệ InvalidParameterValue (xem 7.5).
Số phiên bản 2.0.0 sẽ được chỉ định cho bất kỳ yêu cầu nào phù hợp với Tiêu chuẩn này.
6.2.3 Thống nhất số phiên bản
Tất cả các triển khai WFS sẽ hỗ trợ đàm phán phiên bản theo các quy tắc được mô tả trong OGC 06- 121r3:2009, 7.3.2.
6.2.4 Mã hóa yêu cầu
Tiêu chuẩn này xác định hai phương pháp mã hóa các yêu cầu WFS. Phương pháp đầu tiên sử dụng XML làm ngôn ngữ mã hóa. Phương pháp mã hóa thứ hai sử dụng các cặp từ khóa-giá trị (KVP) để mã hóa các tham số khác nhau của yêu cầu.
VÍ DỤ: Một ví dụ về cặp từ khóa-giá trị là "REQUEST=GetCapabilities", trong đó "REQUEST" là từ khóa và "GetCapabilities" là giá trị.
Mã hóa KVP là một tập hợp con của mã hóa XML do mã hóa KVP không thể mã hóa một số thao tác WFS nhất định, chẳng hạn như thao tác Transaction. Trong cả hai trường hợp, phản hồi đối với yêu cầu hoặc báo cáo ngoại lệ sẽ giống hệt nhau.
Bảng 2 tương quan với các thao tác WFS và ngữ nghĩa mã hóa của chúng như được định nghĩa trong Tiêu chuẩn này.
Bảng 2 - Mã hóa yêu cầu thao tác
| Thao tác | Yêu cầu mã hóa |
| GetCapabilities | XML và KVP |
| DescribeFeatureType | XML và KVP |
| GetPropertyValue | XML và KVP |
| GetFeature | XML và KVP |
| GetFeatureWithLock | XML và KVP |
| LockFeature | XML và KVP |
| Transaction | XML |
| CreateStoredQuery | XML |
| DropStoredQuery | XML và KVP |
| ListStoredQueries | XML và KVP |
| DescribeStoredQueries | XML và KVP |
6.2.5 Quy tắc mã hóa tham số KVP
6.2.5.1 Giới thiệu
Các khía cạnh của yêu cầu WFS mã hóa KVP được mô tả trong 6.2.5.2 và 6.2.5.3.
6.2.5.2 Thứ tự tham số và trường hợp
Tên tham số không được phân biệt chữ hoa chữ thường nhưng các giá trị tham số phải phân biệt chữ hoa chữ thường. Trong Tiêu chuẩn này, tên tham số được sử dụng trong mã hóa KVP thường được hiển thị bằng chữ hoa để rõ ràng về mặt đánh máy, không phải là một yêu cầu.
Các tham số trong yêu cầu có thể được chỉ định theo bất kỳ thứ tự nào.
dịch vụ đối tượng địa lý trên web sẽ được chuẩn bị để gặp phải các tham số không nằm trong Tiêu chuẩn này. Về mặt tạo ra kết quả theo Tiêu chuẩn này, một dịch vụ đối tượng địa lý trên web sẽ bỏ qua các tham số đó.
6.2.5.3 Danh sách tham số
Các tham số bao gồm các danh sách sẽ được mã hóa như mô tả trong ISO 19143:2010, 5.5.
VÍ DỤ: Trong trường hợp nhiều truy vấn kết hợp (xem 7.9.2.5.3) được mã hóa KVP, dấu ngoặc đơn được sử dụng để cách ly các tham số khác nhau sao cho giá trị của chúng căn chỉnh chính xác. Điều này được minh họa bằng các ví dụ sau đây:
![]()
Đoạn được mã hóa KVP này mã hóa hai truy vấn kết hợp. Truy vấn kết hợp đầu tiên kết hợp các loại đối tượng "ns1:F1" và "ns2:F2" đã được đặt bí danh cho "A" và "B". Truy vấn kết hợp thứ hai kết hợp các loại đối tượng "ns1:F1" và "ns1:F1" (tự tham gia) đã được đặt bí danh là "C" và “D". Tham số FILTER mã hóa hai bộ lọc, một bộ lọc cho mỗi truy vấn, được phân tách bằng dấu ngoặc đơn. Tất cả các giá trị tham số căn chỉnh 1:1. Đoạn này tương đương với hai đoạn được mã hóa KVP riêng lẻ sau:
![]()
6.3 Không gian tên
Không gian tên (xem W3C XML Namespaces) được sử dụng để phân biệt các từ vựng XML với nhau. Đối với WFS, có bổn định nghĩa không gian tên quy phạm, cụ thể là:
- (http://www.opengis.net/wfs/2.0) dành cho từ vựng giao diện WFS;
- (http://www.opengis.net/gml/3.2) đối với từ vựng GML (xem TCVN 12155:2018);
- (http://www.opengis.net/fes/2.0) đối với từ vựng Bộ lọc OGC (xem ISO 19143:2010,5.4);
- (http://www.opengis.net/ows/1-1) cho từ vựng chung của OWS (xem OGC 06-121r3).
Ngoài ra, việc triển khai WFS có thể sử dụng một hoặc nhiều Lược đồ ứng dụng GML và các lược đồ này sẽ lần lượt sử dụng một hoặc nhiều không gian tên ứng dụng (ví dụ: http://www.someserver.com/myns ). Trong khi nhiều ví dụ trong Tiêu chuẩn này sử dụng một không gian tên duy nhất, nhiều không gian tên có thể được sử dụng, như được trình bày trong 11.3.3.
Đối với các yêu cầu được mã hóa XML, các không gian tên được sử dụng trong yêu cầu sẽ được mã hóa bằng cách sử dụng ký hiệu “xmlns:prefix=namespace_uri" trong phần tử gốc của yêu cầu (xem Không gian tên XML của W3C).
Đối với các yêu cầu được mã hóa KVP, tham số NAMEPSPACES (xem 7.6.6) sẽ được sử dụng để khai báo bất kỳ không gian tên nào được sử dụng trong yêu cầu.
6.4 Ràng buộc dịch vụ
Nội dung chính của Tiêu chuẩn này xác định việc mã hóa các thông báo yêu cầu và phản hồi WFS, không phụ thuộc vào bất kỳ giao thức truyền thông cụ thể nào. Tuy nhiên, việc triển khai Tiêu chuẩn này sẽ hỗ trợ một trong các HTTP GET, HTTP POST hoặc SOAP qua HTTP POST (xem Điều 2). Phụ lục có chứa phần thảo luận chi tiết về các ràng buộc dịch vụ này.
7 Phần tử chung
7.1 Mã hóa các đối tượng địa lý
Các máy chủ tuân theo Tiêu chuẩn này sẽ hoạt động dựa trên các đối tượng địa lý được mã hóa bằng GML. Phiên bản GML sẽ được hỗ trợ là TCVN 12155:2018. Tuy nhiên, các thao tác trong Tiêu chuẩn này được xác định theo cách cho phép chúng hoạt động với các phiên bản GML trước đó và trong tương lai. Do đó, các máy chủ có thể triển khai hỗ trợ cho các phiên bản GML bổ sung, ngoài TCVN 12155:2018. Các máy chủ sẽ quảng cáo tất cả các phiên bản GML được hỗ trợ trong tài liệu năng lực của chúng, sử dụng miền tham số inputFormat và outputFormat (xem Bảng 12).
Máy chủ cũng có thể hỗ trợ các mã hóa đối tượng địa lý không phải GML bổ sung cũng sẽ được liệt kê trong tài liệu năng lực của máy chủ (xem Bảng 12). Tuy nhiên, Tiêu chuẩn này không mô tả cách máy chủ sẽ hoạt động dựa trên các mã hóa đó.
7.2 Định danh tài nguyên
7.2.1 Gán định danh tài nguyên
Mỗi thể hiện, đối tượng địa lý trong WFS sẽ được gán một mã định danh tài nguyên duy nhất liên tục được máy chủ chỉ định khi đối tượng được tạo.
Mã định danh này sẽ không thay đổi trong tất cả các thao tác của WFS, bao gồm xóa, có nghĩa là mã định danh tài nguyên không thể được sử dụng lại sau khi đã được chỉ định.
Mã định danh tài nguyên không nhằm mục đích liên kết tài nguyên WFS với các đối tượng trong thế giới thực và các giá trị không nhất thiết phải có ý nghĩa bên ngoài phạm vi của phiên bản dịch vụ đối tượng địa lý trên web.
7.2.2 Mã hóa định danh tài nguyên
Đối với các đối tượng được mã hóa bằng GML, mã định danh tài nguyên sẽ được mã hóa trong thuộc tính XML gml:id. Tiêu chuẩn này không mô tả cách mã hóa các định danh tài nguyên cho các định dạng đầu ra khác.
Trong các biểu thức bộ lọc, các thể hiện đối tượng địa lý cụ thể có thể được xác định bằng phần tử fes: Resourceld. Nếu máy chủ hỗ trợ lập phiên bản, các phiên bản cụ thể của một đối tượng có thể được tham chiếu bằng cách sử dụng thuộc tính versionAction có trong phần tử fes:Resourceld (xem ISO 19143:2010, 7.11.2).
7.2.3 Nhận dạng phiên bản
Nếu máy chủ hỗ trợ tạo phiên bản cho các đối tượng, thì máy chủ sẽ duy trì thông tin phiên bản về từng thể hiện đối tượng địa lý. Tiêu chuẩn này không đưa ra giả định nào về cách duy trì thông tin phiên bản đó. Các hàm được xác định trong Tiêu chuẩn mã hóa bộ lọc (Filter Encoding Standard) (xem ISO 19143:2010, 7.11.2) cho phép điều hướng phiên bản dựa trên mã định danh tài nguyên.
7.3 Tài liệu tham chiếu đặc tính
7.3.1 Tập con XPath
GML cho phép các đối tượng có các thuộc tính phi hình học tổng hợp hoặc phức tạp. Do đó, một vấn đề phát sinh về cách các thành phần của giá trị phức tạp của các thuộc tính đó được tham chiếu ở những nơi khác nhau nơi yêu cầu tham chiếu giá trị (ví dụ: biểu thức truy vấn và bộ lọc). Khi nội dung đối tượng mà WFS cung cấp được mã hóa bằng XML, WFS sẽ sử dụng biểu thức XPath (xem Ngôn ngữ đường dẫn XML của W3C) để tham chiếu các thuộc tính và thành phần giá trị của các thuộc tính của một đối tượng. Tập con bắt buộc tối thiểu của XPath mà máy chủ phải hỗ trợ được mô tả trong ISO 19143:2010, 7.4.4.
Việc hỗ trợ hàm XPath schema-element() là tùy chọn. Tuy nhiên, nếu máy chủ tuân theo lớp phù hợp Inheritance (xem Bảng 1) thì máy chủ cũng sẽ hỗ trợ hàm schema-elemento (xem ISO 19143:2010, 7:4.4).
7.3.2 Hàm truy cập
Trong GML, một đặc tính đối tượng địa lý có thể chứa giá trị của nó dưới dạng nội dung được mã hóa nội tuyến hoặc tham chiếu giá trị của nó bằng một XLink đơn giản (xem TCVN 12155:2018, 7.2.3). Điều này có nghĩa là, trong quá trình đánh giá một biểu thức XPath, máy chủ có thể cần phân giải một tham chiếu tài nguyên. Để đáp ứng yêu cầu này, tất cả các triển khai WFS sẽ cung cấp một triển khai cụ thể của hàm truy cập XPath được gọi là wfs:valueOf().
Đối số của hàm sẽ là tên của một đặc tính của một đối tượng địa lý và phản hồi sẽ là giá trị của đặc tính. Giá trị có thể chỉ đơn giản là một nút văn bản hoặc danh sách các nút phần tử là giá trị của đặc tính được đặt tên.
Hàm sẽ phân giải tất cả các tài nguyên được tham chiếu cục bộ và nếu máy chủ quảng cáo trong tài liệu năng lực của nó rằng nó có thể phân giải các tham chiếu từ xa (xem Bảng 13), thì hàm cũng sẽ phân giải tất cả các tham chiếu tài nguyên bên ngoài. Trong trường hợp máy chủ chỉ hỗ trợ tài nguyên được tham chiếu cục bộ và gặp phải tài nguyên được tham chiếu từ xa, máy chủ sẽ đưa ra một ngoại lệ OptionNotSupported (xem OGC 06-121r3:2009, Bảng 25).
Có thể xác định thời điểm sử dụng hàm valueOf() trong biểu thức XPath bằng cách kiểm tra lược đồ ứng dụng của máy chủ. Nếu một đặc tính được khai báo để cho phép tham chiếu giá trị (xem TCVN 12155:2018, 7.2.3.3 và 7.2.37) thì hàm wfs:valueOf() phải được chỉ định trong biểu thức XPath (xem B.2:2 và B .4.5).
7.4 Mã hóa biểu thức điều kiện
Một số hoạt động được xác định trong Tiêu chuẩn này chứa các biểu thức điều kiện xác định một tập hợp con các đối tượng sẽ được vận hành. Các biểu thức điều kiện như vậy có thể liệt kê một tập hợp các đối tượng cụ thể để hoạt động hoặc một tập hợp các đối tượng có thể được xác định bằng cách chỉ định các ràng buộc đối với các thuộc tính và/hoặc thành phần giá trị của các thuộc tính của một loại đối tượng.
Các biểu thức điều kiện được mã hóa XML sẽ được mã hóa bằng cách sử dụng phần tử fes:Filter như được mô tả trong ISO 19143:2010, 7.2.
Các biểu thức điều kiện được mã hóa KVP sẽ được mã hóa bằng cách sử dụng các tham số được mô tả trong ISO 19143:2010, Bảng 2.
Tập hợp cụ thể các điều kiện mà dịch vụ đối tượng địa lý trên web triển khai sẽ được quảng cáo trong tài liệu năng lực của máy chủ bằng cách sử dụng phần lọc năng lực (xem 8.3.3).
Tất cả việc triển khai Tiêu chuẩn này tối thiểu phải triển khai lớp phù hợp Query (xem ISO 19143:2010, Bảng 1).
Tất cả các triển khai của Tiêu chuẩn này triển khai lớp phù hợp WFS Cơ bản (xem Bảng 1) cũng sẽ triển khai lớp phù hợp Bộ lọc không gian tối thiểu (Minimum Spatial Filter) (xem ISO 19143:2010, Bảng 1).
7.5 Báo cáo ngoại lệ
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi trong khi xử lý yêu cầu hoặc nhận được yêu cầu không hợp lệ, dịch vụ này sẽ tạo một tài liệu XML cho biết đã xảy ra lỗi. Định dạng của phản hồi lỗi XML được chỉ định bởi và sẽ xác thực theo lược đồ phản hồi ngoại lệ được xác định trong Điều 8 của Đặc tả triển khai chung OWS (xem OGC 06-121r3:2009).
Phần tử ows:ExceptionReport có thể chứa một hoặc nhiều ngoại lệ xử lý WFS được chỉ định bằng cách sử dụng phần tử ows:Exception. Thuộc tính phiên bản bắt buộc được sử dụng để chỉ ra phiên bản của lược đồ báo cáo ngoại lệ dịch vụ. Giá trị này phải là "2.0.0". Thuộc tính ngôn ngữ tùy chọn có thể được sử dụng để chỉ ra ngôn ngữ được sử dụng. Danh sách mã cho tham số ngôn ngữ được xác định trong IETF RFC 4646.
Các thông báo ngoại lệ riêng lẻ được chứa trong phần tử ows:ExceptionText. Thuộc tính mã bắt buộc sẽ được sử dụng để liên kết mã ngoại lệ với thông báo đi kèm.
Thuộc tính định vị tùy chọn có thể được sử dụng để chỉ ra nơi gặp phải ngoại lệ trong yêu cầu tạo ra lỗi. Bảng 3 cho biết giá trị tham số bộ định vị nên có đối với mỗi mã ngoại lệ.
Bảng 3 - Mã ngoại lệ WFS
| Giá trị exceptionCode | Ý nghĩa của mã | Giá trị "Locator" | Lớp phù hợp |
| CannotLockAIIFeatures | Yêu cầu khóa bằng cách gán giá trị lockAction là ALL bị thất bại khi khóa tất cả các đối tượng được yêu cầu. | Nếu thao tác bao gồm tham số "handle" tùy chọn, hãy báo cáo giá trị của nó dưới dạng giá trị của tham số "location" | Khóa WFS |
| DuplicateStoredQueryidValue | Mã định danh được chỉ định cho một biểu thức truy vấn được lưu trữ là trùng lặp. | Tham số “locator” sẽ chứa giá trị của mã định danh trùng lặp. | Quản lý các truy vấn được lưu trữ |
| DuplicateStoredQuery ParameterName | Tên được chỉ định này cho tham số truy vấn được lưu trữ đã được sử dụng trong cùng một định nghĩa truy vấn được lưu trữ. | Tham số “locator” sẽ liệt kê tên của tham số truy vấn được lưu trữ trùng lặp. | Quản lý các truy vấn được lưu trữ |
| FeaturesNotLocked | Đối với các máy chủ không hỗ trợ khóa dữ liệu tự động (xem 15.2,3.1), ngoại lệ này chỉ ra rằng một thao tác giao dịch đang sửa đổi các đối tượng chưa bị khóa trước đó bằng thao tác LockFeature (xem Điều 12) hoặc GetFeatureWithLock (xem Điều 13). | Nếu thao tác bao gồm tham số “handle” tùy chọn, hãy báo cáo giá trị của nó dưới dạng giá trị của tham số “location”. | Khóa WFS |
| InvalidLockId | Giá trị của tham số LockId trên thao tác Transaction không hợp lệ vì nó không được tạo bởi máy chủ. | Tham số “locator” sẽ chứa giá trị của LockId không hợp lệ. | Khóa WFS |
| InvalidValue | Một Transaction (xem Điều 15) đã cố thêm mới hoặc thay đổi giá trị của một thành phần dữ liệu theo cách vi phạm lược đồ của đối tượng địa lý. | Tham số “locator” sẽ chứa tên của đặc tính bị sửa đổi không chính xác. | WFS giao dịch |
| LockHasExpired | Mã định danh khóa được chỉ định trong thao tác Transaction hoặc LockFeature đã hết hạn và không còn hiệu lực. | Tham số “locator” sẽ chứa giá trị của mã định danh khóa đã hết hạn. | Khóa WFS |
| OperationParsingFailed | Yêu cầu được định dạng sai và không thể phân tích cú pháp bởi máy chủ. | Tham số “locator” sẽ chứa giá trị của tham số “handle” nếu có sẵn. Mặt khác, tham số “locator” sẽ chứa tên của thao tác được định dạng sai. | Tất cả (xem Bảng 1) |
| OperationProcessingFailed | Đã xảy ra lỗi khi xử lý thao tác. | Tham số “locator” sẽ chứa giá trị của tham số “handle” nếu có sẵn. Mặt khác, tham số “locator” sẽ chứa tên của thao tác không thành công. | Tất cả (xem Bảng 1) |
| ResponseCacheExpired | Bộ đệm phản hồi được sử dụng để hỗ trợ phân trang đã hết hạn và kết quả không còn nữa. | Nếu thao tác bao gồm tham số “handle” tùy chọn, hãy báo cáo giá trị của nó dưới dạng giá trị của tham số “locator”. | Phân trang phản hồi |
Các máy chủ sẽ triển khai các mã ngoại lệ chung trong Bảng 25 của OGC 06-121r3:2009 cho tất cả các lớp phù hợp được xác định trong Tiêu chuẩn này.
Nhiều ngoại lệ có thể được báo cáo trong một báo cáo ngoại lệ duy nhất, vì vậy việc triển khai máy chủ nên cố gắng báo cáo càng nhiều ngoại lệ càng tốt để mô tả rõ ràng vấn đề.
VÍ DỤ: Nếu phân tích cú pháp một thao tác không thành công do giá trị của tham số không hợp lệ, máy chủ sẽ báo cáo ngoại lệ OperationParsingFailed và ngoại lệ ParameterValue không hợp lệ.
Phụ lục B chứa các ví dụ về báo cáo ngoại lệ.
7.6 Thông số yêu cầu chung
7.6.1 Giới thiệu
Các tham số yêu cầu chung cho tất cả hoặc một số thao tác được xác định trong Tiêu chuẩn này được mô tả trong 7.6.2 đến 7.6.6.
7.6.2 Loại yêu cầu cơ sở
7.6.2.1 Ngữ nghĩa yêu cầu
Loại yêu cầu cơ sở (xem Hình 3) là một loại trừu tượng mà từ đó tất cả các thao tác của WFS, ngoại trừ thao tác GetCapabilities, được phân loại.

Hình 3 - BaseRequest
7.6.2.2 Mã hóa XML
Đoạn Lược đồ XML sau đây chỉ định mã hóa XML của loại BaseRequest:

7.6.2.3 Mã hóa KVP
Bảng 4 xác định mã hóa KVP của loại yêu cầu cơ sở.
Giá trị của từ khóa REQUEST bắt buộc sẽ cho biết thao tác dịch vụ nào đang được gọi.
CHÚ THÍCH: Các yêu cầu được mã hóa XML không có tham số REQUEST vì tên của phần tử gốc mã hóa tên của hoạt động dịch vụ đang được gọi.
Bảng 4 - Mã hóa KVP của loại yêu cầu cơ sở
| Thành phần URL | Thao tác | O/Ma | Mô tả |
| SERVICE | Tất cả các thao tác. | M | Xem 7.6.2.4. |
| VERSION 13 (Tất cả các thao tác) | Tất cả các thao tác ngoại trừ GetCapabilities. | M | Xem 7.6.2.5. |
| a O = Tùy chọn, M = Bắt buộc. 13 VERSION là bắt buộc đối với tất cả các thao tác ngoại trừ thao tác GetCapabilities. | |||
7.6.2.4 Tham số service
Trong XML, tham số này sẽ được mã hóa bằng thuộc tính có tên service (xem 7.6.2.2).
Trong mã hóa KVP, tham số này sẽ được mã hóa bằng cách sử dụng từ khóa SERVICE (xem 7.6.2.3).
Tham số dịch vụ bắt buộc sẽ được sử dụng để chỉ ra loại dịch vụ khả dụng nào, tại một máy chủ cụ thể, đang được gọi. Khi gọi một dịch vụ đối tượng địa lý trên web, giá trị của tham số dịch vụ sẽ là “WFS".
7.6.2.5 Tham số version
Trong XML, tham số này sẽ được mã hóa bằng thuộc tính có tên là version (xem 7.6.2.2).
Trong mã hóa KVP, tham số này sẽ được mã hóa bằng từ khóa VERSION (xem 7.6.2.3).
Tất cả các yêu cầu WFS (ngoại trừ thao tác GetCapabilities) sẽ bao gồm một tham số được gọi là version.
Tham số phiên bản sẽ được sử dụng để chỉ ra phiên bản nào của đặc tả WFS mà mã hóa yêu cầu tuân thủ và được sử dụng trong đàm phán phiên bản như được mô tả trong 6.2.3. Khi mã hóa yêu cầu WFS theo Tiêu chuẩn này, giá trị của thuộc tính phiên bản sẽ được cố định thành 2.0.0, tương ứng với phiên bản của Tiêu chuẩn này.
7.6.2.6 Tham số handle
Trong XML, tham số này sẽ được mã hóa bằng thuộc tính có tên là handle (xem 7.6.2.2).
Tham số này không được xác định cho mã hóa KVP.
Tham số handle có thể được chỉ định tùy chọn theo yêu cầu.
Mục đích của tham số tùy chọn handle là cho phép ứng dụng khách liên kết tên ghi nhớ với yêu cầu cho mục đích xử lý lỗi.
Nếu một điều khiển được chỉ định cho một thao tác và gặp phải ngoại lệ (xem 7.5) khi xử lý thao tác đó, thì dịch vụ đối tượng địa lý trên web sẽ gán giá trị của thuộc tính handle cho thuộc tính định vị trong phần tử ows:ExceptionText (xem OGC 06-121r3:2009, Khoản 8) để xác định thao tác hoặc hành động đã tạo ra ngoại lệ. Nếu một điều khiển không được chỉ định, máy chủ có thể bỏ qua thuộc tính định vị trong phần tử ows:ExceptionText hoặc có thể sử dụng một số phương tiện khác, chẳng hạn như số dòng, để định vị ngoại lệ trong thao tác. Thuộc tính handle đặc biệt hữu ích khi được sử dụng với thao tác Transaction (xem Điều 15) có thể chứa nhiều thao tác. Việc chỉ định một tay cầm cho mỗi hành động cho phép máy chủ định vị chính xác một ngoại lệ trong thao tác Transaction.
7.6.3 Các tham số trình bày tiêu chuẩn
7.6.3.1 Ngữ nghĩa tham số
Các tham số trình bày tiêu chuẩn (xem Hình 4) được sử dụng để kiểm soát cách trình bày kết quả truy vấn trong tài liệu phản hồi. Các tham số này có thể xuất hiện trong các thao tác GetPropertyValue (xem Điều 10), GetFeature (xem Điều 11) và GetFeatureWithLock (xem Điều 13).

Hình 4 - StandardPresentationParameters
7.6.3.2 Mã hóa XML
Đoạn sau xác định mã hóa XML thành các tham số trình bày tiêu chuẩn:


7.6.3.3 Mã hóa KVP
Bảng 5 xác định mã hóa KVP của các thông số trình bày tiêu chuẩn.
Bảng 5 - Mã hóa KVP của các tham số trình bày tiêu chuẩn
| Thành phần URL | Thao tác | O/Ma | Mặc định | Mô tả |
| STARTINDEX | GetPropertyValue, GetFeature, GetFeatureWithLock | 0 | 1 | Xem 7.6.3.4. |
| COUNT | GetPropertyValue, GetFeature, GetFeatureWithLock | 0 | 1 | Xem 7.6.3.5. |
| OUTPUTFORMAT | DescribeFeatureType, GetPropertyValue, GetFeature, GetFeatureWithLock | 0 | application/gml+ xml; version=3.2 | Xem 7.6.3.7. |
| RESULTTYPE | GetPropertyValue, GetFeature, GetFeatureWithLock | 0 | results | Xem 7.6.3.6. |
| a O = Tùy chọn, M = Bắt buộc. | ||||
7.6.3.4 Tham số startindex
Đối với các yêu cầu được mã hóa XML, tham số này sẽ được mã hóa bằng thuộc tính có tên startIndex (xem 7.6.3.2).
Đối với các yêu cầu được mã hóa KVP, tham số này sẽ được mã hóa bằng cách sử dụng từ khóa STARTINDEX (xem 7.6.3.3).
Tham số startIndex tùy chọn cho biết chỉ mục trong tập kết quả mà từ đó máy chủ sẽ bắt đầu trình bày kết quả trong tài liệu phản hồi.
7.6.3.5 Tham số count
Đối với các yêu cầu được mã hóa XML, tham số này sẽ được mã hóa bằng thuộc tính có tên là count (xem 7.6.3.2).
Đối với các yêu cầu được mã hóa KVP, tham số này sẽ được mã hóa bằng cách sử dụng từ khóa COUNT (xem 7.6.3.3).
Tham số tùy chọn count giới hạn số lượng giá trị được yêu cầu rõ ràng (tức là giá trị đối tượng hoặc đặc tính) được trình bày trong tài liệu phản hồi.
Chỉ các giá trị của các loại được yêu cầu rõ ràng làm giá trị của tham số typeNames (xem 7.9.2.4.1) mới được tính trong kiểm đếm. Các giá trị lồng nhau có trong các loại giá trị được yêu cầu rõ ràng sẽ không được tính.
VÍ DỤ: Tổng số đối tượng địa lý trong đoạn XML sau đây là 4. Tham chiếu nhúng đến đối tượng địa lý với gml:id="2" và đối tượng địa lý với gml:id="5" có giá trị abc:Prop4, không được đưa vào việc kiểm đếm.

Trong trường hợp truy vấn kết hợp (xem 7.9.2.5.3.1), mỗi bộ dữ liệu gồm các loại giá trị được yêu cầu rõ ràng sẽ được tính là một bộ trong kiểm đếm. Các thành viên giá trị lồng nhau có trong bất kỳ loại giá trị được yêu cầu rõ ràng nào của bộ dữ liệu đều không được tính.
Giá trị đếm áp dụng cho toàn bộ tập kết quả (tức là tập kết quả được tạo bằng cách xử lý một hoặc nhiều hành động Truy vấn) và ràng buộc sẽ được áp dụng cho các giá trị theo thứ tự mà chúng được trình bày. Sau khi đạt đến giới hạn đếm, quá trình xử lý yêu cầu có thể chấm dứt và tài liệu phản hồi, chứa nhiều nhất, các giá trị đếm, sẽ được trình bày cho máy khách.
Không có giá trị mặc định được xác định trước nào được xác định cho tham số đếm và việc không có tham số này có nghĩa là tất cả các giá trị trong tập hợp kết quả sẽ được trình bày cho máy khách, tùy thuộc vào bất kỳ máy chủ nào, một giới hạn được định cấu hình. Nếu máy chủ có giới hạn số lượng được cấu hình máy chủ, thì giới hạn đó sẽ được quảng cáo trong tài liệu năng lực của máy chủ bằng cách sử dụng ràng buộc CountDefault (xem Bảng 14).
7.6.3.6 Tham số resultType
Đối với các yêu cầu được mã hóa XML, tham số này sẽ được mã hóa bằng cách sử dụng một thuộc tính tên là resultType (xem 7.6.3.2).
Đối với các yêu cầu được mã hóa KVP, tham số này sẽ được mã hóa bằng cách sử dụng từ khóa RESULTTYPE (xem 7.6.3.3).
WFS có thể phản hồi thao tác truy vấn theo một trong hai cách (không bao gồm phản hồi ngoại lệ). Nó có thể tạo ra một tài liệu phản hồi hoàn chỉnh có chứa các tài nguyên đáp ứng thao tác hoặc có thể chỉ tạo một thùng chứa phản hồi trống cho biết số lượng tổng số tài nguyên mà thao tác sẽ trả về. WFS tạo ra phản hồi nào trong hai phản hồi này được xác định bởi giá trị của tham số resultType tùy chọn.
Các giá trị có thể có cho tham số này là "results" và "hits".
Nếu giá trị của tham số resultType được đặt thành "results", máy chủ sẽ tạo tài liệu phản hồi hoàn chỉnh chứa các tài nguyên đáp ứng thao tác. Phần tử gốc của bộ chứa phản hồi sẽ bao gồm số lượng tài nguyên thực sự được trình bày trong tài liệu phản hồi (xem 7.7.4.3). Phần tử gốc của bộ chứa phản hồi cũng sẽ bao gồm tổng số tài nguyên mà các thao tác thực sự tìm thấy, sẽ luôn bằng hoặc lớn hơn số lượng tài nguyên được trình bày trong tài liệu phản hồi (xem 7.7.4.2).
Nếu giá trị của thuộc tính resultType được đặt thành "hits", máy chủ sẽ tạo tài liệu phản hồi trống không chứa phiên bản tài nguyên nào và phần tử gốc của vùng chứa phản hồi sẽ chứa tổng số tài nguyên mà thao tác tìm thấy (xem 7.7.4.2). Giá trị cho số lượng tài nguyên được trình bày trong tài liệu phản hồi (xem 7.7.4.3) phải được đặt thành không.
7.6.3.7 Tham số outputFormat
Đối với các yêu cầu được mã hóa XML, tham số này sẽ được mã hóa bằng một thuộc tính có tên là outputFormat (xem 7.6.3.2).
Đối với các yêu cầu được mã hóa KVP, tham số này sẽ được mã hóa bằng cách sử dụng từ khóa OUTPUTFORMAT (xem 7.6.3.3).
Tham số tùy chọn outputFormat chỉ định định dạng được sử dụng để mã hóa tài nguyên trong phản hồi cho thao tác truy vấn. Giá trị mặc định là "application/gml+xml; version=3.2", cho biết rằng các tài nguyên trong tài liệu phản hồi sẽ được mã hóa bằng GML (xem ISO 19136).
Mọi WFS tuân thủ Tiêu chuẩn này sẽ hỗ trợ giá trị mặc định này.
Máy chủ có thể quảng cáo các giá trị bổ sung cho tham số outputFormat trong tài liệu năng lực của nó (xem 8.3.3), cho biết rằng nhiều định dạng đầu ra, bao gồm các phiên bản GML trước đó, được hỗ trợ. Tuy nhiên, tiêu chuẩn này không gán bất kỳ ý nghĩa cụ thể nào cho các giá trị bổ sung này. Trong trường hợp các giá trị định dạng đầu ra bổ sung được chỉ định trong tài liệu về khả năng của máy chủ, Tiêu chuẩn này khuyến nghị nên đưa vào một tường thuật mô tả cho từng giá trị được liệt kê.
7.6.4 Các tham số phân giải tiêu chuẩn
7.6.4.1 Ngữ nghĩa tham số
Các máy chủ tuân theo Tiêu chuẩn này sẽ triển khai khả năng phân giải các tham chiếu tài nguyên cục bộ.
Các máy chủ có thể tùy ý triển khai khả năng, theo yêu cầu, phân giải các tham chiếu tài nguyên bên ngoài và sẽ quảng cáo khả năng này bằng cách sử dụng ràng buộc ImplementsRemoteResolve trong tài liệu năng lực của chúng (xem Bảng 13).
Cách máy chủ xử lý các tham chiếu tài nguyên được kiểm soát bởi các tham số resolve, resolveDepth và resolveTimeout như được mô tả trong 7.6.4.2 đến 7.6.4.7.
Các tham số phân giải tiêu chuẩn (xem Hình) có thể xuất hiện trong các thao tác GetPropertyValue (xem Điều 10), GetFeature (xem Điều 11) và GetFeatureWithLock (xem Điều 13).

Hình 5 - StandardResolveParameters
7.6.4.2 Mã hóa XML
Đoạn sau xác định mã hóa XML cho tập hợp các tham số phản hồi tiêu chuẩn:

7.6.4.3 Mã hóa KVP
Bảng 6 xác định mã hóa KVP của các tham số phản hồi tiêu chuẩn.
Bảng 6 - Mã hóa KVP của các tham số phản hồi tiêu chuẩn
| Thành phần URL | Thao tác | O/Ma | Default | Mô tả |
| RESOLVE | GetPropertyValue, GetFeature, GetFeatureWithLock | O | None | Xem 7.6.4.4. |
| RESOLVEDEPTH | GetPropertyValue, GetFeature, GetFeatureWithLock | O | A | Xem 7.6.4.5. Tham số resolve phải có giá trị khác "none". |
| RESOLVETIMEOUT | GetPropertyValue, GetFeature, GetFeatureWithLock | O | Máy chủ cụ thể (xem ResolveTimeoutDefault, Bảng 14) | Xem 7.6.4.6. Tham số resolve phải có giá trị khác "none". |
| a O = Tùy chọn, M = Bắt buộc. | ||||
7.6.4.4 Tham số resolve
Đối với các yêu cầu được mã hóa XML, tham số này sẽ được mã hóa bằng thuộc tính có tên là resolve (xem 7.6.4.2).
Đối với các yêu cầu được mã hóa KVP, tham số này sẽ được mã hóa bằng từ khóa RESOLVE (xem 7.6.4.3).
Tham số resolve tùy chọn kiểm soát liệu các tham chiếu tài nguyên (tức là cục bộ hoặc bên ngoài) có được phân giải bằng một thao tác hay không.
Miền giá trị của tham số resolve là: "local", "remote", "all" hoặc "none". Tùy thuộc vào khả năng mà máy chủ triển khai, nó có thể hỗ trợ một số hoặc tất cả miền giá trị này. Các giá trị tham số resolve mà máy chủ hỗ trợ sẽ được quảng cáo trong tài liệu năng lực của máy chủ (xem 8.3.3).
Giá trị tham số resolve là "local" có nghĩa là một thao tác sẽ chỉ phân giải các tham chiếu cục bộ.
Giá trị tham số resolve của "remote" có nghĩa là một thao tác sẽ chỉ phân giải các tham chiếu tài nguyên bên ngoài.
Giá trị tham số resolve là "all" có nghĩa là một thao tác sẽ phân giải tất cả các tham chiếu tài nguyên.
Giá trị tham số resolve là "none" có nghĩa là một thao tác sẽ không phân giải bất kỳ tham chiếu tài nguyên nào. Đây cũng là giá trị mặc định nếu tham số resolve không được chỉ định.
7.6.4.5 Tham số resolveDepth
Đối với các yêu cầu được mã hóa XML, tham số này sẽ được mã hóa bằng thuộc tính có tên là resolveDepth (xem 7.6.4.2).
Đối với các yêu cầu được mã hóa KVP, tham số này sẽ được mã hóa bằng từ khóa RESOLVEDEPTH (xem 7.6.4.3).
Tham số resolveDepth tùy chọn cho biết độ sâu mà các tham chiếu tài nguyên lồng nhau sẽ được phân giải trong tài liệu phản hồi.
Phạm vi giá trị hợp lệ cho tham số này bao gồm các số nguyên không âm cộng với “*”
Chỉ được sử dụng giá trị được chỉ định cho tham số resolveDepth nếu tham số resolve (xem 7.6.44) được chỉ định trên thao tác hoặc hành động trong đó tham số resolveDepth xuất hiện và giá trị của tham số resolve không được đặt thành “none”.
Nếu một giá trị không được chỉ định cho tham số resolve hoặc nếu giá trị của tham số resolve được đặt thành “none”, máy chủ sẽ bỏ qua bất kỳ giá trị nào được chỉ định cho tham số resolveDepth.
Nếu giá trị của tham số resolveDepth được chỉ định là "0", máy chủ sẽ không phân giải bất kỳ tham chiếu tài nguyên nào.
Nếu giá trị của tham số resolveDepth được chỉ định là "1", máy chủ sẽ phân giải các tham chiếu tài nguyên ngay lập tức và bao gồm giá trị của chúng trong tài liệu phản hồi. Tuy nhiên, nếu các tài nguyên được phân giải đó chứa bất kỳ tham chiếu tài nguyên lồng nhau nào, thì các tham chiếu lồng nhau đó sẽ không được phân giải.
Nếu giá trị của tham số resolveDepth được chỉ định là máy chủ sẽ phân giải tất cả các tham chiếu tài nguyên ngay lập tức là tất cả các tham chiếu tài nguyên lồng nhau.
Sau khi phân giải các tham chiếu đến giá trị resolveDepth được chỉ định, một máy chủ sẽ sắp xếp rằng bất kỳ tham chiếu lồng nhau sâu hơn nào đều được di dời để trỏ đến các tài nguyên dự định của chúng.
VÍ DỤ 1: Điều này có thể yêu cầu các tham chiếu đến tài nguyên cục bộ trong kho lưu trữ dữ liệu của WFS phải được chuyển đổi thành tham chiếu từ xa trở lại cùng một máy chủ trong tài liệu phản hồi.
Trong trường hợp máy chủ phát hiện tham chiếu vòng trước khi đạt đến giá trị chỉ định trong resolveDepth, máy chủ sẽ hủy bỏ độ phân giải tài nguyên lồng nhau tiếp theo và sắp xếp tham chiếu cuối cùng trong chuỗi để tham chiếu tài nguyên phù hợp, đây là tài nguyên đã được phân giải.
VÍ DỤ 2: Xem xét chuỗi tham chiếu tài nguyên sau: A -> B -> C -> D -> E -> B. Nếu giá trị resolveDepth được đặt thành 8, một máy chủ sẽ phân giải tất cả các tài nguyên thành E (tức là 4 cấp độ) và sau đó sắp xếp để tài nguyên E trỏ đến tài nguyên B đã được phân giải. Tại thời điểm đó, máy chủ sẽ ngừng phân giải tài nguyên vì các tài nguyên còn lại, ở độ sâu 8 cấp độ, đã được phân giải do tham chiếu vòng tròn.
7.6.4.6 Tham số resolveTimeout
Đối với các yêu cầu được mã hóa XML, tham số resolveTimeout sẽ được mã hóa bằng thuộc tính có tên là resolveTimeout (xem 7.6.4.2).
Đối với các yêu cầu được mã hóa KVP, tham số resolveTimeout sẽ được mã hóa bằng từ khóa RESOLVETIMEOUT (xem 7.6.4.3),
Tham số resolveTimeout tùy chọn kiểm soát khoảng thời gian máy chủ sẽ đợi để nhận được phản hồi khi phân giải các tham chiếu tài nguyên.
Tham số resolveTimeout thuộc loại xsdipositivelnteger và chỉ định thời gian hết hạn, tính bằng giây. Nếu tham số resolveTimeout không được chỉ định, thì thời gian chờ của máy chủ phụ thuộc vào việc triển khai và sẽ được quảng cáo trong tài liệu năng lực của máy chủ bằng cách sử dụng ràng buộc ResolveTimeoutDefault (xem Bảng 14).
Giá trị được chỉ định cho tham số resolveTimeout sẽ chỉ được sử dụng nếu tham số resolve được chỉ định trên phần tử yêu cầu bao gồm tham số resolveTimeout và giá trị của tham số resolve không được đặt thành “none”.
Nếu giá trị của tham số resolve được đặt thành “none", máy chủ sẽ bỏ qua bất kỳ giá trị nào được chỉ định cho tham số resolveTimeout.
7.6.4.7 Tham chiếu không thể phân giải
Trong trường hợp máy chủ không thể phân giải tham chiếu tài nguyên, máy chủ sẽ chỉ báo cáo URI chưa được phân giải ban đầu trong phản hồi. Đây không được coi là một ngoại lệ.
7.6.5 Các thông số đầu vào tiêu chuẩn
7.6.5.1 Ngữ nghĩa tham số
Các tham số đầu vào tiêu chuẩn (xem Hình 6) là một tập hợp các tham số được sử dụng để xác nhận việc mã hóa tài nguyên theo đầu vào và CRS của bất kỳ giá trị hình học nào mà các tài nguyên đó có thể chứa.
Các tham số này có thể được chỉ định trên các thao tác Insert (xem 15.2.4), Update (xem 15.2.5) và Replace (xem 15.2.6) của thao tác Transaction (xem Điều 15).

Hình 6 - StandardInputParameters
7.6.5.2 Mã hóa XML
Đoạn sau xác định mã hóa XML cho các tham số đầu vào tiêu chuẩn.

7.6.5.3 Mã hóa KVP
Các tham số đầu vào tiêu chuẩn không được xác định cho các yêu cầu được mã hóa KVP vì mã hóa KVP không được xác định cho thao tác Transaction (xem Điều 15).
7.6.5.4 Tham số inputFormat
Đối với các yêu cầu được mã hóa XML, tham số inputFormat sẽ được mã hóa bằng thuộc tính có tên là inputFormat (xem 7.6.5.2).
Tham số inputFormat không được xác định cho các yêu cầu được mã hóa KVP.
Tham số inputFormat có thể được sử dụng để xác nhận mã hóa đối tượng được sử dụng để thể hiện các đối tượng khi nhập bằng hành động Insert của thao tác Transaction (xem 15.2.4.1) hoặc khi các đối tượng được cập nhật bằng các thao tác Update (xem 15.2.5.1) hoặc Replace (xem 15.2 .6.1).
Đối với các máy chủ triển khai lớp phù hợp Transactional WFS (xem Bảng 1), giá trị mặc định của thuộc tính inputFormat sẽ là "application/gml+xml; version=3.2", cho biết các đối tượng đầu vào được mã hóa bằng GML (xem TCVN 12155:2018).
Máy chủ có thể quảng cáo các giá trị bổ sung cho tham số inputFormat trong tài liệu năng lực của nó (xem 8.3.3), cho biết rằng nhiều định dạng đầu vào, bao gồm các phiên bản GML trước đó, được hỗ trợ. Tuy nhiên, tiêu chuẩn này không gán bất kỳ ý nghĩa cụ thể nào cho các giá trị bổ sung này. Trong trường hợp các giá trị inputFormat bổ sung được chỉ định trong tài liệu năng lực của máy chủ, Tiêu chuẩn này khuyến nghị rằng nên đưa vào một tường thuật mô tả cho mỗi giá trị được liệt kê.
7.6.5.5 Tham số srsName
Đối với các yêu cầu được mã hóa XML, tham số srsName sẽ được mã hóa bằng thuộc tính có tên là srsName.
Tham số đầu vào tiêu chuẩn srsName không được xác định cho các yêu cầu được mã hóa KVP.
Tham số srsName có thể được chỉ định làm tham số của thao tác Transaction (xem Điều 15) hoặc làm tham số trong các hành động giao dịch Insert (xem 15.2.4.1), Update (xem 15.2.5.1) hoặc Replace (xem 15.2.6.1).
Nếu được chỉ định làm tham số của thao tác Transaction, giá trị của thuộc tính srsName sẽ khẳng định CRS mặc định được sử dụng để mã hóa hình học đối tượng trong Transaction (xem 15.2.2).
Nếu giá trị srsName được chỉ định làm tham số của hành động Insert, Update hoặc Replace của thao tác Transaction, giá trị của nó sẽ thay thế bất kỳ giá trị CRS nào được chỉ định bằng tham số srsName trong thao tác Transaction.
Tham số srsName (xem TCVN 12155:2018, 10.1.3.1) cũng có thể được sử dụng để xác nhận CRS của một hình học riêng lẻ và thay thế mọi xác nhận CRS trước đó.
Nếu được chỉ định, giá trị của tham số srsName sẽ tương đương với giá trị CRS mặc định được chỉ định bằng cách sử dụng phần tử wfs:DefaultCRS trong tài liệu năng lực (xem 8.3.3) hoặc bất kỳ giá trị wfs:OtherCRS nào (xem Bảng 11) cho các giá trị có liên quan loại đối tượng.
Nếu CRS đã chỉ định không được hỗ trợ cho loại đối tượng đã chỉ định, thì WFS sẽ đưa ra một ngoại lệ InvalidParameterValue (xem Bảng 3).
Nếu tham số srsName không được chỉ định, thì WFS sẽ giải thích điều này có nghĩa là hình học được mã hóa trong CRS mặc định như được chỉ định bằng cách sử dụng phần tử wfs:DefaultCRS trong tài liệu năng lực (xem 8.3.3).
7.6.6 Các từ khóa phổ biến bổ sung cho các yêu cầu được mã hóa KVP
Bảng 7 xác định các từ khóa bổ sung cho các yêu cầu WFS được mã hóa KVP.
Bảng 7 - Các từ khóa phổ biến bổ sung cho các yêu cầu WFS được mã hóa KVP
| Thành phần URL | Thao tác | O/Ma | Mô tả |
| NAMESPACES | Tất cả các thao tác | O | Được sử dụng để chỉ định không gian tên và tiền tố của chúng. Định dạng sẽ là xmlns(prefix,escaped_url) trong đó escaped_url được xác định trong OGC 06-121r3:2009, 11.3. Nếu tiền tố không được chỉ định thì không gian tên mặc định sẽ được giả định. Ngoài ra, một không gian tên có thể bị ràng buộc bằng cách chỉ định danh sách các giá trị xmlns() được phân tách bằng dấu phẩy. Tham số này không được xác định cho các yêu cầu được mã hóa XML vì XML có một cơ chế khác để xác nhận không gian tên (xem 6.3). |
| VSPs |
| O | Một máy chủ có thể triển khai các tham số KVP bổ sung không nằm trong Tiêu chuẩn này. Chúng được gọi là VSP. VSP cho phép các nhà cung cấp chỉ định các tham số bổ sung sẽ nâng cao kết quả của các yêu cầu. Máy chủ sẽ tạo ra kết quả hợp lệ ngay cả khi VSP bị thiếu hoặc không đúng định dạng hoặc nếu VSP được cung cấp mà máy chủ không biết. Các VSP không xác định sẽ bị bỏ qua. Một máy chủ có thể chọn không quảng cáo một số hoặc tất cả các VSP của mình. Nếu các VSP được Bao gồm trong XML Capabilities (xem 8.3), phần tử ows: ExtendedCapabilities (xem OGC 06-121r3:2009, 7.4.6) sẽ được mở rộng tương ứng. Các tài liệu lược đồ bổ sung có thể được nhập có chứa (các) phần mở rộng của phần tử ows: ExtendedCapabilities. Mọi VSP được quảng cáo sẽ bao gồm hoặc tham chiếu siêu dữ liệu bổ sung mô tả ý nghĩa của nó (xem 8.4). Những người triển khai WFS nên cẩn thận chọn tên VSP để tránh xung đột với các tham số WFS được xác định trong Tiêu chuẩn này. |
| a O = Tùy chọn, M = Bắt buộc. | |||
7.7 Các tham số phản hồi tiêu chuẩn
7.7.1 Ngữ nghĩa tham số
Các tham số phản hồi tiêu chuẩn (xem Hình 7) là các tham số phản hồi được sử dụng trong định nghĩa của tập hợp phản hồi cho các thao tác GetPropertyValue (xem Điều 10), GetFeature (xem Điều 11) và GetFeatureWithLock (xem Điều 13).

Hình 7 - StandardResponseParameters
7.7.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML của các tham số phản hồi tiêu chuẩn:

7.7.3 Mã hóa KVP
Chỉ mã hóa XML được xác định cho thông báo phản hồi WFS.
7.7.4 Thảo luận tham số
7.7.4.1 Tham số timeStamp
Tham số timeStamp sẽ được WFS sử dụng để chỉ ra thời gian và ngày tháng khi bộ sưu tập phản hồi được tạo.
7.7.4.2 Tham số numberMatched
Tham số numberMatched sẽ được sử dụng trong tài liệu phản hồi để báo cáo tổng số đối tượng hoặc giá trị, thuộc các loại được yêu cầu trong một thao tác, có trong tập hợp kết quả. Giá trị này không nhất thiết phải khớp với số lượng đối tượng hoặc giá trị thực sự được trình bày trong tài liệu phản hồi (xem 7.7.4.3). Nếu một máy chủ không thể báo cáo tổng số đối tượng hoặc giá trị phù hợp thì nó sẽ sử dụng giá trị "unknown" để chỉ ra điều này.
Bằng cách đặt giá trị của tham số resultType (xem 7.6.3.6) thành "hits", có thể thu được tổng số đối tượng hoặc giá trị mà một thao tác sẽ trả về mà không phải chịu chi phí truyền tập hợp kết quả. Đối với các máy chủ hỗ trợ phân trang phản hồi (xem 7.7.4.4), giá trị của tham số tiếp theo sẽ được đặt để sau đó tìm nạp tập hợp con đầu tiên của các đối tượng hoặc giá trị phản hồi.
7.7.4.3 Tham số numberReturned
Tham số numberReturned sẽ được sử dụng để biểu thị số lượng đối tượng hoặc giá trị được trình bày trong tài liệu phản hồi.
CHÚ THÍCH: Xem 7.6.3.4 để biết các quy tắc đếm giá trị.
Nếu một giá trị được chỉ định cho tham số đếm (xem 7.6.3.5), thì giá trị của tham số numberReturned sẽ - bằng hoặc nhỏ hơn giá trị đã chỉ định của tham số đếm.
Nếu giá trị của tham số đếm không được chỉ định rõ ràng trong thao tác, giá trị mặc định có thể được định cấu hình và quảng cáo trong tài liệu năng lực của máy chủ (xem 8.3.3) và sẽ có tác dụng tương tự đối với numberReturned như thể nó được chỉ định trong thao tác .
Nếu tham số đếm không được chỉ định, rõ ràng hoặc thông qua cấu hình máy chủ, thì giá trị của tham số phản hồi numberReturned sẽ bằng với giá trị của tham số phản hồi numberMatched.
7.7.4.4 Phân trang phản hồi
7.7.4.4.1 Giới thiệu
Phân trang phản hồi là khả năng máy khách cuộn qua một tập hợp các đối tượng hoặc giá trị phản hồi, N đối tượng hoặc giá trị một lần, giống như một lần cuộn qua phản hồi từ một trang của công cụ tìm kiếm.
Các máy chủ hỗ trợ phân trang phản hồi sẽ quảng cáo thực tế này trong tài liệu năng lực của chúng bằng cách sử dụng ràng buộc DeploysResultPaging (xem Bảng 13).
Phân trang phản hồi được thực hiện bằng cách sử dụng các tham số trước đó và tiếp theo được xác định trên tập hợp phản hồi (xem 10.3.1 và 11.3.1).
Để phân trang được kích hoạt, tham số count (xem 7.6.3.5) phải được đặt theo yêu cầu hoặc máy chủ sẽ triển khai giá trị mặc định cho tham số này và sẽ được quảng cáo trong tài liệu năng lực của máy chủ (xem Bảng 14).
Giá trị của thuộc tính trước đó hoặc tiếp theo sẽ là các URI do máy chủ tạo để truy xuất tập hợp hoặc kết quả tương ứng. Định dạng cụ thể của các URI này phụ thuộc vào việc triển khai, cũng như các chi tiết về cách thức hoặc liệu máy chủ có lưu trữ kết quả của một thao tác trong bộ nhớ đệm để có thể hiển thị chúng cho máy khách mỗi lần một tập hợp con hay không.
Khi phân giải các URI trước đó hoặc tiếp theo, các máy chủ sẽ tạo một tập hợp phản hồi hợp lệ chứa tập hợp các đối tượng hoặc giá trị tiếp theo hoặc trước đó (hoặc tham gia các bộ dữ liệu kết hợp trong trường hợp kết hợp) hoặc một thông báo ngoại lệ cho biết rằng tập hợp kết quả không còn nữa có sẵn (có lẽ do máy khách đã đợi quá lâu trước khi theo các liên kết trước đó hoặc tiếp theo và trong thời gian chờ đợi, kết quả đã bị xóa khỏi bộ đệm của máy chủ). Trong trường hợp này, máy chủ sẽ tạo ra một ngoại lệ ResponseCacheExpired (xem Bảng 3).
Các máy chủ sẽ thông báo khoảng thời gian các tập hợp kết quả được lưu trong bộ nhớ cache cho mục đích phân trang phản hồi bằng cách sử dụng ràng buộc ResponseCacheTimeout trong tài liệu năng lực của chúng (xem Bảng 14).
VÍ DỤ: Để minh họa việc sử dụng các tham số này, hãy xem xét yêu cầu GetFeature (xem Điều 11) sau đây

Trình tự tương tác với máy chủ diễn ra như sau.
a) Máy khách gửi yêu cầu đến máy chủ hỗ trợ phân trang.
b) Máy chủ phản hồi bằng phần tử wfs:FeatureCollection chứa 100 bản ghi đầu tiên trong tập hợp kết quả. Thuộc tính tiếp theo được đặt để máy khách có thể truy xuất 100 đối tượng địa lý tiếp theo, nhưng thuộc tính trước đó không được đặt vi đây là tập hợp đối tượng địa lý đầu tiên trong bộ phản hồi.
c) Máy khách duyệt qua URL tiếp theo
d) Máy chủ phản hồi bằng một phần tử wfs:FeatureCollection khác chứa 100 đối tượng địa lý tiếp theo trong tập hợp kết quả. Trong trường hợp này, máy chủ đặt cả giá trị thuộc tính trước đó và tiếp theo để máy khách có thể truy xuất 100 đối tượng địa lý trước đó hoặc 100 đối tượng địa lý tiếp theo trong tập hợp kết quả của yêu cầu GetFeature ban đầu được đăng trong (a).
e) Máy khách tiếp tục duyệt qua từng URI tiếp theo cho đến khi nhận được phản hồi <wfs:FeatureCollection> mà không có bộ thuộc tính tiếp theo. Điều này cho biết rằng bộ dữ liệu đối tượng địa lý cuối cùng, từ yêu cầu ban đầu được đăng trong (a), đã được truy xuất.
f) Tương tự, một máy khách có thể duyệt qua URI trước đó cho đến khi nhận được phản hồi <wfs:FeatureCollection> có bộ thuộc tính trước đó cho biết rằng bộ 100 đối tượng địa lý đầu tiên đã được truy xuất.
7.7.4.4.2 Tính nhất quán giao dịch của phân trang phản hồi
7.7.4.4.2.1 Khai báo tính nhất quán của giao dịch
Trong tài liệu năng lực của các máy chủ sẽ quảng cáo liệu chúng có hỗ trợ tính nhất quán trong giao dịch cho phân trang phản hồi hay không bằng cách sử dụng ràng buộc PagingIsTransactionSafe (xem Bảng 14).
7.7.4.4.2.2 Phân trang phản hồi với tính nhất quán trong giao dịch
Các máy chủ tuyên bố tính nhất quán của giao dịch sẽ duy trì tính nhất quán của giao dịch giữa các lần lặp phân trang. Do đó, chế độ xem dữ liệu mà máy khách nhìn thấy trong khi phân trang qua bộ phản hồi sẽ nhất quán với thời gian mà yêu cầu ban đầu được thực thi.
7.7.4.4.2.3 Phân trang phản hồi không có tính nhất quán trong giao dịch
Các máy chủ không khai báo tính nhất quán của giao dịch sẽ không bắt buộc phải duy trì tính nhất quán của giao dịch hoặc trạng thái giữa các lần lặp lại phân trang. Do đó, các đối tượng địa lý mới có thể được thêm, cập nhật hoặc xóa khỏi tập hợp kết quả hoàn chỉnh giữa các lần lặp lại. Do đó, một phần tử của tập kết quả có thể bị bỏ qua hoặc trùng lặp giữa các lần lặp.
7.8 Sử dụng thuộc tính schemaLocation
Bất kỳ tài liệu GML nào do WFS tạo ra đều phải tham chiếu tài liệu lược đồ ứng dụng GML thích hợp để đầu ra có thể được xác thực. Điều này sẽ được thực hiện bằng cách sử dụng thuộc tính schemaLocation, như được định nghĩa trong đặc tả Lược đồ XML (xem Phần 1 Lược đồ XML của W3C).
VÍ DỤ: Đoạn XML sau đây cho thấy việc sử dụng thuộc tính schemaLocation trên phần tử gốc cho biết vị trí của tài liệu Lược đồ XML có thể được sử dụng để xác thực:

Trong ví dụ này, dịch vụ sử dụng thao tác DescriptionFeatureType (xem Điều 9) để gọi lại chính nó để tham chiếu tài liệu lược đồ nơi các phần tử TreesA_1M và RoadL_1M được khai báo.
7.9 Biểu thức truy vấn
7.9.1 Giới thiệu
Biểu thức truy vấn là một hành động hướng dẫn máy chủ tìm kiếm kho lưu trữ dữ liệu của nó để tìm các tài nguyên đáp ứng một số biểu thức bộ lọc được mã hóa trong truy vấn. Các biểu thức truy vấn tìm kiếm các tài nguyên của một loại hoặc chúng có thể kết hợp hai hoặc nhiều loại tài nguyên và do đó tìm kiếm các bộ dữ liệu tài nguyên.
Trong Tiêu chuẩn này, các tài nguyên có thể truy vấn là các đối tượng địa lý (xem 7.1 và ISO 19143:2010, 6.3.3.1.1).
Một biểu thức truy vấn phân giải thành một tập hợp các đối tượng địa lý hoặc bộ dữ liệu đối tượng địa lý đáp ứng biểu thức bộ lọc của nó. Đến lượt mình, tập hợp kết quả được vận hành bởi một số phép toán được xác định trong Tiêu chuẩn này.
VÍ DỤ: Thao tác GetFeature (xem Điều 11) sử dụng một biểu thức truy vấn để xác định một tập hợp con các đối tượng địa lý để trình bày cho máy khách trong tài liệu phản hồi. Tương tự, thao tác LockFeature (xem Điều 12) sử dụng một biểu thức truy vấn để xác định một tập hợp con các đối tượng địa lý cần khóa.
Tiêu chuẩn này định nghĩa hai loại biểu thức truy vấn: biểu thức truy vấn tùy chỉnh và biểu thức truy vấn được lưu trữ.
Các biểu thức truy vấn tùy chỉnh được mã hóa bằng XML bằng cách sử dụng phần tử wfs:Query. Chúng được gọi là "ad hoc" vì truy vấn không được máy chủ lưu trữ và chỉ được biết khi chạy.
Các biểu thức truy vấn được lưu trữ được mã hóa bằng XML bằng cách sử dụng phần tử wfs:StoredQuery. Biểu thức truy vấn được lưu trữ là một truy vấn đã được lưu trước đó trong kho lưu trữ dữ liệu của máy chủ và có thể được thực thi bất kỳ lúc nào bằng mã định danh của truy vấn.
Cả hai loại biểu thức truy vấn đều được lấy từ các thành phần biểu thức truy vấn trừu tượng được xác định trong Điều 6 của ISO 19143:2010.
7.9.2 Biểu thức truy vấn tùy chỉnh
7.9.2.1 Ngữ nghĩa yêu cầu
Một biểu thức truy vấn tùy chỉnh có thể được sử dụng trọng thao tác GetPropertyValue (xem Điều 10), GetFeature (xem Điều 11), GetFeatureWithLock (xem Điều 13) hoặc LockFeature (xem Điều 12) để xác định tập hợp các đối tượng địa lý sẽ được vận hành.
Như thể hiện trong Hình 8, một biểu thức truy vấn tùy chỉnh chứa tham số typeNames, hệ quy chiếu, mệnh đề lựa chọn và mệnh đề sắp xếp.
Tham số typeNames bắt buộc liệt kê tên của một hoặc nhiều loại đối tượng địa lý cần truy vấn.
Hệ quy chiếu tùy chọn xác định một tập hợp con các thuộc tính đối tượng địa lý tùy chọn sẽ được trình bày trong tập kết quả. Mệnh đề hệ quy chiếu cho các biểu thức truy vấn tùy chỉnh được mã hóa XML cũng có thể được sử dụng để kiểm soát, trên cơ sở từng đặc tính, cách các tham chiếu tài nguyên (xem 7.6.4) được phân giải trong tài liệu phản hồi.
CHÚ THÍCH: Cách phân giải các tham chiếu tài nguyên trong tài liệu phản hồi chỉ có thể được kiểm soát ở cấp độ thao tác đối với các yêu cầu được mã hóa KVP. Điều này được thực hiện bằng cách sử dụng các từ khóa RESOLVE, RESOLVEDEPTH và RESOLVETIMEOUT (xem 7.6.4.3). Điều này trái ngược với các yêu cầu được mã hóa XML trong đó độ phân giải tài nguyên có thể được kiểm soát ở cấp độ thao tác và đặc tính.
Mệnh đề lựa chọn tùy chọn chỉ định các tiêu chí lựa chọn có điều kiện các đối tượng địa lý từ kho lưu trữ dữ liệu của máy chủ.
Mệnh đề sắp xếp tùy chọn chỉ định cách sắp xếp các đối tượng địa lý trong tài liệu phản hồi.
Một truy vấn tùy chỉnh cũng cho phép xác nhận và sử dụng CRS khi trình bày các dạng hình học đối tượng địa lý trong tài liệu phản hồi.

Hình 8 - Biểu thức truy vấn tùy chỉnh
7.9.2.2 Mã hóa XML
Đoạn Lược đồ XML sau đây định nghĩa mã hóa XML cho một biểu thức truy vấn tùy chỉnh:

Phần tử wfs:Query bao gồm tham số typeNames kế thừa từ loại fes:AbstractAdhocQueryExpressionType (xem ISO 19143:2010, 6.3.2).
7.9.2.3 Mã hóa KVP
Bảng 8 xác định mã hóa KVP cho các biểu thức truy vấn tùy chỉnh.
Bảng 8 bao gồm các tham số từ 7.9.2.4 và ISO 19143:2010, Bảng 2, cần thiết để mã hóa KVP một biểu thức truy vấn tùy chỉnh.
Bảng 8 - Từ khóa cho mã hóa KVP truy vấn tùy chỉnh
| Thành phần URL | O/Ma | Mô tả |
| TYPENAMES | Mb | Xem 7.9.2.4.1. |
| ALIASES | O | Xem 7.9.2.4.3. |
| SRSNAME | O | Xem 7.9.2.4.4. |
| Projection clause | O | Xem Bảng 9. |
| FILTER | O | Xem ISO 19143:2010, 6.3.3. |
| FILTER-LANGUAGE | O | Xem ISO 19143:2010, 6.3.3. |
| RESOURCEID | O | Xem ISO 19143:2010, 6.3.3. |
| BBOX | O | Xem OGC 06-121r3. |
| SORTBY | O | Xem ISO 19143:2010, Điều 8. Tham số SORTBY được sử dụng để chỉ định danh sách các tên đặc tính có giá trị sẽ được sử dụng để sắp xếp (khi trình bày) tập hợp các thể hiện đối tượng địa lý đáp ứng truy vấn. Giá trị của tham số SORTBY sẽ có dạng "PropertyName [ASC\DESC][,PropertyName [AASC\DESC],...]" trong đó các chữ cái ASC được sử dụng để biểu thị sắp xếp tăng dần và các chữ cái DESC được sử dụng để biểu thị một loại giảm dần. Nếu cả ASC và DESC đều không được chỉ định, thứ tự sắp xếp mặc định sẽ tăng dần. Một giá trị ví dụ có thể là: "SORTBY=Field 1 DESC, Field2 DESC, Field3". Trong trường hợp này, kết quả được sắp xếp theo Trường 1 giảm dần, Trường 2 giảm dần và Trường 3 tăng dần. |
| a O = Tùy chọn, M = Bắt buộc. b Tham số TYPENAMES là bắt buộc trong mọi trường hợp, ngoại trừ khi tham số RESOURCEID được chỉ định (xem 7.9.2.4.1). | ||
Nếu nhiều biểu thức truy vấn được mã hóa KVP xuất hiện trong một yêu cầu WFS, thì các giá trị tham số cho từng biểu thức truy vấn sẽ được tách biệt với nhau bằng cách sử dụng dấu ngoặc đơn (xem 6.2.5.3). Nếu một tham số tùy chọn được chỉ định cho một biểu thức truy vấn, thì một giá trị sẽ được chỉ định cho tham số đó cho tất cả các biểu thức truy vấn được mã hóa trong yêu cầu.
Chỉ một trong số các tham số loại trừ lẫn nhau sẽ được chỉ định trong yêu cầu được mã hóa KVP mã hóa nhiều biểu thức truy vấn; đối với tham số đã chọn, một giá trị sẽ được chỉ định cho từng biểu thức truy vấn được mã hóa.
VÍ DỤ: Nếu một yêu cầu được mã hóa KVP chứa nhiều biểu thức truy vấn và một trong các biểu thức truy vấn đó sử dụng từ khóa FILTER để mã hóa điều kiện, thì tất cả các biểu thức truy vấn trong yêu cầu phải sử dụng từ khóa FILTER. Ví dụ: bạn không thể có một yêu cầu được mã hóa KVP với nhiều biểu thức truy vấn trong đó một truy vấn sử dụng từ khóa FILTER để mã hóa điều kiện và một biểu thức truy vấn khác sử dụng từ khóa RESOURCEID.
Nếu được sử dụng trong một yêu cầu, từ khóa BBOX sẽ chỉ mã hóa một hộp giới hạn duy nhất (xem OGC 06-121r3:2009, 10.2.3). Tuy nhiên, điều kiện hộp giới hạn đó sẽ áp dụng cho tất cả các biểu thức truy vấn được mã hóa trong yêu cầu (xem B.8.5.4). Điều này trái ngược với các từ khóa FILTER và RESOURCEID có thể mã hóa nhiều điều kiện tương ứng với từng biểu thức truy vấn được mã hóa trong yêu cầu được mã hóa KVP (xem B.8.4.15).
Như trường hợp của các yêu cầu được mã hóa XML, nhiều biểu thức truy vấn được mã hóa KVP được mã hóa trong một thao tác WPS sẽ được coi là độc lập với nhau.
7.9.2.4 Thảo luận tham số
7.9.2.4.1 Tham số typeNames
Đối với các biểu thức truy vấn tùy chỉnh được mã hóa XML, tham số typeNames sẽ được mã hóa bằng cách sử dụng thuộc tính typeNames trên phần tử wfs:Query. Thuộc tính này được kế thừa từ phần tử trừu tượng:
![]()
Đối với các biểu thức truy vấn tùy chỉnh được mã hóa KVP, tham số typeNames sẽ được mã hóa bằng từ khóa TYPENAMES (xem Bảng 8). Tham số TYPENAMES là bắt buộc trong mọi trường hợp, ngoại trừ khi tham số RESOURCEID được chỉ định. Trong trường hợp này, tham số TYPENAMES có thể được bỏ qua vì mỗi phiên bản đối tượng địa lý có thể được xác định chỉ bằng mã định danh tài nguyên của nó (xem 7.2). Nếu cả tham số TYPENAMES và RESOURCEID đều được chỉ định thì tất cả các phiên bản đối tượng địa lý được xác định bởi tham số RESOURCEID sẽ thuộc loại được chỉ định bởi tham số TYPENAMES; nếu không, máy chủ sẽ đưa ra một ngoại lệ InvalidParameterValue (xem OGC 06- 121r3:2009, Bảng 25) trong đó giá trị thuộc tính “locator” (xem OGC 06-121r3:2009, 8.4) sẽ được đặt thành "RESOURCEID".
Tham số typeNames (xem ISO 19143:2010, 6.3.3.1.1) sẽ được sử dụng trong biểu thức truy vấn tùy chỉnh để mã hóa tên của một hoặc nhiều loại đối tượng địa lý tương quan sẽ được truy vấn. Các tên loại đối tượng địa lý riêng lẻ sẽ được mã hóa dưới dạng QName (xem Lược đồ XML Phần 2 của W3C).
Giá trị của mỗi QName được liệt kê dưới dạng giá trị của tham số typeNames phải khớp với một trong các tên loại đối tượng địa lý được quảng cáo trong tài liệu năng lực của máy chủ (xem 8.3.3).
7.9.2.4.2 Hàm schema-element()
Nếu danh sách các giá trị cho các tham số typeNames chứa một tên duy nhất thì có thể sử dụng hàm schema-elemento để kích hoạt một chuỗi truy vấn trên loại đối tượng địa lý đã chỉ định và bất kỳ loại đối tượng địa lý nào có các thành phần đối tượng địa lý nằm trong nhóm thay thế của đối tượng địa lý, loại đối tượng địa lý được chỉ định.
VÍ DỤ: typeNames=“schema-elemeht(ns1:Vehicle)" có thể, cùng với ns1:Vehicle, truy vấn các loại đối tượng ns1:Car, ns1:Boat, v.v.
7.9.2.4.3 Tham số bí danh
Đối với các biểu thức truy vấn tùy chỉnh được mã hóa XML, tham số bí danh sẽ được mã hóa bằng cách sử dụng thuộc tính bí danh trên phần tử wfs:Query. Thuộc tính bí danh được kế thừa từ phần tử trừu tượng:
![]()
Đối với các biểu thức truy vấn tùy chỉnh được mã hóa KVP, tham số bí danh sẽ được mã hóa bằng từ khóa ALIASES.
Tham số bí danh tùy chọn có thể được sử dụng trong biểu thức truy vấn để chỉ định danh sách tên thay thế cho tên loại đối tượng địa lý được chỉ định làm giá trị của tham số typeNames. Bí danh loại đối tượng địa lý có thể được sử dụng ở bất kỳ đâu; tên loại đối tượng địa lý có thể được sử dụng trong ngữ cảnh của biểu thức truy vấn.
Số lượng phần tử danh sách trong giá trị của tham số bí danh phải khớp với số lượng tên loại đối tượng địa lý tương ứng trong giá trị của tham số typeNames và phải tương quan 1:1.
VÍ DỤ 1:
![]()
Ví dụ được mã hóa KVP này mã hóa hai biểu thức truy vấn tùy chỉnh, mỗi biểu thức thực hiện một phép kết hợp. Biểu thức đầu tiên là kết hợp các loại đối tượng địa lý ns1:FeatureType1 và ns2:FeatureType2 được đặt bí danh cho A và B. Biểu thức thứ hai là kết hợp các loại đối tượng địa lý ns2:FeatureType2 và ns2:FeatureType3 được đặt bí danh cho C và D.
Mỗi bí danh được chỉ định trong giá trị của tham số bí danh sẽ là duy nhất trong ngữ cảnh của một biểu thức truy vấn.
Nếu tham số bí danh được sử dụng, bí danh sẽ được chỉ định cho từng tên loại đối tượng địa lý được liệt kê dưới dạng giá trị của tham số typeNames.
Bí danh thường được sử dụng trong các biểu thức truy vấn thực hiện thao tác kết hợp (xem 7.9.2.5.3.1), để hỗ trợ tự kết hợp, tức là kết hợp một loại đối tượng địa lý trở lại chính nó.
VÍ DỤ 2:
![]()
Ví dụ được mã hóa XML này hiển thị mã hóa của tham số typeName. Loại đối tượng địa lý đầu tiên, myns:Feat1, được đặt bí danh là "a" và loại đối tượng địa lý thứ hai, myns:Feat1, được đặt bí danh là "b". Do đó, các đặc tính từ phiên bản đầu tiên của myns:Feat1 có thể được tham chiếu trong một yêu cầu là “a/property_name", và các thuộc tính từ phiên bản thứ hai của myns:Feat1 có thể được tham chiếu trong một yêu cầu là "b/property_name", trong đó mã thông báo "property name" được sử dụng làm trình giữ chỗ cho tên của bất kỳ đặc tính nào của đối tượng địa lý myns:Feat1,
7.9.2.4.4 Tham số srsName
Thuộc tính srsName tùy chọn có thể được sử dụng để khẳng định một chuyền đổi CRS cụ thể được WFS hỗ trợ sẽ được áp dụng cho hình học của các đối tượng địa lý được trả về trong tài liệu phản hồi.
Giá trị của tham số srsName có thể là wfs:DefaultCRS hoặc bất kỳ giá trị wfs:OtherCRS nào được liệt kê cho loại đối tượng địa lý trong tài liệu năng lực của máy chủ (xem 8.3.3). Nếu không có giá trị srsName nào được cung cấp thì các dạng hình học của đối tượng địa lý sẽ được mã hóa trong tài liệu phản hồi bằng cách sử dụng giá trị wfs:DefaultCRS được quảng cáo.
Thuộc tính này không có ý nghĩa đối với các loại đối tượng địa lý không có thuộc tính không gian và sẽ bị bỏ qua.
Các máy chủ quảng cáo nhiều hơn một giá trị wfs:OtherCRS trong tài liệu năng lực của chúng (xem 8.3.3) sẽ có thể chuyển đổi giữa CRS được sử dụng để lưu trữ các đối tượng địa lý và bất kỳ CRS nào được yêu cầu bằng thuộc tính srsName.
Các máy chủ triển khai Tiêu chuẩn này sẽ có thể xử lý các giá trị thuộc tính srsName bằng cách sử dụng mô hình định dạng sau:
![]()
Trong mô hình định dạng này, objectType sẽ có giá trị là "crs", quyền hạn sẽ có giá trị là "crs" và giá trị <EPSG Code> là trình giữ chỗ cho giá trị mã EPSG thực tế.
VÍ DỤ: srsName="um:ogc:def:crs:EPSG::26986''.
7.9.2.4.5 Mệnh đề hệ quy chiếu
7.9.2.4.5.1 Ngữ nghĩa yêu cầu
Mọi biểu diễn đối tượng địa lý do WFS tạo ra sẽ bao gồm tất cả các thuộc tính bắt buộc đối với loại đối tượng địa lý theo mô tả lược đồ (xem Điều 9), và sau đó có thể bao gồm lựa chọn các thuộc tính khác.
Mệnh đề hệ quy chiếu tùy chọn liệt kê những thuộc tính không bắt buộc nào của một đối tượng địa lý sẽ được đưa vào phản hồi cho một truy vấn.

Hình 9 - Mệnh đề hệ quy chiếu truy vấn
CHÚ THÍCH: Thông thường có một số tính linh hoạt trong cấu trúc mô tả của một loại đối tượng địa lý quan tâm, đặc biệt liên quan đến tính chất tùy chọn hoặc bắt buộc của từng đặc tính. Ngôn ngữ Lược đồ XML của W3C (xem Phần 1 Lược đồ XML của W3C), được sử dụng để xác định các lược đồ ứng dụng GML, sử dụng các ký hiệu nhất định để cho biết các phần tử đặc tính là bắt buộc hay tùy chọn hoặc có bao nhiêu lần xuất hiện là hợp lệ. Do đó, biểu diễn GML của một đối tượng địa lý có thể là giản đồ hợp lệ chỉ với một tập hợp con các thuộc tính có thể có. Máy khách WFS nên được chuẩn bị để đối phó với tình huống trong đó nó nhận được nhiều giá trị đặc tính hơn mức nó yêu cầu bằng cách sử dụng mệnh đề hệ quy chiếu.
7.9.2.4.5.2 Mã hóa XML
Đoạn lược đồ XML sau đây đã xác định mã hóa XML cho phần tử wfs:PropertyName:

7.9.2.4.5.3 Mã hóa KVP
Bảng 9 xác định mã hóa KVP của hệ quy chiếu.
Bảng 9 - Mã hóa KVP của hệ quy chiếu
| Thành phần URL | O/M3 | Mô tả |
| PROPERTYNAME | O | Một danh sách các thuộc tính bắt buộc phải có trong phản hồi. Nếu nhiều hơn một tên loại đối tượng địa lý được chỉ định làm giá trị của từ khóa TYPENAMES (trong truy vấn không tham gia), thì danh sách danh sách tham số tương ứng sẽ được chỉ định (xem 6.2.5.3). Mỗi danh sách con sẽ tương ứng 1:1 với mỗi tên loại đối tượng địa lý được liệt kê dưới dạng giá trị của tham số TYPENAMES. |
| StandardResolveParameters |
| Xem Bảng 6. |
| a O = Tùy chọn, M = Bắt buộc. | ||
7.9.2.4.6 Thảo luận tham số
7.9.2.4.6.1 Tham số PropertyName
Đối với các yêu cầu được mã hóa XML, mệnh đề hệ quy chiếu sẽ được mã hóa bằng một hoặc nhiều phần tử wfs:PropertyName. Giá trị của mỗi phần tử wfs:PropertyName là một QName có giá trị khớp với tên của một trong các tên đặc tính của một trong các loại đối tượng địa lý được liệt kê trong thuộc tính type Names của phần tử wfs:Query gốc trong biểu diễn GML của phần tử có liên quan đối tượng địa lý.
Đối với các yêu cầu được mã hóa KVP, hệ quy chiếu sẽ được mã hóa bằng từ khóa PROPERTYNAME (xem Bảng 9). Giá trị của từ khóa PROPERTYNAME là một danh sách hoặc nhiều danh sách của một QName có giá trị phải khớp với tên của một trong các tên thuộc tính của một trong các loại đối tượng địa lý được liệt kê dưới dạng giá trị của từ khóa TYPENAMES. Nhiều danh sách tên thuộc tính tương ứng với nhiều biểu thức truy vấn sẽ được tách biệt với nhau bằng cách đặt chúng trong dấu ngoặc đơn (xem 6.2.53).
7.9.2.4.6.2 Tham số phản hồi tiêu chuẩn
Đối với các yêu cầu được mã hóa XML, các tham số phản hồi tiêu chuẩn sẽ được mã hóa bằng cách sử dụng các thuộc tính có tên là resolve, resolveDepth và resolveTimeout (xem 7.6.4.2) trên phân tử wfs:PropertyName. Đối với các yêu cầu được mã hóa XML, các tham số phản hồi tiêu chuẩn trên điều khiển mệnh đề hệ quy chiếu, trên cơ sở từng đặc tính, cách phân giải các tham chiếu tài nguyên trong tài liệu phản hồi. Một giá trị cho các tham số này được chỉ định trên phần tử wfs:PropertyName sẽ thay thế một giá trị, nếu được chỉ định, trên bất kỳ phần tử cha kèm theo nào.
Đối với các yêu cầu được mã hóa KVP, các tham số phản hồi tiêu chuẩn sẽ được mã hóa bằng cách sử dụng các từ khóa RESOLVE, RESOLVE DEPTH và RESOLVETIMEOUT (xem v.6.4.3). Đối với các yêu cầu được mã hóa KVP, không thể kiểm soát cách các tham chiếu tài nguyên được phân giải trong tài liệu phản hồi trên cơ sở từng đặc tính và do đó, không có mã hóa KVP tương đương nào cho các tham số phản hồi tiêu chuẩn được chỉ định ở cấp độ này. Thay vào đó, các từ khóa RESOLVE, RESOLVEDEPTH và RESOLVETIMEOUT có thể được sử dụng trong các yêu cầu được mã hóa KVP để kiểm soát cách phân giải các tham chiếu tài nguyên trong tài liệu phản hồi cho tất cả các đặc tính đối tượng địa lý.
7.9.2.4.7 Đường dẫn xử lý
Đối với các yêu cầu được mã hóa XML, tham số resolvePath sẽ được mã hóa thành một thuộc tính có tên là resolvePath.
Tham số resolvePath không được xác định cho các yêu cầu được mã hóa KVP.
Tham số resolvePath sửa đổi hành vi của tham số resolve. Hành vi thông thường của tham số resolve, khi giá trị của nó được đặt thành cục bộ, từ xa hoặc tất cả, là phân giải tất cả các tham chiếu tài nguyên theo độ sâu được chỉ định bởi tham số resolveDepth (xem 7.6.4.5).
Tuy nhiên, tham số resolvePath sẽ kích hoạt độ phân giải tài nguyên trong tài liệu phản hồi chỉ dọc theo một đường dẫn đặc tính nhất định.
Giá trị được chỉ định cho tham số resolvePath sẽ chỉ được sử dụng nếu giá trị của tham số resolve (trong phạm vi) gần nhất không được đặt thành "none". Nếu giá trị của thuộc tính resolve gần nhất được đặt thành "none", bất kỳ giá trị nào được chỉ định đối với tham số resolvePath sẽ bị bỏ qua.
Giá trị của tham số resolvePath là một biểu thức đường dẫn nhưng mã hóa cụ thể của nó phụ thuộc vào cách các đối tượng địa lý được mã hóa.
Đối với GML là mã hóa đối tượng địa lý chính tắc trong Tiêu chuẩn này, giá trị của tham số đường dẫn xử lý sẽ là một biểu thức XPath (xem Ngôn ngữ đường dẫn XML của W3C) dẫn đến một phần tử đối tượng địa lý. Độ phân giải giá trị sẽ dừng tại các trường hợp này và giá trị của tham số resolveDepth sẽ bị bỏ qua.
VÍ DỤ 1: Sau đây là ví dụ về thuộc tính resolvePath được sử dụng trong truy vấn trên loại đối tượng địa lý Parcel:
Các ví dụ về thể hiện đối tượng địa lý:

Ví dụ truy vấn:

Việc chỉ định thuộc tính resolvePath có tác dụng là bên cạnh tất cả các đối tượng địa lý của Parcel đáp ứng các tiêu chí, tất cả các đối tượng địa lý LandRegisterEntry được liên kết của chúng và các đối tượng địa lý LandRegisterEntry được liên kết với chúng dọc theo đặc tính “relatedTo" cũng được trả về.
Nếu chức năng schema-element() được hỗ trợ bởi một máy chủ trong các biểu thức XPath, thì nó cũng sẽ được hỗ trợ trong tham số resolvePath. Nếu được sử dụng, nó không chỉ khớp với tên phần tử là tham số của hàm schema-element(), mà còn khớp với tất cả các phần tử trực tiếp hoặc gián tiếp trong nhóm thay thế của nó.
VÍ DỤ 2: schema-element(gml:AbstractFeature) sẽ phù hợp với tất cả các đối tượng địa lý.
7.9.2.5 Mệnh đề lựa chọn
7.9.2.5.1 Mã hóa XML
Đối với các yêu cầu được mã hóa XML, mệnh đề lựa chọn sẽ được mã hóa bằng cách sử dụng phần tử fes:Filter (xem ISO 19143:2010, Điều 7).
7.9.2.5.2 Mã hóa KVP
Đối với các yêu cầu được mã hóa KVP, mệnh đề lựa chọn sẽ được mã hóa bằng cách sử dụng một trong các từ khóa FILTER, RESOURCEID hoặc BBOX (xem ISO 19143:2010, Bảng 2).
7.9.2.5.3 Xử lý kết hợp
7.9.2.5.3.1 Truy vấn kết hợp
Một WFS có thể tùy chọn hỗ trợ các truy vấn kết hợp.
Truy vấn thao tác kết hợp tìm các bộ dữ liệu (nghĩa là cặp, bộ ba, v.v.) của các đối tượng địa lý, trong danh sách các loại đối tượng địa lý, đáp ứng một số điều kiện kết hợp được chỉ định bằng biểu thức bộ lọc (xem ISO 19143:2010, Khoản 7). Nếu điều kiện kết hợp được thỏa mãn thì bộ đặc trưng đó sẽ nằm trong tập kết quả của biểu thức truy vấn.
Một truy vấn thao tác kết hợp sẽ được mã hóa bởi:
a) Liệt kê các loại đối tượng địa lý để tham gia bằng tham số typeNames (xem 7.9.2.4.1).
b) Chỉ định một điều kiện kết hợp giữa các loại đối tượng địa lý sử dụng biểu thức bộ lọc (xem ISO 19143:2010, Điều 7)
Các máy chủ triển khai các truy vấn kết hợp sẽ triển khai một phép kết hợp bên trong, nghĩa là chỉ các bộ dữ liệu đối tượng địa lý đặc trưng khớp với các điều kiện kết hợp mới được trả về trong tập kết quả.
VÍ DỤ 1: Biểu thức truy vấn sau sử dụng phép kết hợp để tìm vợ/chồng của người có Mã định danh là "12345".

Trong ví dụ này, một điều kiện kết hợp giữa "a/spouse" và "b/Identifier" được sử dụng để xác định vị trí vợ/chồng của người có số nhận dạng là "12345". Đây cũng là một ví dụ về phép tự kết hợp kể từ mynsPerson đang được kết hợp với chính nó để xác định người phối ngẫu.
VÍ DỤ 2: Biểu thức truy vấn sau đây sử dụng phép kết hợp không gian để tìm tất cả các đối tượng địa lý của công viên có chứa hồ:

Danh sách các loại đối tượng địa lý để kết hợp được chỉ định bằng thuộc tính typeNames (tức là typeName="myns:Parks myns:Lakes") trên phần tử wfs:Query. Điều kiện kết hợp được chỉ định bằng cách sử dụng phần tử fes:Filter và tìm tất cả các cặp đối tượng địa lý ns1:Park và ns1:Lake có dạng hình học thỏa mãn toán tử không gian fes:Contains. Phản hồi cho yêu cầu bằng truy vấn kết hợp được mô tả trong 11.3.3.6.
Các truy vấn kết hợp được phân loại thành các phép kết hợp tiêu chuẩn, không gian và thời gian dựa trên các toán tử được sử dụng trong các điều kiện kết hợp.
Nếu tất cả các toán tử Filter, ngoại trừ các toán tử không gian và thời gian, có thể được sử dụng trong một điều kiện kết hợp, thì máy chủ sẽ triển khai các truy vấn kết hợp tiêu chuẩn như trong Ví dụ 1.
Nếu các toán tử không gian có thể được sử dụng trong các điều kiện kết hợp, thì máy chủ sẽ thực hiện các truy vấn kết hợp không gian như trong Ví dụ 2.
Nếu các toán tử thời gian có thể được sử dụng trong các điều kiện kết hợp, thì máy chủ sẽ thực hiện các truy vấn kết hợp theo thời gian.
Nếu một dịch vụ đối tượng địa lý trên web hỗ trợ liên kết, thì dịch vụ đó sẽ quảng cáo thực tế này bằng cách sử dụng các ràng buộc ImplementsStandardJoins, ImplementsStandardJoins và ImplementsStandardJoins trong tài liệu năng lực của dịch vụ (xem 8.3.3).
7.9.2.5.3.2 Đặc tính được chia sẻ
Để trả lời truy vấn kết hợp có chứa mệnh đề hệ quy chiếu xác định tên của đặc tính được chia sẻ giữa hai hoặc nhiều loại đối tượng địa lý được kết hợp, như có thể có trong GML (xem TCVN 12155:2018), đặc tính được chia sẻ đó sẽ xuất hiện trong tất cả các đối tượng địa lý của bộ dữ liệu phản hồi có chứa đặc tính đó.
VÍ DỤ: Xem xét hai loại đối tượng địa lý ns1:A và ns2:B cùng chia sẻ một phần tử đặc tính được gọi là ns3:C. Nếu mệnh đề hệ quy chiếu của truy vấn kết hợp tùy chỉnh trên ns1:A và ns2:B chỉ định đặc tính chung ns3:C, thì làm thế nào để máy chủ biết liệu máy khách muốn ám chỉ ns3:C từ loại đối tượng địa lý ns1:A hay ns3:C từ loại đối tượng địa lý ns2:B? Câu trả lời là máy chủ không biết nhưng cũng không cần biết vì ns3:C sẽ xuất hiện trong cả hai đối tượng địa lý.ns1:A và ns2:B trong tài liệu phản hồi.
7.9.2.5.3.3 Sử dụng hàm schema-element() trong các phép kết hợp
Hàm schema-element() sẽ không được sử dụng nếu thao tác kết hợp đang được thực hiện.
Trong trường hợp một hàm schema-element() được chỉ định trong một thao tác kết hợp, WFS sẽ đưa ra một ngoại lệ OperationNotSupported (xem Bảng 3) trong đó giá trị thuộc tính "locator" (xem OGC 06- 121r3:2009, 8.4) sẽ được đặt thành "schema-element()".
7.9.2.5.3.4 Xử lý hệ quy chiếu tọa độ
Khi so sánh hai hình học có các giá trị srsName khác nhau trong một biến điều kiện, máy chủ sẽ chuyển đổi một trong các hình học thành CRS của hình học khác hoặc máy chủ sẽ chuyển đổi cả hai hình học thành CRS chung thứ ba trước khi thực hiện so sánh.
Trong trường hợp một trong hai hoặc cả hai hình học trong biểu thức không có CRS được liên kết với chúng, thì máy chủ sẽ giả định rằng hình học nằm trong CRS mặc định được khẳng định cho loại đối tượng địa lý của nó trong tài liệu năng lực của máy chủ. Việc so sánh hai hình học sau đó có thể tiến hành như được mô tả trong câu trước.
7.9.2.5.3.5 Xử lý đơn vị đo lường
Tiêu chuẩn này không xác định bất kỳ hỗ trợ nào để xử lý chuyển đổi giữa các đơn vị đo lường.
7.9.2.5.4 Mệnh đề sắp xếp
7.9.2.5.4.1 Ngữ nghĩa yêu cầu
Mệnh đề sắp xếp của một biểu thức truy vấn tùy chỉnh phải được chỉ định bằng cách sử dụng giá trị SortBy (xem Hình 10 và ISO 19143:2010, Điều 8).

Hình 10 - Mệnh đề sắp xếp truy vấn
7.9.2.5.4.2 Mã hóa XML
Trong XML, mệnh đề sắp xếp của một biểu thức truy vấn tùy chỉnh sẽ được mã hóa bằng cách sử dụng phần tử fes:SortBy (xem ISO 19143:2010, Điều 8).
Một biểu thức truy vấn tùy chỉnh sẽ có tối thiểu là 0 và tối đa là một phần tử con fes:SortBy.
7.9.2.5.4.3 Mã hóa KVP
Đối với các yêu cầu được mã hóa KVP, mệnh đề sắp xếp sẽ được mã hóa bằng từ khóa SORTBY (xem ISO 19143:2010, Bảng 2).
7.9.2.5.4.4 Xử lý sắp xếp
dịch vụ đối tượng địa lý trên web nhận biểu thức truy vấn tùy chỉnh không có mệnh đề sắp xếp sẽ tạo tài liệu phản hồi trong đó các đối tượng địa lý được trình bày theo bất kỳ thứ tự nào mà máy chủ chọn. Tuy nhiên, để tuân thủ Tiêu chuẩn này, các máy chủ phải đảm bảo rằng bất kỳ thứ tự nào được trình bày khi một truy vấn tùy chỉnh, không chứa mệnh đề sắp xếp, được thực thi lần đầu, được giữ nguyên trong các lần thực hiện tiếp theo của cùng một biểu thức truy vấn tùy chỉnh trên cùng một bộ đặc trưng.
VÍ DỤ: Một máy chủ có thể chọn sắp xếp các đối tượng địa lý theo gml:id của nó nếu máy khách chưa chỉ định một điều khoản sắp xếp cụ thể. Các lần gọi tiếp theo của cùng một biểu thức truy vấn trên cùng một tập hợp dữ liệu sẽ dẫn đến một tài liệu phản hồi trình bày các đối tượng địa lý theo cùng một thứ tự.
Trong trường hợp dịch vụ đối tượng địa lý trên web nhận được yêu cầu có chứa truy vấn tùy chỉnh với mệnh đề sắp xếp, dịch vụ sẽ phản hồi bằng cách trình bày các đối tượng địa lý trong tài liệu phản hồi theo thứ tự được yêu cầu.
Việc sắp xếp chỉ được hỗ trợ trong phạm vi của một biểu thức truy vấn tùy chỉnh, sắp xếp chung trên tất cả các đối tượng địa lý trong một tập hợp kết quả, được tạo bởi nhiều biểu thức truy vấn tùy chỉnh được mã hóa trong yêu cầu, sẽ không được hỗ trợ. Tất nhiên, ngoại lệ nhỏ đối với câu lệnh này là trường hợp yêu cầu chứa một biểu thức truy vấn duy nhất.
Khi xử lý một truy vấn có mệnh đề sắp xếp, việc sắp xếp sẽ được thực thi trong ngữ cảnh của tất cả dữ liệu khớp với các tham số yêu cầu trước khi phản hồi có thể được giảm xuống một tập hợp trong giới hạn của thuộc tính đếm (xem 7.6.3.5).
7.9.3 Biểu thức truy vấn được lưu trữ
7.9.3.1 Ngữ nghĩa yêu cầu
Một biểu thức truy vấn được lưu trữ có thể được sử dụng trong thao tác GetPropertyValue (xem Điều 10), GetFeature (xem Điều 11), GetFeatureWithLock (xem Điều 13) hoặc LockFeature (xem Điều 12) để nhận dạng một tập hợp các đối tượng địa lý sẽ được vận hành.
Một biểu thức truy vấn được lưu trữ (xem Hình 11) là một biểu thức truy vấn liên tục, được tham số hóa, có thể nhận dạng được. Một truy vấn được lưu trữ có thể được gọi nhiều lần bằng cách sử dụng mã định danh của nó với các giá trị khác nhau được liên kết với các tham số của nó mỗi lần.
Tất cả các máy chủ sẽ triển khai khả năng liệt kê, mô tả và thực hiện các truy vấn được lưu trữ.
Tất cả các triển khai máy chủ sẽ cung cấp một truy vấn được lưu trữ để tìm nạp các đối tượng địa lý dựa trên mã định danh của chúng. Các truy vấn được lưu trữ bổ sung được đóng gói cùng với máy chủ cũng có thể được cung cấp.
Mục 14 mô tả một tập hợp các thao tác để quản lý các biểu thức truy vấn được lưu trữ.

Hình 11 - StoredQuery
7.9.3.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML của một biểu thức truy vấn được lưu trữ:

Loại trừu tượng fes:AbstractQueryExpressionType được mô tả trong ISO 19143:2010, 6.2.
7.9.3.3 Mã hóa KVP
Bảng 10 xác định mã hóa KVP cho biểu thức truy vấn được lưu trữ.
Bảng 10 - Từ khóa cho mã hóa KVP truy vấn được lưu trữ
| Thành phần URL | O/Ma | Mô tả |
| STOREDQUERY_ID | M | Mã định danh của truy vấn được lưu trữ để gọi. |
| storedquery_parameter=value | O | Mỗi tham số của truy vấn được lưu trữ sẽ được mã hóa bằng KVP dưới dạng KVP. Các tham số truy vấn được lưu trữ không được có tên xung đột với bất kỳ tên tham số WFS nào. |
| a O = Tùy chọn, M = Bắt buộc. | ||
Không giống như các truy vấn tùy chỉnh, trong đó nhiều truy vấn có thể được mã hóa trong một yêu cầu được mã hóa KVP, chỉ một truy vấn được lưu trữ sẽ được gọi cho mỗi yêu cầu được mã hóa KVP.
7.9.3.4 Mã định danh truy vấn dược lưu trữ
Đối với các yêu cầu được mã hóa XML, mã định danh truy vấn được lưu trữ sẽ được mã hóa bằng cách sử dụng thuộc tính id trên phần tử wfs:StoredQuery.
Đối với các yêu cầu được mã hóa KVP, mã định danh truy vấn được lưu trữ sẽ được mã hóa bằng từ khóa STOREDQUERY_ID.
Mỗi truy vấn được lưu trữ sẽ được gán một mã định danh duy nhất cho máy chủ có thể được sử dụng để gọi truy vấn.
7.9.3.5 Tham số truy vấn được lưu trữ
Đối với các yêu cầu được mã hóa XML, mỗi tham số truy vấn được lưu trữ sẽ được mã hóa bằng phần tử wfs:Parameter. Tên của tham số sẽ được mã hóa thành giá trị của thuộc tính tên trên phần tử wfs:Parameter. Giá trị của tham số sẽ được mã hóa thành nội dung của phần tử wfs:Parameter.
Đối với các yêu cầu được mã hóa KVP, các tham số truy vấn được lưu trữ sẽ được mã hóa dưới dạng các cặp từ khóa-giá trị. Tên thông số sẽ được mã hóa dưới dạng từ khóa và giá trị của nó sẽ được mã hóa dưới dạng giá trị của cặp từ khóa-giá trị.
VÍ DỤ: Ví dụ này thực hiện một yêu cầu GetFeature gọi truy vấn được lưu trữ GetTreesByArea với tham số "AREA”.
http://www.someserver.com/wfs.cgi?request=GetFeature&storedquery_id=urn- x:wfs:StoredQueryld:SomeCompanyName:GetTreesByArea&AREA=10000
Máy chủ phải đảm bảo rằng các tên tham số truy vấn được lưu trữ không xung đột với các từ khóa WFS KVP.
Các tham số truy vấn được lưu trữ được tham chiếu theo tên và do đó có thể xuất hiện theo bất kỳ thứ tự nào khi mã hóa lệnh gọi truy vấn được lưu trữ.
7.9.3.6 Truy vấn được lưu trữ GetFeatureByld
Tất cả các máy chủ sẽ triển khai truy vấn được lưu trữ chấp nhận một đối số duy nhất, có tên là "id 1 ' thuộc loại xsd:string và trả về một đối tượng địa lý duy nhất có mã định danh bằng với giá trị đã chỉ định của đối số id.
Truy vấn được lưu trữ này sẽ có mã định danh: urn:ogc:def:query:OGC-WFS::GetFeatureByld.
VÍ DỤ: URL sau đây gọi truy vấn bắt buộc GetFeatureByld được lưu trữ để truy xuất và trình bày một đối tượng địa lý từ kho lưu trữ dữ liệu của máy chủ:

8 Thao tác GetCapabilities
8.1 Giới thiệu
Thao tác GetCapabilities tạo tài liệu siêu dữ liệu dịch vụ mô tả dịch vụ WFS do máy chủ cung cấp. Tất cả các dịch vụ đối tượng địa lý trên web sẽ triển khai mã hóa KVP của thao tác GetCapabilities. dịch vụ đối tượng địa lý trên web có thể tùy ý triển khai mã hóa XML của thao tác GetCapabilities.
8.2 Lời yêu cầu
8.2.1 Ngữ nghĩa yêu cầu
Hình 12 mô tả lược đồ của một yêu cầu GetCapabilities.

Hình 12 - Yêu cầu GetCapabilities
8.2.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML của yêu cầu GetCapabilities:

Loại cơ sở ows:GetCapabilitiesType được xác định trong Đặc tả triển khai chung của OWS (xem OGC 06-121r3:2009, 7.2.4).
8.2.3 Mã hóa KVP
Mã hóa KVP của yêu cầu GetCapabilities sẽ được chỉ định trong OGC 06-121r3:2009, 7.2.2.
8.3 Phản hồi
8.3.1 Ngữ nghĩa phản hồi
Hình 13 mô tả lược đồ của phản hồi GetCapabilities.

Hình 13 - Phản hồi GetCapabilities
8.3.2 Mã hóa XML
Phần tử gốc của phản hồi đối với yêu cầu GetCapabilities là phần tử wfs:WFS:Capabilities được khai báo bởi đoạn Lược đồ XML sau:


Loại cơ sở ows:CapabilitiesBaseType được xác định trong Đặc tả triển khai chung của OWS (xem OGC 06-121r3:2009, 7.2.4).
Các phần tử ows:ServiceIdentification, ows:ServiceProvider và ows Operation Metadata được kế thừa từ loại cơ sở ows:CapabilitiesBaseType.
8.3.3 Tài liệu năng lực
Ngoài các phần được định nghĩa trong mục 7.4 của OGC 06-121r3:2009, tài liệu phản hồi năng lực sẽ bao gồm các phần sau:
1) Phần WSDL (tùy chọn)
Phần này cho phép máy chủ tham chiếu tài liệu WSDL tùy chọn mô tả các thao tác mà dịch vụ cung cấp (xem Phụ lục E). Phần này có thể được bao gồm cùng với phần OperationsMetadata dành cho các công cụ biết cách sử dụng WSDL.
2) Phần danh sách FeatureType (bắt buộc)
Phần này xác định danh sách các loại đối tượng địa lý được cung cấp bởi dịch vụ đối tượng địa lý trên web. Siêu dữ liệu nhỏ được cung cấp về từng loại đối tượng địa lý như được mô tả trong Bảng 1T
3) Phần khả năng Filter (bắt buộc)
Lược đồ của Filter Capabilities Section được xác định trong ISO 19143:2010, 7.13 và được sử dụng để quảng cáo các biểu thức có thể được sử dụng để tạo các điều kiện truy vấn.
CHÚ THÍCH: Trong lược đồ, các phần tử wfs:FeatureTypeList và fes:Filter_Capabilities được chỉ định là tùy chọn (tức là minOccurs="0"). Điều này được thực hiện để hỗ trợ tham số Sections (xem OGC 06-121r3:2009, 7.3,3) của yêu cầu GetCapabilities cho phép yêu cầu tài liệu siêu dữ liệu dịch vụ viết tắt. Tuy nhiên, khi siêu dữ liệu dịch vụ đầy đủ được tạo, nó sẽ chứa phần danh sách FeatureType và phần khả năng Filter.
8.3.4 Phần FeatureTypeList
Phần tử wfs:FeatureTypeList sẽ chứa danh sách các loại đối tượng địa lý được phân loại nhóm phụ từ gml:AbstractFeatureType do WFS cung cấp.
Đoạn Lược đồ XML sau đây định nghĩa phần tử wfs:FeatureTypeList:


Phần tử wfs:FeatureTypeList sẽ chứa một phần tử wfs:FeatureType cho từng loại đối tượng địa lý mà dịch vụ cung cấp. Phần tử chứa siêu dữ liệu về loại đối tượng địa lý.
Bảng 11 liệt kê các phần tử được sử dụng để mô tả từng loại đối tượng địa lý được liệt kê trong phần tử wfs:FeatureTypeList.
Bảng 11 - Các phần tử để mô tả các loại đối tượng địa lý
| Tên phần tử | Mô tả |
| Name | Tên đủ điều kiện không gian tên của loại đối tượng địa lý. Phần tử này là bắt buộc. |
| Title | Một danh sách không có thứ tự gồm không hoặc nhiều tiêu đề mà con người có thể đọc được xác định ngắn gọn loại đối tượng địa lý này trong menu. Thuộc tính XML:lang có thể được sử dụng để chỉ định ngôn ngữ cho tiêu đề, nếu có nhiều hơn một thành phần wfe:Title được liệt kê, thì mỗi tiêu đề sẽ có một giá trị khác nhau cho thuộc tính XML:lang. |
| Abstract | Một danh sách không có thứ tự gồm 0 hoặc nhiều phần tử wfs:Abstract. Mỗi phần tử wfs:Abstract là một tường thuật mô tả để biết thêm thông tin về loại đối tượng địa lý. Thuộc tính XML:lang có thể được sử dụng để chỉ định ngôn ngữ cho phần tóm tắt. Nếu có nhiều phần tử wfs:Abstract được liệt kê, thì mỗi phần tử trừu tượng sẽ có một giá trị khác nhau cho thuộc tính XML:lang. |
| Keywords | Phần tử ows:Keywords chứa các từ ngắn để hỗ trợ tìm kiếm danh mục. |
| DefaultCRS | Phần tử wfs:DefaultCRS cho biết hệ tham chiếu tọa độ nào sẽ được WFS sử dụng để thể hiện trạng thái của một đối tượng không gian, nếu không được xác định rõ ràng trong một truy vấn hoặc yêu cầu giao dịch. Ví dụ: nếu yêu cầu GetFeature chỉ định không có giá trị CRS cho thuộc tính wfs:Query srsName, thì bất kỳ thuộc tính không gian nào của dữ liệu đối tượng địa lý đáp ứng yêu cầu sẽ được biểu thị bằng giá trị wfs.DefaultCRS. CRS sẽ được mã hóa bằng cách sử dụng định dạng URL được xác định trong "Số nhận dạng định nghĩa URN trong không gian ten OGC" (xem OGC 07-092r2). wfs:DefaultCRS không nhất thiết phải là CRS bộ nhớ trong được sử dụng cho dữ liệu đối tượng địa lý và do đó không nên được diễn giải như vậy. Nếu wfs:DefaultCRS khác với CRS bộ nhớ trong, thì WFS sẽ hỗ trợ chuyển đổi giữa wfs:DefaultCRS và CRS bộ nhớ trong. Các tác động của việc chuyển đổi như vậy sẽ được xem xét khi xác định và tuyên bố độ chính xác của dữ liệu được đảm bảo. |
| OtherCRS | Phần tử wfs:OtherCRS sẽ được sử dụng để chỉ ra các CRS được hỗ trợ khác trong các yêu cầu truy vấn và giao dịch. 'CRS được hỗ trợ' có nghĩa là WFS hỗ trợ chuyển đổi các thuộc tính không gian giữa wfs:OtherCRS và CRS bộ nhớ trong. Các tác động của việc chuyển đổi như vậy sẽ được xem xét khi xác định và tuyên bố độ chính xác của dữ liệu được đảm bảo. |
| NoCRS | Phần tử wfs:NoCRS sẽ được sử dụng cho các loại đối tượng địa lý không có thuộc tính không gian và do đó không có CRS nào. Không bắt buộc các Features và FeatureCollections phải có các thuộc tính không gian. Phần tử wfs:NoCRS sẽ không bao giờ ngụ ý và do đó không thể được sử dụng cho ngữ nghĩa của "CRS không xác định". Phần tử này chỉ được sử dụng làm nhãn nhận dạng và do đó không có nội dung phần tử hoặc thuộc tính. |
| OutputFormats | Phần tử wfs:OutputFormats sẽ là một danh sách các loại MIME cho biết các định dạng đầu ra có thể được tạo cho một loại đối tượng địa lý. Nếu thành phần tùy chọn này không được chỉ định, thì tất cả các định dạng kết quả được liệt kê cho thao tác GetFeature được coi là được hỗ trợ. |
| WGS84BoundingBox | Phần tử ows:WGS84BoundingBox có thể được sử dụng để biểu thị các cạnh của hình chữ nhật bao quanh theo độ thập phân của vĩ độ và kinh độ trong WGS84. Mục đích của nó là tạo thuận lợi cho các tìm kiếm địa lý bảng cách chỉ ra nơi tồn tại các thể hiện của loại đối tượng địa lý cụ thể. Do nhiều phân tử ows:WGS84BoundingBox có thể được chỉ định nên WFS có thể chỉ ra nơi tồn tại các cụm dữ liệu khác nhau. Kiến thức này hỗ trợ các ứng dụng khách bằng cách cho họ biết nơi họ nên truy vấn để có xác suất cao tìm thấy dữ liệu đối tượng địa lý. |
| MetadataURL | Một WFS có thể sử dụng không hoặc nhiều phần tử wfs: MetadataURL siêu dữ liệu để cung cấp siêu dữ liệu chi tiết về dữ liệu trong một loại đối tượng địa lý cụ thể. Phần tử xlink: href sẽ được sử dụng để tham chiếu bất kỳ siêu dữ liệu nào. Thuộc tính tùy chọn about có thể được sử dụng để tham chiếu khía cạnh của phần tử bao gồm phần tử wfs: MetadataURL mà siêu dữ liệu này cung cấp thêm thông tin. |
| Extended Description | Một WFS có thể thêm các phần tử vào mô tả của một loại đối tượng địa lý mà không cần phải xác định lại lược đồ khả năng, bằng cách sử dụng phần tử wfs: ExtendedDescription. Phần từ wfs: ExtendedDescription chứa một hoặc nhiều phần tử wfs: Element. Phần tử wfs: Element bao gồm thuộc tính tên, thuộc tính loại và chứa danh sách giá trị liệt kê một hoặc nhiều giá trị cho phần tử mô tả mở rộng được đặt tên. Thuộc tính tên được sử dụng để chỉ định tên của phần tử mô tả mở rộng. Thuộc tính loại được sử dụng để chỉ định loại cho các giá trị trong danh sách giá trị của phần tử mô tả mở rộng. Loại sẽ được lấy từ danh sách các loại tích hợp được xác định bởi Lược đồ XML (xem Lược đồ XML của W3C Phần 2). Phần tử wfs: Element cũng bao gồm một phần tử ows: Metadata sẽ được sử dụng để tham chiếu siêu dữ liệu mô tả wfs:Element. Phần tử wfs: ExtendedDescription được dự định để các cộng đồng quan tâm sử dụng nhằm tùy chỉnh mô tả của một loại đối tượng địa lý cho các mục đích cụ thể hoặc bởi các nhà cung cấp muốn thêm thông tin mô tả cụ thể của nhà cung cấp vào phần mô tả của một loại đối tượng địa lý trong tài liệu năng lực. Trong mọi trường hợp, máy khách sẽ có thể bỏ qua tất cả các phần tử mô tả mở rộng một cách an toàn. Mỗi mô tả mở rộng wfs:Element được thêm vào phần mô tả của một loại đối tượng địa lý sẽ được kèm theo một phần tử ows:Metadata cung cấp siêu dữ liệu mô tả về phần tử được thêm vào. |
8.3.5 Miền tham số và ràng buộc
8.3.5.1 Giới thiệu
Các phần tử ows:Parameter và ows:Constraint được xác định trong Đặc tả triển khai chung của OWS (xem OGC 06-121r3:2009, Bảng 13) và cho phép các giá trị miền hợp lệ và các ràng buộc được xác định trên toàn cầu cho tất cả các thao tác hoặc cục bộ cho các thao tác cụ thể mà một cung cấp dịch vụ đối tượng địa lý trên web.
8.3.5.2 Miền tham số
Bảng 12 xác định các miền tham số có thể được xác định trong tài liệu năng lực của dịch vụ đối tượng địa lý trên web.
Bảng 12 - Miền tham số cho thao tác WFS
| Tên thao tác | Tên thông số | Loại giá trị dự kiến | Mô tả/Giá trị có thể |
| Tất cả các thao tác (ngoại trừ GetCapabilities) | version | string | Bao gồm giá trị "2.0.0". có thể bao gồm giá trị "1.1.0", "1.0.0" hoặc số phiên bản dành riêng cho nhà cung cấp khác. |
| GetFeature GetFeatureWithLock Transaction | srsName | string URI or MIME type | Danh sách các CRS mà WFS có khả năng xử lý. |
| GetCapabilities | AcceptVersions | string | Bao gồm giá trị "2.0.0". có thể bao gồm các giá trị "1.1.0", "1.0.0" hoặc phiên bản dành riêng cho nhà cung cấp khác. |
| GetCapabilities | AcceptFormats | MIME type | Phải bao gồm giá trị "text/xml". Có thể bao gồm các loại MIME khác, chẳng hạn như "text/html" hoặc "textplain" hoặc bất kỳ loại MIME nào được nhà cung cấp hỗ trợ mà máy chủ có khả năng tạo. |
| GetCapabilities | Sections | string | Không hoặc nhiều giá trị trong danh sách giá trị sau: "ServiceIdentification", "ServiceProvider", "OperationsMetadata", "FeatureTypeList", "Filter_Capabilities". |
| Describe Feature!ype | outputFormat | string or MIME type | Phải bao gồm giá trị "application/gml+xml; version=3.2". Có thể bao gồm bất kỳ chuỗi hoặc loại MIME nào khác mà máy chủ hỗ trợ, kể cả phiên bản GML trước đó. |
| GetPropertyValue | outputFormat | string | Phải bao gồm giá trị "application/gml+xml; version=3.2". Có thể bao gồm bất kỳ chuỗi hoặc loại MIME nào khác mà máy chủ thb hỗ trợ, kể cả các phiên bản GML trước đó. |
| GetPropertyValue | resolve | string | Phải bao gồm các giá trị "none" và “local". Cũng có thể bao gồm các giá trị “remote” và “all”, cho biết rằng máy chủ có thể phân giải các tham chiếu tài nguyên bên ngoài. |
| GetFeature | outputFormat | string or MIME type | Phải bao gồm giá trị "application/gml+xml; version=3.2". có thể bao gồm bất kỳ chuỗi hoặc loại MIME nào khác mà máy chủ hỗ trợ, kể cả các phiên bản GML trước đó. |
| GetFeature | resolve | string | Phải bao gồm các giá trị “none" và “local”. Cũng có thể bao gồm các giá trị “remote" và “all", cho biết rằng máy chủ có thể phân giải các tham chiếu tài nguyên bên ngoài. |
| GetFeatureWithLock | outputFormat | string or MIME type | Phải bao gồm các giá trị "application/gml+xml; version =3.2". Có thể bao gồm bất kỳ chuỗi hoặc loại MIME nào khác mà máy chủ hỗ trợ, kể cả phiên bản GML trước đó. |
| GetFeatureWithLock | resolve | string | Phải bao gồm các giá trị "none" và "local". Cũng có thể bao gồm các giá trị “remote” và “all", cho biết rằng máy chủ có thể phân giải các tham chiếu tài nguyên bên ngoài. |
| CreateStoredQuery | language | anyURl | Bao gồm giá trị "urn-x:wfs:StoredQuery Language: WFS_QueryExpression". Cũng có thể bao gồm các giá trị khác cho biết rằng các ngôn ngữ khác được hỗ trợ. Tiêu chuẩn này không ấn định bất kỳ ý nghĩa nào hoặc mô tả bất kỳ giá trị bổ sung nào có thể được liệt kê. |
| Transaction | inputFormat | string or MIME type | Phải bao gồm giá trị "application/gml+xml; version=3.2". Có thể bao gồm bất kỳ chuỗi hoặc loại MIME nào khác mà máy chủ hỗ trợ, kể cả phiên bản GML trước đó. |
| Transaction | vendorld | string | Bất kỳ chuỗi nào được sử dụng làm mã định danh nhà cung cấp cho phần tử wfs:Native. |
Các máy chủ sẽ điền các miền tham số trong Bảng 12 dạng cục bộ cho từng thao tác hoặc trên toàn cầu cho toàn bộ dịch vụ cho tất cả các thao tác mà chúng yêu cầu hỗ trợ trong tài liệu về khả năng của chúng. Nói chung, miền của một tham số dành riêng cho việc triển khai dịch vụ đối tượng địa lý trên web.
VÍ DỤ 1: Các giá trị được phép cho tham số srsName được quyết định bởi các phép biến đổi cụ thể mà WFS hỗ trợ.
Tuy nhiên, trong một số trường hợp, miền của tham số được xác định theo Tiêu chuẩn này.
VÍ DỤ 2: Miền của tham số resolve (xem 7.6.4) được định nghĩa trong Tiêu chuẩn này là bao gồm các giá trị "local", "remote”, "all" or "none".
Trong những trường hợp như vậy, dịch vụ đối tượng địa lý trên web chỉ có thể hạn chế tên miền. Nếu miền đầy đủ được hỗ trợ thì miền tham số sẽ không được liệt kê trong tài liệu năng lực.
8.3.5.3 Các ràng buộc về dịch vụ và vận hành
Tất cả các ràng buộc dịch vụ được liệt kê trong Bảng 13 phải được chỉ định trong tài liệu năng lực (xem 8.3.3) của máy chủ với giá trị thích hợp được đặt để cho biết liệu máy chủ có tuân thủ lớp phù hợp tương ứng hay không.
Bảng 13 - Các ràng buộc về dịch vụ
| Tên ràng buộc | Các giá trị và/hoặc loại giá trị có thể | Mô tả |
| ImplementsBasicWFS | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Basic WFS. |
| ImplementsTransactionalWFS | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Transactional WFS. |
| ImplementsLockingWFS | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Locking. |
| KVPEncoding | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp HTTP GET. |
| XMLEncoding | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp HTTP POST. |
| SOAPEncoding | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp SOAP. |
| Implementslnheritance | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Inheritance. |
| ImplementsRemoteResolve | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng thao tác mà ràng buộc được chỉ định có thể phân giải các tham chiếu ở xa máy chủ. Nếu ràng buộc không được chỉ định thì giá trị FALSE sẽ được giả định. |
| ImplementsResultPaging | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ hỗ trợ khả năng lật trang qua từng đối tượng địa lý được đếm của tập hợp kết quả . |
| ImplementsStandardJoins | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Standard Joins. |
| ImplementsSpatialJoins | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Spatial Joins. |
| ImplementsTemporalJoins | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Temporal Joins. |
| ImplementsFeatureVersioning | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Feature Versions. |
| ManageStoredQueries | Giá trị Boolean; "TRUE" hoặc "FALSE" | Cho biết rằng máy chủ triển khai lớp phù hợp Manage stored Queries. |
Máy chủ có thể tùy chọn chỉ định một hoặc nhiều ràng buộc được xác định trong Bảng 14 trong tài liệu năng lực của nó (xem 8.3.3).
Bảng 14 - Các ràng buộc vận hành
| Tên ràng buộc | Các giá trị và/hoặc loại giá trị có thể | Giá trị mặc định | Thao tác WFS | Mô tả |
| AutomaticDataLocking | Giá trị Boolean; "TRUE" hoặc "FALSE" | SAI | Transaction | Cho biết rằng thao tác giao dịch sẽ tự động khóa dữ liệu để duy trì tính nhất quán, do đó giúp máy khách không phải sử dụng thao tác LockFeature hoặc GetFeatureWithLock để khóa các đối tượng địa lý cần sửa đổi. |
| PreservesSiblingOrder | Giá trị Boolean; "TRUE" hoặc "FALSE" | SAI | Transaction | Chỉ định xem máy chủ có duy trì thứ tự anh chị em cho các thuộc tính có số lượng lớn hơn 1 hay không. Nếu giá trị là true, máy chủ sẽ duy trì thứ tự anh chị em. Mặt khác, trật tự anh chị em không được đảm bảo để được bảo tồn. |
| PagingIsTransactionSafe | Giá trị Boolean; "TRUE" hoặc "FALSE" | SAI | GetFeature GetFeatureWithLock GetPropertyValue | Chỉ định liệu máy chủ có duy trì tính nhất quán trong giao dịch giữa các lần lặp phân trang hay không. |
| CountDefault | Giá trị số nguyên lớn hơn hoặc bằng 0 |
| GetFeature GetFeatureWithLock GetPropertyValue | Chỉ định giá trị mặc định cho tham số đếm. Nếu ràng buộc không được chỉ định và Phân trang phản hồi không được hỗ trợ cũng như không được kích hoạt bởi yêu cầu, thì toàn bộ kết quả sẽ được trả về trong một phản hồi. Các máy chủ được khuyến khích quảng cáo một giá trị cho CountDefault như một phương tiện tự vệ để yêu cầu có thể không làm tắc nghẽn máy chủ. |
| ResolveTimeoutDefault | Giá trị số nguyên lớn hơn 0 |
| GetFeature GetFeatureWithLock GetPropertyValue | Xác định số giây tối đa mà máy chủ sẽ đợi trước khi nhận được phản hồi trong khi phân giải các tham chiếu tài nguyên. Nếu ràng buộc không được chỉ định, máy chủ sẽ đợi vô thời hạn để phân giải một tham chiếu từ xa. |
| SortLevelLimit | giá trị số nguyên lớn hơn 0 |
| GetFeature GetFeatureWithLock | Ràng buộc SortLevelLimit xác định số lượng thuộc tính tối đa có thể được sắp xếp đồng thời. Trong trường hợp một yêu cầu chứa quá nhiều phần tử fes:SortProperty cho một dịch vụ cụ thể (nghĩa là vượt quá ràng buộc SortLevelLimit), dịch vụ sẽ phản hồi với một ngoại lệ như được chỉ định trong 7.5. Nếu ràng buộc không được chỉ định thì không có giới hạn về số thuộc tính sắp xếp có thể được chỉ định. |
| ResolveLocalScope | Giá trị số nguyên lớn hơn 0 HOẶC ký tự "*" | * | GetFeature GetFeatureWithLock GetPropertyValue | Xác định số mức tối thiểu và tối đa, khi phân giải các tham chiếu đến tài nguyên là một phần của kho lưu trữ dữ liệu cục bộ của máy chủ. Giá trị "*" có nghĩa là bao nhiêu cấp độ. Nếu ràng buộc không được chỉ định, giá trị mặc định của "*" sẽ được giả định. |
| ResolveRemoteScope | Giá trị số nguyên lớn hơn 0 HOẶC ký tự "*" | * | GetFeature GetFeatureWithLock GetPropertyValue | Xác định số mức tối thiểu và tối đa khi phân giải các tham chiếu từ xa. Giá trị có nghĩa là nhiều như tất cả các cấp. Nếu ràng buộc không được chỉ định, giá trị mặc định của sẽ được giả định. |
| ResponseCacheTimeout | Giá trị số nguyên lớn hơn 0 |
| GetFeature GetFeatureWithLock GetPropertyValue | Xác định khoảng thời gian, tính bằng giây, mà các phản hồi sẽ được lưu vào bộ đệm để hỗ trợ phân trang (xem 7.7.4.4). Nếu ràng buộc không được chỉ định thì bộ đệm phản hồi sẽ không bao giờ hết thời gian chờ. |
| QueryExpressions | QName; một trong các wfs:Query của wfs:StoredQuery |
| GetFeature GetFeatureWithLock GetPropertyValue LockFeature | Tên của các thành phần biểu thức truy vấn được hỗ trợ. |
| CHÚ THÍCH: Các ràng buộc có thể được chỉ định trên thao tác được chỉ định. Nếu có nhiều thao tác được liệt kê, ràng buộc có thể được chỉ định cho từng thao tác riêng lẻ (có thể với các giá trị khác nhau cho từng thao tác) hoặc ở cấp độ dịch vụ, cho biết rằng ràng buộc áp dụng cho tất cả các thao tác được liệt kê. | ||||
8.4 Các điểm mở rộng
Các điểm mở rộng cho phép máy chủ quảng cáo các giá trị bổ sung cho các tham số hiện có, tự động thêm các phần tử vào siêu dữ liệu mô tả các loại đối tượng địa lý hoặc thực hiện các thao tác không được mô tả trong Tiêu chuẩn này. Tiêu chuẩn này bao gồm các điểm mở rộng sau:
- DescribeFeatureType/@outputFormat (xem 9.2.4.2)
- GetFeature/@outputFormat (xem 11.2.4.1)
- fes:AbstractQueryExpression (xem 10.2.4.4,11.2.4.3 and 12.2.4.1)
- GetFeatureWithLock/@outputFormat (xem 13.1)
- Transaction/lnsert/@inputFormat (xem 15.2.4.2)
- Transaction/Update/@inputFormat (xem 15.2.5.2.4)
- Transaction/Replace/@inputFormat (xem 15.2.6.2.2)
- wfs:ExtendedDescription element (xem Bảng 11)
- ows:ExtendedCapabilities (xem OGG 06-121r3:2009, 7.4.6)
- wfs:Native (xem 15.2.8)
- wfs:AbstractTransactionAction (xem 15.2.2)
Tiêu chuẩn này không gán ý nghĩa hoặc hành vi nào cho bất kỳ giá trị nào được quảng cáo cho các điểm mở rộng này trong tài liệu năng lực của máy chủ, ngoại trừ như được mô tả ở đây. Tuy nhiên, nếu các giá trị hoặc hành vi bổ sung được quảng cáo trong tài liệu năng lực của máy chủ, nó sẽ được kèm theo siêu dữ liệu bổ sung mô tả ý nghĩa của chúng.
Siêu dữ liệu có thể được liên kết với từng phần tử wfs:Element chứa trong phần tử wfs: Extended Description bằng cách sử dụng phần tử ows:Metadata (xem OGC 06-121r3:2009, Bảng 32).
Đặc tả chung của Dịch vụ Web OGC (xem OGC 06-121r3:2009, 7.4.6) chứa mô tả đầy đủ về cách liên kết siêu dữ liệu với các giá trị tham số hoặc thao tác có trong tài liệu năng lực. Các ví dụ sau đây minh họa cách sử dụng.
VÍ DỤ 1: Đoạn XML sau đây minh họa cách tham chiếu siêu dữ liệu về các giá trị định dạng đầu ra GetFeature bổ sung.

VÍ DỤ 2: Đoạn XML sau đây minh họa cách tham chiếu siêu dữ liệu về các hoạt động dành riêng cho nhà cung cấp được thực hiện bằng phần tử wfs:Native.


VÍ DỤ 3: Đoạn XML sau đây minh họa cách hoạt động dành riêng cho nhà cung cấp có thể được quảng cáo trong tài liệu năng lực của máy chủ bằng cách sử dụng phần tử owsiExtendedCapabilities.

8.5 Ngoại lệ
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khí phân tích cú pháp yêu cầu GetCapabilities, dịch vụ này sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi xử lý yêu cầu GetCapabilities, dịch vụ này sẽ đưa ra một ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
9 Thao tác DescriptionFeatureType
9.1 Giới thiệu
Thao tác DescriptionFeatureType trả về mô tả sơ đồ các loại đối tượng địa lý được cung cấp bởi phiên bản WFS. Các mô tả lược đồ xác định cách một WFS mong đợi các phiên bản đối tượng địa lý được mã hóa đầu vào (thông qua các hành động Insert, Update và Replace) và cách các phiên bản đối tượng địa lý sẽ được mã hóa đầu ra (để đáp ứng với thao tác GetPropertyValue, GetFeature hoặc GetFeatureWithLock).
9.2 Yêu cầu
9.2.1 Yêu cầu ngữ nghĩa
Hình 14 mô tả lược đồ của một yêu cầu

Hình 14 - Yêu cầu DescriptionFeatureType
9.2.2 Mã hóa XML
Đoạn Lược đồ XML sau đây mô tả mã hóa XML của một yêu cầu DescriptionFeatureType:

9.2.3 Mã hóa KVP
Bảng 15 mô tả một mã hóa KVP cho yêu cầu DescriptionFeatureType.
Bảng 15 - DescribeFeatureType Mã hóa KVP
| Thành phần URL | O/M3 | Mô tả |
| Từ khóa thông dụng (REQUEST=DescribeFeatureType) |
| Xem Bảng 7. (Chỉ các từ khóa cho tất cả các thao tác hoặc thao tác DescriptionFeatureType) |
| TYPENAME | O | Để mô tả, danh sách các loại đối tượng địa lý được phân tách bằng dấu phẩy. Nếu không có giá trị nào được chỉ định, máy chủ sẽ cung cấp lược đồ ứng dụng hoàn chỉnh. |
| OUTPUTFORMAT | O | Khi cung cấp giá trị "application/gml+xml; version=3.2", sẽ chỉ ra rằng lược đồ ứng dụng GML (cụ thể TCVN 12155:2018) được khởi tạo. Ngoài ra, máy chủ có thể hỗ trợ các giá trị khác mà trong bộ Tiêu chuẩn này không gán ý nghĩa. |
| a O = Tùy chọn, M = Bắt buộc. | ||
9.2.4 Thảo luận tham số
9.2.4.1 Tham số typeNames
Đối với các yêu cầu được mã hóa XML, tham số typeNames sẽ được mã hóa bằng cách sử dụng thuộc tính typeNames trên phần tử wfs:DescribeFeatureType.
Đối với các yêu cầu được mã hóa KVP, tham số typeNames sẽ được mã hóa bằng từ khóa TYPENAMES.
Tham số typeNames mã hóa tên của một hoặc nhiều loại đối tượng địa lý sẽ được mô tả bởi thao tác DescribeFeatureType.
Tập hợp các giá trị được phép cho tham số typeNames sẽ là tập hợp các tên loại đối tượng địa lý được liệt kê trong tài liệu năng lực của máy chủ (xem 8.3.3).
Nếu tham số typeName bị bỏ qua, các lược đồ ứng dụng hoàn chỉnh mà máy chủ hỗ trợ sẽ được trả về trong các câu lệnh phản hồi.
9.2.4.2 Tham số outputFormat
Đối với các yêu cầu được mã hóa XML, tham số outputFormat sẽ được mã hóa bằng cách sử dụng thuộc tính cùng tên trên phần tử wfs:DescribeFeatureType.
Đối với các yêu cầu được mã hóa KVP, tham số định dạng đầu ra sẽ được mã hóa bằng cách sử dụng từ khóa OUTPUTFORMAT (xem 7.6.3.3).
Tham số outputFormat được sử dụng để biểu thị ngôn ngữ lược đồ mô tả, cũng sẽ được sử dụng để mô tả các loại đối tượng địa lý.
Giá trị mặc định của "application/gml+xml; version=3.2" được sử dụng xác định các loại đối tượng địa lý sẽ được mô tả bằng lược đồ ứng dụng GML (xem TCVN 12155:2018). WFS đều được hiểu tuân thủ theo Tiêu chuẩn này.
Máy chủ có thể cung ứng các giá trị bổ sung cho thuộc tính định dạng đầu ra trong tài liệu năng lực của nó (xem Bảng 12), cho biết rằng nhiều định dạng đầu ra, bao gồm các phiên bản GML trước đó, được hỗ trợ. Tuy nhiên, tiêu chuẩn này chỉ gán ý nghĩa cho giá trị "application/gml+xml; version=3.2".
Nếu bất kỳ giá trị định dạng đầu ra bổ sung nào như vậy được liệt kê trong khuyến cáo, thì Tiêu chuẩn này khuyến nghị rằng metadata bổ sung (xem OGC 06-121r3:2009, Bảng 32) mô tả ý nghĩa của các giá trị bổ sung được đưa vào tài liệu năng lực (xem 8.3. 3).
CHÚ THÍCH: Vì các phiên bản OGC trước đây của tiêu chuẩn này (xem OGC 02-058 và OGC 04-094) bị ràng buộc với các phiên bản GML cụ thể, máy chủ có thể hỗ trợ các phiên bản GML trước đó bằng cách quảng cáo trong tài liệu năng lực của nó (xem Bảng 12) rằng nó hỗ trợ các phiên bản OGC trước của tiêu chuẩn này.
9.3 Phản hồi
9.3.1 Giới thiệu
Để phản hồi yêu cầu DescribeFeatureType, trong đó giá trị của tham số outputFormat đã được đặt thành "application/gml+xml; version = 3.2", việc triển khai WFS sẽ trả về lược đồ ứng dụng GML hoàn chỉnh và hợp lệ (xem ISO 19136: 2007) có chứa định nghĩa về các loại đối tượng địa lý được liệt kê trong yêu cầu.
(Các) tài liệu được trả về bởi yêu cầu DescribeFeatureType có thể được sử dụng để xác thực các phiên bận đối tượng địa lý do WFS tạo dưới dạng bộ sưu tập đối tượng địa lý trên các phiên bản đầu ra hoặc đối tượng địa lý được chỉ định làm đầu vào cho các hoạt động giao dịch.
9.3.2 Hỗ trợ nhiều không gian tên
Một tài liệu XML Schema chỉ có thể khai báo các phần tử trong một không gian tên duy nhất (xem W3C XML Schema Part 2). Trong trường hợp thao tác DescribeFeatureType yêu cầu mô tả các loại đối tượng địa lý trong nhiều không gian tên, máy chủ sẽ tạo lược đồ hoàn chỉnh cho một trong các không gian tên được yêu cầu và nhập các không gian tên còn lại. Tiêu chuẩn này không bắt buộc lược đồ của không gian tên nào nên được tạo và không gian tên nào nên được nhập.
VÍ DỤ: Xem xét yêu cầu sau để mô tả các loại đối tượng địa lý trong nhiều không gian tên:

WFS có thể tạo phản hồi sau cho yêu cầu này:

9.4 Ngoại lệ
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi phân tích yêu cầu DescribeFeatureType, nó sẽ đưa ra ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi xử lý yêu cầu DescribeFeatureType, nó sẽ đưa ra ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
10 Thao tác GetPropertyValue
10.1 Giới thiệu
Thao tác GetPropertyValue cho phép truy xuất giá trị của đặc tính đối tượng địa lý hoặc một phần giá trị của đặc tính đối tượng địa lý phức tạp từ kho lưu trữ dữ liệu cho một tập hợp đối tượng địa lý được xác định bằng cách sử dụng biểu thức truy vấn (xem 7.9).
10.2 Yêu cầu
10.2.1 Yêu cầu ngữ nghĩa
Hình 15 - Yêu cầu GetPropertyValue

Hình 15 - Yêu cầu GetPropertyValue
10.2.2 Mã hóa XML
Đoạn XML sau xác định mã hóa XML cho thao tác GetPropertyValue:

10.2.3 Mã hóa KVP
Bảng 16 xác định mã hóa KVP cho thao tác GetPropertyValue.
Bảng 16 - Từ khóa cho mã hóa GetPropertyValue KVP
| Thành phần URL | O/M a | Mô tả |
| Từ khóa phổ biến (REQUEST=GetPropertyValue) |
| Xem Bảng 7. (Chỉ các từ khóa được liệt kê cho tất cả các thao tác hoặc thao tác GetPropertyValue.) |
| Từ khóa truy vấn Adhoc (Loại trừ với Từ khóa truy vấn được lưu trữ) |
| Xem Bảng 8. |
| Từ khóa truy vấn lưu trữ (Loại trừ với Từ khóa truy vấn Adhoc) |
| Xem Bảng 10. |
| VALUEREFERENCE | M | Xem 10.2.4.3. |
| RESOLVEPATH | O | Xem 7.9.2.4.7. |
| a O = Tùy chọn, M = Bắt buộc. | ||
10.2.4 Thảo luận tham số
10.2.4.1 Các tham số trình bày tiêu chuẩn
Xem 7.6.3.
10.2.4.2 Tham số phản hồi tiêu chuẩn
Xem 7.6.4.
10.2.4.3 Tham số valueReference
Tham số valueReference là biểu thức XPath (xem ISO 19143:2010, 7.4.4) xác định nút hoặc nút con của nút đặc tính của đối tượng địa lý mà giá trị của nó sẽ được truy xuất từ kho lưu trữ dữ liệu của máy chủ và được báo cáo trong tài liệu phản hồi.
Phản hồi sẽ là một nút văn bản hoặc một danh sách các nút phần tử, giá trị của nút được chỉ ra bởi tham số valueReference.
Trong trường hợp giá trị là tham chiếu đến tài nguyên bên ngoài, hàm truy cập valueOf() có thể được sử dụng để phân giải giá trị từ xa.
CHÚ THÍCH: Có sự khác biệt giữa cách hoạt động của tham số valueReference với toán tử valueOf() XPath (xem 7.3.2) và điều khiển của tham số phản hồi tiêu chuẩn. valueReference được sử dụng để thể hiện các truy vấn nhằm xác định các đối tượng địa lý/giá trị trong tập hợp kết quả, trong khi các tham số phản hồi tiêu chuẩn (xem 7.6.4) được sử dụng để xác định cách các giá trị đặc tính bên trong các đối tượng địa lý/giá trị đã chọn được mã hóa và trình bày trong tài liệu phản hồi.
VÍ DỤ: Xem mã hóa đoạn XML sau đây và các thể hiện của loại đối tượng myns:Person:


Tham chiếu giá trị của valueReference="lastName" sẽ hiển thị họ, trong ví dụ này là Smith, trong giá trị trả về.
Tham chiếu giá trị của valueReference="myns:mailAddress/myns:Address/myns:city" sẽ hiển thị tên của thành phố nơi Mary Smith sống (Thành phố nào đó trong ví dụ này).
Tham chiếu giá trị của valueReference="valueOf(myns:location)" sẽ hiển thị vị trí của Mary Smith trong giá trị trả về bằng cách phân giải tham chiếu tới giá trị có id "#p101".
10.2.4.4 Tham số AbstractQueryExpressỉon
Các thao tác yêu cầu GetPropertyValue hoạt động trên một tập hợp các đối tượng địa lý được xác định bằng biểu thức truy vấn.
Tiêu chuẩn này xác định các phần tử wfs:Query (xem 7.9.2.2) và wfs:StoredQuery (xem 7.9.3.2) có thể được sử dụng làm biểu thức truy vấn trong thao tác GetPropertyValue và có thể thay thế cho fes:AbstractQueryExpression (xem ISO 19143:2010, 6.2).
Các phần tử khác có thể được định nghĩa là có thể thay thế cho fes:AbstractQueryExpression. Tuy nhiên, Tiêu chuẩn này chỉ gán ý nghĩa cho các phần tử wfs:Query và wfs:StoredQuery.
Mã hóa KVP của biểu thức truy vấn tùy chỉnh được xác định trong 7.9.2.3.
Mã hóa KVP của biểu thức truy vấn đã lưu trữ được xác định trong 7:9.3.3.
Các yêu cầu GetPropertyValue được mã hóa KVP sẽ chỉ chứa các biểu thức truy vấn thuộc một loại: biểu thức truy vấn tùy chỉnh hoặc biểu thức truy vấn được lưu trữ.
10.3 Phản hồi
10.3.1 Ngữ nghĩa phản hồi
Hình 16 mô tả lược đồ của phản hồi GetPropertyValue.

Hình 16 - Phản hồi GetPropertyValue
10.3.2 Mã hóa XML
Đoạn lược đồ XML sau xác định phản hồi cho thao tác GetPropertyValue:
![]()

Phần tử wfs:VaIueCollection chứa 0 hoặc nhiều phần tử wfs:member chứa các giá trị từ tập hợp các giá trị được xác định bằng cách sử dụng biểu thức truy vấn trong thao tác GetPrcipertyValue. Các giá trị có thể được mã hóa nội hàm, trong phần tử wfs:member hoặc được tham chiếu qua thuộc tính xlink:href. Thuộc tính xlink:href được khai báo là một phần của nhóm thuộc tính xlink:simpleLink trên phần tử wfs:member.
Nếu các giá trị bổ sung cần được đưa vào giá trị trả về để đáp ứng độ phân giải của các tài nguyên được tham chiếu (xem 7.6.4), các đối tượng địa lý này sẽ được đặt trong phần tử wfs:additionalValues và các tham chiếu tài nguyên trong các giá trị được trả về sẽ được chuyển đến trỏ tới các bản sao nội bộ này của các tài nguyên được tham chiếu. Như đã đưa trong 7.6.4.5, máy chủ cũng sẽ sắp xếp để tất cả các tham chiếu tài nguyên lồng nhau chưa được phân giải được di dời một cách thích hợp để trỏ đến các tài nguyên dự định.
Nếu một máy chủ gặp phải một ngoại lệ sau khi bắt đầu truyền tài liệu phản hồi tới máy trạm, thì máy chủ sẽ chấm dứt giá trị trả về bằng cách bao gồm wfs:truncatedResponse sẽ chứa một phần tử ows:ExceptionReport báo cáo ngoại lệ (xem 7.5). Nếu máy chủ truyền thành công toàn bộ tài liệu phản hồi, phần tử wfs:truncatedResponse sẽ không được đưa vào phản hồi.
10.3.3 Tham số State
Các máy chủ không hỗ trợ các lớp phiên bản phù hợp Feature (xem Bảng 1), cũng không sử dụng tham số state.
Các máy chủ hỗ trợ lớp phiên bản phù hợp Feature (xem Bảng 1) sẽ sử dụng tham số state để trả về trạng thái của giá trị được tạo phiên bản trong tài liệu phản hồi. Miền giá trị của tham số state là chuỗi "retired", "superseded", "valid", "future” và bất kỳ chuỗi nào khác có tiền tố là mã thông báo "other:". Mã thông báo "retired” sẽ được sử dụng để chỉ ra rằng giá trị đã bị xóa khỏi kho lưu trữ dữ liệu cơ bản; “superseded" sẽ chỉ ra rằng phiên bản cụ thể đã được thay thế bằng một phiên bản mới hơn trong kho lưu trữ dữ liệu cơ sở; “valid " sẽ chỉ ra rằng phiên bản này là phiên bản hiện tại trong kho lưu trữ dữ liệu cơ bản;" future" sẽ chỉ ra một giá trị chưa hợp lệ. Điều này có thể vì tính hợp lệ, nó có thể được sử dụng để phân phối giá trị được đề xuất, v.v.
Bất kỳ chuỗi nào khác có tiền tố là mã thông báo "other:" có thể được sử dụng để báo cáo trạng thái phiên bản dành riêng cho máy chủ. Tiêu chuẩn này không gán bất kỳ ý nghĩa nào cho các giá trị có tiền tố là "other:"
10.3.4 Các tham số đáp ứng tiêu chuẩn
Để thảo luận về các tham số đáp ứng tiêu chuẩn, xem 7.7.
10.4 Ngoại lệ
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi phân tích cú pháp yêu cầu GetPropertyValue, dịch vụ này sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi xử lý yêu cầu GetPropertyValue, dịch vụ này sẽ đưa ra một ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
11 Thao tác GetFeature
11.1 Giới thiệu
Thao tác GetFeature trả về một lựa chọn các đối tượng địa lý từ kho lưu trữ dữ liệu. WFS xử lý yêu cầu GetFeature và trả về tài liệu phản hồi cho máy trạm có chứa 0 hoặc nhiều phiên bản đối tượng địa lý đáp ứng các biểu thức truy vấn được chỉ định trong yêu cầu.
Biểu diễn chính tắc của các đối tượng địa lý sử dụng GML (xem TCVN 12155:2018) và biểu mẫu của yêu cầu GetFeature được mô hình hóa sau biểu diễn tập kết quả này. Vì lý do này, cần phải hiểu rõ về cách Mô hình đối tượng địa lý chung (General Feature Model) (xem ISO 19109) được ánh xạ sang biểu diễn GML. "Mô tả tham chiếu của GML được đưa ra bởi TCVN 12155:2018 nhưng ở đây được tóm tắt các đặc điểm nổi bật.
Trong GML, một đối tượng địa lý được biểu diễn dưới dạng một phần tử XML. Tên của phần tử đối tượng địa lý cho biết Loại đối tượng địa lý, thường được đưa ra trong UpperCamelCase (xem OGC 06- 121r3:2009, 11.6.2), chẳng hạn như xmmltBoreHole hoặc myns: secondarycollege.
Nội dung của một phần tử đặc trưng là một tập hợp các phần tử mô tả đặc trưng đó dưới dạng một tập hợp các đặc tính. Phần tử con của phần tử đối tượng địa lý là một đặc tính. Tên của đặc tính cho biết ý nghĩa của đặc tính, thường được đưa ra trong LowerCamelCase (xem OGC 06-121r3:2009, 11.6.2), chẳng hạn như gml:boundedBy hoặc xmml:collarLocation.
Giá trị của đặc tính được cung cấp nội tuyến bởi nội dung của phần tử đặc tính hoặc bằng tham chiếu dưới dạng giá trị của tài nguyên được xác định trong liên kết dưới dạng đặc tính XML của phần tử đặc tính. Nếu biểu mẫu nội tuyến được sử dụng, thì nội dung có thể là chữ (số, văn bản, v.v.) hoặc có thể được cấu trúc bằng các phần tử XML, nhưng không thể đưa ra giả định nào về cấu trúc giá trị của đặc tính. Trong một số trường hợp, giá trị đặc tính của đối tượng địa lý có thể là đối tượng địa lý khác, ví dụ đối tượng địa lý myns:School có thể có đặc tính myns:frontsOn, có giá trị là myns:Road, bản thân đối tượng địa lý này sẽ có các đặc tính khác, v.v.
11.2 Yêu cầu
11.2.1 Yêu cầu ngữ nghĩa
Hình 17 mô tả lược đồ của một yêu cầu GetFeature

Hình 17 - Yêu cầu GetFeature
11.2.2 Mã hóa XML
Mã hóa XML của yêu cầu GetFeature được xác định bởi đoạn Lược đồ XML sau:

Yêu cầu GetFeature chứa một hoặc nhiều biểu thức truy vấn. Một biểu thức truy vấn xác định một tập hợp các phiên bản đối tượng địa lý sẽ được trình bày cho Client trong tài liệu phản hồi. Các biểu thức truy vấn trong yêu cầu GetFeature sẽ độc lập với nhau và có thể được thực hiện theo bất kỳ thứ tự nào. Tuy nhiên, tập phản hồi sẽ được trình bày theo thứ tự mà các biểu thức truy vấn gặp phải trong một yêu cầu GetFeature.
11.2.3 Mã hóa KVP
Bảng 17 xác định mã hóa KVP cho yêu cầu GetFeature.
Bảng 17 - Từ khóa cho mã hóa GetFeature KVP
| Thành phần URL | Mô tả |
| Từ khóa Phổ biến (REQUEST=GetFeature) | Xem Bảng 7 để biết các tham số bổ sung có thể được sử dụng trong yêu cầu GetFeature được mã hóa KVP. |
| Tham số trình bày tiêu chuẩn | Xem Bảng 5. |
| Tham số phản hồi tiêu chuẩn | Xem Bảng 6. |
| Từ khóa truy vấn Adhoc (Loại trừ lẫn nhau với Từ khóa truy vấn được lưu trữ) | Xem Bảng 8. |
| Từ khóa truy vấn được lưu trữ (Loại trừ lẫn nhau với Từ khóa truy vấn Adhoc) | Xem Bảng 10. |
11.2.4 Thảo luận tham số
11.2.4.1 Thông số trình bày tiêu chuẩn
Xem 7.6.3.
11.2.4.2 Tham số phản hồi tiêu chuẩn
Xem 7.6.4.
11.2.4.3 Tham số AbstractQueryExpression
Yêu cầu GetFeature hoạt động trên một tập hợp các đối tượng địa lý được xác định bằng một hoặc nhiều biểu thức truy vấn.
Đối với các yêu cầu được mã hóa XML, Tiêu chuẩn này xác định các phần tử wfs:Query (xem 7.9.2.2) và wfs:StoredQuery (xem 7.9.3.2) có thể được sử dụng làm biểu thức truy vấn trong yêu cầu GetFeature và có thể thay thế cho fes:AbstractQueryExpression (xem ISO 19143:2010, 6.2). Nhiều phần tử wfs:Query và/hoặc wfs:StoredQuery có thể được mã hóa thành một yêu cầu GetFeature duy nhất.
Các phần tử khác có thể được định nghĩa như là sự thay thế cho fes:AbstractQueryExpression, Tuy nhiên, Tiêu chuẩn này chỉ gán ý nghĩa cho các phần tử wfs:Query và wfs:StoredQuery.
Mã hóa KVP của biểu thức truy vấn tùy chỉnh được xác định trong 7.9.2.3. Nhiều biểu thức truy vấn tùy chỉnh có thể được mã hóa thành yêu cầu được mã hóa KVP.
Mã hóa KVP của biểu thức truy vấn được lưu trữ được xác định trong 7.9.3.3. Chì một biểu thức truy vấn được lưu trữ duy nhất có thể được mã hóa thành yêu cầu được mã hóa KVP.
Các yêu cầu được mã hóa KVP sẽ chỉ chứa các biểu thức truy vấn thuộc một loại: (các) biểu thức truy vấn tùy chỉnh hoặc biểu thức truy vấn được lưu trữ.
11.3 Phản hồi
11.3.1 Phản hồi ngữ nghĩa
Hình 18 mô tả lược đồ của phản hồi GetFeature.

Hình 18 - Phản hồi GetFeature
11.3.2 Mã hóa XML
Phản hồi cho yêu cầu GetFeature là một tài liệu XML có phần tử gốc, wfs:Featurecollection, được mô tả bởi đoạn Lược đồ XML sau:


11.3.3 Tham số thảo luận
11.3.3.1 Tham số LockId
Tham số LockId sẽ không được sử dụng thường xuyên để phản hồi thao tác GetFeature.
Xem 13.3.2 để biết phần thảo luận về tham số LockId.
11.3.3.2 Tham số state
Xem đoạn XML trong 10.3.2 để biết phần khai báo của phần tử wfs:member chứa thuộc tính trạng thái.
Các máy chủ mà không hỗ trợ lớp phiên bản phù hợp Feature (xem Bảng 1) sẽ không sử dụng tham số state.
Máy chủ hỗ trợ lớp phiên bản phù hợp Feature sẽ sử dụng tham số state để báo cáo trạng thái của đối tượng địa lý được tạo phiên bản trong tài liệu phản hồi. Miền giá trị của thông số trạng thái là chuỗi "retired”, “superseded", "valid" và bất kỳ chuỗi nào khác có tiền tố là mã thông báo "other". Mã thông báo "retired" sẽ được sử dụng để biểu thị rằng đối tượng địa lý đã bị xóa từ kho lưu trữ dữ liệu cơ bản; "superseded” sẽ chỉ ra rằng phiên bản cụ thể của một đối tượng địa lý đã được thay thế bằng một phiên bản mới hơn trong kho lưu trữ dữ liệu cơ bản; "valid" sẽ chỉ ra rằng phiên bản đối tượng địa lý là phiên bản hiện tại trong kho lưu trữ dữ liệu cơ bản; "future" sẽ chỉ ra một giá trị chưa hợp lệ. Điều này có thể vì lý do tính hợp lệ, nó có thể được sử dụng để đưa ra một giá trị được đề xuất, v.v.
Bất kỳ chuỗi nào khác có tiền tố là mã thông báo "other:" có thể được sử dụng để báo cáo trạng thái đối tượng địa lý theo phiên bản dành riêng cho máy chủ. Tiêu chuẩn này không gán bất kỳ ý nghĩa nào cho các giá trị có tiền tố là "other:".
11.3.3.3 Các tham số đáp ứng tiêu chuẩn
Xem 7.7 để biết mô tả về các tham số đáp ứng tiêu chuẩn.
11.3.3.4 Phản hồi truy vấn đơn
Nếu thao tác GetFeature chứa một biểu thức truy vấn, thì máy chủ sẽ phản hồi bằng phần tử wfs:FeatureCollection chứa 0 hoặc nhiều phần tử wfs:member, mỗi phần tử chứa hoặc tham chiếu đến một đối tượng địa lý trong bộ phản hồi của thao tác GetFeature.
11.3.3.5 Nhiều phản hồi truy vấn
Nếu thao tác GetFeature chứa nhiều biểu thức truy vấn, máy chủ sẽ phản hồi bằng một phần tử wfs:FeatureCollection chứa một hoặc nhiều phần tử wfs:member, mỗi phần tử chứa một phần tử wfs:FeatureCollection chứa phản hồi cho một trong các biểu thức truy vấn trong yêu cầu.
Tập hợp đối tượng địa lý thành phần có thể được mã hóa nội bộ trong tài liệu phản hồi hoặc được tham chiếu hoặc cả hai.
VÍ DỤ 1: Đoạn sau minh họa một phản hồi đối với các thao tác GetFeature có chứa nhiều biểu thức truy vấn trong đó các tập hợp thành phần được mã hóa nội bộ.


VÍ DỤ 2: Đoạn sau đây minh họa một phản hồi đối với thao tác GetFeature có chứa nhiều biểu thức truy vấn trong đó các tập hợp thành phần được tham chiếu.

Các phần tử đối tượng địa lý đáp ứng nhiều hơn một biểu thức truy vấn trong thao tác GetFeature sẽ xuất hiện trong một tập hợp và được tham chiếu bởi tất cả các tập hợp khác.
Thứ tự của các tập hợp trong tài liệu phản hồi sẽ giống như thứ tự của các biểu thức truy vấn trong yêu cầu GetFeature, mặc dù các truy vấn có thể được thực hiện theo bất kỳ thứ tự nào mà máy chủ mong muốn.
11.3.3.6 Phản hồi truy vấn kết hợp
Nếu thao tác GetFeature chứa biểu thức truy vấn đang thực hiện phép kết hợp, thì máy chủ sẽ sử dụng phần tử wfs:Tuple (xem 10.3.2) để thông báo tất cả các bộ dữ liệu đối tượng địa lý thỏa mãn điều kiện kết hợp.
VÍ DỤ 1: Đoạn XML sau đây cho thấy phản hồi được tạo bởi một biểu thức truy vấn kết hợp ba loại đối tượng ns1:FeatureTypeOne, ns1:FeatureTypeTwo và ns2:FeatureTypeThree:


Các thao tác GetFeature chứa kết hợp các biểu thức truy vấn kết hợp và không kết hợp có thể chứa các tập hợp đối tượng địa lý thành phần chứa hỗn hợp các phần tử wfs:member và wfs:Tuple.
VÍ DỤ 2: Đoạn sau đây trình bày tài liệu phản hồi cho thao tác GetFeature chứa kết hợp các biểu thức truy vấn kết hợp và không kết hợp.


11.3.4 Đối tượng bổ sung
Nếu các đối tượng bổ sung cần được đưa vào tài liệu phản hồi để đáp ứng độ phân giải của các tài nguyên được tham chiếu (xem 7.6.4), các đối tượng này sẽ được đặt trong phần tử wfs:additionalObjects và các tham chiếu tài nguyên trong các đối tượng địa lý được trả về sẽ di dời để trỏ đến các bản sao cục bộ của các tài nguyên được tham chiếu. Như đã chỉ trong 7.6.4.5, máy chủ cũng sẽ sắp xếp để tất cả các tham chiếu tài nguyên lồng nhau chưa được phân giải được di dời một cách thích hợp để trỏ đến các tài nguyên dự định.
11.3.5 Phản hồi GetFeatureByld
Việc thực thi thao tác GetFeature có chứa truy vấn được lưu trữ GetFeatureByld (xem 7.9.3.6) sẽ tạo ra một phản hồi bao gồm một đối tượng địa lý duy nhất được mã hóa theo các giá trị của tham số outputFormat (xem 7.6.3.7). Phản hồi sẽ chỉ chứa XML đối tượng địa lý mà không có bất kỳ phần tử chứa thông thường nào được tạo ra do thực hiện thao tác GetFeature (xem 11.3.3.4, 11.3.3.5 và 11.3.3.6).
11.4 Ngoại lệ
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi phân tích cú pháp yêu cầu GetFeature, dịch vụ này sẽ tăng tỷ lệ OperationProcessingFailed được mô tả trong 7.5.
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi xử lý yêu cầu GetFeature, dịch vụ này sẽ đưa ra một ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
12 Thao tác LockFeature
12.1 Giới thiệu
Các kết nối web vốn đã không tồn tại trạng thái. Do đó, ngữ nghĩa của các giao dịch có thể tuần tự hóa không được bảo toàn. Để hiểu vấn đề, hãy xem xét một thao tác cập nhật.
Máy khách tìm nạp một thể hiện đối tượng địa lý. Sau đó, đối tượng địa lý này được sửa đổi ở phía máy khách và được gửi lại cho WFS thông qua yêu cầu cập nhật Transaction. Khả năng tuần tự hóa bị mất do không có gì đảm bảo rằng trong khi đối tượng địa lý này đang được sửa đổi ở phía máy khách, thì một máy khách khác đã không xuất hiện và cập nhật đối tượng địa lý tương tự trong cơ sở dữ liệu.
Một cách để đảm bảo tính tuần tự hóa là yêu cầu việc truy cập dữ liệu được thực hiện theo cách loại trừ lẫn nhau; nghĩa là, trong khi một giao dịch truy cập vào một mục dữ liệu, không có giao dịch nào khác có thể sửa đổi cùng một mục dữ liệu. Điều này có thể được thực hiện bằng cách sử dụng khóa kiểm soát quyền truy cập vào dữ liệu.
Mục đích của thao tác LockFeature là cung cấp một cơ chế khóa đối tượng địa lý dài hạn nhằm đảm bảo tính nhất quán. Khóa được coi là dài hạn vì độ trễ mạng khiến thời gian khóa đối tượng địa lý kéo dài tương đối lâu hơn so với các khóa cơ sở dữ liệu thông thường.
Nếu một máy chủ triển khai thao tác LockFeature, thông tin này sẽ được thông báo trong tài liệu năng lực của máy chủ (xem 8.3.3).
12.2 Yêu cầu
12.2.1 Yêu cầu ngữ nghĩa
Hình 19 mô tả một lược đồ về yêu cầu LockFeature

Hình 19 - Yêu cầu LockFeature
12.2.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML của yêu cầu LockFeature:

12.2.3 Mã hóa KVP
Bảng 18 xác định mã hóa KVP cho thao tác LockFeature.
Bảng 18 - Từ khóa cho mã hóa LockFeature KVP
| Thành phần URL | O/M a | Mặc định | Mô tả |
| Từ khóa tổng hợp (REQU EST-LockFeature) |
|
| Xem Bảng 7. (Chỉ các từ khóa cho tất cả các thao tác hoặc thao tác LockFeature.) |
| Từ khóa truy vấn Adhoc (Loại trừ lẫn nhau với Từ khóa truy vấn được lưu trữ và từ khóa LOCKID) |
|
| Xem Bảng 8. |
| Từ khóa truy vấn được lưu trữ (Loại trừ lẫn nhau với Từ khóa truy vấn Adhoc và từ khóa LOCKID) |
|
| Xem Bảng 10. |
| LOCKID | O |
| Chỉ định mã định danh khóa hiện có cho mục đích đặt lại thời hạn khóa. |
| EXPIRY | O | 300 | Số giây mà khóa sẽ tồn tại trước khi bị xóa nếu không nhận được yêu cầu Giao dịch nào để mở khóa. |
| LOCKACTION | O | ALL | Chỉ định cách lấy khóa. ALL chỉ ra rằng tất cả các đối tượng địa lý sẽ bị khóa để thao tác thành công, nếu không, thao tác sẽ đưa ra ngoại lệ CannotLockAIIFeatures. SOME chỉ ra rằng máy chủ sẽ khóa càng nhiều đối tượng địa lý càng tốt; thao tác sẽ luôn thành công mặc dù LockId được trả về có thể không khóa bất kỳ thứ gì. |
| 3 O = Tùy chọn, M = Bắt buộc | |||
12.2.4 Thảo luận tham số
12.2.4.1 Tham số AbstractQueryExpression
Yêu cầu LockFeature hoạt động trên một tập hợp các đối tượng địa lý được xác định bằng cách sử dụng một hoặc nhiều biểu thức truy vấn.
Đối với các yêu cầu được mã hóa XML, Tiêu chuẩn này xác định các phần tử wfs:Query (xem 7.9.2.2) và wfs:StoredQuery (xem 7.9.3.2) có thể được sử dụng làm biểu thức truy vấn trong yêu cầu LockFeature và có thể thay thế cho fes:AbstractQueryExpression (xem ISO 19143 :2010, 6.2).
Các phần tử khác có thể được định nghĩa là có thể thay thế cho fes:AbstractQueryExpression. Tuy nhiên, Tiêu chuẩn này chỉ gán ý nghĩa cho các phần tử wfs:Query và wfs:StoredQuery.
Mã hóa KVP của biểu thức truy vấn tùy chỉnh được xác định trong 7.9.2.3. Nhiều biểu thức truy vấn tùy chỉnh có thể được mã hóa thành yêu cầu được mã hóa KVP.
Mã hóa KVP của biểu thức truy vấn được lưu trữ được xác định trong 7.9.3.3. Cuối cùng, một biểu thức truy vấn được lưu trữ duy nhất có thể được mã hóa thành một yêu cầu được mã hóa KVP.
Các yêu cầu được mã hóa KVP sẽ chỉ chứa các biểu thức truy vấn thuộc một loại: (các) biểu thức truy vấn tùy chỉnh hoặc biểu thức truy vấn được lưu trữ.
12.2.4.2 Tham số LockId
Tham số LockId được chỉ định trong thao tác LockFeature sẽ được sử dụng để đặt lại thời gian hết hạn của khóa hiện có.
VÍ DỤ 1: Yêu cầu được mã hóa XML sau đây sẽ đặt lại thời hạn khóa của khóa đã chỉ định thành 600 giây:
![]()
Thao tác LockFeature như vậy sẽ được thực thi trước khi khóa được chỉ định hết hạn; nếu không, máy chủ sẽ đưa ra một ngoại lệ LockHasExpired (xem Bảng 3).
Thời hạn sẽ được đặt lại tương ứng với thời gian khóa ban đầu được yêu cầu.
VÍ DỤ 2: Nếu khóa ban đầu được đặt trong 300 giây và sau 50 giây, thời gian hết hạn của khóa được đặt lại thành 600 giây, khóa sẽ vẫn có hiệu lực trong 550 giây nữa.
12.2.4.3 Tham số Lock expiry
Tham số expiry có thể được sử dụng để đặt giới hạn về thời gian WFS sẽ giữ khóa trên một đối tượng địa lý trong trường hợp giao dịch không bao giờ được phát hành sẽ giải phóng khóa.
Giới hạn hết hạn được chỉ định bằng số giây.
Bộ đếm thời gian hết hạn sẽ được bắt đầu sau khi toàn bộ yêu cầu khóa đã được xử lý và phản hồi khóa đã được truyền hoàn toàn tới máy khách.
Sau khi hết khoảng thời gian đã chỉ định, WFS sẽ giải phóng khóa nếu nó tồn tại. Bất kỳ giao dịch nào khác được phát hành đối với khóa đó bằng cách sử dụng cùng một mã định danh khóa sẽ không thành công và dịch vụ sẽ đưa ra một ngoại lệ UnlimitedParameterValue như được mô tả trong 7.5.
Nếu một giá trị không được chỉ định cho tham số expiry, thời gian hết hạn mặc định sẽ là 300 giây.
Thời gian hết hạn của khóa hiện tại có thể được kéo dài như mô tả trong 12.2.4.2.
12.2.4.4 Tham số lockAction
Tham số lockAction tùy chọn kiểm soát cách yêu cầu các khóa đối tượng địa lý.
Hành động khóa ALL chỉ ra rằng WFS phải thực hiện khóa trên tất cả các thể hiện đối tượng địa lý được yêu cầu. Nếu không thể khóa tất cả các thể hiện đối tượng địa lý được yêu cầu, thì thao tác sẽ thất bại, dịch vụ sẽ đưa ra ngoại lệ CannotLockAIIFeatures như được quy định trong 7.5 và không có thể hiện đối tượng địa lý nào bị khóa.
Hành động khóa của SOME chỉ ra rằng WFS sẽ thực hiện khóa nhiều thể hiện đối tượng địa lý được yêu cầu nhất có thể.
Hành động khóa mặc định sẽ là ALL.
Hình 20 trình bày một máy trạng thái cho thao tác LockFeature.
12.2.5 Máy trạng thái đối với khóa WFS
Điều khoản nhỏ này định nghĩa máy trạng thái cho trạng thái khóa đối với dịch vụ cung cấp giao diện WFS. Biểu đồ trạng thái minh họa các chuyển đổi được phép giữa các trạng thái. Tất cả các chuyển đổi trạng thái khác không được phép và được coi là lỗi nếu được hiển thị bởi một dịch vụ.
Một dịch vụ sẽ hỗ trợ khả năng khóa nhiều hơn một tập hợp đối tượng địa lý trong đó mỗi đối tượng địa lý chỉ có thể bị khóa bởi một khóa duy nhất. Mỗi khóa là độc lập khi xem từ dịch vụ được định nghĩa bởi đặc tả WFS.

Hình 20 - Mô hình trạng thái đối với khóa WFS
12.3 Phản hồi
12.3.1 Ngữ nghĩa phản hồi
Hình 21 mô tả lược đồ của phản hồi LockFeature.

Hình 21 - Phản hồi LockFeature
12.3.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML của phản hồi LockFeature:

Để phản hồi yêu cầu LockFeature, dịch vụ đối tượng địa lý trên web sẽ tạo phần tử wfs:LockFeatureResponse. Tài liệu này sẽ chứa mã khóa định danh mà ứng dụng khách có thể sử dụng trong các thao tác WFS tiếp theo để hoạt động trên tập hợp các phiên bản đối tượng địa lý bị khóa. Phản hồi cũng có thể chứa các phần tử tùy chọn wfs: Features Locked và wfs:FeaturesNotLocked, tùy thuộc vào giá trị của thuộc tính lockAction (xem 13.2.4.2).
Nếu hành động khóa được chỉ định là ALL và tất cả các phiên bản đối tượng địa lý đã xác định đều bị khóa thành công, WFS sẽ phản hồi bằng phần tử wfs:WFS_LockFeatureResponse chứa phần tử wfs:FeaturesLocked và không có phần tử wfs:FeatureNotLocked (vì tất cả các phiên bản đối tượng địa lý đã xác định đều có thể bị khóa hoặc không có gì cả). Nếu không thể khóa một số hoặc tất cả các phiên bản đối tượng địa lý, WFS sẽ phản hồi với một ngoại lệ, cho biết rằng yêu cầu khóa không thành công do một số hoặc tất cả các phiên bản đối tượng địa lý bị khóa bởi các máy khách khác.
Nếu hành động khóa được chỉ định là SOME, thì phần tử wfs:WFS_LockFeatureResponse sẽ chứa các phần tử <wfs:FeaturesLocked> và wfs:FeatureNotLocked. Phần tử wfs:FeaturesLocked sẽ liệt kê các mã định danh đối tượng địa lý của tất cả các phiên bản đối tượng địa lý đã bị khóa bởi yêu cầu LockFeature. Phần tử wfs:FeaturesNotLocked sẽ chứa danh sách các mã định danh đối tượng địa lý cho các trường hợp đối tượng địa lý không thể bị khóa bởi dịch vụ đối tượng địa lý trên web (có thể do chúng đã bị khóa bởi người khác). Nếu yêu cầu khóa dẫn đến không có đối tượng địa lý nào bị khóa, thì WFS sẽ phản hồi bằng tài liệu <wfs:LockFeatureResponse> có chứa giá trị cho thuộc tính LockId nhưng không chứa phần tử wfs:FeaturesLocked cũng như phần tử wfs:FeatureNotLocked (trong trường hợp khác, trả về giá trị rỗng). Sau khi hoàn thành yêu cầu, LockId sẽ được giải phóng ngay lập tức vì không có tài nguyên nào bị khóa. Nếu như cùng một LockId được sử dụng trong giao dịch tiếp theo, một ngoại lệ InvalidLockId sẽ được đưa ra, như được mô tả trong 7.5, vì giá trị LockId đó không còn tồn tại.
Không có giả định nào được đưa ra về định dạng của mã khóa định danh. Chỉ có yêu cầu mà nó có thể được thể hiện trong bộ ký tự của yêu cầu giao dịch.
12.4 Ngoại lệ
Nếu một WFS không triển khai thao tác LockFeature thì nó sẽ tạo ra một ngoại lệ OperationNotSupported, chỉ ra rằng thao tác này không được hỗ trợ, nếu gặp phải yêu cầu như vậy.
Trong trường hợp một dịch vụ đối tượng địa lý trên web hỗ trợ thao tác LockFeature và gặp lỗi khi phân tích cú pháp yêu cầu, dịch vụ này sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Trong trường hợp một dịch vụ đối tượng địa lý trên web hỗ trợ thao tác LockFeature và gặp lỗi khi xử lý yêu cầu, dịch vụ này sẽ đưa ra một ngoại lệ OperationprocessingFailed như được mô tả trong 7.5.
13 Thao tác GetFeatureWithLock
13.1 Giới thiệu
Thao tác GetFeatureWithLock có chức năng tương tự như thao tác GetFeature (xem Điều 11) ngoại trừ việc để phản hồi thao tác GetFeatureWithLock, WFS sẽ không chỉ tạo tài liệu phản hồi tương tự như tài liệu phản hồi của thao tác GetFeature mà còn khóa các đối tượng địa lý trong tập hợp kết quả, giả định là để cập nhật các đối tượng địa lý trong thao tác giao dịch tiếp theo (xem Điều 15).
13.2 Yêu cầu
13.2.1 Yêu cầu ngữ nghĩa

Hình 22 - Yêu cầu GetFeatureWithLock
13.2.2 Mã hóa XML
Đoạn Lược đồ XML sau đây khai báo mã hóa XML cho thao tác GetFeatureWithLock:

13.2.3 Mã hóa KVP
Mã hóa KVP của thao tác GetFeatureWith Lock tương tự như mã hóa của thao tác GetFeature (xem Bảng 17). Bảng 19 liệt kê các tham số KVP bổ sung có thể được sử dụng với thao tác GetFeatureWithLock.
Bảng 19 - Các từ khóa bổ sung cho mã hóa GetFeatureWithLock KVP
| Thành phần URL | O/M a | Mặc định | Mô tả |
| EXPIRY | O | 300 | Tham số này chỉ có thể được chỉ định nếu yêu cầu là GetFeatureWithLock. Giá trị của nó là một số nguyên dương. Giá trị được chỉ định bằng giây và cho biết khoảng thời gian khóa sẽ được giữ trên các đối tượng địa lý trong tập hợp kết quả. Nếu tham số không được chỉ định thì khóa sẽ được giữ trong khoảng thời gian hết hạn mặc định là 300 giây. |
| LOCKACTION | O | ALL | Chỉ định cách lấy khóa. ALL chỉ ra rằng tất cả các đối tượng địa lý sẽ bị khóa để thao tác thành công, nếu không, thao tác sẽ đưa ra ngoại lệ CannotLockAIIFeatures. SOME chỉ ra rằng máy chủ sẽ khóa càng nhiều đối tượng địa lý càng tốt; thao tác sẽ luôn thành công mặc dù LockId được trả về có thể không khóa bất kỳ thứ gì. |
| a O = Tùy chọn, M = Bắt buộc. | |||
13.2.4 Thảo luận tham số
13.2.4.1 Tham số expiry
Tham số expiry được sử dụng để đặt giới hạn thời gian WFS sẽ duy trì các khóa trong bao lâu, trong trường hợp không bao giờ nhận được yêu cầu Transaction để giải phóng chúng. Thời lượng khóa mặc định là 300 giây hoặc 5 phút.
13.2.4.2 Tham số lockAction
Tham số lockAction kiểm soát cách WFS cố gắng lấy các khóa trên các đối tượng địa lý trong tập hợp kết quả của thao tác.
Giá trị ALL (giá trị mặc định) chỉ ra rằng WFS sẽ cố gắng khóa tất cả các đối tượng địa lý trong tập hợp kết quả. Trong trường hợp điều này là không thể, bởi vì một số đối tượng địa lý đã bị khóa, WFS sẽ đưa ra một ngoại lệ CannotLockAIIFeatures như được mô tả trong 7.5. Nếu tất cả các đối tượng địa lý được khóa thành công, WFS sẽ báo cáo cho máy khách mã định danh khóa (sử dụng thuộc tính LockId trên phân tử wfs:FeatureCollection) có thể được sử dụng trong thao tác giao dịch tiếp theo để thao tác trên các đối tượng địa lý bị khóa và mở khóa (xem 15.2.3.1.2).
Giá trị của SOME chỉ ra rằng WFS sẽ khóa càng nhiều đối tượng địa lý trong tập hợp kết quả càng tốt. Tài liệu phản hồi sẽ chỉ chứa những đối tượng địa lý đã được khóa thành công và WFS sẽ báo cáo cho máy khách mã định danh khóa (sử dụng thuộc tính LockId trên phần tử wfs:FeatureCollection) có thể được sử dụng trong thao tác giao dịch tiếp theo để vận hành trên các đối tượng địa lý bị khóa và mở khoa (xem 15.2.3.1.2).
13.2.4.3 Tham số resultType
Tham số resultType được mô tả trong 7.6.3.6.
Giá trị hợp lệ duy nhất cho thuộc tính resultType cho yêu cầu GetFeatureWithLock sẽ là "kết quả". Nếu máy khách chỉ định giá trị "hits", máy chủ sẽ đưa ra một ngoại lệ InvalidParameterValue (xem 7.5).
13.2 Phản hồi
13.3.1 Giới thiệu
Phản hồi đối với thao tác GetFeatureWithLock tương tự như phản hồi đối với thao tác GetFeature. Điểm khác biệt duy nhất là phản hồi đối với thao tác GetFeatureWithLock bao gồm một giá trị cho tham số lockId.
13.3.2 Tham số lockId
Đối với yêu cầu GetFeatureWithLock, WFS sẽ tạo tài liệu phản hồi bao gồm mã khóa định danh được sử dụng để khóa các đối tượng địa lý trong tập hợp kết quả. Khóa định danh sẽ được mã hóa trong phản hồi bằng cách sử dụng thuộc tính lockId được khai báo trên phần tử wfs:Featurecollection (xem 11.3.2).
VÍ DỤ: Đoạn XML sau đây minh họa cách bao gồm thuộc tính lockId Trong .response cho thao tác GetFeatureWithLock;
![]()
Hình elip được dùng để biểu thị tất cả các thành phần khác có trong phản hồi GetFeatureWithLock giống với các thành phần có trong phản hồi GetFeature (xem 11.3).
13.4 Ngoại lệ
Nếu một WFS không triển khai thao tác GetFeatureWithLock thì nó số tạo ra một ngoại lệ OperationNotSupported, cho biết rằng thao tác không được hỗ trợ, nếu gặp phải yêu cầu như vậy.
Trong trường hợp một dịch vụ đối tượng địa lý trên web hỗ trợ thao tác GetFeatureWithLock và gặp phải lỗi khi phân tích cú pháp yêu cầu, dịch vụ này sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Trong trường hợp một dịch vụ đối tượng địa lý trên web hỗ trợ thao tác GetFeatureWithLock và gặp lỗi khi xử lý yêu cầu, dịch vụ này sẽ đưa ra một ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
14 Quản lý truy vấn lưu trữ
14.1 Giới thiệu
Điều này mô tả các thao tác ListStoredQueries, DescriptionStoredQueries, CreateStoredQuery và DropStoredQuery.
Tất cả các máy chủ sẽ hỗ trợ các thao tác ListStoredQueries và DescriptìonStoredQueries và sẽ triển khai truy vấn lưu trữ GetFeatureByld (xem Bảng 1 và 7.9.3.6).
Các máy chủ triển khai lớp phù hợp Quản lý truy vấn lưu trữ (xem Bảng 1) sẽ khai báo trong định hướng của chúng bằng cách sử dụng ràng buộc ManageStoredQueries (xem Bảng 13) và sẽ triển khai các thao tác CreateStoredQuery và DropStoredQuery.
14.2 Xác định các truy vấn lưu trữ
14.2.1 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML để mô tả hoặc xác định một biểu thức truy vấn lưu trữ:


Loại wfs:StoredQueryDescripType được sử dụng để khai báo phần tử wfs:StoredQueryDescription cung cấp mô tả của truy vấn lưu trữ để phản hồi thao tác DescriptionStoredQueries (xem 14.4) và phần tử wfs:StoredQueryDefinition được sử dụng bởi thao tác CreateStoredQuery (xem 14.5) để xác định một truy vấn được lưu trữ.
Mô tả hoặc định nghĩa của truy vấn lưu trữ chứa siêu dữ liệu mô tả truy vấn được lưu trữ, danh sách không hoặc nhiều đối số mà truy vấn được lưu trữ chấp nhận và một hoặc nhiều biểu thức truy vấn thành phần được thực thi khi truy vấn được lưu trữ được gọi.
14.2.2 Thảo luận tham số
14.2.2.1 Tham số Title
Tham số Title có thể được sử dụng để gán tên mà con người có thể đọc được cho một truy vấn được lưu trữ. Nhiều tiêu đề có thể được chỉ định trong một ngôn ngữ khác. Nếu có nhiều hơn một phần tử wfs:Title được chỉ định, các giá trị của thuộc tính XML:lang cho mỗi phần tử sẽ khác nhau.
Ngôn ngữ của chuỗi Title sẽ được khai báo bằng mã ngôn ngữ gồm hai ký tự như được chỉ định trong IETF RFC 4646. Giá trị ngôn ngữ mặc định là "en".
14.2.2.2 Tham số Abstract
Tham số Abstract có thể được sử dụng để gán một mô tả mà con người có thể đọc được cho một truy vấn được lưu trữ. Nhiều bản tóm tắt có thể được chỉ định bằng một hoặc nhiều ngôn ngữ. Nếu có nhiều phân tử wfs:Abstract được chỉ định, các giá trị của thuộc tính XML:lang cho mỗi phần tử sẽ khác nhau.
Ngôn ngữ của chuỗi Abstract sẽ được khai báo bằng cách sử dụng mã ngôn ngữ gồm hai ký tự như được chỉ định trong IETF RFC 4646. Giá trị ngôn ngữ mặc định là "en".
14.2.2.3 Tham số Metadata
Tham số Metadata có thể được sử dụng để mã hóa nội tuyến hoặc tham chiếu metadata chi tiết hơn về truy vấn được lưu trữ. Phần tử ows:Metadata được mô tả trong OGC 06-121r3.
14.2.2.4 Tham số Parameter
14.2.2.4.1 Giới thiệu
Một truy vấn lưu trữ có thể có 0 hoặc nhiều đối số. Mỗi đối số của truy vấn lưu trữ sẽ được liệt kê trong định nghĩa của truy vấn lưu trữ bằng phần tử wfs:Parameter.
14.2.2.4.2 Các tham số Title, Abstract và Metadata
Xem 14.2.2.1,14.2.2.2 và 14.2.2.3 để biết mô tả về các tham số Title, Abstract và Metadata.
14.2.2.4.3 Tên tham số
Tên của từng đối số của truy vấn lưu trữ sẽ được mã hóa bằng cách sử dụng thuộc tính tên trên phần tử wfs:Parameter.
14.2.2.4.4 Loại tham số
Loại của từng đối số của truy vấn lưu trữ sẽ được mã hóa bằng cách sử dụng thuộc tính loại trên phần tử wfs:Parameter. Giá trị của thuộc tính loại sẽ là QName xác định loại mô tả mô hình nội dung của đối số tương ứng.
VÍ DỤ 1: type="xsd:double" cho biết loại tham số truy vấn được lưu trữ là gấp đôi.
VÍ DỤ 2: type="gml:PolygonPropertyType" cho biết loại tham số truy vấn được lưu trữ là đa giác GML.
14.2.2.5 Tham số QueryExpressionText
14.2.2.5.1 Giới thiệu
Phần tử wfs:QueryExpressionText sẽ được sử dụng để liệt kê một hoặc nhiều biểu thức truy vấn thành phần mà một truy vấn lưu trữ sẽ thực thi khi được gọi.
Mỗi phần tử wfs:QueryExpressionText có thể chứa phần tử wfs:Query (xem 7.9.2.2) hoặc phần tử wfs:StoredQuery (xem 7.9.3.2) hoặc một số nội dung dành riêng cho triển khai khác để chỉ định biểu thức truy vấn thành phần trong ngôn ngữ triển khai khác (xem 14.2.2.5.3).
Trong nội dung của một biểu thức truy vấn thành phần, ký hiệu "${argument_name}'' sẽ được sử dụng để biểu thị nơi các giá trị của đối số của truy vấn lưu trữ sẽ được thay thế trong thời gian chạy. Ký hiệu "${argumenf_name}" có thể xuất hiện nhiều lần nếu giá trị đối số cần được thay thế ở một số vị trí. Tên đối số mã thông báo là trình giữ chỗ cho tên của đổi số của truy vấn lưu trữ.
VÍ DỤ: Biểu thức truy vấn lưu trữ sau tìm tất cả các đối tượng địa lý của các loại FeatureTypel, FeatureType2 và FeatureType3 nằm trong giới hạn do máy khách chỉ định khi gọi truy vấn lưu trữ "Feature In Polygon". Ký hiệu "${AreaOfInterest}" được sử dụng để chỉ ra vị trí giá trị của đối số AreaOfInterest sẽ được thay thế trong thời gian chạy. Ký hiệu này xuất hiện ở ba vị trí trong ví dụ này.


14.2.2.5.2 Khai báo kiểu đối tượng địa lý trả về
Thuộc tính returnFeatureTypes trên phần tử wfs:QueryExpsessionText sẽ được sử dụng để chỉ định (các) loại đối tượng địa lý mà mỗi biểu thức truy vấn thành phần trả về.
Nếu có nhiều hơn một loại đối tượng địa lý trả về được liệt kê, điều này cho biết rằng biểu thức truy vấn thành phần tương ứng trả về một bộ dữ liệu kết hợp bao gồm các loại đối tượng địa lý được liệt kê.
Tên loại đối tượng địa lý được trả về phải từ danh sách tên loại đối tượng địa lý mà máy chủ quảng cáo trong tài liệu năng lực của nó (xem 8.3.3).
14.2.2.5.3 Ngôn ngữ triển khai
Thuộc tính ngôn ngữ của phần tử wfs:QueryExpressionText sẽ được sử dụng để chỉ định ngôn ngữ triển khai của biểu thức truy vấn thành phần.
Các máy chủ tuân thủ Tiêu chuẩn này sẽ hỗ trợ giá trị "urn:ogc:def:queryLanguage:OGC- WFS::WFSQueryExpression", cho biết rằng biểu thức truy vấn thành phần được chỉ định bằng cách sử dụng wfs:Query (xem 7.9.2.2) hoặc wfs: StoredQuery(xem 7.9.3.2).
Các ngôn ngữ triển khai khác có thể được hỗ trợ nhưng Tiêu chuẩn này không gán bất kỳ ý nghĩa nào cho các giá trị khác này. Nếu một máy chủ hỗ trợ các ngôn ngữ triển khai khác cho các truy vấn được lưu trữ, thì nó sẽ hiển thị các giá trị tham số ngôn ngữ này trong khả năng của nó (xem Bảng 12).
CHÚ THÍCH: Đặc tả của biểu thức truy vấn thành phần có thể được thể hiện bằng bất kỳ ngôn ngữ nào mà máy chủ chỉ ra nó hỗ trợ trong khả năng của nó (xem 8.3.3). Điều này có thể bao gồm các ngôn ngữ như SQL, XQuery, XPath và SPARQL. Trên thực tế, nêu máy chủ hỗ trợ, các truy vấn thậm chí có thể được thể hiện bằng mã chẳng hạn như Java.
14.2.2.5.4 Tham số IsPrivate
Nội dung triển khai của biểu thức truy vấn thành phần, được chỉ định bằng phần tử wfs:QueryExpressionText, có thể là private hoặc public. Private có nghĩa là nội dung triển khai chỉ hiển thị với người tạo truy vấn lưu trữ. Public có nghĩa là nội dung triển khai được hiển thị cho mọi người.
Thuộc tính này được đặt khi truy vấn lưu trữ được tạo và xác định xem nội dung triển khai của biểu thức truy vấn thành phần có được trình bày trong phản hồi đối với thao tác DescribeStoredQueries hay không (xem 14.4).
Nếu giá trị của tham số IsPrivate là "true", thì máy chủ sẽ không trình bày nội dung triển khai của biểu thức truy vấn thành phần để phản hồi thao tác DescribleStoredQueries.
Nếu giá trị của tham số IsPrivate là "false", thì máy chủ sẽ trình bày nội dung triển khai của biểu thức truy vấn thành phần để phản hồi cho thao tác DescribleStoredQueries.
14.2.2.6 Tham số id
Tham số id sẽ được sử dụng để gán một mã định danh duy nhất có thể được sử dụng để gọi lại truy vấn lưu trữ nhiều lần.
14.3 Thao tác ListStoredQuery
14.3.1 Yêu cầu ngữ nghĩa
Thao tác ListStoredQueries (xem Hình 23) liệt kê các truy vấn được lưu trữ có sẵn tại máy chủ.

Hình 23 - Yêu cầu ListStoredQueries
14.3.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML cho thao tác ListStoredQueries:

14.3.3 Mã hóa KVP
Bảng 20 xác định mã hóa KVP cho thao tác ListStoredQueries.
Bảng 20 - Từ khóa cho ListStoredQueries KVP-encoding
| Thành phần URL | Mô tả |
| Từ khóa phổ biến: (REQUEST- ListStoredQueries) | Xem bảng 7.(Chỉ các từ khóa đối với tất cả thao tác hoặc thao tác ListStoredQueries) |
14.3.4 Phản hồi
Hình 24 mô tả phản hồi đối với thao tác ListStoredQueries.

Hình 24 - ListStoredQueriesResponse
Đoạn Lược đồ XML sau đây xác định phản hồi cho thao tác ListStoredQueries:

Phản hồi cho thao tác ListStoredQueries là phần tử gốc wfs:ListstoredQueriesResponse chứa một hoặc nhiều phần tử wfs:StoredQuery, mỗi phần tử mô tả một truy vấn lưu trữ mà máy chủ cung cấp.
Các thành phần wfs:Title, wfs:ReturnFeatureType và thuộc tính id được mô tả trong 14.2.
14.3.5 Ngoại lệ
Trong trường hợp máy chủ gặp lỗi khi phân tích cú pháp thao tác ListStoredQueries, nó sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Trong trường hợp máy chủ gặp lỗi khi xử lý thao tác ListStoredQueries, nó sẽ đưa ra một ngoại lệ Xử lý thao tác không thành công như được mô tả trong 7.5.
14.4 Thao tác DescribeStoredQuery
14.4.1 Yêu cầu ngữ nghĩa
Thao tác DescribeStoredQueries (xem Hình 25) cung cấp siêu dữ liệu chi tiết về từng biểu thức truy vấn được lưu trữ mà máy chủ cung cấp.

Hình 25 - Yêu cầu DescribeStoredQueries
14.4.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML cho thao tác DescribeStoredQueries:


Phần tử wfs:DescribeStoredQueries chứa 0 hoặc nhiều phần tử wfs:StoredQueryid liệt kê các mã định danh của các truy vấn lưu trữ để mô tả.
Nếu không có phần tử wfs:StoredQueryId nào được chỉ định thì tất cả các truy vấn lưu trữ do máy chủ cung cấp sẽ được mô tả.
14.4.3 Mã hóa KVP
Bảng 21 xác định mã hóa KVP cho DescribeStoredQueries.
Bảng 21 Từ khóa cho mã hóa DescribeStoredQueries KVP.
| Thành phần URL | O/M3 | Mô tả |
| Các từ khóa phổ biến (REQUEST=DescribeStoredQueries) |
| Xem Bảng 7 (Chỉ các từ khóa cho tất cả các thao tác hoặc thao tác DescribeStoredQueries.) |
| STOREDQUERY_ID | O | Danh sách các mã định danh truy vấn được lưu trữ được phân tách bằng dấu phẩy để mô tả. Nếu từ khóa không được chỉ định thì tất cả các truy vấn được lưu trữ do máy chủ cung cấp sẽ được mô tả. |
| a O = Tùy chọn, M = Bắt buộc. | ||
14.4.4 Phản hồi
14.4.4.1 Phản hồi ngữ nghĩa
Hình 26 mô tả phản hồi đối với thao tác DescribeStoredQueries.

Hình 26 - DescriptionStoredQueriesResponse
14.4.4.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định phản hồi cho thao tác DescribeStoredQueries:

Phản hồi chứa một hoặc nhiều phần tử wfs:StoredQueryDescription, mỗi phần tử mô tả một truy vấn lưu trữ.
Xem 14.2 để biết mô tả về loại wfs:StoredQueryDescriptionType.
14.5 Thao tác CreateStoredQuery
14.5.1 Yêu cầu ngữ nghĩa
Truy vấn lưu trữ có thể được tạo bằng cách sử dụng thao tác CreateStoredQuery (xem Hình 27)

Hình 27 - Yêu cầu CreateStoredQuery
Không phải tất cả các truy vấn được lưu trữ mà máy chủ cung cấp đều cần được tạo bằng cách sử dụng thao tác CreateStoredQuery. Máy chủ có thể được định cấu hình trước để cung cấp bất kỳ số lượng truy vấn được lưu trữ nào được triển khai theo bất kỳ cách nào. Người ta dự đoán rằng các cấu hình của Tiêu chuẩn này có thể xác định các bộ truy vấn lưu trữ mà các WFS tuân thủ phải cung cấp.
CHÚ THÍCH: Dự đoán thêm rằng, trong nhiều trường hợp, vì mục đích hiệu quả và hiệu suất, các truy vấn lưu trữ được định cấu hình trước sẽ được triển khai dưới dạng mã thực thi. Việc triển khai như vậy cũng sẽ cho phép logic truy vấn phức tạp được triển khai và ẩn sau giao diện truy vấn lưu trữ đơn giản.
14.5.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML cho thao tác CreateStoredQuery.


14.5.3 Mã hóa KVP
Không có mã hóa KVP nào được xác định cho thao tác CreateStoredQuery.
14.5.4 Thảo luận tham số
Tham số StoredQueryDetinition, được mã hóa bằng phần tử wfs:StoredQueryDefinition, sẽ chứa định nghĩa của truy vấn lưu trữ. Nhiều truy vấn lưu trữ có thể được tạo trong một yêu cầu CreateStoredQuery. Xem 14.2 để biết mô tả về loại wfs:StoredQueryDescriptionType.
14.5.5 Phản hồi
Hình 28 mô tả phản hồi đối với thao tác CreateStoredQuery.

Hình 28 - Phản hồi CreateStoredQuery
Đoạn Lược đồ XML sau đây xác định phản hồi cho thao tác CreateStoredQuery:

Phần tử gốc của phản hồi là wfs:CreateStoredQuery chứa một thuộc tính duy nhất có tên là "status".
Giá trị hợp lệ duy nhất cho thuộc tính trạng thái là "OK", cho biết rằng truy vấn lưu trữ đã được máy chủ xử lý và lưu trữ thành công. Nếu không, máy chủ sẽ tạo ra một ngoại lệ (xem 7.5).
14.6 Thao tác DropStoredQuery
14.6.1 Yêu cầu ngữ nghĩa
Thao tác DropStoredQuery (xem Hình 29) cho phép loại bỏ các truy vấn lưu trữ đã tạo trước đó khỏi hệ thống.

Hình 29 - Yêu cầu DropStoredQuery
14.6.2 Mã hóa XML
Đoạn Lược đồ XML sau đây xác định mã hóa XML cho thao tác DropStoredQuery:

Yêu cầu chỉ cần chấp nhận mã định danh của truy vấn lưu trữ để loại bỏ. Mã định danh truy vấn lưu trữ sẽ được mã hóa bằng XML bằng cách sử dụng thuộc tính id trên phần tử wfs:DropStoredQuery.
14.6.3 Mã hóa KVP
Bảng 22 xác định mã hóa KVP cho thao tác DropStoredQuery.
Bảng 22 - Từ khóa cho mã hóa DropStoredQuery KVP
| Thành phần URL | O/M a | Mô tả |
| Từ khóa phổ biến (REQUEST= DescribeStoredQueries) |
| Xem Bảng 7 (Chỉ các từ khóa cho tất cả các thao tác hoặc thao tác DescribeStoredQueries.) |
| STOREDQUERY_ID | M | Danh sách các mã định danh truy vấn lưu trữ được phân tách bằng dấu phẩy để mô tả. Nếu từ khóa không được chỉ định thì tất cả các truy vấn lưu trữ do máy chủ cung cấp sẽ được mô tả. |
| a O = Tùy chọn, M = Bắt buộc. | ||
14.6.4 Phản hồi
Đoạn Lược đồ XML sau xác định phản hồi cho thao tác DropStoredQuery:
![]()
Loại wfs:ExecutionStatusType được mô tả trong 14.5.5.
14.7 Ngoại lệ
Nếu một WFS không triển khai các thao tác CreateStoredQuery hoặc DropStoredQuery thì nó sẽ tạo ra một ngoại lệ OperationNotSupported, cho biết rằng thao tác không được hỗ trợ, nếu gặp phải bất kỳ yêu cầu nào trong số này.
Trong trường hợp dịch vụ đối tượng địa lý trên web hỗ trợ các thao tác này và gặp lỗi khi phân tích cú pháp yêu cầu, dịch vụ đó sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5. Trong trường hợp dịch vụ đối tượng địa lý trên web hỗ trợ các thao tác này và gặp lỗi khi xử lý tệp yêu cầu, nó sẽ đưa ra một ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
15 Thao tác Transaction
15.1 Giới thiệu
Thao tác Transaction tùy chọn được sử dụng để mô tả các thao tác chuyển đổi dữ liệu, được áp dụng cho các phiên bản đối tượng địa lý dưới sự kiểm soát của dịch vụ đối tượng địa lý trên web. Sử dụng thao tác Transaction, các Client có thể tạo, sửa đổi, thay thế và xóa các đối tượng địa lý trong kho lưu trữ dữ liệu của dịch vụ đối tượng địa lý trên web. GML (xem TCVN 12155:2018) sẽ được sử dụng làm biểu diễn chính tắc của các đối tượng địa lý và các triển khai WFS cụ thể, có trách nhiệm chuyển đổi hình thức GML chính tắc này thành biểu diễn nội bộ của chúng được sử dụng trong kho lưu trữ dữ liệu (cũng có thể là GML, trong đó trường hợp không cần chuyển đổi).
Khi giao dịch đã hoàn tất, dịch vụ đối tượng địa lý trên web sẽ tạo tài liệu phản hồi XML, như được mô tả trong 15.3, cho biết trạng thái hoàn thành của thao tác.
Các dịch vụ đối tượng địa lý trên web hỗ trợ thao tác Transaction tùy chọn sẽ trả về giá trị thực tế trong khả năng của chúng (mô tả trong 8.3).
15.2 Yêu cầu
15.2.1 Yêu cầu ngữ nghĩa

Hình 30 - Yêu cầu Transaction
15.2.2 Mã hóa XML
Mã hóa XML của một yêu cầu Transaction được xác định bởi đoạn Lược đồ XML sau


Phần tử wfs:Transaction phải chứa 0 hoặc nhiều phần tử có thể thay thế cho phần tử - wfs:AbstractTransactionAction.
Phần tử wfs:AbstractTransactionAction chứa thuộc tính xử lý có thể được sử dụng để gắn thẻ cho mỗi thao tác Transaction bằng một tên ghi nhớ do máy khách chỉ định nhằm mục đích xử lý lỗi (xem 7.6.2.6).
Tiêu chuẩn này xác định các phần tử wfs:lnsert, wfs:Update, wfs:Replace và wfs:Delete có thể thay thế cho phần tử wfs:AbstractTransactionAction. Các phần tử này có thể được sử dụng trong phần tử Transaction wfs:Transaction để mã hóa các thao tác nhằm tạo, sửa đổi, thay thế và hủy các phiên bản đối tượng địa lý.
Một WFS sẽ xử lý các phần tử wfs:lnsert, wfs:Update, wfs:Replace và wfs:Delete theo thứ tự mà chúng được trình bày trong yêu cầu giao dịch. Các hành động cập nhật và xóa sau đó, trong một yêu cầu giao dịch, có thể hoạt động trên các phiên bản đối tượng địa lý được tạo bởi các hành động thêm mới trước đó trong cùng một yêu cầu giao dịch.
Phần tử wfs:Transaction cũng có thể chứa 0 hoặc nhiều phần tử wfs:Native hoặc phần tử có thể thay thế cho wfs:Native mô tả các hành động cụ thể của nhà cung cấp (xem 8.4),
Phần tử wfs:Transaction trống là một yêu cầu hợp lệ và có thể được sử dụng để giải phóng bất kỳ đối tượng địa lý bị khóa nào bằng cách chỉ định mã định danh lock sẽ được giải phóng dưới dạng nội dung của thuộc tính LockId (xem 12.2.4.2) và đặt hành động phát hành thành ALL.
15.2.3 Thảo luận về tham số
15.2.3.1 Khóa
15.2.3.1.1 Khai báo hỗ trợ khóa
Các máy chủ phải khai báo trong dung lượng khả năng của chúng (xem 8.3.3) nếu chúng hỗ trợ khóa dữ liệu tự động bằng ràng buộc AutomaticDataLocking (xem Bảng 14).
Các máy chủ hỗ trợ khóa dữ liệu tự động sẽ không yêu cầu máy khách khóa các đối tượng địa lý trước khi vận hành chúng bằng thao tác Transaction. Các máy chủ như vậy có thể tùy chọn triển khai các thao tác LockFeature (xem Điều 12) hoặc GetFeatureWithLock (xem Điều 13) và không yêu cầu thuộc tính LockId phải được chỉ định trong một hoạt động giao dịch, trừ khi các đối tượng địa lý này trên thực tế đã bị khóa trước đó bằng LockFeature (xem Điều 12) hoặc thao tác GetFeatureWithLock (xem Điều 13).
Các máy chủ không hỗ trợ khóa dữ liệu tự động sẽ triển khai một hoặc nhiều thao tác LockFeature và GetFeatureWithLock và sẽ yêu cầu máy khách khóa các đối tượng địa lý trước khi vận hành chúng. Nếu không làm như vậy máy chủ sẽ đưa ra một ngoại lệ FeatureNotLocked (xem 7.5).
15.2.3.1.2 Tham số LockId
Tham số LockId sẽ được mã hóa bằng thuộc tính có tên LockId trên phần tử wfs:Transaction.
Nội dung của tham số LockId sẽ là định danh khóa thu được từ thao tác LockFeature trước đó (xem Điều 12) hoặc GetFeatureWithLock (xem Điều 13).
Nếu một WFS được đưa ra với một yêu cầu Transaction về cập nhật, thay thế hoặc xóa các đối tượng địa lý bị khóa và yêu cầu Transaction không chứa thuộc tính LockId, thì dịch vụ sẽ đưa ra một ngoại lệ MissingParameterValue (xem 7.5).
Nếu một WFS được đưa ra với yêu cầu Transaction cập nhật, thay thế hoặc xóa các đối tượng địa lý bị khóa và giá trị của thuộc tính LockId không khớp với giá trị định danh khóa cho các đối tượng địa lý bị ảnh hưởng, thì dịch vụ sẽ đưa ra một ngoại lệ InvalidParameterValue (xem 7.5).
Thao tác Insert trong yêu cầu Transaction sẽ không bị ảnh hưởng bởi thuộc tính LockId. Nếu một yêu cầu Transaction chỉ chứa các hành động thêm mới, thuộc tính LockId sẽ không được chỉ định.
Yêu cầu Transaction không cần ảnh hưởng đến tất cả các đối tượng địa lý bị khóa bằng cách sử dụng một giá trị định danh khóa cụ thể.
15.2.3.2 Tham số releaseAction
Tham số releaseAction, được mã hóa dưới dạng thuộc tính releaseAction của phần tử giao dịch wfs:Transaction, kiểm soát cách các đối tượng địa lý bị khóa được xử lý khi yêu cầu giao dịch hoàn tất.
Giá trị ALL chỉ ra rằng các khóa trên tất cả các phiên bản đối tượng địa lý bị khóa bằng giá trị lockId đã chỉ định sẽ được giải phóng khi giao dịch hoàn tất, bất kể phiên bản đối tượng địa lý cụ thể trong nhóm bị khóa có thực sự được vận hành hay không. Đây là thao tác mặc định nếu không có giá trị nào được chỉ định cho thuộc tính releaseAction.
Giá trị của SOME chỉ ra rằng chỉ các khóa trên các phiên bản đối tượng địa lý được sửa đổi bởi giao dịch mới được giải phóng. Các phiên bản đối tượng địa lý bị khóa, chưa sửa đổi khác sẽ vẫn bị khóa bằng cách sử dụng cùng một mã định danh khóa để các giao dịch tiếp theo có thể hoạt động trên các phiên bản đối tượng địa lý đó. Trong trường hợp thuộc tính releaseAction được đặt thành giá trị SOME, bộ đếm thời gian hết hạn sẽ được đặt lại về 0 sau mỗi giao dịch, trừ khi tất cả trường hợp đối tượng địa lý trong nhóm bị khóa đã được vận hành. Ví dụ: nếu ứng dụng client khóa 20 phiên bản đối tượng địa lý và sau đó gửi yêu cầu giao dịch chỉ hoạt động trên 10 trong số các phiên bản đối tượng địa lý bị khóa đó, hành động phát hành của SOME có nghĩa là 10 phiên bản đối tượng địa lý không thay đổi còn lại sẽ vẫn bị khóa khi giao dịch kết thúc. Sau đó, các hoạt động giao dịch tiếp theo có thể được gửi bởi ứng dụng client, sử dụng cùng một mã định danh khóa để sửa đổi 10 trường hợp đối tượng địa lý còn lại.
15.2.3.3 Tham số srsName
Tham số srsName sẽ được mã hóa thành thuộc tính srsName trên phần tử wfs:Transaction.
Xem 7.6.5.5 để biết mô tả về tham số srsName.
15.2.4 Thao tác Insert
15.2.4.1 Mã hóaXML
Đoạn Lược đồ XML sau đây khai báo phần tử wfs:lnsert

Phần tử wfs:Insert được sử dụng để tạo các phiên bản đối tượng địa lý mới trong kho lưu trữ dữ liệu của dịch vụ đối tượng địa lý trên web. Theo mặc định, trạng thái ban đầu của một đối tượng địa lý được tạo được thể hiện bằng GML (xem TCVN 12155:2018) và sẽ xác thực tương ứng với lược đồ ứng dụng GML được tạo bởi thao tác DescribeFeatureType (xem Điều 9). Nhiều phần tử wfs:lnsert có thể được bao gồm trong một yêu cầu Transaction và nhiều phiên bản đối tượng địa lý có thể được tạo bằng cách sử dụng một phần tử wfs:lnsert.
15.2.4.2 Tham số đầu vào tiêu chuẩn
Xem 7.6.5 để biết mô tả về các tham số đầu vào tiêu chuẩn.
15.2.5 Thao tác Update
15.2.5.1 Mã hóa XML
Đoạn Lược đồ XML sau đây khai báo phần tử wfs:Update

Phần tử wfs:Update chứa một hoặc nhiều phần tử wfs:Property mô tả thay đổi giá trị được thực hiện đối với một trong các thuộc tính của loại đối tượng địa lý được đặt tên rõ ràng. Nhiều phần tử wfs:Update có thể được chứa trong một yêu cầu wfs:Transaction, để có thể thực hiện nhiều thay đổi đối với các đối tượng địa lý cùng loại hoặc khác loại.
15.2.5.2 Thảo luận tham số
15.2.5.2.1 Phần tử đặc tính
Phần tử wfs:Property chứa hai phần tử con: phần tử wfs:ValueReference và phần tử wfs:Value tùy chọn.
Phần tử wfs:Value sẽ chứa giá trị thay thế cho nút được chỉ định bởi phần tử wfs:ValueReference hoặc sẽ không có nội dung chỉ ra rằng nút được tham chiếu sẽ được gán một giá trị NULL. Nếu, theo lược đồ của loại đối tượng địa lý, nút được tham chiếu không được phép có giá trị NULL, thì máy chủ sẽ đưa ra một ngoại lệ InvalidValue (xem 7.5).
Phần tử wfs:ValueReference sẽ chứa biểu thức đường dẫn trỏ đến đặc tính đối tượng địa lý hoặc nút con của đặc tính đối tượng địa lý sẽ được sửa đổi. Bước đầu tiên của biểu thức đường dẫn phải là tên đặc tính hợp lệ của loại đối tượng địa lý được chỉ định bằng cách sử dụng thuộc tính typeName trên phần tử wfs:Update. Các bước tiếp theo phải tuân thủ các quy tắc mã hóa XPath được mô tả trong ISO 19143:2010, 7.4.4.
Thuộc tính hành động trên phần tử wfs:ValueReference kiểm soát cách cập nhật giá trị của nút được tham chiếu.
Nếu thuộc tính hành động có giá trị là “insertBefore", nội dung của phần tử wfs:Value sẽ được thêm vào một nút mới được tạo trước nút được trỏ đến bởi nội dung của phần tử wfs:ValueReference.
Nếu thuộc tính hành động có giá trị là “insertAfter”, thì nội dung của phần tử wfs:Value sẽ được thêm vào một nút mới được tạo sau nút được trỏ đến bởi nội dung của phần tử wfs:ValueReference.
Nếu thuộc tính hành động có giá trị là “remove”, thì nút được chỉ ra bởi nội dung của phần tử wfs:ValueReference sẽ bị xóa. Trong trường hợp này, phần tử wfs:Value có thể bị bỏ qua. Tuy nhiên, nếu nó được chỉ định, thì nó sẽ bị bỏ qua khi thuộc tính hành động được đặt thành "remove".
Nếu thuộc tính hành động có giá trị là “replace”, nội dung của phần tử wfs:Value sẽ thay thế nội dung hiện tại của nút được trỏ đến bởi nội dung của phần tử wfs:ValueReference.
Giá trị “replace” là giá trị mặc định của thuộc tính hành động.
Trong mọi trường hợp, nếu hành động được chỉ định dẫn đến việc làm mát hiệu lực phiên bản đối tượng địa lý theo lược đồ loại đối tượng địa lý thu được bằng cách sử dụng thao tác DescribeFeatureType (xem Điều 9), thì máy chủ sẽ đưa ra một ngoại lệ InvalidValue (xem 7.5).
15.2.5.2.2 Phần tử lọc
Biểu thức bộ lọc, được mã hóa bằng cách sử dụng phần từ fes:Filter (xem ISO 19143:2010, Điều 7), có thể giới hạn phạm vi của một thao tác cập nhật đối với một tập hợp các đối tượng địa lý được liệt kê hoặc đối với một tập hợp các đối tượng địa lý được xác định bằng cách sử dụng các ràng buộc không gian và không gian.
Trong trường hợp phần tử fes:Filter không xác định bất kỳ phiên bản đối tượng địa lý nào để hoạt động, thao tác cập nhật sẽ không có hiệu lực. Đây không phải là một điều kiện ngoại lệ và WFS sẽ không đưa ra ngoại lệ nào.
Định nghĩa đầy đủ của fes: Filter được mô tả trong Điều 7 của ISO 19143:2010.
15.2.5.2.3 Thuộc tính typeName
Giá trị của thuộc tính typeName sẽ xác định loại đối tượng địa lý sẽ được cập nhật. Giá trị của nó phải là một trong các loại đối tượng địa lý được liệt kê trong danh sách có trong tài liệu năng lực của dịch vụ đối tượng địa lý trên web (xem 8.3.3).
15.2.5.2.4 Thông số đầu vào tiêu chuẩn
Xem 7.6.5 để biết mô tả về các tham số đầu vào tiêu chuẩn.
15.2.6 Thao tác Replace
15.2.6.1 Mã hóa XML
Đoạn Lược đồ XML sau đây khai báo phần tử wfs:Replace:

Không giống như thao tác cập nhật sửa đổi các thuộc tính đối tượng địa lý riêng lẻ, thao tác thay thế sẽ thay thế một phiên bản đối tượng địa lý hiện có bằng một phiên bản được chỉ định trong hành động. Nếu máy chủ hỗ trợ lập phiên bản, điều này có tác dụng tạo phiên bản mới nhất.
15.2.6.2 Thảo luận tham số
15.2.6.2.1 Biểu thức lọc
Biểu thức lọc bắt buộc (xem ISO 19143:2010, Điều 7) sẽ được sử dụng để xác định đối tượng địa lý hoặc các đối tượng địa lý nào sẽ được thay thế bằng phiên bản được chỉ định trong phần tử wfs:Replace.
15.2.6.2.2 Thông số đầu vào tiêu chuẩn
Xem 7.6.5 để biết mô tả về các tham số đầu vào tiêu chuẩn.
15.2.7 Thao tác Delete
15.2.7.1 Mã hóa XML
Đoạn Lược đồ XML sau đây khai báo phần tử wfs:Delete:

Phần tử wfs:Delete được sử dụng để mã hóa yêu cầu xóa nhằm loại bỏ một hoặc nhiều phiên bản đối tượng địa lý, thuộc loại đối tượng địa lý cụ thể, khỏi khả năng truy vấn đối với ứng dụng khách bằng cách sử dụng thao tác GetFeature (xem Điều 11), GetFeatureWithLock (xem Điều 13) và GetPropertyValue (xem Điều 10). Điều này có thể có nghĩa là các đối tượng địa lý bị xóa khỏi kho lưu trữ dữ liệu hoặc các đối tượng địa lý đã ngừng hoạt động nếu kho lưu trữ dữ liệu là kho lưu trữ dữ liệu đã tạo phiên bản trước đó.
15.2.7.2 Thảo luận tham số
15.2.7.2.1 Thuộc tính typeName
Giá trị của thuộc tính typeName sẽ xác định loại đối tượng địa lý sẽ bị xóa. Giá trị của tham số typeName phải khớp với một trong các tên loại đối tượng địa lý được quảng cáo trong tài liệu năng lực của máy chủ (xem 8.3.3).
15.2.7.2.2 Biểu thức lọc
Phạm vi của thao tác xóa sẽ bị hạn chế bằng cách sử dụng phần tử fes:Filter như được mô tả trong Điều 7 của ISO 19143:2010. Trong trường hợp phần tử fes:Filter không xác định bất kỳ trường hợp đối tượng địa lý nào cần xóa, thao tác xóa sẽ không có hiệu lực. Đây không phải là một điều kiện ngoại lệ.
15.2.8 Thao tác Native
Rõ ràng là một giao diện mở chỉ có thể hỗ trợ một tập hợp các khả năng chung nhất định. Phần tử wfs:Native nhằm mục đích cho phép truy cập vào các khả năng dành riêng cho nhà cung cấp của bất kỳ kho lưu trữ dữ liệu hoặc WFS cụ thể nào.
Phần tử wfs:Native được xác định bởi đoạn Lược đồ XML sau:

Phần tử wfs:Native chỉ chứa lệnh hoặc thao tác đặc biệt.
Thuộc tính vendorid sẽ được sử dụng để xác định nhà cung cấp nhận ra lệnh hoặc thao tác được bao quanh bởi phần tử wfs:Native. Thuộc tính được cung cấp như một phương tiện cho phép dịch vụ đối tượng địa lý trên web xác định xem nó có thể xử lý lệnh hay không. Giá trị nhà cung cấp hợp lệ sẽ được quảng cáo, sử dụng ràng buộc tham số có tên là "vendorld", trong tài liệu năng lực của dịch vụ (xem 8.3.3).
Thuộc tính safeTolgnore được sử dụng để hướng dẫn hành vi của dịch vụ đối tượng địa lý trên web khi thao tác Native không được nhận dạng. Thuộc tính safeTolgnore có hai giá trị có thể có: True hoặc False. Các giá trị có ý nghĩa như sau:
![]()
Giá trị False cho biết rằng không thể bỏ qua phần tử wfs:Native và thao tác liên kết với phần tử đó sẽ không thành công nếu dịch vụ đối tượng địa lý trên web không thể xử lý phần tử đó.
![]()
Giá trị True cho biết rằng phần tử wfs.Native có thể được bỏ qua một cách an toàn.
VÍ DỤ: Ví dụ này minh họa việc sử dụng phần từ wfs:Native để kích hoạt đối tượng đặc biệt của cơ sở dữ liệu quan hệ dựa trên SQL. Trong trường hợp này, phần tử chỉ ra rằng đây là một lệnh của Oracle và lệnh đó có thể được bỏ qua một cách an toàn.
![]()
15.3 Phản hồi
15.3.1 Phản hồi ngữ nghĩa
Để đáp ứng yêu cầu Transaction, dịch vụ đối tượng địa lý trên web sẽ tạo tài liệu XML cho biết trạng thái kết thúc của giao dịch. Ngoài ra, nếu yêu cầu Transaction bao gồm các phần tử wfs:lnsert thì dịch vụ đối tượng địa lý trên web sẽ báo cáo số nhận dạng đối tượng địa lý của tất cả các đối tượng địa lý mới được tạo.
Hình 31 mô tả phản hồi đối với thao tác Transaction.

Hình 31 - Phản hồi Transaction
15.3.2 Phần tử TransactionResponse
Phần tử ban đầu của phản hồi đối với yêu cầu Transaction được gọi là wfs:TransactionResponse Đoạn Lược đồ XML sau đây khai báo phần tử wfs:TransactionResponse

Phần tử wfs:TransactionResponse chứa bản tóm tắt các hành động được thực hiện bởi giao dịch và tùy chọn danh sách các số nhận dạng của bất kỳ đối tượng địa lý mới hoặc phiên bản đối tượng địa lý nào được tạo bởi giao dịch.
15.3.3 Phần tử TransactionSummary
Đoạn Lược đồ XML sau đây khai báo phần tử wfs:TransactionSummary:

Phần tử wfs:TransactionSummary chứa số lượng đối tượng địa lý được tạo (tức là wfs:totalInserted), được sửa đổi (wfs:totalUpdated), được thay thế (wfs:totalReplaced) hoặc bị xóa (wfs:totalDeleted) bởi các hành động trong yêu cầu Transaction.
Nếu giao dịch không chứa bất kỳ hành động Insert nào (xem 15.2.4), phần tử wfs:totallnserted sẽ bị bỏ qua.
Nếu giao dịch không chứa bất kỳ hành động Update nào (xem 15.2.5), phần tử wfs:totalUpdated sẽ bị bỏ qua.
Nếu giao dịch không chứa bất kỳ hành động Replace nào (xem 15.2.6), phần tử wfs:totalReplaced sẽ bị bỏ qua.
Nếu giao dịch không chứa bất kỳ hành động Delete nào (xem 15.2.7), phần tử wfs:totalDeleted sẽ bị bỏ qua.
Chỉ các đối tượng địa lý thuộc loại được liệt kê trong tài liệu của dịch vụ đối tượng địa lý trên web mới được tính khi tạo bản tóm tắt này.
15.3.4 Phần tử InsertResults
Đoạn Lược đồ XML sau đây khai báo wfs:ActionResultsType, đó là dạng các phần tử wfs:lnsertResults, wfs:UpdateResults và wfs:ReplaceResults:


Nếu một yêu cầu giao dịch chứa các thao tác thêm mới, cập nhật và/hoặc thay thế thì các phần tử wfs:lnsertResults, wfs:UpdateResults và/của wfs:ReplaceResults sẽ được chỉ định trong giao dịch phản hồi.
Phần tử wfs:lnsertResults chứa một hoặc nhiều phần tử wfs:Feature cho biết mã định danh đối tượng địa lý của các phiên bản đối tượng địa lý mới được tạo. Một phần tử wfs:Feature sẽ được báo cáo cho mỗi phiên bản đối tượng địa lý mới được tạo.
Ngoài ra, các phần tử wfs:Feature sẽ được trình bày theo thứ tự mà các hành động thêm mới đã gặp phải trong phần tử wfs:Transaction.
Ngoài ra, các phần tử wfs:Feature có thể được tương quan để thêm các hành động bằng cách sử dụng thuộc tính handle. Nếu một giá trị được chỉ định cho thuộc tính xử lý trên phần tử wfs:lnsert đã tạo đối tượng địa lý, thì giá trị xử lý tương tự có thể được chỉ định làm giá trị của thuộc tính xử lý trên phần tử wfs:Feature để cho biết thao tác thêm mới nào đã tạo thể hiện của đối tượng địa lý nào.
15.3.5 Phần tử UpdateResults
Nếu một yêu cầu giao dịch chứa các thao tác cập nhật và máy chủ hỗ trợ phiên bản, thì phần tử wfs:UpdateResults sẽ được chỉ định trong phản hồi giao dịch để báo cáo những đối tượng địa lý nào .đã được thay đổi và số nhận dạng mới của chúng là gì.
Phần tử wfs:UpdateResults chứa một hoặc nhiều phần tử wfs:Feature cho biết mã định danh đối tượng địa lý mới của các phiên bản đối tượng địa lý được cập nhật. Một phần tử wfs:Feature sẽ được báo cáo cho mỗi phiên bản đối tượng địa lý được cập nhật. Mỗi phần tử wfs:Feature sẽ chứa một phần tử fes:Resourceld (xem ISO 19143:2010, 7.11) sẽ bao gồm thuộc tính thoát có giá trị là mã định danh đối tượng địa lý của phiên bản đối tượng địa lý mới được tạo và thuộc tính oldRid có giá tộ là định danh của phiên bản trước.
Ngoài ra, các phần từ wfs:Feature sẽ được trình bày theo thứ tự mà các thao tác cập nhật đã gặp phải trong phần tử wfs:Transaction.
Ngoài ra, các phần tử wfs:Feature có thể tương quan với các thao tác cập nhật bằng cách sử dụng thuộc tính handle. Nếu một giá trị được chỉ định cho thuộc tính handle trên phần tử wfs:Update đã cập nhật một đối tượng địa lý, thì giá trị handle tương tự có thể được chỉ định làm giá trị của thuộc tính handle trên phần tử wfs:Feature để cho biết thao tác cập nhật nào đã thay đổi đối tượng địa lý nào.
15.3.6 Phần tử ReplaceResults
Nếu yêu cầu giao dịch chứa thao tác thay thế và máy chủ hỗ trợ tạo phiên bản, thì phần tử wfs:ReplaceResults sẽ được chỉ định trong phản hồi giao dịch để báo cáo đối tượng địa lý nào đã được thay thế và số nhận dạng mới của chúng là gì.
Phần tử wfs:ReplaceResults chứa một hoặc nhiều phần từ wfs:Feature cho biết mã định danh đối tượng địa lý mới của các thể hiện đối tượng địa lý được thay thế. Một phần tử wfs:Feature sẽ được báo cáo cho mỗi phiên bản đối tượng địa lý được thay thế? Mỗi phần tử wfs:Feature sẽ chứa một phần tử fes:Resourceld (xem ISO 19143:2010, 7.11) sẽ bao gồm thuộc tính thoát có giá trị là mã định danh đối tượng địa lý của phiên bản đối tượng địa lý mới được tạo và thuộc tính oldRid có giá trị là định danh của phiên bản trước.
Ngoài ra, các phần tử wfs:Feature sẽ được trình bày theo thứ tự mà các thao tác thay thế đã gặp phải trong phần tử wfs:Transaction.
Ngoài ra, các phần tử wfs:Feature có thể được tương quan để thay thế các hành động bằng cách sử dụng thuộc tính handle. Nếu một giá trị được chỉ định cho thuộc tính handle trên phần tử wfs:Replace đã thay thế một đối tượng địa lý, thì giá trị handle tương tự có thể được chỉ định làm giá trị của thuộc tính handle trên phần tử wfs:Feature để cho biết thao tác thay thế nào đã thay thế phiên bản đối tượng địa lý nào.
15.4 Ngoại lệ
Trong trường hợp dịch vụ đối tượng địa lý trên web gặp lỗi khi phân tích cú pháp yêu cầu Transaction, dịch vụ này sẽ đưa ra một ngoại lệ OperationParsingFailed như được mô tả trong 7.5.
Nếu một dịch vụ đối tượng địa lý trên web gặp lỗi trong khi xử lý một hành động cụ thể có trong yêu cầu Transaction, thì dịch vụ đó sẽ đưa ra một ngoại lệ OperationProcessingFailed như được mô tả trong 7.5.
Phụ lục A
(Quy định)
Kiểm tra sự phù hợp
A.1 Các lớp phù hợp
A.1.1 WFS đơn giản (Simple WFS)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Simple WFS.
b) Phương pháp kiểm tra: Gửi yêu cầu đến máy chủ và xác minh những điều sau: tài liệu về khả năng mà máy chủ tạo ra bao gồm các thao tác GetCapabilities, DescribeFeatureType, ListStoredQueries, DescribeStoredQueries và thao tác GetFeature với truy vấn được lưu trữ GetFeatureById; xác minh rằng phản hồi đối với yêu cầu DescriptionFeatureType luôn là một lược đồ ứng dụng hoàn chỉnh; xác minh A.2.22.4; xác minh rằng dịch vụ hỗ trợ ít nhất một ràng buộc dịch vụ (xem Phụ lục D). Xác minh danh sách các kiểm tra phù hợp sau đây: A.2.2, A.2.3, A.2.4, A.2.5, A.2.6.1 và/hoặc A.2.6.2, A.2.7.1 và/hoặc A.2.7.2, A.2.8.1, A.2.9, A.2.14, A.2.15, A.2.16, A.2.17, A.2.19.1, A.2.19.2.1, A.2.21, A.2.22.4. Xác minh kiểm tra phù hợp ISO 19143:2010, A.1 được đáp ứng. Xác minh rằng các kiểm tra phù hợp TCVN 12155:2018, A.1.1, A.1.4, A.1.5, A.1.7, B.3, B.5 và B.2.3 đều được đáp ứng.
c) Tài liệu tham khảo: 7.9.3.6; Mục 8; 9;10 và 11 (Chỉ hành động wfs:StoredQuery); 14.3; 14.4
d) Loại thử nghiệm: Khả năng
A.1.2 WFS cơ bản (Basic WFS)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Basic WFS.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Simple WFS. Xác minh trong tài liệu năng lực rằng máy chủ bao gồm các thao tác GetPropertyValue và GetFeature. Xác minh hoạt động của thao tác GetPropertyValue và GetFeature bằng hành động truy vấn được lưu trữ. Xác minh rằng máy chủ triển khai ít nhất lớp phù hợp bộ lọc không gian tối thiểu (Minimum Spatial Filter) cho ISO 19143. Xác minh danh sách các kiểm tra phù hợp sau: A.2.2, A.2.7, A.2.8.1, A.2.11.2, A.2.12, A.2.13, A.2.19, A.2.20.1, A.2.20.2, A.2.22. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc lmplementsBasic<WFS thiết lập giá trị là TRUE. Xác minh rằng các kiểm tra phù hợp ISO 19143:2010, A. 2, A.7, A.8, A.9, A.11, A.12 và A.14 đều thỏa mãn. Xác minh rằng kiểm tra phù hợp TCVN 12155:2018, B. 4 được đáp ứng.
c) Tham khảo: Mục 10 và 11 (hành động wfs:Query và wfs:StoredQuery)
d) Loại thử nghiệm: Khả năng
A.1.3 WFS giao dịch (Transactional WFS)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Transactional WFS
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Basic WFS. Xác minh trong tài liệu năng lực rằng máy chủ bao gồm thao tác Transaction. Kiểm chứng hoạt động của thao tác Transaction. Xác minh danh sách các kiểm tra phù hợp sau: A.2.2, A.2.8.2, A.2.10, A.2.11.1, A.2.18. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsTransactionalWFS được thiết lập giá trị là TRUE.
c) Tham khảo: Mục 15
d) Loại thử nghiệm: Khả năng
A.1.4 Khóa WFS (Locking WFS)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Locking WFS.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Transactional WFS. Xác minh trong tài liệu năng lực rằng máy chủ bao gồm LockFeature hoặc GetFeatureWithLock hoặc cả hai thao tác. Xác minh hoạt động của các thao tác được liệt kê. Xác minh danh sách kiểm tra sự phù hợp sau đây: A.1.3. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsLockingWFS được thiết lập giá trị là TRUE.
c) Tham khảo: Khoản 12, 13
d) Loại kiểm tra: Khả năng
A.1.5 HTTP GET
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp HTTP GET.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai mã hóa KVP cho tất cả các hoạt động được liệt kê trong phần OperationsMetadata (OperationsMetadata) của tài liệu năng lực và tất cả các hoạt động có mã hóa KVP được xác định trong Tiêu chuẩn này. Xác minh danh sách các kiểm tra phù hợp sau: A.2.6.1, A.2.7.1, A.2.13.2. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc KVPEncoding được thiết lập giá trị là TRUE.
c) Tham khảo: Phụ lục D
d) Loại thử nghiệm: Khả năng
A.1.6 HTTP POST
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp HTTP POST.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai mã hóa XML cho tất cả các thao tác được liệt kê trong phần OperationsMetadata của tài liệu năng lực. Xác minh danh sách kiểm tra sự phù hợp sau đây: A.2.6.2, A.2.7.2, A.2.13.1. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc XMLEncoding được thiết lập giá trị là TRUE.
c) Tham khảo: Phụ lục D
d) Loại thử nghiệm: Khả năng
A.1.7 SOAP
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp SOAP.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai mã hóa XML cho tất cả các thao tác được liệt kê trong phần OperationsMetadata của tài liệu năng lực. Xác minh rằng máy chủ hỗ trợ liên kết dịch vụ SOAP. Xác minh danh sách kiểm tra sự phù hợp sau đây: A.1.2. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc SOAPEncoding được thiết lập giá trị là TRUE.
c) Tham khảo: Phụ lục D
d) Loại thử nghiệm: Khả năng
A.1.8 Thừa kế (Inheritance)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp thừa kế.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai hàm XPath schema-element(). Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsInheritance được thiết lập giá trị là TRUE. Xác minh rằng kiểm tra phù hợp ISO 19143:2010, A.15 được đáp ứng.
c) Tham khảo: 7.9.24.2, A.2.22.1.2
d) Loại thử nghiệm: Khả năng
A.1.9 Phân giải từ xa (Remote resolve)
a) Mục đích kiểm tra: Xác minh rằng máy chủ có khả năng phân giải các tham chiếu từ xa.
b) Phương pháp kiểm tra: Xem A.2.17.2.3. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc Remote Resolve được thiết lập giá trị là TRUE. Xác minh rằng kiểm tra phù hợp TCVN 12155:2018, B. 2.1 được đáp ứng.
c) Tham khảo: 7.6.4
d) Loại thử nghiệm: Khả năng
A.1.10 Phân trang phản hồi (Response paging)
a) Mục đích kiểm tra: Xác minh rằng máy chủ thực hiện phân trang phản hồi.
b) Phương pháp kiểm tra: Xem A.2.20. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsResultPaging được thiết lập giá trị là TRUE. Xác minh rằng kiểm tra phù hợp TCVN 12155:2018, B.3 được đáp ứng.
c) Tham khảo: 7.7.4.4
d) Loại thử nghiệm: Khả năng
A.1.11 Kết hợp tiêu chuẩn (Standard joins)
a) Mục đích kiểm tra: Xác minh rằng máy chủ thực hiện các phép kết hợp tiêu chuẩn.
b) Phương pháp kiểm tra: Xem A.2.22.2.1. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsStandardJoins được thiết lập giá trị là TRUE. Xác minh rằng các kiểm tra phù hợp ISO 19143:2010, A.8 và A.9 đều thỏa mãn.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Khả năng
A.1.12 Kết hợp không gian (Spatial joins)
a) Mục đích kiểm tra: Xác minh rằng máy chủ thực hiện các kết nối không gian.
b) Phương pháp kiểm tra: Xem A.2.22.2.2. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsSpatialJoins được thiết lập giá trị là TRUE. Xác minh rằng các bài kiểm tra phù hợp ISO 19143:2010, A.11 và A.12 đều thỏa mãn.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Khả năng
A.1.13 Kết hợp tạm thời (Temporal joins)
a) Mục đích kiểm tra: Xác minh rằng máy chủ thực hiện các phép kết hợp tạm thời
b) Phương pháp thử: Xem A.2.22.2.3. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsTemporalJoins được thiết lập giá trị là TRUE. Xác minh rằng các bài kiểm tra phù hợp ISO 19143:2010, A.9 và A.10 đều thỏa mãn.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Khả năng
A.1.14 Phiên bản đối tượng địa lý (Feature versions)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp các phiên bản Feature.
b) Phương pháp kiểm tra: Xem A.2.11, Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ImplementsFeatureVersioning được thiết lập giá trị là TRUE. Xác minh rằng kiểm tra phù hợp ISO 19143:2010, A.11 được đáp ứng.
c) Tham khảo: ISO 19143:2010, 7.11
d) Loại thử nghiệm: Khả năng
A.1.15 Quản lý lưu trữ truy vấn (Manage stored queries)
a) Mục đích kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Manage stored queries
b) Phương pháp kiểm tra: Xác minh rằng máy chủ triển khai lớp phù hợp Basic WFS. Xác minh rằng máy chủ bao gồm các thao tác CreateStoredQuery và DropStoredQuery. Gửi yêu cầu đến máy chủ để xác minh hoạt động của thao tác CreateStoredQuery và DropStoredQuery. Đối với thử nghiệm A.2.23, hãy xác minh rằng giá trị của ràng buộc ManageStoredQueries được thiết lập giá trị TRUE. Xác minh rằng kiểm tra phù hợp ISO 19143:2010, A.1 được đáp ứng.
c) Tài liệu tham khảo: 14.4,14.5
d) Loại thử nghiệm: Khả năng
A.2 Thử nghiệm cơ bản (Basic tests)
A.2.1 Đàm phán phiên bản (Version Negotiation)
a) Mục đích kiểm tra: Để xác minh rằng máy chủ xử lý đúng cách đàm phán phiên bản và máy chủ hỗ trợ phiên bản cụ thể “2.0.0”
b) Phương pháp kiểm tra: Thực hiện yêu cầu GetCapabilities với thông số phiên bản được đặt thành “2.0.0” và xác minh phản hồi là tài liệu về khả năng hợp lệ như được mô tả trong Tiêu chuẩn này (xem Điều 8.3).
c) Tham khảo: 6.2.1, kiểm tra sự phù hợp OGC 06-121r3:2009, A.4.2.3
d) Loại thử nghiệm: Cơ bản
A.2.2 Liệt kê phiên bản 2.0.0 dưới dạng số phiên bản yêu cầu được hỗ trợ
a) Mục đích kiểm tra: Để xác minh rằng máy chủ liệt kê phiên bản số “2.0.0” là phiên bản yêu cầu được hỗ trợ trong tài liệu mô tả khả năng của nó.
b) Phương pháp kiểm tra: Thực hiện yêu cầu GetCapabilities và xác minh rằng phiên bản số “2.0.0” được liệt kê là một trong các mục trong nội dung của phần tử ows:ServiceTypeVersion.
c) Tham khảo: 6.2.2
d) Loại thử nghiệm: Cơ bản
A.2.3 Số phiên bản không hợp lệ
a) Mục đích kiểm tra: Để xác minh rằng một yêu cầu, không phải là yêu cầu GetCapabilities, với số phiên bản được đặt thành một yêu cầu mà máy chủ không yêu cầu hỗ trợ trong khả năng của nó.
b) Phương pháp kiểm tra: Xem lại phản hồi đối với yêu cầu GetCapabilites và xác định (các) phiên bản yêu cầu mà máy chủ yêu cầu hỗ trợ. Thực hiện một hoặc nhiều yêu cầu WFS với phiên bản không có trong danh sách các phiên bản được hỗ trợ và xác minh rằng máy chủ đã tạo ra một ngoại lệ InvalidParameterValue.
c) Tham khảo: 6.2.2
d) Loại thử nghiệm: Cơ bản
A.2.4 Đàm phán phiên bản cho yêu cầu GetCapabilities
a) Mục đích kiểm tra: Để xác minh rằng máy chủ xử lý đúng cách đàm phán phiên bản cho thao tác GetCapabilities.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ tuân thủ kiểm tra được mô tả trong OGC 06-121r3.
c) Tham khảo: 6.2.3, OGC 06-121r3:2009, A.4.2.3
d) Loại thử nghiệm: Cơ bản
A.2.5 Phản hồi các yêu cầu được mã hóa XML và KVP
a) Mục đích kiểm tra: Để xác minh rằng phản hồi cho một yêu cầu là giống hệt nhau, bất kể mã hóa của nó là gì.
b) Phương pháp kiểm tra: Xác minh rằng máy chủ hỗ trợ cả yêu cầu được mã hóa XML và KVP. Chọn một số yêu cầu và mã hóa, sau đó sử dụng cả mã hóa XML và KVP, đồng thời xác minh rằng phản hồi cho từng bộ yêu cầu được mã hóa XML và KVP tương ứng là giống nhau.
c) Tham khảo: 6.2.4
d) Loại thử nghiệm: Cơ bản
A.2.6 Thứ tự tham số và trường hợp
A.2.6.1 Các yêu cầu được mã hóa KVP
a) Mục đích kiểm tra: Để xác minh rằng thứ tự và trường hợp của các tham số trong các yêu cầu được mã hóa KVP không ảnh hưởng đến phản hồi.
b) Phương pháp kiểm tra: Chọn một số yêu cầu được mã hóa KVP và gọi chúng với các tham số được chỉ định mỗi lần theo thứ tự khác nhau và với tên tham số viết cả chữ hoa, chữ thường. Xác minh rằng phản hồi của máy chủ không bị ảnh hưởng trong từng trường hợp.
c) Tham khảo: 6.2.5.2
d) Loại thử nghiệm: Cơ bản
A.2.6.2 Các yêu cầu được mã hóa XML
Thứ tự tham số và trường hợp không áp dụng cho các yêu cầu được mã hóa XML được mã hóa theo một lược đồ cố định.
A.2.7 Các tham số không được nhận dạng
A.2.7.1 Các yêu cầu được mã hóa KVP
a) Mục đích kiểm tra: Để xác minh rằng máy chủ bỏ qua mọi tham số không được nhận dạng trong yêu cầu được mã hóa KVP.
b) Phương pháp kiểm tra: Tạo một lựa chọn các yêu cầu được mã hóa KVP hợp lệ và thêm một hoặc nhiều tham số vào yêu cầu không được xác định trong Tiêu chuẩn này. Đảm bảo rằng các tham số bổ sung này không phải là tham số dành riêng cho nhà cung cấp được khai báo trong tài liệu năng lực của máy chủ. Xác minh rằng dịch vụ đáp ứng yêu cầu do đó bỏ qua các thông số bổ sung không được công nhận.
c) Tham khảo: 6.2.5.2
d) Loại thử nghiệm: Cơ bản
A.2.7.2 Các yêu cầu được mã hóa XML
Các tham số không được nhận dạng không áp dụng cho các yêu cầu được mã hóa XML được mã hóa theo một giản đồ cố định.
A.2.8 Máy chủ hoạt động trên các đối tượng địa lý GML
A.2.8.1 Máy chủ tạo các đối tượng địa lý GML
a) Mục đích kiểm tra: Để xác minh rằng máy chủ có thể tạo các đối tượng địa lý GML hợp lệ.
b) Phương pháp kiểm tra: Chọn một yêu cầu có phản hồi chứa các đối tượng địa lý (GetFeature, GetFeatureWithLock hoặc GetPropertyValue). Đặt tham số outputFormat thành "application/gml+xml; version=3.2". Xác minh rằng phản hồi là hợp lệ so với lược đồ ứng dụng mà máy chủ yêu cầu hỗ trợ, do đó xác minh rằng các đối tượng địa lý được tạo là các đối tượng địa lý GML hợp lệ.
c) Tham khảo: 7.1
d) Loại thử nghiệm: Cơ bản
A.2.8.2 Máy chủ nhập các đối tượng địa lý GML
a) Mục đích kiểm tra: Để xác minh rằng máy chủ có thể nhập các đối tượng địa lý được mã hóa bằng GML.
b) Phương pháp kiểm tra: Tạo một giao dịch tạo một đối tượng địa lý mới với tham số inputFormat được đặt thành "application/gml+xml; version=3.2". Xác minh rằng thao tác thực thi thành công.
c) Tham khảo: 7.1
d) Loại thử nghiệm: Cơ bản
A.2.9 Định danh đối tượng địa lý (Feature identifiers)
a) Mục đích kiểm tra: Để xác minh rằng máy chủ chỉ định một mã định danh liên tục duy nhất.
b) Phương pháp kiểm tra: Tạo một phiên bản đối tượng địa lý mới và xác minh rằng mã định danh được gán cho đối tượng địa lý đó trong phản hồi giao dịch. Sử dụng số nhận dạng đó, truy vấn tới máy chủ để truy xuất đối tượng địa lý. Xác minh rằng chỉ một đối tượng địa lý duy nhất được trả về trong phản hồi tương ứng với số nhận dạng được truy vấn. Xác minh số nhận dạng được mã hóa trong phản hồi bằng thuộc tính gml:id.
c) Tham khảo: 7.2.1, 7.2.2
d) Loại thử nghiệm: Cơ bản
A.2.10 Định danh bất biến (Invariant identifier)
a) Mục đích kiểm tra: Để xác minh rằng các mã định danh đối tượng địa lý là bất biến trong các hoạt động của WFS.
b) Phương pháp kiểm tra: Cập nhật một số đối tượng địa lý và xác minh rằng số nhận dạng không thay đổi do thao tác. Xóa một số đối tượng địa lý và sau đó tạo một hoặc nhiều đối tượng địa lý mới. Xác minh rằng mã định danh cho các đối tượng địa lý đã xóa không được sử dụng lại cho các đối tượng địa lý mới được tạo.
c) Tham khảo: 7.2.1
d) Loại thử nghiệm: Cơ bản
A.2.11 Phiên bản (Versioning)
A.2.11.1 Tạo phiên bản
a) Mục đích kiểm tra: Để xác minh rằng máy chủ tạo phiên bản đối tượng địa lý mới khi tạo và sửa đổi đối tượng địa lý.
b) Phương pháp kiểm tra: Tạo một đối tượng địa lý mới. Sửa đổi đối tượng địa lý nhiều lần để tạo một số phiên bản của đối tượng địa lý. Xác minh rằng các phiên bản đối tượng địa lý đã được tạo bằng thử nghiệm A.2.11.2.
c) Tham khảo: 7.2.3
d) Loại thử nghiệm: Cơ bản
A.2.11.2 Điều hướng phiên bản
a) Mục đích kiểm tra: Để xác minh rằng máy chủ duy trì thông tin phiên bản cho các đối tượng địa lý được tạo phiên bản và có thể sử dụng thông tin phiên bản đó để điều hướng các phiên bản đối tượng địa lý khi thực hiện truy vấn.
b) Phương pháp kiểm tra: Chọn một hoặc nhiều phiên bản của một đối tượng địa lý bằng cách sử dụng các điều kiện sử dụng các điều khiển điều hướng phiên bản (xem ISO 19143:2010, 7.11).
c) Tham khảo: 7.2.3
d) Loại thử nghiệm: Cơ bản
A.2.12 Tập con XPath
a) Mục đích kiểm tra: Xác minh rằng máy chủ hỗ trợ tập hợp con XPath được yêu cầu.
b) Phương pháp kiểm tra: Xem thử nghiệm A.14 trong ISO 19143:2010.
c) Tham khảo: 7.3.1, 7.3.2
d) Loại kiểm tra: Cơ bản
A.2.13 Mã hóa điều kiện (Predicate encoding)
A.2.13.1 Yêu cầu mã hóa XML
a) Mục đích kiểm tra: Xác minh rằng máy chủ có thể thực thi các thao tác được mã hóa XML với các điều kiện được mã hóa bằng cách sử dụng fes:Filter.
b) Phương pháp kiểm tra: Chọn một thao tác sử dụng điều kiện. Mã hóa biển điều kiện cho thao tác đó bằng cách sử dụng phần tử fes:Filter và xác minh rằng thao tác đó thực thi thành công.
c) Tham khảo: 7.4
d) Loại thử nghiệm: Cơ bản
A.2.13.2 Yêu cầu mã hóa KVP
a) Mục đích kiểm tra: Xác minh rằng máy chủ có thể thực thi các thao tác được mã hóa KVP với các điều kiện được mã hóa bằng cách sử dụng tham số KVP để mã hóa các điều kiện.
b) Phương pháp kiểm tra: Chọn một thao tác sử dụng điều kiện. Mã hóa và thực hiện một số thao tác bằng cách sử dụng các tham số KVP để mã hóa các biến điều kiện.
c) Tham khảo: 7.4
d) Loại thử nghiệm: Cơ bản
A.2.14 Báo cáo ngoại lệ (Exception reporting)
A.2.14.1 Hiệu lực của báo cáo ngoại lệ
a) Mục đích kiểm tra: Để xác minh báo cáo ngoại lệ mà máy chủ tạo ra là hợp lệ, theo lược đồ được xác định trong Khoản 8 của OGC 06-1212r3:2009.
b) Phương pháp kiểm tra: Đưa ra và thực hiện một yêu cầu phát sinh lỗi. Xác minh báo cáo ngoại lệ mà máy chủ tạo là hợp lệ.
c) Tham khảo: 7.5
d) Loại thử nghiệm: Cơ bản
A.2.14.2 Tính phù hợp của báo cáo ngoại lệ
a) Mục đích kiểm tra: Xác minh rằng máy chủ tạo báo cáo ngoại lệ phù hợp bằng cách đặt giá trị của mã và tham số bộ định vị thành giá trị phù hợp.
b) Phương pháp kiểm tra: Đưa ra một loạt yêu cầu tạo ra lỗi cho từng mã lỗi trong Bảng 25 của OGC 06-12113:2009 và từng mã lỗi trong Bảng 3. Xác minh rằng máy chủ tạo báo cáo ngoại lệ phù hợp cho từng trường hợp bằng cách xác minh tham số mã và định vị đã được đặt thành giá trị chính xác.
c) Tham khảo: 7.5
d) Loại thử nghiệm: Cơ bản
A.2.14.3 Phiên bản báo cáo ngoại lệ
a) Mục đích kiểm tra: Xác minh là tham số phiên bản của báo cáo ngoại lệ mà máy chủ tạo được đặt thành "2.0.0".
b) Phương pháp kiểm tra: Đưa ra và thực hiện một yêu cầu tạo ngoại lệ và xác minh rằng tham số phiên bản của báo cáo ngoại lệ kết quả được đặt thành "2.0.0".
c) Tham khảo: 7.5
d) Loại thử nghiệm: Cơ bản
A.2.15 Các tham số yêu cầu chung
A.2.15.1 Thông số phiên bản và dịch vụ
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác các thông số phiên bản và dịch vụ.
b) Phương pháp kiểm tra: Đưa ra một tập hợp các yêu cầu thiểu tham số dịch vụ và tham số phiên bản. Xác minh rằng máy chủ phản hồi với một ngoại lệ MissingParameterValue và tham số định vị đặt tên cho tham số bị thiếu.
c) Tham khảo: 7.6.2.4, 7.6.2.5
d) Loại thử nghiệm: Cơ bản
A.2.15.2 Tham số tay cầm (Handle)
a) Mục đích kiểm tra: Xác minh rằng máy chủ báo cáo chính xác giá trị của tham số xử lý trong báo cáo ngoại lệ.
b) Phương pháp kiểm tra: Đưa ra một yêu cầu bao gồm nhiều hành động (ví dụ: GetFeature hoặc Giao dịch) và bao gồm tham số xử lý trên mỗi hành động, sắp xếp để một trong các hành động không thành công và xác minh rằng báo cáo ngoại lệ sử dụng giá trị của thuộc tính xử lý làm giá trị của tham số vị trí trong phản hồi ngoại lệ để cho biết hành động nào không thành công.
c) Tham khảo: 7.6.2.6
d) Loại thử nghiệm: Cơ bản
A.2.16 Các thông số trình bày tiêu chuẩn
A.2.16.1 Tham số startindex
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác tham số startIndex.
b) Phương pháp kiểm tra: Đưa ra và thực hiện yêu cầu GetFeature không có tham số startIndex và lưu ý phản hồi. Thực hiện cùng một yêu cầu GetFeature lần thứ hai bao gồm tham số startIndex. Xác minh rằng tài liệu phản hồi bắt đầu tại đối tượng địa lý có chỉ mục là giá trị của startIndex..
c) Tham khảo: 7.6.3.4
d) Loại thử nghiệm: Cơ bản
A.2.16.2 Tham số đếm
A.2.16.2.1 Xử lý
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác tham số đếm.
b) Phương pháp kiểm tra: Đưa ra và thực hiện một truy vấn và lưu ý số lượng các đối tượng địa lý trong phản hồi. Thực hiện cùng một truy vấn, bao gồm tham số đếm có giá trị nhỏ hơn số lượng đối tượng địa lý trong phản hồi. Xác minh rằng phản hồi hiện chỉ bao gồm các bản ghi đếm.
c) Tham khảo: 7.6.3.5
d) Loại hình kiểm tra: Nền tảng
A.2.16.2.2 Cấu hình mặc định (Configured default)
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác giá trị mặc định đã định cấu hình cho tham số đếm.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác định giá trị mặc định cho tham số đếm. Thực hiện một truy vấn tạo ra nhiều đối tượng địa lý hơn giá trị này và xác minh rằng phản hồi chỉ chứa số lượng đối tượng địa lý nhiều như giá trị đếm mặc định đã định cấu hình.
c) Tham khảo: 7.6.3.5
d) Loại thử nghiệm: Cơ bản
A.2.16.3 Tham số resultType
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác tham số resultType.
b) Phương pháp kiểm tra: Đưa ra và thực hiện truy vấn với tham số resultType được đặt thành "results". Xác minh rằng máy chủ tạo bộ dữ liệu đối tượng địa lý bao gồm các đối tượng địa lý dưới dạng nội dung của nó. Thực hiện cùng một truy vấn với tham số resultType được đặt thành "hits". Xác minh rằng máy chủ tạo một tập hợp đối tượng địa lý trống với tham số numberReturned, trong phản hồi được đặt thành 0 và tham số numberMatched trong phản hồi được đặt thành số lượng đối tượng địa lý mà truy vấn sẽ trả về nếu tham số resultType được đặt thành " results ".
c) Tham khảo: 7.6.3.6
d) Loại thử nghiệm: Cơ bản
A.2.16.4 Tham số định dạng đầu ra (outputFormat)
a) Mục đích kiểm tra: Xác minh rằng máy chủ thực hiện giá trị định dạng đầu ra bắt buộc.
b) Phương pháp kiểm tra: Thực thi các yêu cầu chấp nhận tham số outputFormat với giá trị được đặt thành "application/gml+xml; version=3.2" và xác minh rằng đầu ra là lược đồ ứng dụng GML 3.2 hợp lệ hoặc hợp lệ dựa trên lược đồ ứng dụng GML 3.2.
c) Tham khảo: 7.6.37
d) Loại thử nghiệm: Cơ bản
A.2.17 Các tham số phản hồi tiêu chuẩn
A.2.17.1 Khai báo hỗ trợ phân giải tài nguyên bên ngoài
a) Mục đích kiểm tra: Xác minh rằng máy chủ quảng cáo có khả năng phân giải từ xa của nó.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng có các phần tử ows:Parameter quảng cáo các giá trị từ miền của các tham số resolve (i.e. none, local, remote, all) mà máy chủ hỗ trợ.
c) Tham khảo: 7.6.4.4
d) Loại thử nghiệm: Cơ bản
A.2.17.2 Xử lý tham số resolve
A.2.17.2.1 Không phân giải tài nguyên
a) Mục đích kiểm tra: Xác minh rằng nếu giá trị của tham số resolve được đặt thành "none", thì không có giải pháp tài nguyên nào được thực hiện trong phản hồi.
b) Phương pháp kiểm tra: Tạo một tập dữ liệu có chứa các tham chiếu đến tài nguyên cục bộ. Thực hiện một truy vấn với giá trị của tham số resolve được đặt thành "none" và xác minh rằng các tham chiếu tài nguyên không được phân giải trong phản hồi.
c) Tham khảo: 7.6.4.4
d) Loại thử nghiệm: Cơ bản
A.2.17.2.2 Phân giải tài nguyên cục bộ
a) Mục đích kiểm tra: Xác minh rằng, nếu giá trị của tham số resolve được đặt thành "local", thì độ phân giải tài nguyên cục bộ được thực hiện trong phản hồi.
b) Phương pháp kiểm tra: Tạo bộ dữ liệu bao gồm các đối tượng địa lý có tham chiếu tài nguyên cục bộ. Thực hiện một truy vấn với giá trị của tham số resolve được đặt thành "local" và xác minh rằng các tham chiếu tài nguyên cục bộ đã được phân giải trong phản hồi.
c) Tham khảo: 7.6.4.4
d) Loại thử nghiệm: Cơ bản
A.2.17.2.3 Phân giải tài nguyên bên ngoài
A.2.17.2.3.1 Khai báo khả năng phân giải các tham chiếu từ xa
a) Mục đích kiểm tra: Xác minh rằng máy chủ quảng cáo có khả năng phân giải các tham chiếu từ xa.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng ràng buộc dịch vụ ImplementsRemoteResolve được đặt thành TRUE.
c) Tham khảo: 7.6.4.4
d) Loại thử nghiệm: Cơ bản
A.2.17.2.3.2 Phân giải tài nguyên bên ngoài
a) Mục đích kiểm tra: Xác minh rằng, nếu giá trị của tham số resolve được đặt thành "remote", thì việc phân giải tài nguyên bên ngoài được thực hiện trong phản hồi.
b) Phương pháp kiểm tra: Tạo bộ dữ liệu bao gồm các đối tượng địa lý có tham chiếu tài nguyên bên ngoài. Thực hiện một truy vấn với giá trị của tham số resolve được đặt thành "remote" và xác minh rằng các tham chiếu tài nguyên bên ngoài đã được phân giải trong phản hồi.
c) Tham khảo: 7.6.4.4
d) Loại thử nghiệm: Cơ bản
A.2.17.2.3.3 Phân giải tất cả các tham chiếu tài nguyên
a) Mục đích kiểm tra: Xác minh rằng, nếu giá trị của tham số resolve được đặt thành "all", thì việc phân giải tài nguyên được thực hiện trên tất cả các tham chiếu trong phản hồi.
b) Phương pháp kiểm tra: Tạo bộ dữ liệu có các đối tượng địa lý bao gồm cả tham chiếu tài nguyên cục bộ và từ xa. Thực hiện một truy vấn với giá trị của tham số resolve được đặt thành "all" và xác minh rằng tất cả các tham chiếu tài nguyên đã được phân giải trong phản hồi.
c) Tham khảo: 7.6.4.4
d) Loại thử nghiệm: Cơ bản
A.2.17.3 Xử lý tham số ResolveDepth (ResolveDepth processing)
A.2.17.3.1 Tài nguyên cục bộ (Local resources)
a) Mục đích kiểm tra: Xác minh rằng, khi phân giải tài nguyên được thực hiện., nó được thực hiện ở số mức được chỉ định bởi tham số resolveDepth cho các tham chiếu tài nguyên cục bộ.
b) Phương pháp kiểm tra: Tạo bộ dữ liệu bao gồm các đối tượng địa lý tham chiếu tài nguyên cục bộ, từ đó tham chiếu các tài nguyên cục bộ khác đến các cấp độ đệ quy khác nhau và cũng bao gồm một tập hợp các đối tượng địa lý có chuỗi tham chiếu vòng. Thực thi một tập hợp các truy vấn với giá trị của tham số độ phân giải được đặt thành các giá trị khác nhau và xác minh rằng độ phân giải tài nguyên được thực hiện trong phản hồi đối với độ sâu đã chỉ định. Đảm bảo rằng các giá trị resolveDepth của "0","1" và được kiểm tra để xác minh rằng không có giải pháp nào, chỉ các tài nguyên cục bộ được tham chiếu ngay lập tức, và tất cả các tài nguyên cục bộ được tham chiếu đều được phân giải trong phản hồi. Đồng thời xác minh rằng chuỗi tham chiếu vòng tròn đã được phân giải chính xác.
c) Tham khảo: 7.6.4.5
d) Loại thử nghiệm: Cơ bản
A.2.17.3.2 Tài nguyên bên ngoài (Remote resources)
a) Mục đích kiểm tra: Xác minh rằng, khi phân giải tài nguyên được thực hiện, nó được thực hiện ở số mức được chỉ định bởi tham số resolveDepth cho các tham chiếu tài nguyên cục bộ từ xa.
b) Phương pháp kiểm tra: Tạo cơ sở dữ liệu bao gồm các đối tượng địa lý tham chiếu các tài nguyên bên ngoài, lần lượt tham chiếu các tài nguyên bên ngoài khác đến các mức đệ quy khác nhau và cũng bao gồm một tập hợp các đối tượng địa lý có chuỗi tham chiếu vòng. Thực thi một tập hợp các truy vấn với giá trị của độ phân giải được đặt thành các giá trị khác nhau và xác minh rằng độ phân giải tài nguyên đã được thực hiện trong độ phân giải đến độ sâu đã chỉ định. Đảm bảo rằng các giá trị độ phân giải của "0", "1" và "*" được kiểm tra để xác minh rằng không có độ phân giải, chỉ các tài nguyên bên ngoài được tham chiếu ngay lập tức và tất cả các tài nguyên bên ngoài được tham chiếu được phân giải trong phản hồi. Đồng thời xác minh rằng chuỗi tham chiếu vòng tròn đã được phân giải chính xác.
c) Tham khảo: 7.6.4.5
d) Loại thử nghiệm: Cơ bản
A.2.17.3.3 Tất cả tài nguyên (All resources)
a) Mục đích kiểm tra: Xác minh rằng, khi phân giải tài nguyên được thực hiện, nó được thực hiện ở số mức được chỉ định bởi tham số resolveDepth cho tất cả các tham chiếu tài nguyên.
b) Phương pháp kiểm tra; Tạo cơ sở dữ liệu bao gồm các đối tượng địa lý tham chiếu hỗn hợp các tài nguyên cục bộ và từ xa, lần lượt tham chiếu các tài nguyên cục bộ hoặc từ xa khác đến các mức đệ quy khác nhau và cũng bao gồm một tập hợp các đối tượng địa lý có chuỗi tham chiếu vòng. Thực thi một tập hợp các truy vấn với giá trị của độ phân giải được đặt thành các giá trị khác nhau và xác minh rằng độ phân giải tài nguyên đã được thực hiện trong phản hồi đối với độ sâu đã chỉ định. Đảm bảo rằng các giá trị độ phân giải của "0", "1" và ”*" được kiểm tra để xác minh rằng không có độ phân giải, chỉ các tài nguyên được tham chiếu ngay lập tức và tất cả các tài nguyên được tham chiếu được phân giải trong phản hồi. Đồng thời xác minh rằng chuỗi tham chiếu vòng tròn đã được phân giải chính xác.
c) Tham khảo: 7.6.4.5
d) Loại thử nghiệm: Cơ bản
A.2.17.3.4 Cấu hình mặc định (Configured defaults)
a) Mục đích kiểm tra: Xác minh rằng máy chủ hoạt động chính xác nếu có một giá trị được cấu hình mặc định cho tham số resolveDepth giải pháp tài nguyên cục bộ và từ xa.
b) Phương pháp kiểm tra: Tạo một tài liệu năng lực và lấy các giá trị của các ràng buộc hoạt động của Resolve Locals và ResolveRemoteScope. Nếu một giá trị được định cấu hình cho ràng buộc ResolveLocalScope, hãy chạy lại thử nghiệm A.2.17.3.1 mà không đặt tham số resolveDepth để giá trị mặc định được sử dụng. Nếu một giá trị được định cấu hình cho ràng buộc ResolveRemoteScope, hãy chạy lại thử nghiệm A.2.17.3.2 mà không đặt thông số resolveDepth để giá trị mặc định được sử dụng. Nếu cả hai giá trị đều được định cấu hình thì hãy chạy lại các thử nghiệm A.2.17.3.1, A.2.17.3.2, A.2.17.3.3 mà không có tham số độ phân giải để đặt mặc định.
c) Tham khảo: 7.6.4.5
d) Loại thử nghiệm: Cơ bản
A.2.17.4 Xử lý hết thời gian phân giải (Resolve timeout processing)
A.2.17.4.1 Xử lý (Processing)
a) Mục đích kiểm tra: Xác minh rằng máy chủ ngừng cố gắng phân giải tài nguyên sau khi hết thời gian phân giải.
b) Phương pháp kiểm tra: Tạo một bộ dữ liệu với một đối tượng địa lý duy nhất tham chiếu đến một tài nguyên không tồn tại. Thực hiện một truy vấn với tham số resolve và bộ tham số resolveTimeout; xác minh rằng máy chủ phản hồi sau khi hết thời gian phân giải.
c) Tham khảo: 7.6.4.6
d) Loại hình kiểm tra: Nền tảng
A.2.17.4.2 Cấu hình mặc định (Configured default)
a) Mục đích kiểm tra: Xác minh hành vi của máy chủ khi được cấu hình tham số resolveTimeout.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực để xác định xem có được cấu hình giá trị thời gian chờ mặc định hay không bằng cách tìm ràng buộc ResolveTimeoutDefault. Nếu một giá trị được cấu hình mặc định thì hãy chạy lại kiểm tra A.2.17.4.1 mà không đặt tham số resolveTimeout để giá trị đã cấu hình mặc định được sử dụng.
c) Tham khảo: 7.6.4.6
d) Loại thử nghiệm: Cơ bản
A.2.17.5 Không thể phân giải tham chiếu tài nguyên
a) Mục đích kiểm tra: Xác thực rằng máy chủ báo cáo URI ban đầu chưa được phân giải trong phản hồi nếu nó không thể phân giải tài nguyên.
b) Phương pháp kiểm tra: Tạo một bộ dữ liệu với một đối tượng địa lý duy nhất tham chiếu đến một tài nguyên không tồn tại. Thực hiện một truy vấn với nó và xác minh rằng, trong phản hồi, tham chiếu là URI ban đầu chưa được phân giải.
c) Tham khảo: 7.6.4.7
d) Loại thử nghiệm: Cơ bản
A.2.18 Thông số đầu vào tiêu chuẩn
A.2.18.1 Tham số inputFormat
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác tham số inputFormat khi giá trị của nó là "application/gml+xml; version=3.2".
b) Phương pháp kiểm tra: Tạo một giao dịch với một thao tác thêm mới có inputFormat được đặt thành "application/gml+xml; version=3.2" và nội dung của hành động là một đối tượng địa lý không hợp lệ. Máy chủ sẽ phát hiện mã hóa đối tượng địa lý không hợp lệ và đưa ra một ngoại lệ.
c) Tham khảo: 7.6.5.4
d) Loại thử nghiệm: Cơ bản
A.2.18.2 tham số srsName
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác tham số đầu vào srsName.
b) Phương pháp kiểm tra: Thêm mới một đối tượng địa lý có dạng hình học trong đó giá trị của srsName là một trong các giá trị SRS mà máy chủ tuyên bố hỗ trợ trong tài liệu năng lực của nó. Xác minh rằng hoạt động thành công. Thêm mới một đối tượng địa lý khác có dạng hình học trong đó giá trị của tham số srsName không phải là một trong các giá trị SRS mà máy chủ tuyên bố hỗ trợ trong tài liệu năng lực của nó. Xác minh rằng máy chủ phản hồi với một ngoại lệ. Thêm mới đối tượng địa lý cuối cùng có hình học trong đó giá trị của srsName là một trong các giá trị SRS mà máy chủ yêu cầu hỗ trợ trong khả năng của nó, nhưng hình học trong thao tác thêm mới được mã hóa bằng SRS không khớp với giá trị được xác nhận là giá trị của tham số srsName. Xác minh rằng máy chủ phản hồi với một ngoại lệ.
c) Tham khảo: 7.6.5.5
d) Loại thử nghiệm: Cơ bản
A.2.19 Tham số đáp ứng tiêu chuẩn
A.2.19.1 Tham số dấu thời gian (timeStamp)
a) Mục đích kiểm tra: Xác thực rằng máy chủ điền thông số dấu thời gian.
b) Phương pháp kiểm tra: Yêu cầu máy chủ tạo phản hồi tập hợp đối tượng địa lý và xác mình rằng tham số dấu thời gian có mặt và được điền bằng giá trị xsd:dateTime hợp lệ.
c) Tham khảo: 7.7.4.1
d) Loại thử nghiệm: Cơ bản
A.2.19.2 Tham số numberMatched
A.2.19.2.1 Xử lý tiêu chuẩn
a) Mục đích kiểm tra: Xác minh rằng máy chủ điền tham số numberMatched.
b) Phương pháp kiểm tra: Tạo phản hồi của bộ sưu tập đối tượng địa lý và xác minh rằng tham số numberMatched được điền bằng một số nguyên dương hoặc giá trị "unavailable".
c) Tham khảo: 7.7.4.2
d) Loại thử nghiệm: Cơ bản
A.2.19.2.2 Xử lý với tham số resuitType
A.2.19.2.2.1 Phản hồi không phân trang
a) Mục đích kiểm tra: Xác minh rằng tham số numberMatched được điền chính xác khi tham số resuitType được đặt thành "hits" cho máy chủ không hỗ trợ phân trang phản hồi.
b) Phương pháp kiểm tra: Tạo phản hồi tập hợp đối tượng địa lý với yêu cầu có tham số resuitType được đặt thành "hits". Xác minh rằng phản hồi là một tập hợp đối tượng địa lý trống với tham số numberMatched chứa số lượng đối tượng địa lý dự kiến có trong phản hồi.
c) Tham khảo: 7.7.4.2
d) Loại thử nghiệm: Cơ bản
A.2.19.2.2.2 Phản hồi phân trang
a) Mục đích kiểm tra: Xác minh rằng tham số numberMatched được điền chính xác khi tham số resultType được đặt thành "hits" cho máy chủ hỗ trợ phân trang phản hồi.
b) Phương pháp kiểm tra: Tạo phản hồi tập hợp đối tượng địa lý với một yêu cầu có tham số resultType được đặt thành "hits". Xác minh rằng phản hồi là một tập hợp đối tượng địa lý trống với tham số numberMatched chứa số lượng đối tượng địa lý được mong đợi trong phản hồi. Xác minh rằng tham số tiếp theo có trong phản hồi và giá trị của nó là một URI tìm nạp tập hợp kết quả đầu tiên .
c) Tham khảo: 7.7.4.2
d) Loại thử nghiệm: Cơ bản
A.2.20 Phân trang phản hồi
A.2.20.1 Khai báo hỗ trợ phân trang phản hồi
a) Mục đích thử nghiệm: Xác thực rằng máy chủ quảng cáo khả năng hỗ trợ phân trang phản hồi.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng ràng buộc dịch vụ ImplementsResponsePaging đã được đặt.
c) Tham khảo: 7.7.4.4.1
d) Loại thử nghiệm: Cơ bản
A.2.20.2 Xử lý
a) Mục đích kiểm tra: Xác minh rằng máy chủ hoạt động chính xác khi phân trang thông qua phản hồi.
b) Phương pháp kiểm tra: Thực hiện một truy vấn: chọn một tập hợp các đối tượng địa lý và đặt tham số đêm thành một số giá trị nhỏ để đảm bảo rằng toàn bộ phản hồi sẽ không được trình bày trong ít hơn ba tài liệu phản hồi. Xác minh rằng tài liệu phản hồi đầu tiên chứa tham số tiếp theo được điền bằng URI, phân giải URI để truy xuất trang tiếp theo của phản hồi. Xác minh rằng trang thứ hai có cả thông số tiếp theo và trước đó được điền. Phân giải URI là giá trị của tham số tiếp theo. Xác minh rằng trang cuối cùng trong phản hồi chỉ chứa tham số trước đó. Phân giải URI là giá trị của tham số trước đó và xác minh rằng phản hồi là trang thứ hai.
c) Tham khảo: 7.7.4.4.1
d) Loại thử nghiệm: Cơ bản
A.2.20.3 Tính nhất quán trong giao dịch (Transactional consistency)
A.2.20.3.1 Tuyên bố tính nhất quán của giao dịch
a) Mục đích kiểm tra: Xác minh rằng máy chủ quảng cáo nếu hỗ trợ phân trang phản hồi của nó nhất quán về mặt giao dịch hay không.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng có ràng buộc hoạt động PagingIsTransactionSafe.
c) Tham khảo: 7.7.4.4.2.1
d) Loại thử nghiệm: Cơ bản
A.2.20.3.2 Phân trang phản hồi là giao dịch an toàn
a) Mục đích kiểm tra: Xác minh rằng phân trang phản hồi là giao dịch an toàn.
b) Phương pháp kiểm tra: Thực hiện thử nghiệm được mô tả trong A.2.20.2 ngoại trừ giữa quá trình tìm nạp trang tiếp theo hoặc trang trước đó thực thi, trong một ngữ cảnh khác, một giao dịch thêm hoặc xóa các bản ghi khỏi tập hợp kết quả. Xác minh rằng không có bản ghi nào được thêm hoặc xóa khỏi các trang phản hồi.
c) Tham khảo: 77.4.4.2.2
d) Loại thử nghiệm: Cơ bản
A.2.20.3.3 Phân trang phản hồi không an toàn cho giao dịch
a) Mục đích kiểm tra: Xác minh rằng phân trang phản hồi không phải là giao dịch an toàn.
b) Phương pháp kiểm tra: Thực hiện thử nghiệm được mô tả trong A.2.20.2 ngoại trừ giữa quá trình tìm nạp trang tiếp theo hoặc trang trước đó thực thị, trong một ngữ cảnh khác, một giao dịch thêm hoặc xóa các bản ghi khỏi tập hợp kết quả. Xác minh rằng các bản ghi đã được thêm hoặc xóa khỏi các trang phản hồi.
c) Tham khảo: 77.4.4.2.3
d) Loại thử nghiệm: Cơ bản
A.2.21 Tham số schemaLocation
a) Mục đích kiểm tra: Xác minh rằng thuộc tính schemaLocation được sử dụng trong phản hồi của bộ sưu tập đối tượng địa lý để hỗ trợ xác thực phản hồi của nó.
b) Phương pháp kiểm tra: Tạo một bộ sưu tập đối tượng địa lý và xác minh rằng thuộc tính schemaLocation có mặt và giá trị của nó bao gồm một tham chiếu đến các lược đồ có thể được sử dụng để xác thực các đối tượng địa lý trong bộ sưu tập.
c) Tham khảo: 7.8
d) Loại thử nghiệm: Cơ bản
A.2.22 Biểu thức truy vấn (Query expressions)
A.2.22.1 Biểu thức truy vấn tùy chỉnh (Ad hoc query expressions)
A.2.22.1.1 Tham số typeNames
a) Mục đích kiểm tra: Xác minh miền giá trị của tham số typeNames.
b) Phương pháp kiểm tra: Từ tài liệu năng lực của máy chủ, lấy danh sách các loại đối tượng địa lý mà máy chủ cung cấp. Mã hóa một yêu cầu tham chiếu đến một loại đối tượng địa lý mà máy chủ không cung cấp và xác minh rằng phản hồi là một báo cáo ngoại lệ InvalidParameterValue.
c) Tham khảo: 7.9.2.4.1
d) Loại thử nghiệm: Cơ bản
A.2.22.1.2 Hàm schema-element()
a) Mục đích thử nghiệm: Xác thực rằng máy chủ hỗ trợ hàm schema-elemento quảng cáo nó trong tài liệu năng lực của nó.
b) Phương pháp kiểm tra: Tạo tài liệu về khả năng và xác nhận rằng có ràng buộc dịch vụ thực hiện, kế thừa (Implements nheritance) và giá trị của nó là "TRUE".
c) Tham khảo: 7.9.2.4.2
d) Loại thử nghiệm: Cơ bản
A.2.22.1.3 Tham số bí danh (aliases parameter)
a) Mục đích kiểm tra: Xác minh việc xử lý chính xác tham số bí danh.
b) Phương pháp kiểm tra: Mã hóa một truy vấn bao gồm tham số bí danh và trong đó số lượng bí danh không khớp với số loại đối tượng địa lý được liệt kê trong tham số typeNames. Xác minh rằng máy chủ tăng ngoại lệ UnlimitedParameterValue.
c) Tham khảo: 7.9.2.4.3
d) Loại thử nghiệm: Cơ bản
A.2.22.1.4 Tham số srsName
a) Mục đích kiểm tra: Xác minh việc xử lý chính xác tham số srsName.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và ghi chú SRS mặc định và bất kỳ SRS nào khác mà máy chủ hỗ trợ. Thực hiện truy vấn không có tham số srsName và xác minh rằng hình học trong tài liệu phản hồi được mã hóa bằng SRS mặc định. Chọn một hoặc nhiều SRS từ danh sách các SRS được hỗ trợ để thực hiện truy vấn và xác minh rằng hình học đã được mã hóa chính xác trong SRS đích. Chọn một SRS không phải là SRS mặc định hoặc bất kỳ SRS nào khác mà máy chủ yêu cầu hỗ trợ và thực hiện lại truy vấn. Xác minh rằng máy chủ tạo ra một ngoại lệ InvalidParameterValue.
c) Tham khảo: 7.9.2.4.4
d) Loại thử nghiệm: Cơ bản
A.2.22.1.5 Mệnh đề hệ quy chiếu (Projection clause)
A.2.22.1.5.1 Lựa chọn các đặc tính tùy chọn
a) Mục đích kiểm tra: Xác minh rằng phản hồi của bộ sưu tập đối tượng địa lý chỉ chứa các thuộc tính tùy chọn của đối tượng địa lý như được chỉ định bởi mệnh đề hệ quy chiếu.
b) Phương pháp kiểm tra: Thực hiện một truy vấn bao gồm một mệnh đề hệ quy chiếu và xác minh rằng phản hồi chỉ bao gồm các thuộc tính tùy chọn được chọn bởi mệnh đề hệ quy chiếu.
c) Tham khảo: 7.9.2.4.5.1
d) Loại thử nghiệm: Cơ bản
A.2.22.1.5.2 Tên đặc tính không hợp lệ
a) Mục đích kiểm tra: Xác minh rằng máy chủ tạo ngoại lệ nếu tên đặc tính không hợp lệ được chỉ định trong mệnh đề hệ quy chiếu.
b) Phương pháp kiểm tra: Thực hiện một truy vấn có tên đặc tính không tồn tại trong mệnh đề hệ quy chiếu của truy vấn và xác minh rằng máy chủ tạo ra một ngoại lệ InvalidParameterValue.
c) Tham khảo: 7.9.2.4.6.1
d) Loại thử nghiệm: Cơ bản
A.2.22.1.5.3 tham số resolve đường dẫn (resolve Path parameter)
a) Mục đích kiểm tra: Xác minh hành vi của tham số resolve Path
b) Phương pháp kiểm tra: Thực hiện một truy vấn phân giải các tham chiếu tài nguyên và chỉ định tham số resolve Path với một giá trị phù hợp. Xác minh rằng một tài nguyên dọc theo đường dẫn phân giải đã được xác minh trong phản hồi. Xác minh rằng hành vi đối với tài nguyên cục bộ và tài nguyên bên ngoài trong máy chủ yêu cầu hỗ trợ phân giải tài nguyên bên ngoài.
c) Tham khảo: 7.9.2.47
d) Loại thử nghiệm: Cơ bản
A.2.22.2 Mệnh đề lựa chọn
A.2.22.2.1 Kết hợp tiêu chuẩn
A.2.22.2.1.1 Khai báo hỗ trợ kết hợp tiêu chuẩn
a) Mục đích kiểm tra: Xác minh rằng máy chủ quảng cáo chính xác và hỗ trợ cho các kết hợp tiêu chuẩn.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng giá trị của ràng buộc dịch vụ ImplementsStandardJoin được đặt thành "TRUE".
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Cơ bản
A.2.22.2.1.2 Xử lý
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác một phép kết hợp tiêu chuẩn.
b) Phương pháp kiểm tra: Thực hiện một truy vấn tìm nạp dữ liệu từ ít nhất hai loại đối tượng địa lý và bao gồm một điều kiện kết hợp không liên quan đến các toán tử không gian hoặc thời gian. Xác minh rằng phản hồi tạo ra phản hồi hợp lệ bằng cách sử dụng phần từ wfs:Tuple để chứa từng bộ dữ liệu đối tượng địa lý.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Cơ bản
A.2.22.2.2 Kết hợp không gian
A.2.22.2.2.1 Khai báo hỗ trợ kết hợp không gian
a) Mục đích kiểm tra: Xác minh rằng máy chủ quảng cáo chính xác và hỗ trợ cho các liên kết không gian.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng giá trị của ràng buộc dịch vụ ImplementsSpatialJoin được đặt thành "TRUE".
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Cơ bản
A.2.22.2.2.2 Xử lý
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác một phép kết hợp không gian.
b) Phương pháp kiểm tra: Thực hiện truy vấn tìm nạp dữ liệu từ ít nhất hai loại đối tượng địa ly và bao gồm một điều kiện kết hợp sử dụng toán tử không gian. Xác minh rằng phản hồi tạo ra phản hồi hợp lệ bằng cách sử dụng phần tử wfs:Tuple để chứa từng bộ dữ liệu đối tượng địa lý.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Cơ bản
A.2.22.2.3 Kết hợp tạm thời
A.2.22.2.3.1 Khai báo hỗ trợ kết hợp tạm thời
a) Mục đích kiểm tra: Xác minh rằng máy chủ quảng cáo chính xác và hỗ trợ cho kết hợp tạm thời.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng giá trị của ràng buộc dịch vụ ImplementsTemporalJoin được đặt thành "TRUE”.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Cơ bản
A.2.22.2.3.2 Xử lý
a) Mục đích kiểm tra: Xác minh rằng máy chủ xử lý chính xác một phép kết hợp tạm thời.
b) Phương pháp kiểm tra: Thực thi một truy vấn tìm nạp dữ liệu từ ít nhất hai loại đối tượng địa lý và bao gồm một điều kiện kết hợp sử dụng toàn tử thời gian. Xác minh rằng phản hồi tạo ra phản hồi hợp lệ bằng cách sử dụng phần tử wfs:Tuple để chứa từng bộ dữ liệu đối tượng địa lý.
c) Tham khảo: 7.9.2.5.3.1
d) Loại thử nghiệm: Cơ bản
A.2.22.3 Mệnh đề sắp xếp (Sorting clause)
A.2.22.3.1 Sắp xếp cơ bản (Basic sorting)
a) Mục đích kiểm tra: Xác minh hành vi sắp xếp chính xác.
b) Phương pháp kiểm tra: Thực hiện truy vấn bao gồm mệnh đề sắp xếp và xác minh rằng các đối tượng địa lý trong phản hồi được sắp xếp theo đặc tính hoặc nhiều đặc tính đã chỉ định và theo thứ tự sắp xếp đã chỉ định.
c) Tham khảo: 7.9.2.5.4.4
d) Loại thử nghiệm: Cơ bản
A.2.22.3.2 Thứ tự mặc định (Default order)
a) Mục đích kiểm tra: Xác minh rằng máy chủ trả về các đối tượng địa lý theo cùng một thứ tự mặc định.
b) Phương pháp kiểm tra: Thực hiện lặp đi lặp lại cùng một truy vấn trên cùng một nhóm đối tượng địa lý và xác minh rằng mỗi lần các đối tượng địa lý được trình bày theo cùng một thứ tự. Thứ tự cụ thể không liên quan; tất cả những gì có liên quan là bất kỳ thứ tự nào được trình bày đều được giữ nguyên trên tất cả các lệnh gọi của cùng một truy vấn trên cùng một bộ dữ liệu đối tượng địa lý.
c) Tham khảo: 7.9.2.5.4.4
d) Loại thử nghiệm: Cơ bản
A.2.22.3.3 Cấp độ sắp xếp (Sorting level)
a) Mục đích kiểm tra: Xác minh rằng máy chủ tôn trọng bất kỳ SortLevelLimit nào mà nó có thể quảng cáo trong tài liệu năng lực của nó..
b) Phương pháp kiểm tra: Thực hiện một truy vấn với mệnh đề sắp xếp có chứa thêm một đặc tính sắp xếp mà máy chủ quảng cáo rằng nó hỗ trợ trong tài liệu năng lực của mình bằng cách sử dụng ràng buộc SortLevelLimit. Xác minh rằng máy chủ tạo ra một ngoại lệ.
c) Tham khảo: Bảng 15
d) Loại thử nghiệm: Cơ bản
A.2.22.4 Truy vấn được lưu trữ (Stored queries)
A.2.22.4.1 Hoạt động truy vấn được lưu trữ
a) Mục đích kiểm tra: Xác minh rằng máy chủ thực hiện các hoạt động truy vấn được lưu trữ bắt buộc.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng máy chủ triển khai các thao tác ListStoredQueries và DescribeStoredQueries. Sử dụng thao tác ListStoredQueries, xác minh rằng phản hồi liệt kê một truy vấn được lưu trữ với mã định danh urn:ogc:def:query:OGC-WFS::GetFeatureById.
c) Tham khảo: 7.9.3.6, 8.2, 14.3, 14.4
d) Loại thử nghiệm: Cơ bản
A.2.22.4.2 Trả về các loại đối tượng địa lý (Returns feature types)
a) Mục đích kiểm tra: Xác minh rằng tất cả các loại đối tượng địa lý trả về cho các truy vấn được lưu trữ cũng là các đối tượng địa lý được liệt kê trong danh sách loại đối tượng địa lý.
b) Phương pháp kiểm tra: Tạo tài liệu về khả năng và lấy danh sách các loại đối tượng địa lý mà máy chủ cung cấp. Tạo danh sách tất cả các truy vấn được lưu trữ mà máy chủ cung cấp và xác minh rằng các loại đối tượng địa lý trả về của chúng được liệt kê trong danh sách loại đối tượng địa lý.
c) Tham khảo: 7.9.3, 8.1, 14.3
d) Loại hình kiểm tra: Nền tảng
A.2.23 Công bố sự phù hợp (Declaring conformance)
a) Mục đích kiểm tra: Xác minh rằng máy chủ khai báo các khả năng mà nó thực hiện trong tài liệu năng lực của nó.
b) Phương pháp kiểm tra: Tạo tài liệu năng lực và xác minh rằng tất cả các ràng buộc dịch vụ được liệt kê trong Bảng 13 đều có trong tài liệu năng lực và có giá trị "TRUE" hoặc "FALSE”, cho biết máy chủ có tuân thủ loại tương ứng hay không.
c) Tham khảo: Bảng 13
d) Loại hình kiểm tra: Nền tảng
Phụ lục B
(Tham khảo)
Ví dụ
B.1 Ví dụ về báo cáo ngoại lệ
Sau đây là một ví dụ về một báo cáo ngoại lệ. Trong trường hợp cụ thể này, thao tác CreateStoredQuery đã không thành công do mã định danh truy vấn trùng lặp.

B.2 Các ví dụ về DescribeFeatureType
B.2.1 Ví dụ 1
Xem xét các đặc điểm địa lý của các loại TreesA_1M, RoadL_1M và LakesA_1M được xác định trong cơ sở dữ liệu SQL. Mô tả của các loại đối tượng địa lý này được cơ sở dữ liệu báo cáo là:

![]()
Để đáp lại yêu cầu DescriptionFeatureType:

dịch vụ đối tượng địa lý trên web có thể tạo tài liệu Lược đồ XML sau:


Lưu ý rằng phản hồi bao gồm đối tượng địa lý được yêu cầu TreesA_1 M và RoadL_1M nhưng cũng bao gồm tất cả các đối tượng địa lý khác trong lược đồ ứng dụng (trong ví dụ này là LakesA_1M), Nói cách khác, máy chủ tạo lược đồ ứng dụng hoàn chỉnh.
Bằng cách sử dụng mô tả lược đồ này, khi đó, máy khách có thể biểu thị trạng thái của phiên bản đối tượng địa lý TreesA_1 M và/hoặc phiên bản đối tượng địa lý RoadL_1M như minh họa trong ví dụ sau:


B.2.2 Ví dụ 2
Đáp lại yêu cầu DescriptionFeatureType:




Giống như phần B.2.1, máy chủ tạo một lược đồ ứng dụng hoàn chỉnh bao gồm loại đối tượng địa lý được yêu cầu (tức là myns:Person) nhưng cũng bao gồm tất cả các loại đối tượng địa lý khác trong lược đồ ứng dụng.
Một tài liệu phiên bản mẫu xác thực theo lược đồ này có thể là:



B.3 Các ví dụ về GetFeature
B.3.1 Giới thiệu
Điều khoản này chứa nhiều ví dụ về yêu cầu GetFeature. Một số ví dụ bao gồm đầu ra mẫu.
B.3.2 Ví dụ 1
Ví dụ này tìm nạp một phiên bản cụ thể của loại đối tượng địa lý InWaterA_1M được xác định bởi mã định danh đối tượng địa lý "InWaterA_1M.1234"

B.3.3 Ví dụ 2
Ví dụ này tìm nạp một tập hợp con các thuộc tính của loại đối tượng địa lý InWaterA_1M. Phiên bản cụ thể được truy xuất theo yêu cầu được xác định bằng mã định danh đối tượng địa lý "InWaterA_1 M.1013".


B.3.4 Ví dụ 3
Trong ví dụ này, tất cả các thuộc tính của loại đối tượng địa lý InWaterA_1 M được tìm nạp cho một danh sách liệt kê các trường hợp đối tượng địa lý. Phần tử fes:Resourceld được sử dụng để xác định từng đối tượng địa lý sẽ được tìm nạp.

B.3.5 Ví dụ 4
Ví dụ này tương tự như ví dụ trước, ngoại trừ trong trường hợp này, chỉ một số thuộc tính của tập hợp các đối tượng địa lý được liệt kê được tìm nạp. Phần tử wfs:PropertyName được sử dụng để liệt kê các thuộc tính cần truy xuất.



Lưu ý rằng các phiên bản đối tượng địa lý bao gồm các thuộc tính được yêu cầu wkbGeom và tileld, đồng thời bao gồm đặc tính id đã được máy chủ đối tượng địa lý trên web đưa vào để tạo tài liệu phản hồi hợp lệ (xem 7.9.2.4.5.1)
B.3.6 Ví dụ 5
Chọn tất cả các phiên bản của loại đối tượng địa lý InWaterA_1M thành tối đa 10000 đối tượng địa lý.

B.3.7 Ví dụ 6
Yêu cầu không giới hạn sau tìm nạp tất cả các phiên bản của một tập hợp các loại đối tượng địa lý được liệt kê. Lưu ý rằng các loại đối tượng địa lý không phải là tất cả trong cùng một không gian tên.

B.3.8 Ví dụ 7
Ví dụ sau đây chọn hình học và độ sâu từ đối tượng địa lý Hydrography cho khu vực Grand Banks. Các Grand Banks được giới hạn bởi ô sau: [46.2023,-57.9118, 51.8145,-46.6873].

Đầu ra từ một yêu cầu như vậy có thể là:


B.3.9 Ví dụ 8
Ví dụ này mô tả hai truy vấn tìm nạp các phiên bản ROADS và RAILS nằm trong một vùng quan tâm duy nhất.


Kết quả của mỗi truy vấn được kết hợp theo 11.3.3.5 để tạo thành bộ sưu tập đối tượng địa lý đầu ra.


B.3.10 Ví dụ 9
Ví dụ này minh họa cách các thuộc tính phức tạp của các đối tượng địa lý có thể được tham chiếu bằng các biểu thức XPath. Xem xét loại đối tượng địa lý “Person" được định nghĩa là:



Đặc tính mailAddress là một đặc tính phức tạp.
Ví dụ sau tìm nạp họ của tất cả những người sống trên 10000 dãy phố của "Main St." ở thị trấn "SomeTown" là nữ và kiểm được hơn 35.000 đô la tiền lương. Lưu ý việc sử dụng các biểu thức XPath trong điều kiện để tham chiếu các thuộc tính phức tạp.


B.3.11 Ví dụ 10
Ví dụ này minh họa một yêu cầu GetFeature sử dụng các phần tử wfs:PropertyName làm cơ sở để so sánh với Ví dụ 11 và 12. Yêu cầu:


B.3.12 Ví dụ 11
Ví dụ này minh họa việc sử dụng các thuộc tính resolveDepth và resolveTimeout trên yêu cầu GetFeature từ Ví dụ 10. Yêu cầu:

Trong phản hồi, cấp độ đầu tiên xlink:href đã được duyệt qua và nội dung của nó được trả về dưới dạng:


B.3.13 Ví dụ 12
Ví dụ này minh họa việc sử dụng phần tử wfs:XlinkPrdpertyName với các thuộc tính resolveDepth và resolveTimeout sẽ ghi đè các thuộc tính đó trong yêu cầu GetFeature từ Ví dụ 11. Yêu cầu:

Trong phản hồi, xlink:href cấp một và cấp hai trong thuộc tính gmkdirectedNode đã được duyệt qua và nội dung của chúng được trả về như được mô tả trong 7.6.4:


B.3.14 Ví dụ 13
Ví dụ sau đây thực hiện thao tác kết hợp để tìm hồ chứa trong công viên Algonquin.

Đáp lại yêu cầu này, một WFS có thể tạo ra:





B.3.15 Ví dụ 14
Trong ví dụ này, đối tượng địa lý myns:RoadSegments được kết hợp với đối tượng địa lý myns:Bridges bằng cách sử dụng phép kết hợp tiêu chuẩn để tìm tất cả các cây cầu dọc theo một con đường được đặt tên. Ví dụ này giả định rằng cả hai loại đối tượng địa lý đều bao gồm đặc tính RoadCode. Trong đối tượng địa lý myns:RoadSegments, RoadCode được sử dụng để chỉ ra các đoạn đường đều thuộc cùng một con đường được đặt tên. Trong đối tượng địa lý myns:Bridges, thuộc tính RoadCode cho biết con đường được đặt tên dọc theo cây cầu.

B.3.16 Ví dụ 15
Ví dụ sau đây cho thấy một yêu cầu GetFeature sử dụng tự kết hợp với các bí danh để tìm tất cả các đoạn đường giao nhau trong một số khu vực quan tâm được chỉ định.


B.3.17 Ví dụ 16
Ví dụ GetFeature sau đây tìm tất cả các đường giao nhau với một đa giác đã chỉ định.

B.3.18 Ví dụ 17
Tiêu chuẩn này định nghĩa hai phần tử, wfs:Query và wfs:StoredQuery (xem 7.9), có thể được sử dụng để mã hóa các biểu thức truy vấn XML.
Ví dụ này cho thấy cách một phần tử bổ sung có thể được xác định để mã hóa các biểu thức truy vấn, như trường hợp đối với tiện ích mở rộng của nhà cung cấp hoặc hồ sơ của Tiêu chuẩn này. Trong ví dụ này, một phần tử có tên sql:Query được xác định cho phép hiển thị truy vấn SQL tới máy chủ.
Ví dụ này giả định như sau.
Máy chủ được triển khai để hiểu các loại truy vấn có trong phần tử sqlQuery.
Phần tử biểu thức truy vấn mới được xác định được quảng cáo trong tài liệu năng lực của máy chủ bằng cách sử dụng ràng buộc QueryExpression (xem Bảng 14).
Các bảng được sử dụng trong truy vấn được cụ thể hóa dưới dạng các loại đối tượng địa lý thông qua giao diện WFS.
Đoạn XML sau đây xác định lược đồ của phần tử truy vấn mới của chúng tôi, sqlQuery:

Yêu cầu GetFeature được mã hóa XML sau đây sử dụng phần tử sqlQuery để xác định tất cả các tòa nhà nằm trong vùng lũ lụt được chỉ định:

![]()
B.3.19 Ví dụ 18
Ví dụ sau thu được số lượng phiên bản đối tượng địa lý InWaterA_1 M bằng cách đặt tham số resultType thành "hits"

Phản hồi cho thấy có 339963 đối tượng địa lý. Tham số numberReturned được đặt thành 0, cho biết rằng không có đối tượng địa lý nào thực sự được trả về trong phản hồi.

B.3.20 Ví dụ 19
Mặc dù GML 3.2 (xem TCVN 12155:2018) là phiên bản chuẩn của GML được Tiêu chuẩn này hỗ trợ, các phiên bản khác của GML cũng có thể được sử dụng. Ví dụ GetFeature sau đây bao gồm một điều kiện không gian trong đó hình học đã được mã hóa bằng GML 2.1.2.


B.4 Các ví dụ về GetPropertyValue
B.4.1 Giới thiệu
Các ví dụ trong mục này giả định rằng một dịch vụ đối tượng địa lý trên web đang cung cấp tập hợp các trường hợp đối tượng địa lý hư cấu sau:


B.4.2 Ví dụ 1
Ví dụ sau tìm vị trí của Fred Smith bằng yêu cầu GetFeature. Việc sử dụng các tham số resolve và tham số resolveDepth hướng dẫn dịch vụ đối tượng địa lý trên web phân giải bất kỳ tham chiếu cục bộ nào.

![]()
Tài liệu phản hồi là:


Các tài liệu phản hồi chứa đối tượng địa lý myns:Person của Fred Smith và phần wfs:additionalObjects chứa tham chiếu vị trí và tham chiếu quan hệ (vợ/chồng). Tham chiếu vị trí đã phân giải xác định vị trí của Fred Smith.
B.4.3 ví dụ 2
Thao tác sau đây thực hiện cùng một truy vấn như Ví dụ 1 (xem B.4.2), nhưng thay vào đó sử dụng thao tác GetPropertyValue.

Tài liệu phản hồi chứa vị trí của Fred Smith:


B.4.4 ví dụ 3
Yêu cầu GetFeature sau đây sử dụng kết hợp ba loại đối tượng địa lý để tìm số làn đường phía trước ngôi nhà mà Mary Smith sống.

Phản hồi cho yêu cầu này là một danh sách thỏa mãn điều kiện kết hợp:


![]()
Tài liệu phản hồi cho thấy con đường trước nhà Mary Smith có ba làn đường.
B.4.5 Ví dụ 4
Thao tác GetPropertyValue sau đây trả lời câu hỏi tương tự như ví dụ trước (xem B.4.4). Hành động wfs:Query xác định ngôi nhà của Mary Smith và biểu thức đường dẫn trong thuộc tính valueReference truy xuất giá trị abc:numLanes mong muốn. Việc sử dụng toán tử valueOf() trong biểu thức đường dẫn hủy tham chiếu các tham chiếu myns:livesln và myns:frontsOn.

Văn bản trả lời:

chỉ ra rằng con đường trước nhà Mary Smith có ba làn đường.
B.4.6 Ví dụ 5
Yêu cầu GetFeature sau đây sử dụng phép kết hợp để tìm con đường phía trước mỗi ngôi nhà. Điều kiện kết hợp sử dụng toán tử valueOf() để phân giải tham chiếu "frontsOn" để lấy gml:id của mỗi đường tương ứng.

Câu trả lời là một tập hợp các bộ dữ liệu “đường - nhà” cho biết đường nào ở phía trước mỗi ngôi nhà:


B.4.7 Ví dụ 6
Yêu cầu GetPropertyValue sau truy xuất mã bưu chính của Mary Smith. Hành động wfs:Query truy xuất đối tượng myns:Person của Mary Smith và XPath (xem Ngôn ngữ đường dẫn XML) là giá trị của tham số valueReference truy xuất mã bưu chính. Toán tử valueOf() phân giải mọi tham chiếu myns:livesín và myns:mailAddress trong khi đánh giá biểu thức XPath.

Tài liệu phản hồi sau đây cho thấy mã bưu chính của Mary Smith là X1X 1X1:

B.4.8 Ví dụ 7
Yêu cầu sau đây lấy tuổi của Mary Smith:

Tài liệu phản hồi sau đây cho biết tuổi của Mary Smith là 31:

B.4.9 Ví dụ 8
Yêu cầu GetPropertyValue sau tìm nạp tất cả các số điện thoại của Fred Smith. Biểu thức truy vấn tìm nạp đối tượng myns:Person của Fred Smith và biểu thức valueReference XPath lấy các số điện thoại từ đối tượng này.


Tài liệu phản hồi, chứa tất cả các số điện thoại, là:

B.4.10 Ví dụ 9
Yêu cầu sau lấy số điện thoại thứ hai của Fred Smith. Hành động wfs:Query truy xuất các bản ghi myns:Person của Fred Smith và biểu thức XPath myns:phone[2] lấy số điện thoại thứ hai từ đối tượng.

![]()
Tài liệu phản hồi chứa số điện thoại thứ hai:

B.5 Ví dụ về LockFeature
B.5.1 Ví dụ 1
Khóa một tập hợp các đối tượng liệt kê. Trong trường hợp này, WFS được hướng đến thử và khóa càng nhiều đối tượng càng tốt.
Yêu cầu:

Phản hồi mẫu:


B.5.2 Ví dụ 2
Khóa tất cả các thể hiện đối tượng địa lý của loại InWaterA_1M.
Yêu cầu:

Phản hồi mẫu

B.5.3 Ví dụ 3
Trong ví dụ này, một biểu thức bộ lọc sử dụng ràng buộc không gian được sử dụng để xác định tập hợp các thể hiện đối tượng địa lý sẽ bị khóa.
Yêu cầu:

![]()
Phản hồi mẫu:

B.5.4 Ví dụ 4
Ví dụ này khóa các đối tượng của loại BuildUpA_1M và InWaterA_1M. Khóa được gắn nhãn có tay cầm LOCK1 khóa tất cả các đối tượng bên trong cửa sổ đã xác định. Khóa được dán nhãn tay cầm LOCK2 khóa các đối tượng InWaterA_1M.1212, InWaterA_1M.1213 và InWaterA_1M.10.
Yêu cầu:

Phản hồi mẫu:


B.6 Ví dụ về Transaction
B.6.1 Ví dụ về thêm mới
Giao dịch sau đây tạo ra hai phiên bản của loại đối tượng InWaterA_1M.


B.6.2 Ví dụ về cập nhật
B.6.2.1 Ví dụ 1
Ví dụ sau đây cập nhật đặc tính dân số của đối tượng địa lý được xác định bởi mã định danh đối tượng BuildUpA_1M.1013.

B.6.2.2 Ví dụ 2
Cập nhật đặc tính populationType của một tập hợp các đối tượng được liệt kê. Trong ví dụ này, các đối tượng được xác định bởi đối tượng nhận dạng
BuiltUpA_IM.1013
BuiltUpA_IM.34
BuiltUpA_IM.24256
có thuộc tính populationType được đặt thành giá trị "CITY ".
![]()

B.6.2.3 Ví dụ 3
Cập nhật đặc tính name của một tập hợp các đối tượng được liệt kê và cập nhật đặc tính FAC_ID của một tập hợp các đối tượng khác được xác định bằng cách hạn chế giá trị của đặc tính tileld thành các giá trị lớn hơn 1000.

B.6.2.4 Ví dụ 4
Ví dụ này cập nhật hai lớp đối tượng, OceansA_1M và TreesA_1MTreesA_1M. Tất cả các đối tượng của OceansA_1M với độ sâu lớn hơn 2400m đều được cập nhật và đối tượng TreesA_1MTreesA_1M.1010 cũng được cập nhật.

B.6.3 Ví dụ về xóa
B. 6.3.1 Ví dụ 1
Xóa một đối tượng duy nhất.

B.6.3.2 Ví dụ 2
Ví dụ này xóa một tập hợp các trường hợp đối tượng được liệt kê.
![]()

B.6.3.3 Ví dụ 3
Ví dụ này xóa tập hợp các thể hiện đối tượng địa lý của loại đối tượng InWaterA_1M nằm bên trong một vùng được xác định bởi một đa giác được chỉ định trong điều kiện. Phần tử fes:Filter được sử dụng đề giới hạn phạm vi hoạt động và GML được sử dụng để thể hiện hình học của đa giác.

B.6.4 Ví dụ về giao dịch hỗn hợp.
Ví dụ này xác định một giao dịch phức tạp, được gắn nhãn "Transaction 01", thực hiện các thao tác Insert, cập nhật và xóa. Một số loại đối tượng bao gồm các thuộc tính phức tạp và các biểu thức XPath được sử dụng trong các biểu thức bộ lọc để tham chiếu rõ ràng các thuộc tính mong muốn. Nhận xét có trong ví dụ giải thích các hoạt động khác nhau.
![]()





B.6.5 Ví dụ phản hồi giao dịch
Hãy xem xét một yêu cầu giao dịch tạo ra một số thể hiện đối tượng địa lý mới. Các thể hiện đối tượng địa lý được tạo bằng cách sử dụng ba phần tử <wfs:lnsert> có nhãn "STMT1", "STMT2" và "STMT3". Một phản hồi điển hình cho một yêu cầu như vậy có thể là:

B.7 Ví dụ về GetCapabilities
Ví dụ này cho thấy tài liệu năng lực có thể thế nào đối với dịch vụ đối tượng địa lý trên web cơ bản. Để yêu cầu một tài liệu năng lực, máy khách sẽ đưa ra yêu cầu sau:

Máy chủ triển khai lớp phù hợp Simple WFS (xem Bảng 1) có thể tạo tài liệu về các khả năng sau:





Một máy chủ triển khai lớp phù hợp Basic WFS (xem Bảng 1) có thể tạo tài liệu về các khả năng sau:






Một máy chủ phức hợp triển khai tất cả các lớp phù hợp (xem Bảng 1) có thể tạo tài liệu về các khả năng sau:









B.8 Các ví dụ về KVP
B.8.1 Quy ước
Nói chung, mã hóa URL yêu cầu một số ký tự nhất định phải được thay thế chẳng hạn như "&” (xem IETF RFC 2396) khi chúng không được sử dụng theo cách đã định. Tuy nhiên, trong phân này, các ký tự như vậy không được thay thế để làm rõ.
Ngoài ra, nhiều ví dụ trong phần này bao gồm tham số FILTER có giá trị là bộ lọc được mã hóa XML như được chỉ định trong Điều 7 ISO 19143:2010. Để chính xác, các ví dụ này phải bao gồm thông số không gian tên (namespace) và thông tin vị trí (location) lược đồ trong phần tử gốc, fes:Filter, sao cho XML có thể được xác thực. Do đó, tham số:

nên được chỉ định chính xác hơn là:

Tuy nhiên, để không làm xáo trộn thông tin cần thiết, các thẻ thuộc tính không gian tên và vị trí lược đồ đã được bỏ qua trong các ví dụ trong điều khoản này, ngoài ra, các vị trí lược đồ được hiển thị chỉ là các vị trí ví dụ và các vị trí lược đồ chính xác sẽ cần được thay thế.
Cuối cùng, các giá trị của FILTER và các tham số khác được chia nhỏ thành nhiều dòng, một lần nữa để rõ ràng. Trên thực tế, giá trị của tham số FILTER sẽ bao gồm một chuỗi dài, đơn.
B.8.2 Các ví dụ về DescribeFeatureType
B.8.2.1 Ví dụ 1
Ví dụ sau yêu cầu mô tả lược đồ của loại đối tượng TreesA_1M

B.8.2.2 Ví dụ 2
Ví dụ sau yêu cầu mô tả giản đồ của các loại đối tượng địa lý InWaterA_1 M và BuildUpA_1 M.

B.8.3 Các ví dụ về GetPropertyValue
B.8.3.1 Giới thiệu
Tập hợp các ví dụ sau đây giả định rằng tập dữ liệu hư cấu được mô tả trong B.4.1 đang được truy vấn.
B.8.3.2 Ví dụ 1
Tìm thành phố mà Fred Smith sống. Truy vấn này sử dụng truy vấn được lưu trữ GetFeatureByld (xem 7.9.3.6) để truy xuất bản ghi của Fred Smith.

B.8.3.3 Ví dụ 2
Tìm vị trí của Fred Smith.


B.8.3.4 Ví dụ 3
Tìm số làn đường phía trước ngôi nhà mà Mary Smith sống?

B.8.3.5 Ví dụ 4
Mã bưu chính của Mary Smith là gì?

B.8.3.6 Ví dụ 5
Fred Smith bao nhiêu tuổi?


B.8.3.7 Ví dụ 6
Số điện thoại của Fred Smith là gì?

B.8.3.8 Ví dụ 7
Số điện thoại thứ hai của Fred Smith là gì?

B.8.3.9 Ví dụ 8
Lấy con đường phía trước ngôi nhà của Mary Smith

B.8.4 Các ví dụ về GetFeature
B.8.4.1 Ví dụ 1
Truy vấn tất cả các thuộc tính của tất cả các trường hợp thuộc loại InWaterA_1M.

B.8.4.2 Ví dụ 2
Truy vấn một số thuộc tính của tất cả các trường hợp thuộc loại InWaterA_1M.

B.8.4.3 Ví dụ 3
Truy vấn tất cả các thuộc tính của thể hiện đối tượng địa lý được xác định bởi mã định danh đối tượng "InWaterA_.1M.1013".

B.8.4.4 Ví dụ 4
Truy vấn tất cả các thuộc tính của một tập hợp liệt kê các thể hiện đối tượng địa lý của loại InWaterA_1 M.

B.8.4.5 Ví dụ 5
Truy vấn tất cả các thuộc tính của một tập hợp các thể hiện đối tượng bị hạn chế về mặt không gian thuộc loại InWaterA_1M.
![]()

B.8.4.6 Ví dụ 6
Truy vấn một số thuộc tính của tập hợp các thể hiện đối tượng địa lý bị ràng buộc thuộc loại InWaterA_1M. Tập hợp kết quả được xác định bằng cách sử dụng biểu thức bộ lọc (xem Mục 7, ISO 19143:2010, Điều 7) kết hợp các biến điều kiện không gian và phi không gian.

B.8.4.7 Ví dụ 7
Tìm ngọn núi cao thứ năm trong khu vực xung quanh dãy Himalaya.

B.8.4.8 Ví dụ 8
Truy vấn tất cả các thuộc tính của danh sách các loại đối tượng trong các không gian tên khác nhau.

B.8.4.9 Ví dụ 9
Truy vấn một số thuộc tính của danh sách các loại đối tượng. Trong trường hợp này, các thuộc tính wkbGeom và tileld được tìm nạp cho loại đối tượng InWaterA_1M và tất cả các thuộc tính của loại đối tượng BuildUpA_1M đều được tìm nạp.

B.8.4.10 Ví dụ 10
Truy vấn tất cả các thuộc tính của tất cả các trường hợp đối tượng thuộc loại đối tượng InWaterA_1M và BuildUpA_1M nằm trong hộp được chỉ định. Ví dụ này sử dụng biểu thức bộ lọc tương đương thay vì tham số BBOX.

B.8.4.11 Ví dụ 11
Ví dụ này minh họa một yêu cầu GetFeature sử dụng các thành phần PROPERTYNAME làm cơ sở để so sánh với Ví dụ 12 và 13.
Yêu cầu:

Phản hồi chứa xlink:href, nhưng nó được trả về nguyên trạng:


B.8.4.12 Ví dụ 12
Ví dụ này minh họa việc sử dụng các thành phần RESOLVEDEPTH và RESOLVETIMEOUT trên yêu cầu GetFeature từ Ví dụ 11.
Yêu cầu:

Trong phản hồi, cấp độ đầu tiên xlink:href đã được duyệt qua và nội dung của nó được trả về như được mô tả trong 7.6.4:


B.8.4.13 Ví dụ 13
Ví dụ này minh họa việc sử dụng các thành phần RESOLVEDEPTH và RESOLVETIMEOUT trên yêu cầu GetFeature từ Ví dụ 11.
Yêu cầu:

Trong phản hồi, xlink:href cấp một và hai trong thuộc tính gml:directedNode đã được duyệt qua và nội dung của chúng được trả về như được mô tả trong 7.6.4:


B.8.4.14 Ví dụ 14
Ví dụ sau mã hóa một truy vấn kết hợp giữa hai loại đối tượng, myns:Parks và myns:lakes:

B.8.4.15 Ví dụ 15
Ví dụ sau mã hóa hai truy vấn tùy chỉnh riêng biệt trên hai loại đối tượng, myns:Parks và myns: Lakes:

B.8.4.16 Ví dụ 16
Các ví dụ sau tìm nạp tất cả các vị trí trong một hộp giới hạn được chỉ định. Tham số OUTPUTFORMAT được đặt thành các giá trị KML dành riêng cho nhà cung cấp cho phép xem phản hồi bằng trình duyệt Earth hỗ trợ KML.

![]()
B.8.4.17 Ví dụ 17
Ví dụ sau tìm nạp một đối tượng bằng cách sử dụng truy vấn được lưu trữ GetFeatureByld (xem 7.9.3.6).

Phản hồi cho truy vấn này sẽ là một đối tượng trống mà không có các phần tử chứa thông thường được xác định cho phản hồi cho yêu cầu GetFeature (xem 11.3). Ví dụ: đầu ra có thể là:

B.8.5 Các ví dụ về LockFeature
B.8.5.1 Ví dụ 1
Ví dụ sau khóa tất cả các phiên bản của loại đối tượng InWaterA_1M.

B.8.5.2 Ví dụ 2
Ví dụ sau khóa đối tượng được xác định bởi "RoadL._1M.1013".

Mã hóa thay thế cho yêu cầu này, sử dụng truy vấn được lưu trữ GetFeatureByld (xem 7.9.3.6), là:

![]()
B.8.5.3 Ví dụ 3
Ví dụ sau khóa tất cả các thể hiện đối tượng địa lý của loại đối tượng InWaterA_1M và BuildUpA_1M.

B.8.5.4 Ví dụ 4
Ví dụ sau khóa tất cả các đối tượng của loại đối tượng InWaterA_1M và BuildUpA_1M nằm bên trong (INSIDE) một khu vực quan tâm do người dùng chỉ định. Lưu ý rằng chỉ có một giá trị BBOX duy nhất được chỉ định được áp dụng cho cả hai loại đối tượng để xác định các đối tượng cần khóa.

B.8.5.5 Ví dụ 5
Ví dụ sau tương tự như Ví dụ 4, ngoại trừ hai BBOX khác nhau được sử dụng để xác định các thể hiện đối tượng địa lý cần khóa.

Phụ lục C
(Tham khảo)
Lược đồ XML hợp nhất
C.1 Giới thiệu
Phụ lục này hợp nhất các đoạn XML có trong Tiêu chuẩn này thành một tệp duy nhất có tên wfs.xsd có thể được sử dụng với trình phân tích cú pháp XML để xác thực các yêu cầu WFS.
C.2 wfs.xsd













Phụ lục D
(Quy định)
Ràng buộc dịch vụ
D.1 Giới thiệu
Các triển khai của Tiêu chuẩn này phải tuân theo tất cả các quy tắc về yêu cầu và phản hồi HTTP được nêu trong Điều 11 của OGC 06-121r3:2009.
D.2 Ràng buộc HTTP GET và POST
Việc triển khai Tiêu chuẩn này sẽ chỉ hỗ trợ các thao tác HTTP GET và POST (xem IETF RFC 2616).
Bảng D.1 tương quan mã hóa yêu cầu WFS với các thao tác HTTP được hỗ trợ là GET và POST. Giá trị trong mỗi ô chỉ định loại MIME của nội dung thư sẽ được sử dụng cho tổ hợp phương pháp mã hóa/yêu cầu. Giá trị "Không áp dụng" có nghĩa là kết hợp phương pháp mã hóa/yêu cầu được hỗ trợ nhưng loại MIME không được áp dụng. Sự kết hợp của các yêu cầu được mã hóa XML và thao tác HTTP GET không được hỗ trợ.
Bảng D.1 - Yêu cầu thao tác mã hóa và truyền nhận
|
| Thao tác HTTP GET | Thao tác HTTP POST | SOAP |
| XML-encoded requests | Không hỗ trợ | Text/xml | Text/xml |
| KVP-encoded requests | Không áp dụng | Application/x-www-form-urlencoded | Không hỗ trợ |
Khi sử dụng thao tác HTTP POST, loại nội dung cho các yêu cầu XML-encoded WFS sẽ được đặt text/xml.
Khi sử dụng thao tác HTTP POST, loại nội dung cho các yêu cầu WFS được mã hóa KVP sẽ được đặt thành application/x-www-form-urlencoded và nội dung của tài liệu sẽ tương đương với chuỗi truy vấn của một yêu cầu HTTP GET, nghĩa là, nội dung sẽ tương đương với chuỗi theo sau '?' ký tự trong một yêu cầu GET được mã hóa URL. Tất nhiên, nội dung sẽ được mã hóa để bảo vệ các ký tự đặc biệt (xem OGC 06-121r3:2009, 11.3).
Khi sử dụng thao tác HTTP GET và KVP-encoded các yêu cầu WFS, loại MIME không được áp dụng vì toàn bộ yêu cầu được mã hóa trong URL dưới dạng keyword-value theo sau ký tự dấu
D.3 Mã trạng thái HTTP
Các máy chủ sẽ đặt mã trạng thái HTTP (xem IETF RFC 2616:1999, 6.1.1) trong các phản hồi.
Sau khi xử lý thành công thao tác WFS, máy chủ sẽ đặt mã trạng thái HTTP thành "200" với cụm từ phản hồi được đặt thành "OK". Nội dung phản hồi sẽ được mã hóa như được định nghĩa trong Tiêu chuẩn này cho thao tác WFS tương ứng .
Một máy chủ tạo ra một ngoại lệ, để đáp ứng với hoạt động WFS, sẽ tạo ra một nội dung phản hồi như được mô tả trong 7.5 và sẽ bao gồm một mã trạng thái HTTP thích hợp như được xác định trong Bảng D.2.
Sau khi xử lý thành công hoạt động dịch vụ đối tượng địa lý trên web, máy chủ phải đặt mã trạng thái HTTP thành ”200” với cụm từ phản hồi được đặt thành “OK”. Nội dung của phản hồi phải được mã hóa như được xác định trong Tiêu chuẩn này cho tương ứng Hoạt động dịch vụ đối tượng địa lý trên web.
Bảng D.2 - Tương quan mã ngoại lệ OWS và WFS với mã trạng thái HTTP
| Mã ngoại lệ OGC | Mã trạng thái HTTP | Phản hồi HTTP a |
| CannotLockAIIFeatures | 400 | Không thể khóa tất cả đối tượng |
| DuplicateStoredQueryIdValue | 409 | Mã định danh truy vấn được lưu trữ trùng lặp |
| DuplicateStoredQueryParameterName | 409 | Tên tham số truy vấn được lưu trữ trùng lặp |
| FeaturesNotLocked | 400 | Khóa tự động không được thực hiện |
| InvalidLockId | 400 | Định danh khóa không hợp lệ |
| InvalidValue | 400 | Giá trị đối tượng địa lý hoặc đặc tính không hợp lệ |
| LockHasExpjred | 403 | Định danh khóa đã hết hạn |
| OperationParsingFailed | 400 | Yêu cầu không hợp lệ |
| OperationProcessingFailed | 403 | Xử lý máy chủ thất bại |
| Mã ngoại lệ OWS | ||
| OperationNodeSupported | 400 | Không được thực hiện |
| MissingParameterValue | 400 | Yêu cầu sai |
| Invalid ParameterValue | 400 | Yêu cầu sai |
| VersipnNegotiationFailed | 400 | Yêu cầu sai |
| Invalid UpdateSequence | 400 | Yêu cầu sai |
| OptionNotSupported | 400 | Không được thực hiện |
| NoApplicableCode | 400 | Lỗi máy chủ nội bộ |
| a Các phản hồi HTTP chỉ cung cấp thông tin (theo quy định HTTP) tức là, máy khách KHÔNG nên phân tích cú pháp và hiểu các phản hồi. | ||
Ví dụ sau minh họa phản hồi mà máy chủ có thể tạo ra trong trường hợp ngoại lệ DuplicateStoredQueryValue:


D.4 Ràng buộc SOAP
D.4.1 Giới thiệu
SOAP là một giao thức truyền thông dùng để giao tiếp giữa các ứng dụng. SOAP định nghĩa một định dạng để gửi thông điệp giữa các ứng dụng giao tiếp qua Internet. SOAP độc lập với các nền tảng và ngôn ngữ và các thông điệp của SOAP được mã hóa bằng XML.
Thông báo SOAP là một tài liệu XML chứa các phần tử sau:
a) Phần tử bắt buộc soap:Envelope xác định tài liệu XML là một thông điệp SOAP (gọi tắt là SOAP Envelope từ đây trở đi);
b) Phần tử tùy chọn soap:Header chứa thông tin header (gọi tắt là SOAP Header từ đây trở đi);
c) Phần tử bắt buộc soap:Body chứa thông tin yêu cầu và phản hồi (gọi tắt là SOAP Body từ đây trở đi);
d) Phần tử tùy chọn soap:Fault cung cấp thông tin về các lỗi xảy ra trong quá trình xử lý thông điệp (gọi tất là SOAP Fault từ đây trở đi).
Các phần tử ở trên được khai báo trong không gian tên cho phiên bản SOAP envelope 1.1: http://schemas.xmlsoap.org/soap/ehvelope/
Các dịch vụ tuân theo Tiêu chuẩn này có thể tùy chọn hỗ trợ SOAP. Để có khả năng tương tác tối đa, các dịch vụ này sẽ hỗ trợ SOAP phiên bản 1.1 (xem W3C SOAP) cho các yêu cầu và phản hồi dịch vụ đối tượng địa lý trên web.
CHÚ THÍCH: Phiên bản Cơ bản 1.1 (http://www.wsd.org/Profiles/BasicProfile-1.1.html) của Tổ chức Khả năng Tương tác Dịch vụ Web (WS-I) bao gồm một bộ các đặc tả dịch vụ Web không độc quyền, cùng với làm rõ, sàng lọc, giải thích và khuếch đại các thông số kỹ thuật đó nhằm thúc đẩy khả năng tương tác. Hồ sơ cơ bản này và Hồ sơ cơ bản WS-I1.2 kế tiếp của nó (là Bản nháp phê duyệt của Hội đồng quản trị) đều bắt buộc sử dụng W3C SOAP.
D.4.2 SOAP Envelope
SOAP Envelope phải tuân theo cấu trúc được chỉ định trong tiêu chuẩn W3C SOAP:2007, đặc biệt là trong Phần 4, "SOAP Envelope". SOAP Envelope phải được mã hóa dưới dạng XML 1.0 và thuộc về không gian tên XML: http://schemas.xmlsoap.org/soap/envelope/
SOAP Envelope không được có bất kỳ phần từ con thuộc về soap:Envelope sau phần tử soap:Body. Do đó, không được phép sử dụng các phần tử bổ sung, được gọi là SOAP Trailers.
D.4.3 SOAP Header
Tiêu chuẩn này không định nghĩa bất kỳ khối SOAP Header nào cho các dịch vụ đối tượng địa lý trên web cần được xử lý để dịch vụ đối tượng địa lý trên web hoạt động tuân thủ tiêu chuẩn này. Hơn nữa, một dịch vụ đối tượng địa lý trên web không được yêu cầu sử dụng bất kỳ khối SOAP Header độc quyền nào để hoạt động nhằm tuần theo Tiêu chuẩn này.
D.4.4 SOAP Body
Phần SOAP Body chỉ được phép có một phần tử con. Đối với tất cả các yêu cầu và phản hồi, ngoại trừ phản hồi của một thao tác là một XML Schema (ví dụ: phản hồi thành công của DescribeFeatureType), phần tử con này phải là một yêu cầu hoặc phản hồi được mã hóa XML của một thao tác dịch vụ đối tượng địa lý trên web như được định nghĩa trong Tiêu chuẩn này.
CHÚ THÍCH: Điều này cũng ngụ ý rằng một SOAP Envelope cho các yêu cầu và phản hồi dịch vụ đối tượng địa lý trên web không sử dụng (tùy chọn) SOAP Encoding style như được định nghĩa trong Mục 5, W3C SOAP:2007. SOAP Encoding style không được phép theo WS-I Basic Profile 1.1, bởi vì nó có thể gây ra vấn đề về tương thích giữa các hệ thống.
VÍ DỤ 1: thông điệp của SOAP của yêu cầu GetFeature.

Ví dụ 2: Một tin nhắn SOAP cho phản hồi GetFeature chứa một FeatureCollection trong định dạng XML:

D.4.5 Mã hóa XML Schema trong phần SOAP Body
Khi một thao tác DescribeFeatureType được thực hiện thành công, phản hồi của nó sẽ là XML Schema. Tuy nhiên, việc đặt XML Schema trực tiếp trong một phần SOAP Body có thể gây ra một số vấn đề. Do đó, khi sử dụng giao thức SOAP và nếu phản hồi của một thao tác của dịch vụ đối tượng địa lý trên web là XML Schema, XML Schema đó sẽ được mã hóa theo chuẩn base64. Phản hồi đã được mã hóa này sẽ được đặt trong một phần tử XML bao bọc.
Khi sử dụng giao thức SOAP, phản hồi của thao tác DescribeFeatureType phải tuân theo một đoạn mã XML Schema như sau:

Ví dụ: Sắp xếp theo thứ tự XML Schema
![]()

Mã hóa dưới dạng base64 trong một SOAP Body sẽ nhận được kết quả là:

D.4.6 SOAP Fault
Thông báo SOAP Fault phải được xây dựng theo Mục 4.4, SOAP Fault, của W3C SOAP:2007. Giá trị trong phần tử soap:faultcode phải có nội dung là soap:Client hoặc soap:Server, chỉ ra đây là một ngoại lệ dịch vụ. Giá trị soap:Client nên được sử dụng nếu thông báo bị định dạng sai hoặc không chứa thông tin cần thiết để thực thi thành công (ví dụ: chứa một yêu cầu WFS không hợp lệ). Giá trị soap:Server nên được sử dụng nếu thông báo không thể được xử lý vì lý do liên quan đến quá trình xử lý thông báo, chứ không phải nội dung của thông báo đó. Phần tử soap:faultstring phải có nội dung là "A service exception was encountered". Chuỗi cố định này được sử dụng vì chi tiết của ngoại lệ được chỉ định trong phần tử soap:detail sử dụng một phần tử ows: Exception Report (xem OGC 06-121r3) và được mô tả ở Mục 7.5 của Tiêu chuẩn này.
Ví dụ thông báo của SOAP Fault:

D.4.7 Ràng buộc HTTP SOAP
Nếu một dịch vụ đối tượng địa lý trên web hỗ trợ giao thức SOAP, thì phương thức HTTP POST sẽ được sử dụng để truyền các thông điệp SOAP.
Về tính tương thích giữa các hệ thống, giá trị của trường tiêu đề HTTP SOAPAction trong một yêu cầu HTTP phải là một chuỗi được đặt trong dấu ngoặc kép. Chuỗi này sẽ là chuỗi trống ("") nếu không có giá trị soapAction nào được chỉ định trong ràng buộc của thao tác, nếu không nó phải là giá trị của soapAction như đã được chỉ định trong tài liệu WSDL.
Tuy nhiên, điều quan trọng cần lưu ý là trường HTTP Header SOAPAction chỉ là một gợi ý, và một dịch vụ đối tượng địa lý trên web không nên dựa vào giá trị của trường này để xử lý chính xác thông điệp.
CHÚ THÍCH: WS-I Basic profile 1.1 chỉ ra rằng:
“Các thử nghiệm đã chỉ ra rằng yêu cầu giá trị trường tiêu đề HTTP SOAPAction được đặt trong dấu ngoặc kép sẽ tăng cường khả năng tương tác của các triển khai. Mặc dù HTTP cho phép các giá trị trường tiêu đề không có dấu ngoặc kép, nhưng một số triển khai SOAP yêu cầu các giá trị này phải được đặt trong dấu ngoặc kép. SOAPAction chỉ là một gợi ý cho các bộ xử lý. Tất cả thông tin quan trọng liên quan đến mục đích của một thông điệp được mang trong soap:Envelope." Tiêu chuẩn này tuân theo các quy định từ WS-I BP 1.1.
Phụ lục E
(Quy định)
Ngôn ngữ mô tả dịch vụ web (WSDL)
E.1 Giới thiệu
Ngôn ngữ Mô tả Dịch vụ Web (WSDL) 1.1 [W3C WSDL 1.1] mô tả WSDL như "một định dạng XML để mô tả các dịch vụ mạng dưới dạng một tập hợp các điểm cuối hoạt động trên các thông điệp chứa thông tin hướng tài liệu hoặc hướng thủ tục. Các hoạt động và thông điệp được mô tả theo cách trừu tượng, sau đó liên kết với một giao thức mạng cụ thể và định dạng thông điệp để xác định một điểm cuối. Các điểm cuối cụ thể liên quan được kết hợp thành các điểm cuối trừu tượng (dịch vụ)."
Tiêu chuẩn này xác định các hoạt động, thông điệp và ràng buộc WSDL cho các dịch vụ đối tượng địa lý trên web.
Tiêu chuẩn này xác định các ràng buộc bổ sung sau đây đối với các tài liệu WSDL cho các dịch vụ đối tượng địa lý trên web để cải thiện tính tương thích giữa các hệ thống.
Tiền tố không gian tên "wsdl" trong phụ lục này được liên kết với http://schemas.xmlsoap.org/wsdl/.
Tiền tố không gian tên "soapbind" trong phụ lục này được liên kết với http://schemas.xmlsoap.org/wsdl/soap/
E.2 Thao tác của WFS trong WSDL
Một dịch vụ đối tượng địa lý trên web có thể, trong tài liệu năng lực của nó, quảng cáo tất cả các thao tác mà nó hỗ trợ trong một tài liệu WSDL như đã định nghĩa trong W3C WSDL 1.1:2001, Mục 2. Nếu có một tài liệu WSDL, nó sẽ được tham chiếu bằng cách sử dụng phần tử wfs:WSDL trong tài liệu năng lực của máy chủ (xem 8.3.3).
Ví dụ 1:
![]()
Một dịch vụ đối tượng địa lý trên web sẽ quảng cáo một hoạt động WSDL cho mỗi hoạt động dịch vụ đối tượng địa lý trên web mà nó hỗ trợ, như đã định nghĩa trong Tiêu chuẩn này. Định dạng của các thông điệp đầu vào và đầu ra được mô tả trong Ràng buộc SOAP.
Ví dụ 2: Hoạt động GetFeature được biểu diễn dưới dạng một hoạt động WSDL.

E.3 Ràng buộc SOAP
Phần tử wsdl:binding trong một tài liệu WSDL phải sử dụng Ràng buộc SOAP của WSDL như đã định nghĩa trong W3C WSDL 1.1:2001, Mục 3. Các thông điệp được giới thiệu trong một tài liệu WSDL cho các dịch vụ đối tượng địa lý trên web sẽ được serialize như Các thông điệp SOAP như đã định nghĩa trong Phụ lục D của Tiêu chuẩn này.
Phụ lục D.4.7 xác định giao thức truyền tải HTTP là giao thức truyền tải cho các dịch vụ đối tượng địa lý trên web. Ràng buộc SOAP và giao thức truyền tải HTTP sẽ được xác định trong một tài liệu WSDL trong phần tử wsdl:binding. Cụ thể, thuộc tính transport của phần tử con soapbind:binding của nó phải có giá trị "http://schemas.xmisoap.org/soap/http".
CHÚ THÍCH: Yêu cầu này không cấm việc sử dụng HTTPS.
E.4 Binding style
WS-IBP 1.1 định nghĩa hai kiểu liên kết:
Trong W3C WSDL 1.1, các phần tử wsdl:message được sử dụng để biểu thị các định nghĩa trừu tượng của dữ liệu được truyền. Nó sử dụng các phần tử wsdl:binding để xác định cách các định nghĩa trừu tượng được liên kết với một tuần tự hóa thông báo cụ thể.
Một liên kết document-literal là một phần tử wsdl:binding có các phần tử wsdl:operation con là tất cả các thao tác document-literal.
Liên kết document-literal là một phần tử con wsdl:operation của wsdl:binding mà các phần tử con của nó là soapbind:body chỉ định thuộc tính use với giá trị "literal" và một trong hai:
- Thuộc tính kiểu có giá trị "document" được chỉ định trên phần tử con soapbind:operation; hoặc
- Thuộc tính style, không có trên phần tử con soapbind:operation và phần tử soapbind:binding trong wsdl:binding kèm theo chỉ định thuộc tính style có giá trị "document" hoặc
- Thuộc tính style không có trên cả phần tử con soapbind:operation và phần tử soapbind:binding trong wsdl:binding kèm theo.
Tài liệu WSDL cho dịch vụ đối tượng địa lý trên web tuân theo Tiêu chuẩn này sẽ chỉ sử dụng ràng buộc theo nghĩa đen của tài liệu như được mô tả ở trên.
Liên kết wsdh trong tài liệu WSDL sẽ tham chiếu, trong mỗi phần tử soapbind:body và phần tử soapbind:fault của nó, chỉ tới (các) phần tử wsdl:part đã được xác định bằng cách sử dụng thuộc tính phần tử.
Bộ phận này phải được đánh số thứ tự trong phần tử soap:Body và chỉ chứa một phần tử con, như được mô tả trong B.4.5 của Tiêu chuẩn này.
Một wsdl:binding trong tài liệu WSDL trong mỗi (các) phần tử soapbind:body của nó cho các dịch vụ đối tượng địa lý trên web sẽ có tối đa một phần được liệt kê trong thuộc tính bộ phận nếu thuộc tính bộ phận được chỉ định.
Ví dụ 1: Định nghĩa thông báo WSDL cho yêu cầu GetFeature. Phần tử wfs:GetFeature đề cập đến định nghĩa GetFeature trong Lược đồ XML của các dịch vụ đối tượng địa lý trên web.
![]()
Ví dụ 2: Định nghĩa thông báo WSDL cho phản hồi GetFeature.
![]()
Ví dụ 3: Tài liệu ràng buộc theo nghĩa đen của một dịch vụ đối tượng địa lý trên web cung cấp các hoạt động GetCapabilities, DescriptionFeatureType và GetFeature. Thông báo đầu vào và đầu ra của các hoạt động được xác định ở nơi khác; xem ví dụ trong E.2.


E.5 Dịch vụ
dịch vụ đối tượng địa lý trên web sẽ cung cấp một thành phần dịch vụ wsdl trong tài liệu WSDL như được định nghĩa trong Phần 2.7 Dịch vụ WSDL (xem W3C WSDL 1.1:2001).
VÍ DỤ Đoạn XML sau đây là một ví dụ về phần tử dịch vụ cho các dịch vụ đối tượng địa lý trên web.

E.6 Mô tả dịch vụ sử dụng WSDL
E.6.1 Giới thiệu
Điều khoản này chứa mô tả WSDL của dịch vụ đối tượng địa lý trên web. Nó cũng bao gồm các định nghĩa điểm cuối ví dụ minh họa việc sử dụng mô tả WSDL
E.6.2 wfs-xml-interfaces.wsdl



E.6.3 wfs-kvp-bindings.wsdl


E.6.4 wfs-responses.wsdl


E.6.5 wfs-http-bindings.wsdl




E.6.6 wfs-kvp-bindings.wsdl


![]()
E.6.7 wfs-soap-bindings.wsdl



E.6.8 Tệp bổ trợ
E.6.8.1 wfs-kvp-xsd






E.6.8.2 wfs-util-xsd

E.6.9 Ví dụ (Tham khảo)
E.6.9.1 Giới thiệu
Các tệp ví dụ xác định điểm cuối cho dịch vụ đối tượng địa lý trên web hỗ trợ các cổng HTTP GET, POST và SOAP (XML cũ đơn giản) được đưa ra trong E.6.9.2 đến E.6.9.5.
E.6.9.2 tệp example-endpoints.wsdl

E.6.9.3 example-POST-endpoints.wsdl


E.6.9.4 example-GET-endpoints.wsdl

E.6.9.5 tệp example-SOAP-endpoints.wsdl

Phụ lục F
(Tham khảo)
Mô hình trừu tượng
F.1 Tổng quan
Phụ lục này cung cấp một mô hình trừu tượng (Abstract Model) thông tin về dịch vụ đối tượng địa lý trên web. dịch vụ đối tượng địa lý trên web là dịch vụ cho phép người dùng chọn một phần tài nguyên do dịch vụ quản lý hoặc thông qua dịch vụ này. Mỗi phiên bản dịch vụ đối tượng địa lý trên web được kết nối với một tập hợp các tài nguyên.
Mô hình Trừu tượng (AM) định nghĩa thông tin trong yêu cầu và phản hồi cho dịch vụ đối tượng địa lý trên web, và định nghĩa tất cả các giá trị cho các biểu thức có thể sử dụng trong các yêu cầu của OGC.
F.2 Mô hình tài nguyên trừu tượng
F.2.1 Giới thiệu
Phụ lục này giới thiệu một mô hình trừu tượng cho tài nguyên. Mô hình này được xem xét độc lập với dịch vụ đối tượng địa lý trên web. Mỗi dịch vụ đối tượng địa lý trên web luôn liên quan đến một tập hợp các tài nguyên. Hành vi của dịch vụ đối tượng địa lý trên web sau đó được định nghĩa bởi một tập hợp các hoạt động (xem F.6) ở phần này.
Một tài nguyên là một phần của một tập hợp. Tất cả các tài nguyên đều có không hoặc nhiều đặc tính mô tả tài nguyên. Giá trị của một đặc tính luôn là một tài nguyên khác. Một số tài nguyên được xem xét là trực tiếp trong ý nghĩa là chúng không thể có đặc tính (ví dụ: giá trị chuỗi đơn giản).
Tài nguyên được xem xét là có kiểu trong ý nghĩa là chúng có một danh sách cụ thể các đặc tính, tức là tất cả các tài nguyên có cùng danh sách đặc tính được coi là cùng một kiểu.
Giá trị của một đặc tính là một tài nguyên, có thể là Trực tiếp hoặc không Trực tiếp. Đôi khi sẽ hữu ích khi cho rằng đặc tính như là các hàm trên các tài nguyên. Ví dụ, đặc tính numLanes của tài nguyên Road có thể được viết dưới dạng một hàm numLanes(Road) |→ 3.
Một tập hợp các tài nguyên, có thể bao gồm tài nguyên thuộc nhiều loại khác nhau, được gọi là một "bộ sưu tập tài nguyên." Mục tiêu của dịch vụ đối tượng địa lý trên web là cho phép người dùng lựa chọn một phần của bộ sưu tập tài nguyên được xác định trong đó các tài nguyên được xem như các đối tượng dưới góc độ của Mô hình Đối tượng Tổng quan ISO, như được định nghĩa trong ISO 19109. Mô hình Trừu tượng sử dụng tài nguyên thay vì đối tượng vì mô hình này dự kiến sẽ mô tả các hồ sơ danh mục cũng như các đối tượng địa lý. Đối với mục đích mô tả dịch vụ đối tượng địa lý trên web, tài nguyên có thể được hiểu như là đối tượng.
Mô hình trừu tượng này được định nghĩa chính thức thông qua các hàm truy cập mô tả ở F.2.2.
F.2.2 Các hàm truy cập cơ bản
Các hàm truy cập cơ bản mô tả các tài nguyên như sau:
- Các hàm truy cập trên các tài nguyên và thuộc tính:
![]()
Hàm truy cập name() trả về tên của Tài nguyên hoặc Thuộc tính. Trong trường hợp của dịch vụ đối tượng địa lý trên web (WFS), đây có thể là tên của một đối tượng (ví dụ: abc:Road) hoặc tên của một đặc tính (ví dụ: abc:numLanes).
- Hàm truy cập tài nguyên:
![]()
Hàm truy cập id() trả về mã định danh của tài nguyên.
![]()
Giá trị TypeNameString trả về tên của loại tài nguyên và phải chứa danh sách đầy đủ các đặc tính liên quan đến tài nguyên. Lưu ý rằng chúng ta cũng có thể viết Type(Feature) → TypeNameString.
![]()
Hàm truy cập typeDef() chứa đủ thông tin để xác định hoàn toàn tất cả các thuộc tính của tài nguyên.
![]()
Hàm truy cập versionNumber() trả về phiên bản của tài nguyên dưới dạng số.
![]()
Hàm truy cập versionTimestamp() trả về dấu thời gian.
![]()
Hàm truy cập properties() trả về tất cả các đặc tính của một tài nguyên.
Hàm truy cập property(Resource, PropertyName) áp dụng cho một Resource và trả về không hoặc nhiều đặc tính có tên trong biến PropertyName đã cho.
PropertyName là một giá trị chuỗi, đó là tên của đặc tính mà bạn yêu cầu. Lưu ý rằng một Resource có thể có nhiều thể hiện của cùng một tên đặc tính, (xem phần "cardinality" bên dưới).
Hàm truy cập thuộc tính valueOf(Property) → Value+: Hàm truy cập valueOf() áp dụng trên một Property và trả về giá trị của đặc tính này, có thể là một hoặc nhiều Resources. Các Resources này có thể không phải là văn bản hoặc là văn bản.
Ví dụ, hàm truy cập thuộc tính "numLanes" cho đối tượng "Road" (xem Điều D.2.1) được biểu diễn như sau:
![]()
Một định nghĩa loại chứa đủ thông tin để hoàn toàn xác định định nghĩa loại của Resource, đó chính là giá trị của Property.
Ví dụ: Chúng ta có một tài nguyên là "LionsGateBridge" với các đặc tính "numLanes," "heightAtCenter," "span," và "crosses." Chúng ta cũng có một tài nguyên khác là "Burrardlnlet," và giá trị của thuộc tính "crosses" trỏ đến "BurrardInlet," tức là crosses(LionsGateBridge) -> Burrardlnlet. Sau đó, TypeDef(crosses) → TypeDef(Burrardlnlet).
![]()
Một Property có thể xuất hiện nhiều lần trên một Resource, số lần xuất hiện của một Property có thể được xác định bằng hàm cardinality.
Bội số là loại phạm vi được xác định trên tập hợp các số nguyên không âm và có thể là một trong số { 0 hoặc hơn, 1 hoặc hơn, n (số nguyên không âm), (n,m) (phạm vi từ n đến m)}
F.3 Ánh xạ của Mô hình Đối tượng Tổng quan (General Feature Model - GFM) đến Mô hình Trừu tượng dịch vụ đối tượng địa lý trên web (WFS Abstract Model)
Mô hình Trừu tượng dịch vụ đối tượng địa lý trên web (WFS Abstract Model) tham chiếu đến các tài nguyên. Những tài nguyên này tương đương với các đối tượng trong Mô hình Đối tượng Tổng quan (General Feature Model - GFM). Chúng ta sẽ gọi tất cả các tài nguyên như là đối tượng trong phần còn lại của Phụ lục này.
F.4 Định danh
Một đối tượng GML (Geography Markup Language) là một phần tử được khai báo trong một lược đồ ứng dụng và có mô hình nội dung dẫn xuất trực tiếp hoặc gián tiếp từ mô hình nội dung của gml:AbstractGML. Mỗi đối tượng như vậy phải có một gml:id bắt buộc. gml:id phải là một định danh cố định của một tài nguyên WFS. Nó không thể được thay đổi bởi các hoạt động WFS ngoại trừ thêm (Insert) và không thể được gán lại ngay cả khi tài nguyên liên quan bị xóa (deleted. gml:id được kiểm soát bởi WFS sở hữu tài nguyên. Giá trị duy nhất toàn cầu cho gml:id có thể được xác định trong một cộng đồng.
F.5 Hàm valueOf()
Hàm truy cập valueOf() cung cấp quá trình phân giải các tham chiếu có thể gặp phải khi xác định giá trị của Property. Ví dụ, trong GML, một Property có thể có một Property Value được chỉ định thông qua một xlink:href trỏ đến Value cần xem xét. Trong trường hợp như vậy, hàm truy cập valueOf() phải duyệt và phân giải tất cả các tham chiếu đó một cách hiệu quả.
F.6 Vận hành WFS
F.6.1 Giới thiệu
Hành vi của một dịch vụ đối tượng địa lý trên web (WFS) được xác định bởi một bộ sưu tập các đối tượng (tài nguyên) (xem F.2) trên đó được định nghĩa một tập hợp các hàm truy cập trừu tượng như sau.
| 1. featureTypeNameList() 2. featureType() 3. feature() 4. propertyValue() 5. lock() 6. transaction() | |
|
| 1. insert() 2. update() 3. delete() 4. replace() |
| 7. stored query ops | |
|
| 1. createStoredQuery() 2. dropStoredQuery() 3. listStoredQueries() 4. describeStoredQueries() |
Những hàm này, cùng với hàm valueOf() (xem F.5), hoàn toàn xác định hành vi của dịch vụ đối tượng địa lý trên web (WFS).
F.6.2 Hàm featureTypeNameList()
Hàm này trả về một danh sách các tên loại đối tượng (TypeName(Feature)) cho các loại đối tượng được hỗ trợ bởi dịch vụ.
Trong GML, đây là một danh sách các QName (XML Schema type QName, ví dụ: myns:address). Hàm này không yêu cầu bất kỳ đối số nào.
F.6.3 Hàm featureType()
Hãy đặt TFeatureDef đại diện cho các định nghĩa loại đối tượng liên kết với dịch vụ đối tượng địa lý trên web (WFS) được đề cập. (xem hàm truy cập TypeDef trong Mục F.2.2).
![]()
TypeNameString là một Chuỗi biểu thị TypeName như được trả về bởi hàm Type(Resource)
Hàm này trả về các định nghĩa loại đối tượng của tên loại đối tượng [và tất cả các định nghĩa của tất cả các thuộc tính của các loại đối tượng này].
Tập hợp các chuỗi tên loại đối tượng (đối số của hàm) có thể trống, trong trường hợp đó một tập hợp hoàn chỉnh TFeatureDef chứa tất cả các định nghĩa loại đối tượng được hỗ trợ bởi dịch vụ sẽ được trả về.
Trong một WFS trả về GML, các tên loại đối tượng thuộc loại QName và tập hợp các định nghĩa loại được trả về được biểu diễn dưới dạng một lược đồ ứng dụng GML.
F.6.4 Hàm Query
F.6.4.1 Hàm fearure()
![]()
Hàm feature() nhận một hoặc nhiều đối số truy vấn và trả về không hoặc nhiều đối tượng.
F.6.4.2 Biểu thức truy vấn
![]()
Một Query có thể là một biểu thức truy vấn tùy chỉnh hoặc nó có thể là một biểu thức truy vấn được tham số hóa lưu trữ. Trong cả hai trường hợp, một truy vấn sẽ phân giải thành 0 hoặc nhiều Features.
F.6.4.3 Truy vấn tùy chỉnh
F.6.4.3.1 Biểu thức truy vấn
![]()
F.6.4.3.2 Sắp xếp
![]()
Thứ tự sắp xếp được chỉ định bằng một hoặc nhiều biểu thức sắp xếp, mỗi biểu thức này bao gồm một tham chiếu giá trị mà theo đó các đối tượng sẽ được sắp xếp và một bộ điều chỉnh thứ tự để xác định liệu kết quả có được sắp xếp theo thứ tự tăng dần (ASC) hay giảm dần (DESC). Thứ tự mặc định là tăng dan (ASC).
Nếu WFS được triển khai dưới dạng XML, thì ValueReference là một biểu thức XPath.
F.6.4.3.3 Phân giải tham chiếu
![]()
Bộ sưu tập đối tượng liên quan đến một dịch vụ đối tượng địa lý trên web (WFS) có thể chứa các tài nguyên mà đặc tính của chúng tham chiếu đến các tài nguyên khác trong bộ sưu tập hoặc bên ngoài tài nguyên trong các bộ sưu tập không được quản lý bởi WFS. Hàm này áp dụng hàm valueOf() cho từng đối tượng và áp dụng hàm này cho từng đặc tính. Vì Value của một Property cũng có thể chứa các tham chiếu khác, quá trình này được lặp lại (tức là hàm valueOf() được áp dụng cho tất cả các đặc tính của tất cả các tài nguyên trong Value của Property) cho đến khi đạt được độ sâu phân giải (resolutionDepth).
F.6.4.3.4 Phép chiếu
![]()
Như đã được nêu trong F.2.2, một Feature có thể có các Properties có cấp số từ không hoặc nhiều. Những Properties này có thể được xem xét là "tùy chọn" và có thể được loại bỏ thông qua việc sử dụng hàm Project.
Project là một hàm nhận một hoặc nhiều Feature và một đối số Properties xác định những đặc tính mà bạn muốn lấy từ tập hợp các đặc tính của các đối tượng địa lý được trả về và có cấp số từ không hoặc nhiều. Tất cả các đặc tính tính bắt buộc (multiplicity = (1,1 hoặc nhiêu, n (n>0), (n,m), n>0) luôn luôn được trả về.
Trong trường hợp của một WFS triển khai với XML, các Properties mong muốn được chỉ định bằng cách sử dụng biểu thức XPath.
F.6.4.3.5 Bộ lọc
Bộ lọc là chức năng bộ lọc được xác định trong Mô hình truy vấn trừu tượng. Nó áp dụng cho phần col của Đối tượng được liên kết với WFS chọn tất cả các Đối tượng đáp ứng biểu thức bộ lọc có trong biểu thức truy vấn
F.6.4.4 Biểu thức truy vấn đã lưu
![]()
Một StoredQuery được xác định bằng Queryidentifier. Nó có thể được coi như một hàm với các đối số được chỉ định bởi danh sách kết hợp của QueryParameters liên quan. Nó trả về một tập hợp các đối tượng.
F.6.5 Hàm propertyValue()
![]()
Hàm này trả về các giá trị của Thuộc tính thỏa mãn truy vấn được chỉ định trong đối số của hàm. Ngữ nghĩa của hàm propertyValue() được xác định bởi sự kết hợp của các hàm Resolve, Prune() và Query, tức là...
![]()
Truy vấn được áp dụng trên dãy các Đối tượng được cung cấp và trả về tất cả các Đối tượng thỏa mãn biểu thức bộ lọc được chứa trong đó (xem F.6.4.3.5).
Hàm Prune() nhận bộ sưu tập các đối tượng được trả về từ biểu thức truy vấn và biểu thức XPath được cung cấp xác định thuộc tính mong muốn và trả về giá trị của thuộc tính đó.
![]()
Hàm Resolve sau đó duyệt qua các đối tượng được trả về và áp dụng hàm valueOf() cho tất cả các thuộc tính của các đối tượng này.
F.6.6 Hàm lock()
![]()
Hàm lock đặt một khóa trên một bộ sưu tập các đối tượng thỏa mãn truy vấn được cung cấp (xem F.6.4.2). Sau đó, một hàm bọc có thể áp dụng hàm id() trên bộ sưu tập các đối tượng được trả về và xây dựng một bộ sưu tập các định danh đối tượng. Một khóa trên một bộ sưu tập các đối tượng ngăn chặn bất kỳ giao dịch nào trên những đối tượng đó bởi bất kỳ máy khách nào của WFS ngoại trừ máy khách được cấp quyền khóa.
F.6.7 Hàm transaction()
F.6.7.1 Biểu thức chung
![]()
Hàm transaction thực hiện một chuỗi cụ thể của các toán từ insert, update và delete một cách toàn vẹn. Nó trả về giá trị true nếu chuỗi các toán tử được thực hiện thành công hoàn toàn, ngược lại trả về giá trị false.
F.6.7.2 Hàm insert()
![]()
Hàm insert thêm một hoặc nhiều đối tượng vào bộ sưu tập đối tượng của WFS.
F.6.7.3 Hàm update()
Hàm update có thể thay thế, loại bỏ hoặc thêm mới giá trị cho các thuộc tính của một bộ sưu tập các đối tượng.
![]()
Bộ lọc Filter chọn một bộ sưu tập các đối tượng thỏa mãn bộ lọc. Các toán tử cập nhật sau đó cập nhật các Đối tượng này. Mỗi UpdateOperator có thể là Replace (Thay thế), Remove (Xóa) hoặc Insert (Thêm mới).
![]()
PropertyReference là một tham chiếu đến thuộc tính của đối tượng được cung cấp.
Trong trường hợp triển khai một WFS, một PropertyReference có thể được triển khai như một biểu thức đường dẫn cụ thể (ví dụ: XPath hoặc đường dẫn đối tượng) trong một mô hình cụ thể. Toán tử Replace thay thế thuộc tính được tham chiếu bằng thuộc tính mới được cung cấp.
![]()
Toán tử Delete xóa thuộc tính được chỉ định (được chỉ định bởi PropertyReference) của đối tượng được cung cấp.
![]()
Toán tử Insert thêm NewProperty được cung cấp vào Feature. Bộ chỉ mục (Before | After) xác định vị trí thêm liên quan đến Property được tham chiếu. Sự thiếu vắng chỉ mục vị trí chỉ ra rằng thuộc tính mới được thêm mới sau thuộc tính được tham chiếu.
F.6.7.4 Hàm delete()
![]()
Hàm delete xóa tất cả các Features thỏa mãn truy vấn.
F.6.7.5 Hàm replate()
![]()
Hàm replace thêm các Features được cung cấp vào WFS cụ thể và gán phiên bản của Feature được thêm bằng giá trị được tính toán dựa trên cơ sở Feature được xác định bằng bộ lọc, sao cho đối tượng được thêm trở thành phiên bản mới nhất của Feature được xác định.
F.6.8 Các thao tác truy vấn lưu trữ
F.6.8.1 Hàm createStoredQuery()
![]()
Hàm createStoreQuery() định nghĩa một truy vấn có tham số để lưu trữ trong kho dữ liệu của máy chủ. Tham số QueryIdentifier chỉ định định danh dưới đó truy vấn được lưu trữ trong kho dữ liệu của máy chủ. Tham số returnType chỉ định các loại đối tượng mà truy vấn đã lưu trữ trả về. Tham số QueryParameters xác định không hoặc nhiều đối số được sử dụng khi gọi truy vấn đã lưu trữ. Tham số Query chỉ định biểu thức truy vấn mà máy chủ lưu trữ. Hàm này trả về TRUE để chỉ ra rằng biểu thức truy vấn đã được lưu trữ thành công.
F.6.8.2 Hàm dropStoredQuery()
![]()
Thao tác DropStoredQuery() loại bỏ truy vấn đã lưu trữ với QueryIdentifier cụ thể khỏi kho dữ liệu của máy chủ. Hàm này trả về TRUE để chỉ ra rằng truy vấn đã lưu trữ đã được loại bỏ thành công.
F.6.8.3 Hàm listStoredQueries()
![]()
Thao tác ListStoredQueries() trả về một danh sách các định danh truy vấn đã lưu trữ trong kho dữ liệu của máy chủ.
F.6.8.4 Hàm descriptionStoredQueries ()
![]()
Hàm describedStoredQueries() cung cấp mô tả chi tiết về các biểu thức truy vấn được lưu trữ trong kho dữ liệu của máy chủ. Tham số QueryIdentifier chỉ định các định danh của một hoặc nhiều truy vấn đã lưu trữ để mô tả. Nếu không có tham số QueryIdentifier nào được chỉ định làm đối số, thì tất cả các biểu thức truy vấn đã lưu trữ đều được mô tả.
F.7 Thao tác WFS
Bảng F.1 ánh xạ các thao tác được xác định trong mô hình trừu tượng với các thao tác WFS được xác định trong các điều và điều khoản cụ thể trong Tiêu chuẩn này.
Bảng F.1 - Ánh xạ các hoạt động trong Mô hình Trừu tượng của WFS sang các thao tác của WFS
| Hàm trong mô hình Abstract | Thao tác WFS | Mệnh đề |
| featureTypeNameList() | GetCapabilities | 8 |
| featureType() | DescribeFeatureType | 9 |
| feature() | GetFeature | 11 |
| propertyValue() | GetPropertyValue | 10 |
| lock() | Lock/GetFeatureWith Lock | 12, 13 |
| transaction() | Transaction | 15 |
| createStoredQuery() | CreateStoredQuery | 14.5 |
| dropStoredQuery() | DropStored Query | 14,6 |
| listStoredQueries() | ListStoredQueries | 14.3 |
| describeStoredQueries() | DescribedStoredQueries | 14.4 |
F.8 Lược đồ khái niệm
Lược đồ khái niệm (conceptual schema) của giao diện WFS được biểu thị bằng ký hiệu UML trong tài liệu này và dựa trên mô hình truy vấn trừu tượng như mô tả trong phụ lục này và trong Phụ lục E của OGC 09-026r2.
Các giao diện cơ bản của dịch vụ đối tượng địa lý trên web được hiển thị trong Hình F.1.

Hình F.1 - Tổng quan Giao diện dịch vụ đối tượng địa lý trên web
Thư mục tài liệu tham khảo
[1] TCVN ISO 8601:2004, Phần tử dữ liệu và dạng thức trao đổi - Trao đổi thông tin - Biểu diễn thời gian.
[2] TCVN ISO 19109:2018, Thông tin địa lý - Quy tắc lược đồ ứng dụng.
[3] ISO 19101:2002, Geographic information - Reference model.
[4] ISO 19111:2007, Geographic information - Spatial referencing by coordinates.
[5] ISO 19115:2003, Geographic information - Metadata.
[6] ISO 19119:2005, Geographic information - Services.
[7] ISO 19128:2005, Geographic information - Web map server interface.
[8] CGI/1.1, The Common Gateway Interface, National Centre for Supercomputing Applications.
[9] IETF RFC 2045, Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies (November 1996).
[10] IETF RFC 2396, Uniform Resource Identifiers (URI), Generic Syntax, (August 1998).
[11] OGC 02-058, Web Feature Service V1.0.0 (17 May 2002).
[12] OGC 04-094, Web Feature Service Implementation Specification V1.1.0 (03 May 2005).
[13] OGC 07-092r2, Definition identifier URNs in OGC namespace (22 August 2008).
[14] OGC 09-144M, MIME Media Types for GML, OGC® Policy Document (08 February 2010).
[15] W3C XML, Extensible Markup Language (XML) 1.0 (Third Edition), W3C Recommendation (4 February 2004).
[16] W3C XLink, XML Linking Language (XLink) Version 1.0, W3C Recommendation (27 June 2001).
Bạn chưa Đăng nhập thành viên.
Đây là tiện ích dành cho tài khoản thành viên. Vui lòng Đăng nhập để xem chi tiết. Nếu chưa có tài khoản, vui lòng Đăng ký tại đây!