This repository has been archived by the owner on Feb 22, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ontology.py
112 lines (87 loc) · 4.04 KB
/
ontology.py
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
# pip install git+https://github.com/LvanWissen/RDFAlchemy.git
import rdflib
from rdflib import Dataset, ConjunctiveGraph, Graph, URIRef, Literal, XSD, Namespace, RDFS, BNode, OWL
from rdfalchemy import rdfSubject, rdfMultiple, rdfSingle
create = Namespace("https://data.create.humanities.uva.nl/")
schema = Namespace("http://schema.org/")
void = Namespace("http://rdfs.org/ns/void#")
foaf = Namespace("http://xmlns.com/foaf/0.1/")
dcterms = Namespace("http://purl.org/dc/terms/")
class Dataset(rdfSubject):
"""Dataset class, both a schema:Dataset and a void:Dataset.
Indicate at least:
* name (name of the dataset, str)
* description (detailed description (Markdown allowed), str)
See also: https://developers.google.com/search/docs/data-types/dataset
"""
rdf_type = void.Dataset, schema.Dataset
label = rdfMultiple(RDFS.label)
##########
# schema #
##########
name = rdfMultiple(schema.name)
description = rdfMultiple(schema.description)
alternateName = rdfMultiple(schema.alternateName)
creator = rdfMultiple(schema.creator,
range_type=(schema.Person, schema.Organization))
citation = rdfMultiple(schema.citation,
range_type=(Literal, schema.CreativeWork))
hasPart = rdfMultiple(schema.hasPart, range_type=(URIRef, schema.Dataset))
isPartOf = rdfSingle(schema.isPartOf, range_type=(URIRef, schema.Dataset))
identifier = rdfMultiple(schema.identifier,
range_type=(URIRef, Literal,
schema.PropertyValue))
keywords = rdfMultiple(schema.keywords, range_type=Literal)
licenseprop = rdfSingle(schema.license,
range_type=(URIRef, schema.CreativeWork))
sameAs = rdfMultiple(schema.sameAs, range_type=URIRef)
spatialCoverage = rdfMultiple(schema.spatialCoverage,
range_type=(Literal, schema.Place))
temporalCoverage = rdfMultiple(schema.temporalCoverage, range_type=Literal)
variableMeasured = rdfMultiple(schema.variableMeasured,
range_type=(Literal, schema.PropertyValue))
version = rdfMultiple(schema.sameAs, range_type=Literal)
url = rdfMultiple(schema.url, range_type=URIRef)
distribution = rdfMultiple(schema.distribution,
range_type=schema.DataDownload)
dateModified = rdfSingle(schema.dateModified)
image = rdfSingle(schema.image, range_type=URIRef)
########
# void #
########
dctitle = rdfMultiple(dcterms.title)
dcdescription = rdfMultiple(dcterms.description)
dccreator = rdfMultiple(dcterms.creator)
dcpublisher = rdfMultiple(dcterms.publisher)
dccontributor = rdfMultiple(dcterms.contributor)
dcsource = rdfSingle(dcterms.source)
dcdate = rdfSingle(dcterms.date)
dccreated = rdfSingle(dcterms.created)
dcissued = rdfSingle(dcterms.issued)
dcmodified = rdfSingle(dcterms.modified)
dataDump = rdfSingle(void.dataDump)
sparqlEndpoint = rdfSingle(void.sparqlEndpoint)
exampleResource = rdfSingle(void.exampleResource)
vocabulary = rdfMultiple(void.vocabulary)
triples = rdfSingle(void.triples)
inDataset = rdfSingle(void.inDataset)
subset = rdfMultiple(void.subset)
# I left out some very specific void properties.
class DataDownload(rdfSubject):
"""Class to point to a data dump download in the schema vocabulary.
Indicate at least:
* contentUrl (url to file)
* encodingFormat (MIME type, str)
"""
rdf_type = schema.DataDownload
contentUrl = rdfSingle(schema.contentUrl)
encodingFormat = rdfSingle(schema.encodingFormat)
class Linkset(Dataset):
"""Linkset class from the void vocabulary.
Indicate at least:
* target (2..*)
* linkPredicate (property used to link entities (e.g. owl:sameAs))
"""
rdf_type = void.Linkset, schema.Dataset
target = rdfMultiple(void.target, range_type=void.Dataset)
linkPredicate = rdfMultiple(void.linkPredicate, range_type=URIRef)