Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/belgif/vocab-belgif
SKOS publication tool for Vocab.belgif.be
https://github.com/belgif/vocab-belgif
Last synced: about 21 hours ago
JSON representation
SKOS publication tool for Vocab.belgif.be
- Host: GitHub
- URL: https://github.com/belgif/vocab-belgif
- Owner: belgif
- License: bsd-2-clause
- Created: 2017-01-05T21:15:51.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-11-07T13:33:20.000Z (8 days ago)
- Last Synced: 2024-11-07T14:23:59.732Z (8 days ago)
- Language: Java
- Size: 22 MB
- Stars: 2
- Watchers: 5
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README-RDFSOWL.md
- License: LICENSE
Awesome Lists containing this project
README
# Requirements for RDFS / OWL ontologies
In order to be published on vocab.belgif.be, the following requirements must be met
## File
* the file must be a valid [OWL2](https://www.w3.org/2009/08/skos-reference/skos.html) file
* UTF-8 encoding must be used
* RDF Turtle serialization is recommended but not required (NTriples and JSON-LD are acceptable as well)
## owl:Ontology
* URI must adhere to the template: http://vocab.belgif.be/ns/[short-ontology-name]#
* where short-ontology-name is all-lowercase, only alphanumeric characters and hyphens are permitted
* short-ontology-name can be based on English words (e.g. abbreviation), but should be relatively short
* "translating" short-ontology-name is not permitted (translation must be done at the label level)
* owl:Ontology should have a owl:versionInfo description
* owl:Ontology must have a rdfs:label in Dutch, French, English and German (will be used in the HTML overview as title)
* owl:Ontology must have a rdfs:comment in Dutch, French, English and German (will be used in the HTML overview as description)## Classes
* URI must adhere to the template: http://vocab.belgif.be/ns/[short-ontology-name]#[ClassName]
* where ClassName written in "camel case", only alphanumeric characters are permitted
* the first character of ClassName is always an uppercase letter
* ClassNames must be based on English words, but should be relatively short
* "translating" ClassNames is not permitted (translation must be done at the label level)
* classes must have a rdfs:isDefinedBy
* classes must have a rdfs:label in Dutch, French, English and German (will be used in the HTML overview)
* classes may have a rdfs:comment in Dutch, French, English and German (will be used in the HTML overview)
* classes may be a rdfs:subClassOf of another class
* classes must be of rdf:type rdfs:Class and owl:Class
## Properties
* URI must adhere to the template: http://vocab.belgif.be/ns/[short-ontology-name]#[propertyName]
* where propertyName is "camel case" (except for the first word), only alphanumeric characters are permitted
* the first character of propertyName is always a lowercase letter
* propertyNames must be based on English words, but should be relatively short
* "translating" propertyNames is not permitted (translation must be done at the label level)
* propertyNames must not be based on classes mentioned in the rdfs:Range or rdfs:Domain properties
* properties must have a rdfs:isDefinedBy
* properties must have a rdfs:label in Dutch, French, English and German (will be used in the HTML overview)
* properties may have a rdfs:comment in Dutch, French, English and German (will be used in the HTML overview)
* properties must be of rdf:type rdf:Property and (owl:ObjectProperty or owl:DataProperty)
* properties may be a rdfs:subPropertyOf of another property
* properties may have one or more rdfs:Domain
* properties may have one or more rdfs:Range## Other OWL capabilities (cardinality etc)
* Ontologies may include other constraints and definitions (e.g. owl:disjointWith)
* properties may use cardinality constraints
* these constraints must be application-independent (use constraints in SHACL instead)
* note that cardinality is OWL may not work as expected: it is used in reasoning, not in enforcing (use cardinality in SHACL instead).## Reuse of ontologies, classes and properties
* Reusing existing ontologies instead of creating a new one is highly encouraged, a list of existing ontologies can be found on [LOV](https://lov.okfn.org)
* Reusing properties in different classes is encouraged (properties are not tied to a specific class)
* Existing ontologies may be reused in part (only some classes, properties) or as a whole
* It is not permitted to change/redefine existing properties (e.g. change rdfs:Domain or rdfs:Range), create a rdfs:subPropertyOf instead
* It is not permitted to change/redefine existing classes, create a rdfs:subClassOf instead
* Reused properties and classes that are not subclasses/subproperties should not be defined in the new ontology (must be part of SHACL validation instead)## Example of reasoning vs enforcing cardinality
Although cardinality is often used in OWL to document constraints, it may have unexpected side-effects.
OWL was designed for reasoning (making assumptions about things that are not explicitly mentioned in the data)E.g.
* if there is a constraint that an instance of type "Phone" can only have one "owner" of type "Person"
* and the data mentions that persons "Mike" and "Anna" are both the owner of a specific phone
* and there is no additional info about "Mike" and "Anna"
* a reasoner can conclude that "Mike" is the same person as "Anna"## Example of properties not belonging to classes
In a similar way, properties don't belong to specific classes (unlike most OO-programming languages),
but a reasoner can use domains and ranges to make assumptions about the classes.E.g.
* if there is a property "hasAuthor" with domain "Book" and range "Person"
* and there "Hamlet" "hasAuthor" "Shakespeare"
* and there is not additional info
* a reasoner can conclude that "Hamlet" is a book and "Shakespeare" a Person