Mục lục
Chương 1 - Wiki6
I.Định nghĩa. 6
II.Lịch sử6
II.Các đặc điểm6
1.Thay đổi trang wiki7
2.Sự điều hướng. 8
3.Liên kết và tạo trang. 8
IV.Tính đáng tin và bảo mật. 9
1.Điều khiển các thay đổi9
2.Tìm kiếm9
3.Kiến trúc phần mềm9
4.Tính đáng tin. 10
5.Tính bảo mật. 10
V.Tính cộng đồng. 10
Chương II - Semantic web. 12
I.Vấn đề. 12
1.Giới hạn của HTML. 12
2.Giải pháp web ngữ nghĩa. 12
II.Các thành phần. 13
1.URI và Unicode. 13
2.XML và XML schema. 13
2.1.XML. 13
2.2.XML schema. 14
3.RDF và RDF schema. 15
3.1.RDF. 15
3.1.1.Giới thiệu. 15
3.1.2.Động cơ và mục đích. 15
3.1.3.Các khái niệm RDF. 16
3.1.4.Tham chiếu từ vựng RDF và không gian tên. 19
3.1.5.Kiểu dữ liệu. 19
3.1.6.Cú pháp. 20
3.1.7.Một số phần tử cơ bản của RDF. 22
3.2.RDF schema. 25
4.Ontology và OWL. 25
4.1.Khái niệm Ontology:25
4.2.Tài liệu OWL. 26
4.2.1.Nội dung:26
4.2.2.Từ vựng xây dựng trong OWL. 26
4.2.3.Kiểu MIME. 26
4.3.Các lớp. 26
4.3.1.Class description – miêu tả lớp. 27
4.3.2.Class axiom32
4.4.Các thuộc tính – Propertiy. 34
4.4.1.Các cấu trúc RDF Schema. 35
4.4.2.Sự liên hệ đến các thuộc tính khác. 36
4.4.3.Các ràng buộc số lượng toàn cục trên các thuộc tính. 36
4.4.4.Các đặc tính logic của các thuộc tính. 37
4.5.Cá thể (individual). 38
4.5.1.Thành viên lớp và các giá trị thuộc tính. 38
4.5.2.Định danh cá thể. 39
4.6.Kiểu dữ liệu. 40
4.6.1.Kiểu dữ liệu RDF. 40
4.6.2.Kiểu dữ liệu liệt kê. 40
4.6.3.Hỗ trợ cho phân tích kiểu dữ liệu. 41
4.7.Chú thích (Annotation), Ontology header, import và thông tin phiên bản (version information)41
4.7.1.Chú thích – Annotation. 41
4.7.2.Phần đầu Ontology (ontology header). 42
4.7.3.Kết hợp một ontology. 43
4.8.Thông tin phiên bản. 43
5.SPARQL – Ngôn ngữ truy vấn RDF. 45
5.1.Nội dung chính :45
5.1.1.Không gian tên:45
5.1.2.Miêu tả dữ liệu. 45
5.1.3.Các miêu tả kết quả. 45
5.1.4.Thuật ngữ. 45
5.2.Tạo các truy vấn đơn giản :45
5.2.1.Tạo một truy vấn đơn giản :45
5.2.2.Nhiều kết quả trả về. 46
5.2.3.Kết quả RDF Literal (matching rdf literal). 47
5.2.4.Các nhãn nút trắng trong kết quả truy vấn. 48
5.2.5.Xây dựng đồ thị RDF. 48
5.3.Các ràng buộc RDF Term49
5.3.1.Sự giới hạn các giá trị của các chuỗi :50
5.3.2.Giới hạn các giá trị số :50
5.3.3.Các ràng buộc khác. 50
5.4.Cú pháp SPARQL. 51
5.4.1.Cú pháp RDF Term :51
5.4.2.Cú pháp cho các khuôn mẫu triple:54
5.4.2.1.Các danh sách thuộc tính - đối tượng:55
5.5.Các khuôn mẫu đồ thị :57
5.5.1.Các khuôn mẫu đồ thị cơ bản :57
5.5.2.Các khuôn mẫu đồ thị nhóm57
5.6.Bao gồm các giá trị tùy chọn:59
5.6.1.Khớp khuôn mẫu tùy chọn. 59
5.6.2.Các ràng buộc trong phép khớp khuôn mẫu tùy chọn :61
5.6.3.Các khuôn mẫu đồ thị tùy chọn:61
5.7.Việc khớp thay thế :62
5.8.Tập dữ liệu RDF :RDF Dataset. 63
5.8.1.Các ví dụ của RDF Dataset. 63
5.8.2.Chỉ ra các RDF Dataset :65
5.8.3.Truy vấn tập dữ liệu. 67
5.9.Chuỗi giải pháp và các điều chỉnh giải pháp. 71
5.9.1.ORDER BY. 72
5.9.2.Phép chiếu. 74
5.9.3.Các giải pháp trùng lặp. 74
5.9.4.OFFSET. 76
5.9.5.LIMIT. 76
5.10.Dạng truy vấn. 76
5.10.1.SELECT. 76
5.10.2.CONSTRUCT. 78
5.10.3.ASK. 81
5.10.4.DESCRIBE (nâng cao). 82
10.4.2.Xác định các tài nguyên. 82
10.4.3.Các miêu tả của các tài nguyên :82
5.11.Các giá trị kiểm tra. 83
5.11.1.Các kiểu dữ liệu toán hạng. 84
5.11.2.Tính toán lọc. 85
5.11.3.Ánh xạ toán tử. 85
5.11.4.Các định nghĩa các toán tử. 88
Chương III - Semantic Wiki96
I.Khái niệm96
II.Các ưu điểm của Semantic Wiki96
III.Các chức năng của Semantic Wiki96
1.Định kiểu/Chú thích các liên kết. 96
2.Biểu diễn ngữ cảnh nhận biết. 97
3.Cải thiện sự điều hướng. 97
4.Tìm kiếm ngữ nghĩa. 97
5.Hỗ trợ suy diễn. 97
Chương IV – Công cụ và Ứng dụng. 98
I.Giới thiệu về Ikewiki98
1.Giới thiệu. 98
2.Nguyên tắc thiết kế. 98
2.1.Dễ dàng sử dụng và tương tác giao diện. 98
2.2.Tương thích với Wikipedia/MediaWiki98
2.3.Tương thích với các chuẩn Semantic Web. 98
2.4.Sự khai thác tức thì các chú thích ngữ nghĩa. 98
2.5.Hỗ trợ các mức khai thác khác nhau. 98
2.6.Hỗ trợ suy diễn. 99
3.Kiến trúc. 99
3.1.Kho lưu trữ trang – Page Store. 99
3.2.Kho lưu trữ RDF – RDF Store. 99
3.3.Ống thi hành – Rendering Pipeline. 100
3.4.Chuyển đổi – Transformation, Servlet. 100
4.Giao diện. 100
4.1.Perspective. 100
4.1.1.Bài viết - Article. 101
4.1.2.Thảo luận – Discuss. 101
4.1.3.Siêu dữ liệu – Metadata. 102
4.1.4.Ngữ cảnh – Context102
4.1.5.Thay đổi – Edit102
4.1.6.Chú thích. 103
4.1.7.Lịch sử. 103
4.2.Portlet. 104
4.2.1.Người dung – User. 104
4.2.2.Điều hướng. 104
4.2.3.Thay đổi104
4.2.4.Tìm kiếm105
4.2.5.Các công cụ. 105
4.2.6.Lịch sử. 105
4.2.7.Bảng nội dung. 105
4.2.8.Hướng dẫn – Tutorial106
4.2.9.Tham chiếu – Reference. 106
4.2.10.Xã hội hóa - Socialise. 106
II.Dùng Ikewiki để xây dựng chủ đề về thành phố. 106
1.Nhập một ontology. 106
2.Tạo bài viết. 109
2.Chú thích cho một trang. 111
3.Truy vấn trong IkeWiki113
Tài liệu tham khảo :115
115 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2961 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Tìm hiểu về semantic wiki và các cài đặt, sử dụng công cụ để tạo một wiki với chủ đề tự chọn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ắng được sử dụng để khớp với biên swhom từ file FOAF của Alice không giống với nút trắng trong tài liệu tiểu sử .
PREFIX data:
PREFIX foaf:
PREFIX rdfs:
SELECT ?mbox ?nick ?ppd
FROM NAMED
FROM NAMED
WHERE
{
GRAPH data:aliceFoaf
{
?alice foaf:mbox ;
foaf:knows ?whom .
?whom foaf:mbox ?mbox ;
rdfs:seeAlso ?ppd .
?ppd a foaf:PersonalProfileDocument .
} .
GRAPH ?ppd
{
?w foaf:mbox ?mbox ;
foaf:nick ?nick
}
}
mbox
nick
ppd
"Robert"
5.8.3.4.Đồ thị mặc định và đồ thị có tên :
Các khuôn mẫu truy vấn có thể bao gồm trong đồ thị mặc định và đồ thị có tên. Trong ví dụ này, một bộ trích rút thông tin đọc tài nguyên từ Web trên hai cơ hội khác nhau. Mỗi lần một đồ thị được đọc vào bộ trích rút thông tin, nó được cho một IRI bởi hệ thống cục bộ. Các đồ thị gần như giống nhau nhưng địa chỉ email cho Bob đã bị thay đổi.
Trong ví dụ này, đồ thị mặc định được sử dụng để ghi lại thông tin nguồn gốc và dữ liệu RDF đang đọc hiện tại được giữ trong hai đồ thị riêng biệt, mỗi cái được cho một IRI riêng biệt bởi hệ thống. RDF Dataset bao gồm hai đồ thị có tên và thông tin về chúng.
# Default graph
@prefix dc: .
@prefix g: .
@prefix xsd: .
g:graph1 dc:publisher "Bob" .
g:graph1 dc:date "2004-12-06"^^xsd:date .
g:graph2 dc:publisher "Bob" .
g:graph2 dc:date "2005-01-10"^^xsd:date .
# Graph: locally allocated IRI: tag:example.org,2005-06-06:graph1
@prefix foaf: .
_:a foaf:name "Alice" .
_:a foaf:mbox .
_:b foaf:name "Bob" .
_:b foaf:mbox .
# Graph: locally allocated IRI: tag:example.org,2005-06-06:graph2
@prefix foaf: .
_:a foaf:name "Alice" .
_:a foaf:mbox .
_:b foaf:name "Bob" .
_:b foaf:mbox .
Truy vấn này tìm ra các địa chỉ email, chi tết tên của cá nhân và ngày thông tin được tìm thấy :
PREFIX foaf:
PREFIX dc:
SELECT ?name ?mbox ?date
WHERE
{ ?g dc:publisher ?name ;
dc:date ?date .
GRAPH ?g
{ ?person foaf:name ?name ; foaf:mbox ?mbox }
}
Kết quả chỉ ra rằng địa chỉ của Bob đã thay đổi :
name
mbox
date
"Bob"
"2004-12-06"^^xsd:date
"Bob"
"2005-01-10"^^xsd:date
IRI cho kiểu dữ liệu ngày tháng đã được rút gọn trong kết quả để được sáng sủa.
5.9.Chuỗi giải pháp và các điều chỉnh giải pháp
Các khuôn mẫu truy vấn tạo ra một tập các giải pháp không có thứ tự, mỗi giải pháp là một hàm thành phần từ các biến đến RDF term. Các giải pháp này sau đó được đối xử như là một chuỗi (một chuỗi giải pháp), khởi tạo không có thứ tự nào cả. Sau đó là bất kỳ điều chỉnh giải pháp nào được áp dụng để tạo ra một chuỗi khác. Cuỗi cùng, chuỗi này được sử dụng để tạo ra một kết quả cho dạng truy vấn SPARQL.
Một điều chỉnh chuỗi giải pháp là một trong các :
-Điều chỉnh thứ tự : Đặt các giải pháp có thứ tự.
-Điều chỉnh Projection : chọn các biến đã biết.
-Điều chỉnh khác biệt : chắc chắn các giải pháp trong chuỗi là duy nhất.
-Điều chỉnh giảm : Cho phép loại trừ một số giải pháp không duy nhất.
-Điều chỉnh Offset: Điều khiển nơi mà các giải pháp bắt đầu từ trong toàn bộ giải pháp.
-Điều chỉnh giới hạn : Giới hạn số giải pháp.
Các điều chỉnh được áp dụng theo thứ tự cho bởi danh sách trên.
Quy tắc ngữ pháp :
[5]
SelectQuery
::=
'SELECT' ( 'DISTINCT' | 'REDUCED' )? ( Var+ | '*' ) DatasetClause* WhereClause SolutionModifier
[14]
SolutionModifier
::=
OrderClause? LimitOffsetClauses?
[15]
LimitOffsetClauses
::=
( LimitClause OffsetClause? | OffsetClause LimitClause? )
[16]
OrderClause
::=
'ORDER' 'BY' OrderCondition+
5.9.1.ORDER BY
Mệnh đề ORDER BY thực hiện phép sắp xếp chuỗi giải pháp. Tiếp theo sau mệnh đề ORDER BY là một chuỗi các so sánh thứ tự, bao gồm một biểu thức và một điều chỉnh thứ tự tùy chọn (là ASC() hoặc DESC()).
PREFIX foaf:
SELECT ?name
WHERE { ?x foaf:name ?name }
ORDER BY ?name
PREFIX :
PREFIX foaf:
PREFIX xsd:
SELECT ?name
WHERE { ?x foaf:name ?name ; :empId ?emp }
ORDER BY DESC(?emp)
PREFIX foaf:
SELECT ?name
WHERE { ?x foaf:name ?name ; :empId ?emp }
ORDER BY ?name DESC(?emp)
Toán tử “<” định nghĩa mối quan hệ sắp xếp của các cặp thuộc numerics, simple literals, xsd:strings, xsd:booleans và xsd:dateTimes. Các cặp của IRI được sắp xếp bằng các so sánh chúng như là các literal đơn giản.
SPARQL cũng cố định một sắp xếp giữa một số kiểu RDF Term mà không thể sắp xếp theo cách nào khác:
-Không có giá trị nào được gán cho biến hoặc biểu thức trong giải pháp này.
-Các nút trắng.
-Các IRI.
-Các RDF Literal.
SPARQL không định nghĩa toàn bộ sắp xếp cho các RDF Term có thể. Sau đây là một số ví dụ về các cặp term ứng với phép sắp xếp không được định nghĩa :
-“a” và “a”@en_gb : Một literal đơn giản và một literal với một thẻ ngôn ngữ.
-“a”@en_gb và “b”@en_gb : Hai literal với thẻ ngôn ngữ.
-“a” và “a”^^xsd:string : Một literal đơn giản và một xsd:string.
-“a” và “1”xsd:integer : Một literal đơn giản và một literal với một kiểu dữ liệu được hỗ trợ.
-“1”^^my:integer và “2”^^my:integer : hai kiểu dữ liệu không được hỗ trợ.
-“1”^^xsd:integer và “2”^^my:integer : kiểu dữ liệu được hỗ trợ và kiểu dữ liệu không được hỗ trợ.
Sau đây là danh sách các biến kết xuất dạng từ nhỏ đến lớn :
RDF Term
Nguyên nhân
Không kết xuất các kết quả sắp xếp sớm nhất.
_:z
Các nút trắng theo kết xuất.
_:a
Không có liên hệ sắp xếp giữa các nút trắng
Các IRI theo các nút trắng.
Ký tự ở vị trí 23, “К”, có giá trị unicode 0x41A, lớn hơn giá trị 0x4C (“L”)
Ký tự ở vị trí 23, “漢”, có giá trị unicode 0x6F22 , lớn hơn giá trị 0x41A (“К”)
""
Các literal đơn giản theo các IRI
""^^xsd:string
Xsd:string theo các literal đơn giản.
Sử dụng ORDER BY trên một chuỗi giải pháp cho một truy vấn CONSTRUCT hoặc DESCRIBE không ảnh hưởng trực tiếp do chỉ có SELECT trả về một chuỗi các kết quả. Đực sử dụng kết hợp LIMIT và OFFSET, ORDER BY có thể được sử dụng để trả vè các kết quả được tạo ra từ một slice khác của chuỗi giải pháp. Một truy vấn ASK không bao gồm ORDER BY, LITMIT hoặc OFFSET.
Quy tắc ngữ pháp :
[16]
OrderClause
::=
'ORDER' 'BY' OrderCondition+
[17]
OrderCondition
::=
( ( 'ASC' | 'DESC' ) BrackettedExpression )| ( Constraint | Var )
[18]
LimitClause
::=
'LIMIT' INTEGER
[19]
OffsetClause
::=
'OFFSET' INTEGER
5.9.2.Phép chiếu
Chuỗi giải pháp có thể được chuyển thành một chuỗi chỉ gồm một tập con của các biến. Với mỗi giải pháp trong chuỗi, một giải pháp mới được hình thành sử dụng một phép chọn cho trước các biến sử dụng dạng truy vấn SELECT.
Ví dụ sau chỉ ra một truy vấn chỉ lấy tên của những người được miêu tả trong một đồ thị RDF sử dụng thuộc tính FOAF :
@prefix foaf: .
_:a foaf:name "Alice" .
_:a foaf:mbox .
_:b foaf:name "Bob" .
_:b foaf:mbox .
PREFIX foaf:
SELECT ?name
WHERE
{ ?x foaf:name ?name }
name
"Bob"
"Alice"
5.9.3.Các giải pháp trùng lặp
Một chuỗi giải pháp không có điều chỉnh truy vấn DISTINCT hoặc REDUCED sẽ có các giải pháp trùng lặp
@prefix foaf: .
_:x foaf:name "Alice" .
_:x foaf:mbox .
_:y foaf:name "Alice" .
_:y foaf:mbox .
_:z foaf:name "Alice" .
_:z foaf:mbox .
PREFIX foaf:
SELECT ?name WHERE { ?x foaf:name ?name }
name
"Alice"
"Alice"
"Alice"
Các điều chỉnh DISTINCT và REDUCED ảnh hưởng bất kể sự trùng lặp có nằm trong kết quả truy vấn hay không.
5.9.3.1.DISTINCT
Điều chỉnh giải pháp DISTINCT loại trừ các giải pháp trùng lặp. Đặc biệt, mỗi giải pháp kết xuất các biến giống nhau đến cùng RDF Term khi giải pháp khác bị loại trừ khỏi tập giải pháp.
PREFIX foaf:
SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }
name
"Alice"
Chú ý rằng, với mỗi sắp xếp của các điều chỉnh chuỗi giải pháp, các trùng lặp bị loại trừ trước khi phép giới hạn LIMIT hoặc OFFSET được áp dụng.
5.9.3.2.REDUCED
Trong khi điều chỉnh DISTINCT chắc chắn ràng các giải pháp trùng lặp bị loại trừ ra khỏi tập giải pháp, REDUCED đơn giản là cho phép chúng được loại trừ. Số lượng của bất kỳ tập các biến nào kết xuất trong một giải pháp REDUCED là ít nhất một hoặc không nhiều hơn số lượng tập giải pháp mà không có điều chỉnh DISTINCT hoặc REDUCED. Ví dụ, sử dụng dữ liệu ở trên, truy vấn :
PREFIX foaf:
SELECT REDUCED ?name WHERE { ?x foaf:name ?name }
Có thể có một , hai hoặc ba giải pháp :
name
"Alice"
"Alice"
5.9.4.OFFSET
OFFSET làm cho các giải pháp được tạo ra bắt đầu sau một số các giải pháp. Một OFFSET bằng 0 sẽ không gây ra ảnh hưởng nào.
PREFIX foaf:
SELECT ?name
WHERE { ?x foaf:name ?name }
ORDER BY ?name
LIMIT 5
OFFSET 10
5.9.5.LIMIT
Mệnh đề LIMIT xác định số lượng các giải pháp trả về. Nếu số lượng giải pháp thực tế lớn hơn giới hạn, thì sẽ có nhiều nhất là số giới hạn các giải pháp trả về.
PREFIX foaf:
SELECT ?name
WHERE { ?x foaf:name ?name }
LIMIT 20
Một giới hạn là 0 sẽ không có kết quả trả về, giới hạn không được là số âm.
5.10.Dạng truy vấn
SPARQL có 4 dạng truy vấn. Các dạng truy vấn này sử dụng các giải pháp từ việc khớp khuôn mẫu để hình thành nên tập kết quả hoặc đồ thị RDF. Các dạng truy vấn là :
-SELECT : Trả về tất cả, hoặc tập con của, các biến kết xuất trong một phép khớp khuôn mẫu truy vấn.
-CONSTRUCT : Trả về một đồ thị RDF được cấu tạo bởi các biến thay thế tỏng một tập các khuôn triple.
-ASK : Trả về một giá trị logic chỉ ra xem một truy vấn có khớp hay không.
-DESCRIBE : Trả về một đồ thị RDF miêu tả các tài nguyên tìm thấy.
5.10.1.SELECT
Dạng SELECT của các kết quả trực tiếp trả về các biến và kết xuất của chúng. Cú pháp SELECT * là một các viết ngắn gọn cho việc chọn tất cả các biến trong một truy vấn.
@prefix foaf: .
_:a foaf:name "Alice" .
_:a foaf:knows _:b .
_:a foaf:knows _:c .
_:b foaf:name "Bob" .
_:c foaf:name "Clare" .
_:c foaf:nick "CT" .
PREFIX foaf:
SELECT ?nameX ?nameY ?nickY
WHERE
{ ?x foaf:knows ?y ;
foaf:name ?nameX .
?y foaf:name ?nameY .
OPTIONAL { ?y foaf:nick ?nickY }
}
nameX
nameY
nickY
"Alice"
"Bob"
"Alice"
"Clare"
"CT"
Tập kết quả có thể được truy cập bởi một hàm API cục bộ nhưng cũng có thể được phân tích thành XML hoặc đồ thị RDF :
Alice
Bob
Alice
Clare
CT
Quy tắc ngữ pháp :
[5]
SelectQuery
::=
'SELECT' ( 'DISTINCT' | 'REDUCED' )? ( Var+ | '*' )DatasetClause* WhereClause SolutionModifier
5.10.2.CONSTRUCT
Dạng truy vấn CONSTRUCT trả về một đồ thị RDF đơn được chỉ ra bởi một khuôn đồ thị. Kết quả là một đồ thị RDF được hình thành bằng cách lấy mỗi giải pháp truy vấn trong chuỗi giải pháp, thay thế các biến trong khuôn đồ thị và kết hợp các triple vào một đồ thị RDF đơn bằng phép hợp.
Nếu bất kỳ sự thuyết minh nào tạo ra một triple chứa một biến không được kết xuất hoặc một cấu trúc RDF sai, giống như một literal trong một vị trí chủ thể hoặc thuộc tính, triple đó không được bao gồm trong đồ thị RDF đưa ra. Khuôn đồ thị có thể chứa các triple không có biến, và chúng cũng hiện ra trong đồ thị RDF trả về bởi dạng truy vấn CONSTRUCT.
@prefix foaf: .
_:a foaf:name "Alice" .
_:a foaf:mbox .
PREFIX foaf:
PREFIX vcard:
CONSTRUCT { vcard:FN ?name }
WHERE { ?x foaf:name ?name }
Tạo ra các thuộc tính vcard từ thông tin FOAF.
@prefix vcard: .
vcard:FN "Alice" .
5.10.2.1.Các khuôn mẫu với các nút trắng
Một khuôn mẫu có thể tạo ra một đồ thị RDF chứa các nút trắng. Các nhãn nút trắng được đưa vào khuôn mẫu cho mỗi giải pháp. Nếu nhãn giống nhau, sẽ có một nút trắng được tạo ra cho mỗi giải pháp truy vấn, nhưng sẽ có các nút trắng khác nhau cho các triple được tạo ra bởi các giải pháp truy vấn khác nhau.
@prefix foaf: .
_:a foaf:givenname "Alice" .
_:a foaf:family_name "Hacker" .
_:b foaf:firstname "Bob" .
_:b foaf:surname "Hacker" .
PREFIX foaf:
PREFIX vcard:
CONSTRUCT { ?x vcard:N _:v .
_:v vcard:givenName ?gname .
_:v vcard:familyName ?fname }
WHERE
{
{ ?x foaf:firstname ?gname } UNION { ?x foaf:givenname ?gname } .
{ ?x foaf:surname ?fname } UNION { ?x foaf:family_name ?fname } .
}
Tạo ra các thuộc tính vcard tương ứng với các thông tin FOAF:
@prefix vcard: .
_:v1 vcard:N _:x .
_:x vcard:givenName "Alice" .
_:x vcard:familyName "Hacker" .
_:v2 vcard:N _:z .
_:z vcard:givenName "Bob" .
_:z vcard:familyName "Hacker" .
Sự sử dụng của biến x trong khuôn mẫu trong ví dụ này sẽ được kết xuất vào các nút trắng với các nhãn _:a và _:b trong dữ liệu, làm cho các nút trắng có nhãn khác nhau trong đồ thị kết quả RDF.
5.10.2.2.Truy cập các đồ thị trong RDF Dataset
Sử dụng CONSTRUCT, có thể lấy các thành phần hoặc hầu hết các đồ thị từ tập dữ liệu RDF đích. Ví dụ sau trả về đồ thị với nhãn IRI nếu không nó sẽ trả về một đồ thị trống.
CONSTRUCT { ?s ?p ?o } WHERE { GRAPH { ?s ?p ?o } . }
Sự truy cập và đồ thị có thể thêm điều kiện trên thông tin. Ví dụ, nếu đồ thị mặc định chứa metadata về các đồ thị có tên trong tập dữ liệu thì một truy vấn giống như truy vấn sau sẽ lấy một đồ thị dựa trên thông tin về đồ thị có tên:
PREFIX dc:
PREFIX app:
CONSTRUCT { ?s ?p ?o } WHERE
{
GRAPH ?g { ?s ?p ?o } .
{ ?g dc:publisher } .
{ ?g dc:date ?date } .
FILTER ( app:customDate(?date) > "2005-02-28T00:00:00Z"^^xsd:dateTime ) .
}
Trong đó app:customDate chỉ ra một hàm mở rộng để đưa dạng dữ liệu vào một RDF Term xsd:dateTime
Grammar rule:
[6]
ConstructQuery
::=
'CONSTRUCT' ConstructTemplateDatasetClause* WhereClause SolutionModifier
5.10.2.3.Các điều chỉnh giải pháp và CONSTRUCT
Điều chỉnh giải pháp của một truy vấn ảnh hưởng đến các kết quả của một truy vấn CONSTRUCT. Trong truy vấn này, đồ thị ra từ khuôn mẫu CONSTRUCT được hình thành chỉ từ hai giải bằng việc khớp đồ thị. Truy vấn đưa ra một đồ thị với tên của những người với số lương truy cập. Các triple trong đồ thị RDF không được sắp xếp.
@prefix foaf: .
@prefix site: .
_:a foaf:name "Alice" .
_:a site:hits 2349 .
_:b foaf:name "Bob" .
_:b site:hits 105 .
_:c foaf:name "Eve" .
_:c site:hits 181 .
PREFIX foaf:
PREFIX site:
CONSTRUCT { [] foaf:name ?name }
WHERE
{ [] foaf:name ?name ;
site:hits ?hits .
}
ORDER BY desc(?hits)
LIMIT 2
@prefix foaf: .
_:x foaf:name "Alice" .
_:y foaf:name "Eve" .
5.10.3.ASK
Các ứng dụng có thể sử dụng dạng ASK để kiểm tra xem một khuôn mẫu truy vấn có một giải pháp hay không. Không thông tin nào được trả lại về các giải pháp của truy vấn, chỉ là giải pháp có tồn tại hay không thôi:
@prefix foaf: .
_:a foaf:name "Alice" .
_:a foaf:homepage .
_:b foaf:name "Bob" .
_:b foaf:mbox .
PREFIX foaf:
ASK { ?x foaf:name "Alice" }
yes
Các kết quả truy vấn của SPARQL định dạng XML này là :
true
Trên cùng dữ liệu, truy vấn sau trả về là không khớp do mbox của Alice không được đề cập.
PREFIX foaf:
ASK { ?x foaf:name "Alice" ;
foaf:mbox }
no
Grammar rule:
[8]
AskQuery
::=
'ASK' DatasetClause* WhereClause
5.10.4.DESCRIBE (nâng cao)
Dạng DESCRIBE trả về một đồ thị RDF kết quả đơn chứa dữ liệu RDF về các tài nguyên. Dữ liệu này không được miêu tả trước bởi một truy vấn SPARQL, trong khi truy vấn cần biết cấu trúc của RDF trong nguồn dữ liệu, nhưng thay vào đó, mà được xác định bởi bộ xử lý truy vấn SPARQL. Khuôn mẫu truy vấn được sử dụng để tạo ra một tập kết quả. Dạng DESCRIBE lấy mỗi nguồn tài nguyên được chỉ ra trong một giải pháp, cùng với bất kỳ tài nguyên nào được đặt tên bởi IRI và cấu trúc một đồ thị RDF đơn bằng cách lấy một miêu tả có thể đến từ bất kỳ thông tin nào có giá trị bao gồm tập dữ liệu RDF đích. Cú pháp DESCRIBE * là một các viết tắt miêu tả tất cả các biến trong một truy vấn.
5.10.4.1.Các IRI chi tiết
Mệnh đề DESCRBE chính nó có thể mang các IRI để xác định các tài nguyên. Truy vấn DESCRBE đơn giản nhất chỉ là một IRI trong mệnh đề DESCRBE:
DESCRIBE
10.4.2.Xác định các tài nguyên
Các tài nguyên được miêu tả cũng có thể được lấy từ việc kết xuất từ đến một biến truy vấn trong một tập kết quả. Điều này cho phép miêu tả các tài nguyên xem chúng được xác định bởi IRI ha nút trắng trong tập dữ liệu.
PREFIX foaf:
DESCRIBE ?x
WHERE { ?x foaf:mbox }
Thuộc tính foaf:mbox được xác định như là một thuộc tính chức năng ngược (inverse function property) trong từ vựng FOAF. Nếu được đối xử như trong truy vấn này sẽ trả về thông tin về nhiều nhất một người. Tuy nhiên nếu khuôn mẫu truy vấn có nhiều giải pháp, dữ liệu RDF cho mỗi giải pháp là phép hợp của tất cả các miêu tả đồ thị RDF.
PREFIX foaf:
DESCRIBE ?x
WHERE { ?x foaf:name "Alice" }
Nhiều hơn một IRI hoặc biến có thể được đưa ra :
PREFIX foaf:
DESCRIBE ?x ?y
WHERE {?x foaf:knows ?y}
10.4.3.Các miêu tả của các tài nguyên :
RDF được trả về được miêu tả bởi người xuất bản thông tin. Nó là thông tin hữu ích dịch vụ có về một tài nguyên. Nó có thể bao gồm thông tin về các tài nguyên khác, ví dụ, dữ liệu RDF cho một cuốn sách có thể bao gồm chi tiết về tác giả :
Một truy vấn như :
PREFIX ent:
DESCRIBE ?x WHERE { ?x ent:employeeId "1234" }
Sẽ trả về một miêu tả về người làm hoặc một số chi tiết có ích khác :
@prefix foaf: .
@prefix vcard: .
@prefix exOrg: .
@prefix rdf: .
@prefix owl:
_:a exOrg:employeeId "1234" ;
foaf:mbox_sha1sum "ABCD1234" ;
vcard:N
[ vcard:Family "Smith" ;
vcard:Given "John" ] .
foaf:mbox_sha1sum rdf:type owl:InverseFunctionalProperty .
Grammar rule:
[7]
DescribeQuery
::=
'DESCRIBE' ( VarOrIRIref+ | '*' )DatasetClause* WhereClause? SolutionModifier
5.11.Các giá trị kiểm tra
FILTER của SPARQL giới hạn các giải pháp của phép khớp khuôn mẫu đồ thị phụ thuộc vào biểu thức cho sẵn. Đặc biệt, FILTER loại trừ bất kỳ giải pháp nào, khi được thay thế và biểu thức, hoặc kết quả là một giá trị boolean false hoặc tạo ra một lỗi.
Các RDF literal có thể có một kiểu dữ liệu IRI:
@prefix a: .
@prefix dc: .
_:a a:annotates .
_:a dc:date "2004-12-31T19:00:00-05:00" .
_:b a:annotates .
_:b dc:date "2004-12-31T19:01:00-05:00"^^ .
Đối tượng của triple thứ nhất dc:date không có thông tin về kiểu, triple thứ hai có kiểu xsd:dateTime.
Các biểu thức SPARQL được cấu trúc dựa vào ngữ pháp và cung cấp truy cập tới các hàm (được đặt tên bởi IRI) và các hàm điều khiển (liên quan đến các từ khóa và ký hiệu trong ngữ pháp SPARQL). Các toán tử SPARQL có thể được sử dụng để so sánh các giá trị của các literal :
PREFIX a:
PREFIX dc:
PREFIX xsd:
SELECT ?annot
WHERE { ?annot a:annotates .
?annot dc:date ?date .
FILTER ( ?date > "2005-01-01T00:00:00Z"^^xsd:dateTime ) }
5.11.1.Các kiểu dữ liệu toán hạng
Các hàm SPARQL và các toán tử điều khiển trên các RDF Term và các biến SPARQL. Một tập con các hàm này và các toán tử được lấy ra tử Xquery 1.0 và các hàm và toán tử Xpath 2.0 và các đối số và kiểu trả về thuộc kiểu XML Schema.
SPARQL có thêm các toán tử điều khiển trên các tập con của RDF Term cho trước. Khi đề cập đến một kiểu, các dạng sau bao hàm đến một typed literal tương ứng với kiểu dữ liệu trong XML Schema :
xsd:integer
xsd:decimal
xsd:float
xsd:double
xsd:string
xsd:boolean
xsd:dateTime
Các thuật ngữ sau chỉ thêm các kiểu được sử dụng trong các kiểm tra giá trị SPARQL :
numeric bao hàm typed literals với các kiểu xsd:integer, xsd:decimal, xsd:float, và xsd:double.
Literal đơn giản bao hàm plain literal không có thẻ ngôn ngữ.
Thuật ngữ RDF bao hàm kiểu IRI, literal, và nút trắng.
Biến bao hàm một biến SPARQL.
Các kiểu sau được dẫn xuất từ kiểu numeric và các tham số hợp lệ của các hàm và toán tử sử dụng các tham số numeric :
xsd:nonPositiveInteger
xsd:negativeInteger
xsd:long
xsd:int
xsd:short
xsd:byte
xsd:nonNegativeInteger
xsd:unsignedLong
xsd:unsignedInt
xsd:unsignedShort
xsd:unsignedByte
xsd:positiveInteger
5.11.2.Tính toán lọc
5.11.2.1.Sự dẫn ra
SPARQL định nghĩa một cú pháp cho việc dẫn ra các hàm và các toán tử trên danh sách các tham số. Chúng được dẫn ra như sau :
-Các biểu thức tham số được tính toánh, tạo ra các giá trị tham số. Thứ tự của tính toán tham số không được định nghĩa.
-Các tham số số học được sử dụng khi cần thiết để phù hợp với kiểu mong muốn cho hàm hoặc toán tử đó.
-Hàm hoặc toán tử được dẫn ra trên các giá trị tham số.
Nếu bất kỳ bước nào bị lỗi, sự dẫn ra sinh một lỗi.
5.11.2.2.Giá trị boolean ảnh hưởng – Effective Boolean Value EBV
EBV được sử dụng để tính toán các tham số của các hàm logic and, or, not khi tính toán giá trị của biểu thức FILTER.
Các luật sau phản ánh các luật của fn:boolean áp dụng trên các kiểu hiện tại trong các truy vấn SPARQL :
-EBV của bất kỳ literal nào có kiểu là xsd:boolean hoặc numeric là false nếu dạng từ vựng không hợp lệ cho kiểu dữ liệu đó.
-Nếu tham số là một typed literal với kiểu dữ liệu xsd:boolean, EBV là giá trị của tham số đó.
-Nếu tham số là một plain literal hoặc một typed literal với kiểu dữ liệu xsd:string, EBV là false nếu như giá trị toán hạng có độ dài là 0, ngược lại là true.
-Nếu tham số là kiểu numeric hoặc type literal với một kiểu dẫn xuất từ kiểu numeric, EBV là false nếu giá trị toán hạng là NaN hoặc là là số bằng với 0, ngược lại EBV là true.
-Với mọi tham số khác, bao gồm các tham số không được kết xuất, sẽ tạo ra lỗi.
5.11.3.Ánh xạ toán tử
Ngữ pháp SPARQL xác định tập các toán tử (ví dụ &&, isIRI) được sử dụng để tạo nên các ràng buộc. Các toán tử một toán hạng :
Operator
Type(A)
Function
Result type
XQuery Unary Operators
! A
xsd:boolean (EBV)
fn:not(A)
xsd:boolean
+ A
numeric
op:numeric-unary-plus(A)
numeric
- A
numeric
op:numeric-unary-minus(A)
Numeric
SPARQL Tests, defined in section 11.4
BOUND(A)
variable
bound(A)
xsd:boolean
isIRI(A)isURI(A)
RDF term
isIRI(A)
xsd:boolean
isBLANK(A)
RDF term
isBlank(A)
xsd:boolean
isLITERAL(A)
RDF term
isLiteral(A)
xsd:boolean
SPARQL Accessors, defined in section 11.4
STR(A)
literal
str(A)
simple literal
STR(A)
IRI
str(A)
simple literal
LANG(A)
literal
lang(A)
simple literal
DATATYPE(A)
typed literal
datatype(A)
IRI
DATATYPE(A)
simple literal
datatype(A)
IRI
Các toán tử nhị phân SPARQL:
Operator
Type(A)
Type(B)
Function
Result type
Logical Connectives, defined in section 11.4
A || B
xsd:boolean (EBV)
xsd:boolean (EBV)
logical-or(A, B)
xsd:boolean
A && B
xsd:boolean (EBV)
xsd:boolean (EBV)
(EBV)logical-and(A, B)
xsd:boolean
XPath Tests
A = B
numeric
numeric
op:numeric-equal(A, B)
xsd:boolean
A = B
simple literal
simple literal
op:numeric-equal(fn:compare(A, B), 0)
xsd:boolean
A = B
xsd:string
xsd:string
op:numeric-equal(fn:compare(STR(A), STR(B)), 0)
xsd:boolean
A = B
xsd:boolean
xsd:boolean
op:boolean-equal(A, B)
xsd:boolean
A = B
xsd:dateTime
xsd:dateTime
op:dateTime-equal(A, B)
A != B
numeric
numeric
fn:not(op:numeric-equal(A, B))
xsd:boolean
A != B
simple literal
simple literal
fn:not(op:numeric-equal(fn:compare(A, B), 0))
xsd:boolean
A != B
xsd:string
xsd:string
fn:not(op:numeric-equal(fn:compare(STR(A), STR(B)), 0))
xsd:boolean
A != B
xsd:boolean
xsd:boolean
fn:not(op:boolean-equal(A, B))
xsd:boolean
A != B
xsd:dateTime
xsd:dateTime
fn:not(op:dateTime-equal(A, B))
xsd:boolean
A < B
numeric
numeric
op:numeric-less-than(A, B)
xsd:boolean
A < B
simple literal
simple literal
op:numeric-equal(fn:compare(A, B), -1)
xsd:boolean
A < B
xsd:string
xsd:string
op:numeric-equal(fn:compare(STR(A), STR(B)), -1)
xsd:boolean
A < B
xsd:boolean
xsd:boolean
op:boolean-less-than(A, B)
xsd:boolean
A < B
xsd:dateTime
xsd:dateTime
op:dateTime-less-than(A, B)
xsd:boolean
A > B
numeric
numeric
op:numeric-greater-than(A, B)
xsd:boolean
A > B
simple literal
simple literal
op:numeric-equal(fn:compare(A, B), 1)
xsd:boolean
A > B
xsd:string
xsd:string
op:numeric-equal(fn:compare(STR(A), STR(B)), 1)
xsd:boolean
A > B
xsd:boolean
xsd:boolean
op:boolean-greater-than(A, B)
xsd:boolean
A > B
xsd:dateTime
xsd:dateTime
op:dateTime-greater-than(A, B)
xsd:boolean
A <= B
numeric
numeric
logical-or(op:numeric-less-than(A, B), op:numeric-equal(A, B))
xsd:boolean
A <= B
simple literal
simple literal
fn:not(op:numeric-equal(fn:compare(A, B), 1))
xsd:boolean
A <= B
xsd:string
xsd:string
fn:not(op:numeric-equal(fn:compare(STR(A), STR(B)), 1))
xsd:boolean
A <= B
xsd:boolean
xsd:boolean
fn:not(op:boolean-greater-than(A, B))
xsd:boolean
A <= B
xsd:dateTime
xsd:dateTime
fn:not(op:dateTime-greater-than(A, B))
xsd:boolean
A >= B
numeric
numeric
logical-or(op:numeric-greater-than(A, B), op:numeric-equal(A, B))
xsd:boolean
A >= B
simple literal
simple literal
fn:not(op:numeric-equal(fn:compare(A, B), -1))
xsd:boolean
A >= B
xsd:string
xsd:string
fn:not(op:numeric-equal(fn:compare(STR(A), STR(B)), -1))
xsd:boolean
A >= B
xsd:boolean
xsd:boolean
fn:not(op:boolean-less-than(A, B))
xsd:boolean
A >= B
xsd:dateTime
xsd:dateTime
fn:not(op:dateTime-less-than(A, B))
xsd:boolean
XPath Arithmetic
A * B
numeric
numeric
op:numeric-multiply(A, B)
numeric
A / B
numeric
numeric
op:numeric-divide(A, B)
numeric
A + B
numeric
numeric
op:numeric-add(A, B)
numeric
A - B
numeric
numeric
op:numeric-subtract(A, B)
numeric
SPARQL Tests, defined in section 11.4
A = B
RDF term
RDF term
RDFterm-equal(A, B)
xsd:boolean
A != B
RDF term
RDF term
fn:not(RDFterm-equal(A, B))
xsd:boolean
sameTERM(A)
RDF term
RDF term
sameTerm(A, B)
xsd:boolean
langMATCHES(A, B)
simple literal
simple literal
langMatches(A, B)
xsd:boolean
REGEX(STRING, PATTERN)
simple literal
simple literal
fn:matches(STRING, PATTERN)
xsd:boolean
Operator
Type(A)
Type(B)
Type(C)
Function
Result type
SPARQL Tests, defined in section 11.4
REGEX(STRING, PATTERN, FLAGS)
simple literal
simple literal
simple literal
fn:matches(STRING, PATTERN, FLAGS)
xsd:boolean
5.11.4.Các định nghĩa các toán tử
5.11.4.1.bound
xsd:boolean bound (variable var)
Trả về true nếu var được kết xuất đến một giá trị, ngược lại trả về false. Các biến với giá trị NaN hoặc INF cũng được coi là bound.
Dữ liệu
@prefix foaf: .
@prefix dc: .
@prefix xsd: .
_:a foaf:givenName "Alice".
_:b foaf:givenName "Bob" .
_:b dc:date "2005-04-04T04:04:04Z"^^xsd:dateTime .
PREFIX foaf:
PREFIX dc:
PREFIX xsd:
SELECT ?name
WHERE { ?x foaf:givenName ?givenName .
OPTIONAL { ?x dc:date ?date } .
FILTER ( bound(?date) ) }
Kết quả truy vấn :
givenName
"Bob"
Truy vấn này lấy những người có name nhưng không miêu tả date :
PREFIX foaf:
PREFIX dc:
SELECT ?name
WHERE { ?x foaf:givenName ?name .
OPTIONAL { ?x dc:date ?date } .
FILTER (!bound(?date)) }
Kết quả truy vấn :
name
"Alice"
Do dc:date của Bob đã được biết, “Bob” không phải là một giải pháp cho truy vấn.
5.11.4.2.isIRI
xsd:boolean isIRI (RDF term term)
xsd:boolean isURI (RDF term term)
Trả về true nếu term là một IRI, ngược lại trả về false. ISURI là một cách nói thay thế cho toán tử ISIRI
@prefix foaf: .
_:a foaf:name "Alice".
_:a foaf:mbox .
_:b foaf:name "Bob" .
_:b foaf:mbox "bob@work.example" .
Truy vấn khớp những người có name và mobx là IRI:
PREFIX foaf:
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name ;
foaf:mbox ?mbox .
FILTER isIRI(?mbox) }
Kết quả truy vấn
name
mbox
"Alice"
5.11.4.3.isBlank
xsd:boolean isBlank (RDF term term)
Trả về true nếu term là một nút trắng. Trả về false nếu ngược lại.
@prefix a: .
@prefix dc: .
@prefix foaf: .
_:a a:annotates .
_:a dc:creator "Alice B. Toeclips" .
_:b a:annotates .
_:b dc:creator _:c .
_:c foaf:given "Bob".
_:c foaf:family "Smith".
Truy vấn sau lấy những người với dc:creator sử dụng thuộc tính từ FOAF để miêu tả tên:
PREFIX a:
PREFIX dc:
PREFIX foaf:
SELECT ?given ?family
WHERE { ?annot a:annotates .
?annot dc:creator ?c .
OPTIONAL { ?c foaf:given ?given ; foaf:family ?family } .
FILTER isBlank(?c)
}
5.11.4.4.isLiteral
xsd:boolean isLiteral (RDF term term)
Trả về true nếu term là literal ngược lại trả về false.
@prefix foaf: .
_:a foaf:name "Alice".
_:a foaf:mbox .
_:b foaf:name "Bob" .
_:b foaf:mbox "bob@work.example" .
Truy vấn giống với isIRI ngoại trừ khớp những người có name và một mbox là literal. Có có thể được sử dụng để tìm kiếm dữ liệu bị lỗi (foaf:mbox cỉ có một IRI là đối tượng của nó)
PREFIX foaf:
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name ;
foaf:mbox ?mbox .
FILTER isLiteral(?mbox) }
Kết quả truy vấn :
name
mbox
"Bob"
"bob@work.example"
5.11.4.5.str
simple literal str (literal ltrl)
simple literal str (IRI rsrc)
Trả về lexical form của ltrl (một literal), trả về thể hiện của rsrc (một IRI). Nó hữu ích cho việc kiểm tra các thành phần của một IRI, ví dụ, tên của host.
@prefix foaf: .
_:a foaf:name "Alice".
_:a foaf:mbox .
_:b foaf:name "Bob" .
_:b foaf:mbox .
Truy vấn sau chọn những người sử dụng địa chị work.example của họ trong foaf :
PREFIX foaf:
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name ;
foaf:mbox ?mbox .
FILTER regex(str(?mbox), "@work.example") }
Kết quả truy vấn :
name
mbox
"Alice"
5.11.4.6.lang
simple literal lang (literal ltrl)
Trả về thẻ ngôn ngữ thuộc ltrl, nếu nó có, ngược lại trả về “”. Chú ý là dữ liệu RDF không bao gồm các literal với các thẻ ngôn ngữ trống.
@prefix foaf: .
_:a foaf:name "Robert"@EN.
_:a foaf:name "Roberto"@ES.
_:a foaf:mbox .
Truy vấn tìm các foaf:nam và foaf:mobx Spanish:
PREFIX foaf:
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name ;
foaf:mbox ?mbox .
FILTER ( lang(?name) = "ES" ) }
Kết quả truy vấn :
name
mbox
"Roberto"@ES
5.11.4.7.datatype
IRI datatype (typed literal typedLit)
IRI datatype (simple literal simpleLit)
Trả về kiểu dữ liệu IRI thuộc typedLit; trả về xsd:string nếu tham số là một sample literal
@prefix foaf: .
@prefix eg: .
@prefix xsd: .
_:a foaf:name "Alice".
_:a eg:shoeSize "9.5"^^xsd:float .
_:b foaf:name "Bob".
_:b eg:shoeSize "42"^^xsd:integer .
Truy vấn sau tìm foaf:name và foaf:shoeSize của những người có kích thước giầy là một số nguyên:
PREFIX foaf:
PREFIX xsd:
PREFIX eg:
SELECT ?name ?shoeSize
WHERE { ?x foaf:name ?name ; eg:shoeSize ?shoeSize .
FILTER ( datatype(?shoeSize) = xsd:integer ) }
Kết quả truy vấn :
name
shoeSize
"Bob"
42
5.11.4.8.logical-or
xsd:boolean xsd:boolean left || xsd:boolean right
Trả về một logic OR của left hoặc right. Chú ý toán tử logical-or điều khiển trên EBV của các tham số của nó.
5.11.4.9.logical-and
xsd:boolean xsd:boolean left && xsd:boolean right
Trả về một logic AND là left hoặc right. Chú ý là logical-and điều khiển trên EBV của các tham số của nó.
5.11.4.10.RDFterm-equal
xsd:boolean RDF term term1 = RDF term term2
Trả về TRUE nếu team1 và term2 cùng là thuật ngữ RDF, tạo ra kiểu lỗi nếu các tham số là literal nhưng không cùng là thuật ngữ RDF, còn lại là trả về FALSE. term1 và term1 cùng kiểu nếu bất kỳ mệnh đề nào sau đây là đúng:
-term1 và term1 là các IRI.
-term1 và term1 là các literal.
-term1 và term1 là các nút trắng.
@prefix foaf: .
_:a foaf:name "Alice".
_:a foaf:mbox .
_:b foaf:name "Ms A.".
_:b foaf:mbox .
Truy vấn sau tìm những người có nhiều triple foaf:name :
PREFIX foaf:
SELECT ?name1 ?name2
WHERE { ?x foaf:name ?name1 ;
foaf:mbox ?mbox1 .
?y foaf:name ?name2 ;
foaf:mbox ?mbox2 .
FILTER (?mbox1 = ?mbox2 && ?name1 != ?name2)
}
Kết quả truy vấn :
name1
name2
"Alice"
"Ms A."
"Ms A."
"Alice"
Chương III - Semantic Wiki
I.Khái niệm
Semantic wiki là một wiki mà có nền tảng tri thức được miêu tả trong đó. Semantic wiki cho phép lấy hoặc nhận biết các thông tin về dữ liệu trong trang, và mối liên hệ giữa các trang theo cách mà có thể được truy vấn hoặc xuất ra giống với cơ sở dữ liệu.
II.Các ưu điểm của Semantic Wiki
Với các wiki truyền thống, các trang vẫn là các mã HTML thông thường, các nội dung chưa được quan hệ với nhau theo ngữ nghĩa, mà chỉ được liên kết với nhau bằng cách đường link khô cứng. Bằng việc sử dụng nền tảng Semantic Web, thông tin trên trang wiki trở nên logic hợp lý hơn và gắn kết với nhau hơn.
Sau đây là ưu điểm của Semantic Wiki so với các Wiki truyền thống :
Semantic Wiki cung cấp các tài liệu đọc được bởi con người của các từ vựng và các ngữ nghĩa của một nhóm.
Semantic Wiki cho phép khả năng truy vấn và suy luận trên các thực thể sử dụng truy bắt ngữ nghĩa.
Semantic Wiki hỗ trợ đa truyền thông, chia sẻ và sử dụng lại các từ vựng và ngữ nghĩa.
Semantic Wiki sử dụng kỹ thuật ngữ nghĩa và ngôn ngữ biểu diễn chuẩn (RDF, RDF Schema, và OWL) giúp cùng một thông tin có thể được sử dụng trực tiếp bởi nhiều hệ thống nhận biết ngữ nghĩa khác nhau. Thực ra, các ontology đang tồn tại và các từ vựng có thể được tải vào semantic wiki một cách tự động tạo ra các trang tương ứng.
III.Các chức năng của Semantic Wiki
Các Semantic Wiki đều có các chức năng cơ bản của Wiki truyền thống :
Mô hình trang web đơn giản cho người dùng để đọc các nội dung.
Khả năng thay đổi nội dung của bất kỳ trang nào và sử dụng ngôn ngữ đánh dấu wikitext.
Chia sẻ hình ảnh, tài liệu và các tệp tin bằng cách tải chúng lên và tham chiếu tới chúng trong các trang khác.
Theo dõi lích sử thay đổi của mỗi trang.
Quản lý tài khoản người dùng.
Hiện nay có rất nhiều Semantic Wiki đang tồn tại với các mục đích khác nhau, tuy nhiên nói chung chúng đều có các chức năng như sau :
1.Định kiểu/Chú thích các liên kết
Các Semantic Wiki cho phép chú thích các liên kết bằng cách gán cho chúng kiểu nào đó. Ý tưởng đằng sau là liên kết được tạo bởi người đầu tiên luôn mang ý nghĩa dựa trên sự điều hướng. Các mà các liên kết chú thích được thay đổi khác nhau đối với các hệ thống khác nhau. Một số semantic wiki bao gồm chú thích như là một phần của cú pháp wiki (như Semantic MediaWiki) trong khi một số khác tại cung cấp khả năng thay đổi các chú thích.
2.Biểu diễn ngữ cảnh nhận biết
Nhiều semantic wiki có thể thay đổi cách mà nội dung được hiển thị dựa trên chú thích. Có thể bao gồm chức năng làm giàu trang bằng cách hiển thị các trang liên quan trong một hộp liên kết riêng, hiển thị các thông tin có thể dẫn xuất từ cơ sở tri thức, hoặc thậm chí là xây dựng nội dung cho trang theo một cách khác mà phù hợp với hoàn cảnh hiện tại
3.Cải thiện sự điều hướng
Các liên kết được định kiểu, chú thích cung cấp nhiều thông tin hơn cho sự định hướng. Trong khi wiki truyền thống chỉ cho phép đi theo các liên kết, một semantic wiki cho phép các thông tin đi kèm về mối liên hệ mà liên kết miêu tả. Các thông tin có thể được sử dụng để cho phép điều hướng thêm hoặc phức tạp. Ví dụ, các liên kết độc lập hơn trong trạng thái và có thể được hiển thị trong hộp thông tin liên quan. Trang miêu tả về Mozard có thể có các hộp tham chiếu thông tin như “sống ở”, “các tác phẩm”..
4.Tìm kiếm ngữ nghĩa
Hầu hết các semantic wiki đề cho phép tìm kiếm ngữ nghĩa trên cơ sở tri thức. Thường thì các truy vấn được biểu diễn theo ngôn ngữ SPARQL. Sử dụng tìm kiếm ngữ nghĩa, người dùng có thể tạo các truy vấn như “tìm các tác phẩm được viết bởi Mozart”...
5.Hỗ trợ suy diễn
Việc suy diễn nghĩa là dẫn xuất thêm tri thức chính xác từ các sự việc vào hệ thống sử dụng các quy luật được định nghĩa trước bởi cơ sở tri thức. Ví dụ, từ sự thật là Mozard đã viết bản “Die Zauberlote”, một hệ thống có khả năng xác định được Mozart là một nhà soạn nhạc. Mặc dù suy diễn là một chức năng quan trọng, nhưng nó chỉ được hỗ trợ bởi số ít Wiki. Nguyên nhân là do kết quả có thể không như mong muốn của người dùng.
4.Một số hệ thống Semantic Wiki hiện nay
Có khá nhiều dự án thực hiện Semantic Wiki. Tuy nhiên nổi bật lên thì có một số dự án như :
Dự án
Ngôn ngữ
Bản quyền
AceWiki
Java
LGPL
KiWi
Java EE
Sun CDDL
Knoodl
Java
Free, publicly hosted
OntoWiki
PHP
Semantic MediaWiki
PHP
GPL
Swirrl
Hostedweb application
TaOPis
FLORA-2,Python,PostgreSQLPHP
GPL
Chương IV – Công cụ và Ứng dụng
I.Giới thiệu về Ikewiki
1.Giới thiệu
Ikewiki là một Semantic Wiki được phát triển bởi SalzburgResearch cho phép người dùng chú thích các trang và các liên kết giữa các trang bằng các chú thích ngữ nghĩa. Các chú thích rất có ích do chúng cho phép máy có thể hiểu được nội dung mà nó sẽ hiển thị lên trang. Thông tin này sau đó có thể được sử dụng để trình diễn ngữ cảnh cụ thể của các trang, truy vấn, thẩm tra và kết luận.
Mặc dù, IkeWiki giống với Wikipedia/MediaWiki theo nhiều góc độ, nó hoàn toàn được viết lại, và hệ thống thiết kế thực sự khác với các Wiki khác. IkeWiki sử dụng kỹ thuật Semantic Web như RDF(S) và OWL và Jena RDF, sử dụng công nghệ AJAX dựa trên công cụ có sẵn Dojo Toolkit.
2.Nguyên tắc thiết kế
2.1.Dễ dàng sử dụng và tương tác giao diện
Với mục tiêu là hướng tới người dùng thông thường, giao diện của IkeWiki khá giống với Wikipedia mà chúng ta đã quá quen thuộc. Thêm vào đó, IkeWiki sử dụng trình soạn thảo WYSIWYG (sử dụng kỹ thuật AJAX), hỗ trợ tạo các kiểu liên kết và tài nguyên tương tác.
2.2.Tương thích với Wikipedia/MediaWiki
Wikipedia chứa lượng lớn tri thức và để sử dụng lượng tri thức này IkeWiki hỗ trợ cú pháp Wikipedia. Điều này cho phép người dùng nhập các nội dung từ Wikipedia vào trong IkeWiki (ví dụ đơn giản như sao chép và dán) và bắt đầu với chú thích ngữ nghĩa một cách trực tiếp.
2.3.Tương thích với các chuẩn Semantic Web
Để trao đổi dữ liệu với các ứng dụng, IkeWiki hoàn toàn dựa trên chuẩn RDF và OWL. Chú ý là ccs định dạng biểu diễn tri thức khác như đồ thị khái niệm là có thể hiểu được nhưng không thể được áp dụng trong trường hợp này.
2.4.Sự khai thác tức thì các chú thích ngữ nghĩa
Một mặt quan trọng của các hệ thống wiki là cho ra nội dung ngay lập tức khi người dùng chọn nút “Lưu”. Tương tự, Ikewiki cho phép khai thác thông tin ngay lập tức giúp cái thiện việc chỉnh sửa, trình diễn, tìm kiếm, thậm chí nếu cơ sở tri thức chưa được định dạng hoàn toàn.
2.5.Hỗ trợ các mức khai thác khác nhau
IkeWiki là được thiết kế như là một công cụ dành cho công nghệ tri thức cộng tác. Trong tiến trinhfnayf, nhưng người không giỏi lắm sẽ làm việc cùng với các kỹ sư. Do đó, IkeWiki hỗ trợ tất cả các mức kinh nghiệm, nghĩa là các chức năng phức tạp có thể bị giấu đi với người thông thường và thấy được với những người có kinh nghiệm.
2.6.Hỗ trợ suy diễn
IkeWiki hỗ trợ suy diễn dựa trên cơ sở tri thức. Suy diễn rất quan trọng do nó cho phép trích xuất các thông tin chính xác trong dữ liệu và là sức mạnh thực sự của Semantic Web. Tại thời điểm hiện tại, IkeWiki hỗ trợ suy diễn OWL-RDFS.
3.Kiến trúc
Kiến trúc của IkeWiki như sau :
Hình 4 – Kiến trúc của Ikewiki
IkeWiki sử dụng cơ sở dữ liệu Postgres. Khi một tài nguyên được yêu cầu, nội dung trang dạng XML và dữ liệu liên quan dạng RDF được lấy ra và kết hợp trong RenderingPipeline thành văn bản trình diễn XML. Văn bản này sau đó được thay đổi định dạng với các dịch vụ Web khác hoặc chuyển thành dạng HTML để trình diễn trên trình duyệt người dùng. Các lớp khác nhau được miêu tả như sau :
3.1.Kho lưu trữ trang – Page Store
Kho lưu trữ trang dùng để lưu và lấy ra nội dung trang từ cơ sở dữ liệu. Nó cũng cung cấp việc đánh phiên bản và lưu trữ các phiên bản trước. Nội dung trang được trình diễn dạng XML gọi là WIF (Wiki Interchange Format – Định dạng trao đổi wiki). WIF cơ bản miêu tả nội dung và cấu trúc của trang, nhưng cho phép thêm thông tin đặc tả ứng dụng theo các không gian tên khác nhau.
3.2.Kho lưu trữ RDF – RDF Store
Cơ sở tri thức được biểu diễn sử dụng khung RDF Jena. IkeWiki sử dụng mô hình trong bộ nhớ để cải thiện đáp ứng của hệ thống. Mô hình trong bộ nhớ thường đồng bộ với mô hình dữ liệu dành cho kho lưu trữ. Thành phần của kho lưu trữ RDF là máy SPARQL cho phép tìm kiếm cơ sở tri thức.
3.3.Ống thi hành – Rendering Pipeline
Ống thi hành kết hợp nội dung trang với các chú thích ngữ nghĩa. Đầu ra của nó là tài liệu WIF được làm giàu bởi các chú thích liên quan. Trong dạng RXR. ống bao gồm các bước nhỏ gọi là Wikilet. Mỗi Wikilet thêm các thành phần thông tin vào tài liệu WIF. Wikilets có thể được vô hiệu hay hữu hiệu cho phép gắn với phân quyền nên chỉ những người dùng nào đó mới có quyền được thêm thông tin.
3.4.Chuyển đổi – Transformation, Servlet
Lớp chuyển đổi áp dụng phép chuyển đổi XSLT để làm giàu định dạng WIF và tạo đầu ra là XHTML, SVG và/hoặc WIF. IkeWiki Servlet chuyển đầu ra này đến trình duyệt của người dùng.
4.Giao diện
IkeWiki hiện tại chỉ hỗ trợ giao diện trên trình duyệt Firefox. Giao diện của Ikewiki gồm các thành phần chính
Hình 5 – Giao diện của Ikewiki
IkeWiki sử dụng 3 cột hiển thị với các nội dung :
Các cột trái và phải, chứa các khung gọi là “portlet”. Cột trái chứa các nhiệm vụ thực thi, còn cột phải chứa các thông tin thêm.
Cột giữa, chứa nội dung chính, chứa các thực đơn gọi là perspective. Mỗi perspective cho một khung nhìn hiện tại về trang và gắn với tài nguyên RDF.
4.1.Perspective
Phiên bản v.2 chứa 7 perspective, các phiên bản tiếp theo có thể thêm vào một số perspective khác.
4.1.1.Bài viết - Article
Khung bài viết cung cấp cái nhìn chính về nội dung trang wiki.
Hình 6 – Khung bài viết
Khung bài viết được cấu trúc như sau:
Phần đầu tiên là tiêu đề trang, có thể thay đổi dễ dàng ( thậm chí cho các ngôn ngữ khác nhau) trong khung “Thay đổi”.
Ngay sau đó, là “Định danh - Identifier”. Định danh là tên duy nhất bên trong xác định bài viết trong IkeWiki. Nó cần được sử dụng khi liên kết hoặc chú thích. Một định danh có thể là một từ đơn hoặc kết hợp với không gian tên tiếp theo là dấu hai chấm và một từ.
Bên dưới là “Kiểu thông tin”, ví dụ RDF hoặc các lớp OWL đã được sử dụng để chú thích cho tài nguyên được miêu tả bởi trang hiện tại. Theo mặc định, trang tự được gắn bằng chú thích “rdfs:Resource”. Các chú thích khác sẽ phụ thuộc vào ontology mà bạn tải vào IkeWiki.
4.1.2.Thảo luận – Discuss
Hình 7 – Khung thảo luận
Khung thảo luận cho phép thảo luận về tài nguyên hiện tại, giống như Wiki. Không như các wiki khác, thảo luận được trình bày theo dạng luồng, tương tự như luồng trong diễn đàn. Chức năng thảo luận của IkeWiki cho phép tạo các bài viết mới và phản hồi lại bài viết hiện tại.
4.1.3.Siêu dữ liệu – Metadata
Khung siêu dữ liệu cho phép truy cập vào các chú thích nguyên bản gắn với trang. Khung siêu dữ liệu cho phép thay đổi chú thích nguyên bản. Việc thay đổi được thực hiện bằng cách kích đúp vào bài viết.
Hình 8 – Khung siêu dữ liệu
Chú ý là việc tải siêu dữ liệu yêu cầu truy vấn mở rộng cơ sở tri thức do đó mất vài giây. IkeWiki sẽ hiển thị thông tin lên cửa sổ khi siêu dữ liệu được tải ra toàn bộ.
4.1.4.Ngữ cảnh – Context
Khung ngữ cảnh cung cấp cái nhìn một cách đồ thị về ngữ cảnh mà tài nguyên được hiển thị trên đồ thị được chứa trong cơ sở tri thức. Ngữ cảnh hiện tại được hiển thị sử dụng flash applet sẽ tải hết dữ liệu từ máy chủ từ lúc bắt đầu, cho nên việc bắt đầu khá chậm. Đồ thị ngữ cảnh sau đó có thể được khám phá theo các liên kết giữa các tài nguyên.
4.1.5.Thay đổi – Edit
Khung thay đổi chứa trình soạn thảo của IkeWiki để thay đổi nội dung của trang. Việc thay đổi ngôn ngữ chỉ cần nhấn vào các liên kết đến ngôn ngữ khác nhau ở góc trên.
Hình 9 – Khung thay đổi
Thêm vào đó, khung thay đổi chứa các phần tử giao diện người dùng sau
Tiêu đề : cho phép định nghĩa tiêu đề một trang mà hiển thị độc lập với định danh của nó, mỗi ngôn ngữ có thể có các tiêu đề trang khác nhau.
Nội dung : Cung cấp trình soạn thảo cho việc thay đổi nội dung trang.
Tổng quan : Chức năng cho phép chú thích những thay đổi mà bạn thực hiện trên trang.
4.1.6.Chú thích
Khung chú thích cho phép người dùng chú thích trang và liên kết chứa trong đó với khái niệm từ ontology được tải ra. Khung chú thích hiển thị giống với khung bài viết nhưng có thêm hai nút bên cạnh kiểu trang và mỗi liên kết trong trang có thể được sử dụng để chú thích. Khung chú thích không hiển thị nội dung các hình ảnh hoặc đa phương tiện.
4.1.7.Lịch sử
Khung lịch sử cho phép truy cập đến các phiên bản trước của bài viết. Các bài viết trước được chọn có thể được so sánh với nhau, và các phiên bản trước có thể được khôi phục.
Hình 10 – Khung lịch sử
4.2.Portlet
Các portlet được hiển thị dạng hộp nhỏ trong cột trái hoặc cột phải. Chọn vào tiêu đề của portlet sẽ thu nhỏ hoặc phóng to portlet này. Phiên bản hiện tại chứa các portlet sau :
4.2.1.Người dung – User
Portlet người dùng cho phép truy cập đến những công việc liên quan đến người dùng trong IkeWiki như thông tin, và giao diện của trang web.
Hình 11 – Portlet người dùng
4.2.2.Điều hướng
Portlet điều hướng chứa những điều hướng chính của cấu trúc Wiki. Nội dung của nó tự động được tạo từ cơ sở tri thức. Mọi bài viết được chú thích với kiểu ikewiki:NavMenuItem đều được tự động add vào trong portlet điều hướng. Thuộc tính siêu dữ liệu ikewiki:NavMenuPosition chỉ ra cho mỗi trang vị trí của nó trong thực đơn điều hướng và là một số.
Hình 12 – Portlet định hướng
4.2.3.Thay đổi
Portlet thay đổi cung cấp đường tắt đến những nhiệm vụ thay đổi chính, như tạo tài nguyên, tạo lớp, tạo thuộc tính, tạo nội dung đa phương tiện hay xóa tài nguyên.
Hình 13 – Portlet thay đổi
4.2.4.Tìm kiếm
Portlet tìm kiếm chứa trường tìm kiếm fulltext đơn giản. Việc tìm kiếm sử dụng cú pháp Lucene.
Hình 14 – Portlet tìm kiếm
4.2.5.Các công cụ
Portlet các công cụ cho phép các nhiệm vụ không liên quan trực tiếp đến việc thay đổi hoặc điều hướng. Ví dụ như Nhập, xuất ontology...
Hình 15 – Portlet công cụ
4.2.6.Lịch sử
Portlet lịch sử chứa các đường dẫn điều hướng đã sử dụng trong phiên làm việc. Điều này rất có ích cho việc nhảy giữa các trang và trang con một cách nhanh chóng, nhưng cũng tạo ra các bản log của các trang mà bạn đã thăm.
Hình 16 – Portlet lịch sử
4.2.7.Bảng nội dung
Portlet bảng nội dung chứa những đề mục nhỏ được tự động tạo ra từ bài viết.
Hình 17 – Bảng nội dung
4.2.8.Hướng dẫn – Tutorial
Portlet hướng dẫn hiển thị các điều hướng cho các trang là thành phần của cấu trúc hướng dẫn trong hệ thống (ikewiki:Tutorial)
4.2.9.Tham chiếu – Reference
Portlet tham chiếu chứa nhưng tham chiếu đến và đi của bài viết hiện tại. Các tham chiếu được nhóm lại bởi kiêu của chúng và kiểu mà chúng gắn kết với. Chú ý là các tham chiếu không phải là các liên kết có thể nháy vào được. Portlet này cũng hiển thị một cách đơn giản các cạnh của đồ thị được lưu trong cơ sở tri thức.
4.2.10.Xã hội hóa - Socialise
Portlet này cho phép tích hợp bài viết hiện tại với dịch vụ mạng xã hội như Digg, del.icio.us...
II.Dùng Ikewiki để xây dựng chủ đề về thành phố
1.Nhập một ontology
Để nhập một ontology, ta phải đăng nhập với quyền quản trị cao nhất là admin. Khi đó hệ thống sẽ cung cấp cho ta quyền nhập một ontology như sau :
Hình 18 – Nhập ontology
Giả sử ta có một ontology đơn giản miêu tả quan hệ giữa quốc gia với thành phố như sau :
<rdf:RDF
xmlns:rdf=""
xmlns=""
xmlns:protege=""
xmlns:xsp=""
xmlns:owl=""
xmlns:xsd=""
xmlns:swrl=""
xmlns:swrlb=""
xmlns:rdfs=""
xml:base="">
Chọn Import và trỏ đến tệp owl của ta
Hình 19 – Trỏ đến tệp ontology
Sau đó chọn Import, hệ thống sẽ tải, phân tích tệp, và cập nhật cấu trúc ontology mà ta định nghĩa.
Hình 20 – Quá trình nhập ontology
Lúc này khi chọn quản lý không gian tên sẽ có tên của không gian tên thuộc ontology mà ta đã định nghĩa
Hình 21 – Quản lý không gian tên
Hình 22 – Ontology đã xuất hiện trong không gian tên
2.Tạo bài viết
Để tạo bài viết, ta vào mục Create Resource :
Hình 23 – Tạo bài viết
Sau đó, ta chọn không gian tên, tên cho bài viết. Chú ý là, trong IkeWiki, mỗi bài viết sẽ ứng với một tài nguyên duy nhất, tên bài viết sẽ là duy nhất trong một không gian tên.
Hình 24 – Cung cấp thông tin cho bài viết
Phần chỉnh sửa hiện lên, ta sẽ nhập các thông tin cần thiết
Hình 25 – Nội dung bài viết
Chọn lưu bài viết này lại. Ta sẽ định nghĩa, Việt Nam là một quốc gia. Để làm điều này, ta chọn Annotate. Chọn vào dấu + để thêm kiểu cho bài viết :
Hình 26 – Định kiểu bài viết
Chọn Add. Như vậy, ta đã tạo một bài viết về quốc gia Việt Nam với kiểu là ns1:Nation.
2.Chú thích cho một trang
Để ví dụ cho việc chú thích. Ta tạo thêm một tài nguyên mới là thành phố Hà Nội, như sau (phải thêm kiểu ns1:City cho Hà Nội):
Hình 27 – Tạo tài nguyên Hà Nội
Chú ý cách viết của wiki :
Hà Nội là thủ đô, đồng thời cũng là thành phố lớn thứ hai [[ ns1:vietnam | Việt Nam ]] về dân số với 6,233 triệu người.
Khi đó sẽ cho ta :
Hình 28 – Kết quả sau khi tạo tài nguyên Hà Nội sử dụng cú pháp wiki
Và máy sẽ hiểu Việt Nam là một tài nguyên thuộc không gian tên ns1.
Bây giờ ta định nghĩa Hà Nội là một thành phố của Việt Nam bằng cách chọn vào dấu + bên cạnh “Hà Nội” và chọn :
HÌnh 29 – Tạo chú thích
Khi đó ta đã định nghĩa xong Hà Nội là thủ đô của Việt Nam.
Hình 30 – Thông tin isCityOf sau khi chú thích
Chú ý sang cột phải ta sẽ thấy thuộc tính isCityOf có phần tử Việt Nam.
3.Truy vấn trong IkeWiki
IkeWiki cho phép thực hiện phép truy vấn ngay trong trang wiki. Để minh họa, ta tạo thêm Hải Phòng là một thành phố của Việt Nam. Sau đó tạo một tài nguyên mới :
Hình 31 – Truy vấn trong ikewiki
Trong bài viết, ta áp dụng quy tắc của truy vân SPARQL trên như sau :
Nghĩa là tìm các thành phố ?C là thành phố của quốc gia ?N. Và kết quả cho ta :
Hình 32 – Kết quả truy vấn
Nhờ khả năng suy diễn dựa trên đồ thị các triple, IkeWiki tìm được Hải Phòng và Hà Nội là các thành phố của Việt Nam. Đây là sức mạnh vượt bậc mà với wiki truyền thống không thể làm được.
Tài liệu tham khảo :
The Semantic Web: A Guide to the Future of XML, Web Services, and Knowledge Management by Michael C. Daconta, Leo J. Obrst and Kevin T. Smith
Graphingwiki - a Semantic Wiki extension forvisualising and inferring protocol dependency - Juhani Eronen and Juha Röning
Reusing Ontological Background Knowledge in Semantic Wikis - Denny Vrandeˇ ci´ c and Markus Krötzsch
Annotation and Navigation in Semantic Wikis - Eyal Oren1, Renaud Delbru1, Knud M¨oller1, Max V¨olkel
Learning with Semantic Wikis - Sebastian Schaffert, Diana Bischof, Tobias B¨urger, Andreas Gruber, Wolf Hilzensauer, and Sandra Schaffert
Semantic Wikipedia - Max Völkel, Markus Krötzsch, Denny Vrandecic, Heiko Haller, Rudi Studer
Semantic Annotation, Indexing, and Retrieval - Atanas Kiryakov, Borislav Popov, Damyan Ognyanoff, Dimitar Manov, Angel
Kirilov, Miroslav Goranov
IkeWiki: A Semantic Wiki for Collaborative Knowledge Management - Sebastian Schaffert