Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# -*- mode: rnc; -*-
#
# Author: David Maus <maus@hab.de>
#
namespace dct = "http://purl.org/dc/terms/"
namespace foaf = "http://xmlns.com/foaf/0.1/"
namespace owl = "http://www.w3.org/2002/07/owl#"
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
namespace skos = "http://www.w3.org/2004/02/skos/core#"
namespace s = "http://purl.oclc.org/dsdl/schematron"
[
s:ns [ prefix = "rdf" uri = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" ]
s:ns [ prefix = "owl" uri = "http://www.w3.org/2002/07/owl#" ]
]
start = rdfWrapper
optionalMetadata =
element dct:subject { Concept }*
& element dct:issued { Datestamp }?
requiredMetadata =
element dct:title { rdfLiteral }+
& element dct:description { rdfLiteral }+
& element dct:creator { Agent }+
& element dct:publisher { Agent }
& element dct:created { Datestamp }
& element dct:modified { Datestamp }
& element dct:license { License }
rdfLiteral =
attribute xml:lang { xsd:language }?
& text
Agent =
( Organization | Person )
Organization =
element foaf:Organization {
( internalEntity | externalEntity )
}
Person =
element foaf:Person {
( internalEntity | externalEntity )
}
internalEntity =
[
s:pattern [
s:rule [
context = "*[@rdf:about]" s:assert [
test = "matches(@rdf:about, '^http://([^.]+\.)?hab\.de')"
"Verwende <owl:sameAs> für Statements zu Entitäten, die nicht unter der Kontrolle der HAB liegen."
]
]
]
]
attribute rdf:about { xsd:anyURI },
Label+
externalEntity =
[
s:pattern [
s:rule [
context = "owl:sameAs" s:assert [
test = "not(matches(@rdf:resource, '^http://([^.]+\.)?hab\.de'))"
"Verwende @rdf:about für Statements zu Entitäten, die unter der Kontroller der HAB liegen."
]
]
]
]
element owl:sameAs {
attribute rdf:resource { xsd:anyURI }
}
& Label+
Label =
element skos:prefLabel { rdfLiteral }
Datestamp =
attribute rdf:datatype { "http://www.w3.org/2001/XMLSchema#date" }
& xsd:date
License =
element dct:LicenseDocument {
( internalEntity | externalEntity )
}
Concept =
element skos:Concept {
( internalEntity | externalEntity )
}
rdfResource =
attribute rdf:resource { xsd:anyURI }
rdfPrimarySubject =
[
s:pattern [
s:rule [
context = "/rdf:RDF/*" s:assert [
test = "matches(@rdf:about, '^http://([^.]+\.)?hab\.de')"
"Ein primäres Subject muss unter der Kontrolle der HAB stehen."
]
]
]
]
attribute rdf:about { xsd:anyURI }
rdfPrimarySubjectEntity = notAllowed
rdfWrapper =
element rdf:RDF {
rdfPrimarySubjectEntity
}