The Martialis data model: the OWL ontology, its SHACL constraints, and its SKOS controlled vocabularies. CC0-1.0, public domain. Back to Martialis

Ontologies

Martialis Investigative Ontology

ontology
IRI:https://w3id.org/martialis/ontology#MartialisOntology
dcterms:title
Martialis Investigative Ontology
dcterms:description
Ontology for historically sourced martial arts lineages, ranks, and claims. Every term is either produced by the YAML-LD conversion pipeline (see schemas/context.jsonld and bin/martialis) or explicitly marked as materialized at export time. SHACL (martialis.shacl.ttl, martialis-quality.shacl.ttl) is the constraint layer; this file describes the vocabulary.
skos:historyNote
1.1.0: affiliation model (typed AffiliationAssertion replacing parent_org_id), OfficerRole, Date EDTF dates with materialized earliestYear/latestYear, org:ChangeEvent materialization; rdfs:label added to all terms for documentation generators. 2.0.0 (breaking): SKOS vocabulary migration - 25 ConceptSchemes under ontology/vocabularies/ document the project's controlled vocabularies; 19 previously-xsd:string enum properties (role, styleRelationType, affiliationRelation, sourceRefType, evidenceWeight, orgType, styleType, styleForm, placeType, eventType, rankSystemType, dissolutionManner, sourceGenre, instructorCapacity, editionRelationType, dateCalendar, plus the newly-minted rankType/honorType/linkType) became owl:ObjectProperty with rdfs:range skos:Concept; rankType/honorType/linkType replace the prior shared use of schema:additionalType (950 triples from three unrelated vocabularies on one predicate, now separable); peer-review.ttl moved from the ontology namespace to its own https://w3id.org/martialis/vocab/peer-review namespace. sourceType/sourceLocatorLabel/contributorRole (CSL) and peerReview (DRIVER/OpenAIRE) stay plain strings by design - external-standard alignments, not Martialis vocabularies. 2.1.0 (breaking): ontology quality pass, prompted by finding that three schemes and part of the rank/honor model described this project's own data rather than the domain. martialis:MartialArtRank (reserved, never instantiated) is dropped and replaced by martialis:RankingSystem, a real evidenced entity type (database/ranking-systems/) - a rank is a (rankSystem, rankType/rankOrdinal or rankGrade) tuple with no entity of its own; martialis:rankValue/martialis:rankSystemType and the RankSystem class they belonged to are removed accordingly, replaced by martialis:rankSystem/martialis:confersRank/martialis:rankType/martialis:rankOrdinal/martialis:rankGrade and, on HonorAssertion, martialis:honorGrade. rankType narrows to {dan, kyu} (a numbering-direction marker); menkyo and the Unified Sports Classification System become RankingSystem entities of kind 'enumerated' rather than rankType values; Chinese Duanwei, previously modelled as a rankType sibling of dan, is confirmed (Wikipedia; the China Wushu Association itself uses 'Dan' for international standardization) to be the same grade concept administered by a distinct sourced institution, so it becomes its own RankingSystem entity, not a vocabulary value. source-classification.ttl/contributor-role.ttl/source-locator-label.ttl (CSL alignments) are deleted: they were invalid SKOS, not merely unidiomatic - skos:exactMatch's domain/range is skos:Concept and skos:ConceptScheme is owl:disjointWith skos:Concept, so a ConceptScheme exactMatch-ing an external anchor entailed a disjointness violation (confirmed via RDFS entailment); replaced by dcterms:conformsTo directly on sourceType/contributorRole/sourceLocatorLabel. country.ttl's 40 database-observed codes are replaced by direct reuse of the EU Publications Office's own dereferenceable country authority IRIs (confirmed real SKOS, ~30 languages, correct ISO lifecycle status) rather than a local mirror; only genuinely uncovered codes (Ryukyu) remain local. The 25-file one-scheme-per-file layout (a pyLODE workaround) merges into one ontology/vocabularies.ttl, pyLODE having been dropped in favour of Widoco/SHACL Play/SKOS Play. 2.2.0 (breaking): SHACL shapes move off the ontology's own namespace into their own, https://w3id.org/martialis/ontology/shapes# (prefix shapes:) - martialis.shacl.ttl and martialis-quality.shacl.ttl's 59 named sh:NodeShapes (e.g. martialis:PersonShape becomes shapes:PersonShape) and their few sh:node cross-references between shapes are the entire change; every sh:targetClass/sh:path/sh:class reference to an actual ontology term is untouched, still martialis:. Prompted by a real documentation-generator correctness bug: a fragment IRI's non-fragment part is what a bare HTTP dereference actually reaches, and with shapes sharing the ontology's own #fragment namespace, no single page could ever be the correct target for both classes/properties and shapes at once. Matches the convention every profile-splitting documentation tool already assumes (pyLODE's ontopub/valpub/vocpub, Widoco+SHACL Play) - a separate namespace per profile; the prior shared-namespace choice was the actual defect, not those tools. 2.3.0 (breaking): the Event entity is operationalized. martialis:Event moves from prov:Entity to schema:Event + prov:Activity (an event is something that occurs, not an entity that exists; PROV-O declares Entity and Activity disjoint, so the old subclass was a modeling error, not merely a weak alignment), and martialis:Participation moves from prov:Entity to prov:Association (an agent's qualified involvement in an activity, with the object widening from Person to Person or Organization). New martialis:atEvent links TeacherInteraction/RankAssertion/HonorAssertion/DocumentTransmissionAssertion/AffiliationAssertion/LifeEvent nodes to the canonical Event they occurred at (recorded as the multivalued event_ids array - one claim may reference several events); the event-classification scheme gains challenge/seminar/course/grading/ceremony/exchange concepts and the event-role scheme gains instructor/student (the teaching and learning roles of course/seminar events); the honor-type scheme gains decoration (state/military orders and medals, previously shoehorned into certificate/noble_rank); Event gains aka/links/media/notes/website, plural org_ids/style_ids, schema:superEvent series containment (part_of_id), and per-participation evidence. Two consistency follow-ups required by the new typing: martialis:hasConfidence drops its strict Assertion domain for schema:domainIncludes Assertion+Participation (a strict domain plus the Assertion/Participation disjointness would make every participation carrying a confidence block inconsistent under a reasoner - caught by the reasoner gate on the first real event data), and the export's prov:wasDerivedFrom materialization skips Event/Participation subjects (PROV's wasDerivedFrom has domain prov:Entity, disjoint from both new superclasses). Sources also became schema-REQUIRED (minItems 1) on every assertion-shaped node - rank/honor/learned_from/possibly_same_as/related_styles/affiliations/instructors/officers/participations and every teacher interaction with a real teacher_id (the unknown-teacher placeholder, teacher_id: null, stays exempt as it is dropped at export) - the quality-tier 'no sources' warnings become belt-and-braces checks for non-schema RDF. 2.4.0 (breaking): contextual training - martialis:ContextualTrainingAssertion records that the subject trained in a style at a place/event during a period under an unidentified teacher, produced from teacher entries with teacher_id: null (previously dropped at export entirely). It carries no object and is never materialized into wasTaughtBy/teaches; its interactions require an anchor (a place or event), a real period start, and sources - the unanchored, unsourced teacher_id: null placeholder is retired as a modelling pattern (a named-but-unentered teacher is now a stub Person plus a note, not a null placeholder). martialis:hasContextualTrainingAssertion links Person to it, and martialis:trainedAt (Person -> Place) is the student-side mirror of the existing martialis:taughtAt, materialized from both TeacherAssertion and ContextualTrainingAssertion interactions. martialis:hasInteraction drops its strict TeacherAssertion domain for schema:domainIncludes TeacherAssertion+ContextualTrainingAssertion, and martialis:assertedStyle/martialis:role gain ContextualTrainingAssertion - the same disjointness-vs-strict-domain fix 2.3.0 applied to hasConfidence and atEvent. Research notes (YAML: notes) are unified across every entity and assertion-shaped node under a new martialis:researchNote (aligned with skos:editorialNote), replacing the prior reuse of rdfs:comment - notes is addressed to a maintainer investigating a record, not a reader, and rdfs:comment already means something else (ontology self-documentation). Participation also gains the optional martialis:participationStyle (YAML: participants[].style_ids), attributing the specific art a participant taught or practised at the event - the per-instructor mapping a multi-style course's roster names but the event-level style_ids (an unattributed set) cannot carry; candidate-instructor matching against a student's contextual-training style_id joins on it, falling back to the event's style_ids only for single-style events. 3.0.0 (breaking): the vocabulary namespace moves off martial.is. martialis:, shapes:, and every vocab: concept/scheme IRI now resolve under https://w3id.org/martialis/ontology#, https://w3id.org/martialis/ontology/shapes#, and https://w3id.org/martialis/vocab/... respectively (a permanent, domain-independent redirect via the W3C Permanent Identifier Community Group's w3id.org service), so an import of this ontology no longer depends on a domain the project could lose or move - the same reasoning 2.2.0 applied to giving shapes their own fragment namespace, now applied to domain ownership itself. Data IRIs (https://martial.is/entity/, https://martial.is/agent/, https://martial.is/change/) are unaffected: they identify this project's own records, not vocabulary terms other projects import, so there is no retrofit cost to protect against.
dcterms:bibliographicCitation
Martialis — https://martial.is
dcterms:created
2026-02-28
dcterms:creator
_:martialis-anon2
dcterms:license
https://creativecommons.org/publicdomain/zero/1.0/
dcterms:modified
2026-09-06
dcterms:publisher
_:martialis-anon1
dcterms:rights
https://creativecommons.org/publicdomain/zero/1.0/
bibo:status
http://purl.org/ontology/bibo/status/published
vann:preferredNamespacePrefix
martialis
rdfs:seeAlso
Martialis Peer Review Status VocabularyMartialis Structural ConstraintsMartialis Quality and Completeness ConstraintsMartialis Controlled Vocabularieshttps://martial.is/model
owl:priorVersion
https://w3id.org/martialis/ontology/2.4.0
owl:versionIRI
https://w3id.org/martialis/ontology/3.0.0
owl:versionInfo
3.0.0
foaf:logo
https://martial.is/static/images/circle_inv.png
schema:codeRepository
https://github.com/Martial-IS/martialis-db

Martialis Quality and Completeness Constraints

ontology
IRI:https://w3id.org/martialis/ontology/shapes/quality
dcterms:title
Martialis Quality and Completeness Constraints
dcterms:description
Quality and completeness validation for the Martialis database. These shapes generate warnings for incomplete data that should be investigated and improved, but do not block publication - the structural tier (martialis.shacl.ttl) is the blocking gate. Per-source-ref field completeness is intentionally not checked here: it is aggregate information, reported by the provenance and dashboard subcommands of bin/martialis.
dcterms:created
2026-02-28
dcterms:license
https://creativecommons.org/publicdomain/zero/1.0/
dcterms:modified
2026-09-07
vann:preferredNamespacePrefix
shapes
rdfs:seeAlso
Martialis Investigative Ontology
owl:versionInfo
1.2.0

Martialis Structural Constraints

ontology
IRI:https://w3id.org/martialis/ontology/shapes/structural
dcterms:title
Martialis Structural Constraints
dcterms:description
Fundamental constraint shapes for the Martialis database: referential integrity and semantic correctness. This is the blocking validation tier; data-completeness requirements belong to the quality tier (martialis-quality.shacl.ttl). Shapes target the concrete classes stamped by the conversion pipeline (bin/martialis rdf), so validation runs without RDFS/OWL inference and without loading the ontology graph.
dcterms:created
2026-02-28
dcterms:license
https://creativecommons.org/publicdomain/zero/1.0/
dcterms:modified
2026-09-07
vann:preferredNamespacePrefix
shapes
rdfs:seeAlso
Martialis Investigative Ontology
owl:versionInfo
1.2.0

Martialis Controlled Vocabularies

ontology
IRI:https://w3id.org/martialis/vocab
dcterms:title
Martialis Controlled Vocabularies
dcterms:description
Every SKOS ConceptScheme documenting a Martialis-defined controlled vocabulary, merged into one source file; per-scheme documents are generated from this file at publication time (see bin/martialis).
dcterms:creator
Martialis Project
dcterms:license
https://creativecommons.org/publicdomain/zero/1.0/
dcterms:publisher
https://martial.is
vann:preferredNamespacePrefix
vocab
owl:versionInfo
1.0.0

Contents

Kind Count Section
Classes 26 entities.html#classes
Object properties 80 entities.html#object-properties
Datatype properties 48 entities.html#datatype-properties
Annotation properties 4 entities.html#annotation-properties
Other properties 0 entities.html#other-properties
Concept schemes 25 vocabularies.html#concept-schemes
Concepts 142 vocabularies.html#concepts
Collections 2 vocabularies.html#collections
Node shapes - Violations 74 shapes.html#violations-node-shapes
Node shapes - Warnings and info 23 shapes.html#warnings-and-info-node-shapes
Property shapes - Violations 182 shapes.html#violations-property-shapes
Property shapes - Warnings and info 19 shapes.html#warnings-and-info-property-shapes
Constraints - Violations 15 shapes.html#violations-constraints
Constraints - Warnings and info 27 shapes.html#warnings-and-info-constraints
Ontologies 4 index.html#ontologies

Sources