Newer
Older
# -*- 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#" ]
s:pattern [
s:rule [
context = "@rdf:about | @rdf:resource" s:assert [
test = "matches(., '^https?://')"
id = "general_001"
"Verwende immer vollständige URIs für Subjekte oder Referenzen"
]
]
]
]
start = rdfWrapper
optionalMetadata =
element dct:subject { Concept }*
& element dct:issued { Datestamp }?
& element dct:creator { Agent }*
& element dct:description { rdfLiteral }*
& element dct:title { rdfLiteral }*
& element dct:relation { rdfResource }*
& element dct:source { rdfResource }*
& 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(/.*)?$')"
id = "internalEntity_001"
"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(/.*)?$'))"
id = "externalEntity_001"
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
120
121
122
123
"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 =
attribute rdf:about { xsd:anyURI }
rdfPrimarySubjectEntity = notAllowed
rdfWrapper =
element rdf:RDF {
rdfPrimarySubjectEntity
}