Commit 2d297a9b authored by Andrei Popescu's avatar Andrei Popescu
Browse files

skeleton for general traversal in traverse.ts

parent 83b35e81
Pipeline #56414 passed with stage
in 25 seconds
......@@ -6,4 +6,5 @@ shacl.ttl
turtleTranslation.ttl
.json-schema-spec.txt
.paths.txt
.schemaToTS.ts
\ No newline at end of file
.schemaToTS.ts
.schema-traverse.ts
\ No newline at end of file
const traverse = require("@json-schema-tools/traverse").default;
//import traverse from "@json-schema-tools/traverse"
const mySchema =
{
$schema: "http://json-schema.org/draft-07/schema",
$id: "https://github.com/NABSA/gbfs/blob/v1.0/gbfs.md#free_bike_statusjson",
description: "Describes the vehicles that are available for rent (as of v2.1-RC2).",
type: "object",
properties: {
last_updated: {
description: "Last time the data in the feed was updated in POSIX time.",
type: "integer",
minimum: 0,
maximum: 1924988399
},
ttl: {
description: "Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).",
type: "integer",
minimum: 0
},
data: {
description: "Array that contains one object per bike as defined below.",
type: "object",
properties: {
bikes: {
type: "array",
items: {
type: "object",
properties: {
bike_id: {
description: "Rotating (as of v2.0) identifier of a vehicle.",
type: "string"
},
lat: {
description: "The latitude of the vehicle.",
type: "number",
minimum: -90,
maximum: 90
},
lon: {
description: "The longitude of the vehicle.",
type: "number",
minimum: -180,
maximum: 180
},
is_reserved: {
description: "Is the vehicle currently reserved?",
oneOf: [{ "type": "boolean" }, { "type": "number" }]
},
is_disabled: {
description: "Is the vehicle currently disabled (broken)?",
oneOf: [{ "type": "boolean" }, { "type": "number" }]
}
},
required: ["bike_id", "lat", "lon", "is_reserved", "is_disabled"]
}
}
},
required: ["bikes"]
}
},
required: ["last_updated", "ttl", "data"]
};
const schema2 = {
"prefix": "sdm",
"jsonObjects": {
"sdm:Battery": "allOf",
"sdm:Type": "type",
"sdm:RefDevice": "refDevice",
"sdm:Status": "status",
"sdm:CycleLife": "cycleLife",
"sdm:AutonomyTime": "autonomyTime",
"sdm:RechargeTime": "rechargeTime",
"sdm:AcPowerInput": "acPowerInput",
"sdm:AcPowerOutput": "acPowerOutput",
"sdm:DcPowerInput": "dcPowerInput",
"sdm:DcPowerOutput": "dcPowerOutput"
},
"sources": {
"./SmartDataModels/battery.json": "sdm:Battery"
},
"shaclTargets": {
"sdm:Battery": ""
},
"shaclRoot": "",
"prefixes": {
"sdm": "https://smart-data-models.github.io/dataModel.Energy/ThreePhaseAcMeasurement/terms",
"schema": "http://schema.org/#",
"ebucore": "http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"foaf": "http://xmlns.com/foaf/0.1/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"dcterms": "http://purl.org/dc/terms/",
"vs": "http://www.w3.org/2003/06/sw-vocab-status/ns#",
"geo": "http://www.w3.org/2003/01/geo/wgs84_pos#",
"vann": "http://purl.org/vocab/vann/",
"owl": "http://www.w3.org/2002/07/owl#",
"jsonsc": "https://www.w3.org/2019/wot/json-schema#",
"airs": "https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#",
"vso": "http://purl.org/vso/ns#",
"dbpedia-owl": "http://dbpedia.org/ontology/"
},
"terms": {
"description":"dcterms:description",
"type": "rdf:type",
"last_updated": "dcterms:modified" ,
"url": "schema:url",
"summary": "ebucore:summary",
"name": "foaf:name",
"short_name": "rdfs:label",
"lat": "geo:lat",
"lon": "geo:long",
"cross_street": "airs:locatedAtCrossStreet",
"post_code": "dbpedia-owl:postalCode",
"capacity": "dbpedia-owl:capacity",
"creditcard": "schema:CreditCard",
"phone": "foaf:phone",
"car": "schema:car"
},
"creators": {
"creator1": "https://pietercolpaert.be/#me",
"creator2": "https://www.linkedin.com/in/andrei-popescu/"
}
};
traverse(mySchema, (schemaOrSubschema) => {
console.log(schemaOrSubschema.title);
});
var traverse = require('json-schema-traverse');
var schema = {
properties: {
foo: { type: 'string' },
bar: { type: 'integer' }
}
};
var cb;
var pre;
var post;
traverse(schema, { cb: cb });
// cb is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
// Or:
//traverse(schema, {cb: {pre, post}});
// pre is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
//
// post is called 3 times with:
// 1. {type: 'string'}
// 2. {type: 'integer'}
// 3. root schema
const traverse = require('json-schema-traverse');
const schema = {
properties: {
foo: {type: 'string'},
bar: {type: 'integer'}
}
};
let cb:any;
let pre:any;
let post:any;
traverse(schema, {cb});
// cb is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
// Or:
//traverse(schema, {cb: {pre, post}});
// pre is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
//
// post is called 3 times with:
// 1. {type: 'string'}
// 2. {type: 'integer'}
// 3. root schema
\ No newline at end of file
......@@ -15,10 +15,9 @@
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/versions> rdf:type foaf:Document;
rdfs:comment "Lists all feed endpoints published according to version sof the GBFS documentation. (added in v1.1)"@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/versions#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:version rdfs:range xsd:string;
rdfs:label "The semantic version of the feed in the form X.Y"@en;
owl:oneOf (<1.1> <2.0> <2.1> <2.2> <2.3-RC>).
<sdm:rental_methods> owl:oneOf (<key> <creditcard> <paypass> <applepay> <androidpay> <transitcard> <accountnumber> <phone>).
<sdm:station_area> rdfs:hasProperty (<type> <coordinates>).
<sdm:rental_uris> rdfs:hasProperty (<android> <ios> <web>).
<sdm:stations> rdfs:hasProperty (<station_id> <name> <short_name> <lat> <lon> <address> <cross_street> <region_id> <post_code> <rental_methods> <is_virtual_station> <station_area> <capacity> <vehicle_capacity> <is_valet_station> <is_charging_station> <rental_uris> <vehicle_type_capacity>).
<sdm:data> rdfs:hasProperty (<stations>).
<sdm:schema> rdfs:hasProperty (<last_updated> <ttl> <version> <data>).
......@@ -15,7 +15,3 @@
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/regions> rdf:type foaf:Document;
rdfs:comment "Describes regions for a system that is broken up by geographic or political region."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/regions#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
@prefix gbfs: <https://w3id.org/gbfs/terms>.
@prefix schema: <http://schema.org/#>.
@prefix ebucore: <http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix vann: <http://purl.org/vocab/vann/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix jsonsc: <https://www.w3.org/2019/wot/json-schema#>.
@prefix airs: <https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#>.
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/alerts> rdf:type foaf:Document;
rdfs:comment "Describes ad-hoc changes to the system."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/alerts#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:type owl:oneOf (<SYSTEM_CLOSURE> <STATION_CLOSURE> <STATION_MOVE> <OTHER>).
gbfs:times rdf:type rdf:Property;
rdfs:range gbfs:Times.
gbfs:Times rdf:type rdfs:Class.
gbfs:times rdfs:label "Array of objects indicating when the alert is in effect."@en.
gbfs:properties rdf:type rdf:Property;
rdfs:range gbfs:Properties.
gbfs:Properties rdf:type rdfs:Class.
gbfs:properties rdfs:label "Array of objects indicating when the alert is in effect."@en.
gbfs:station_ids rdf:type rdf:Property;
rdfs:range gbfs:Station_ids.
gbfs:Station_ids rdf:type rdfs:Class.
gbfs:station_ids rdfs:label "Array of identifiers of the stations for which this alert applies."@en.
gbfs:region_ids rdf:type rdf:Property;
rdfs:range gbfs:Region_ids.
gbfs:Region_ids rdf:type rdfs:Class.
gbfs:region_ids rdfs:label "Array of identifiers of the regions for which this alert applies."@en.
<https://w3id.org/gbfs/terms/> a sh:NodeShape;
sh:targetClass <https://w3id.org/gbfs/terms/alert>;
sh:property [
sh:path <times>;
sh:maxCount 1;
];
sh:property [
sh:path <properties>;
sh:maxCount 1;
];
sh:property [
sh:path <station_ids>;
sh:maxCount 1;
];
sh:property [
sh:path <region_ids>;
sh:maxCount 1;
];
@prefix gbfs: <https://w3id.org/gbfs/terms>.
@prefix schema: <http://schema.org/#>.
@prefix ebucore: <http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix vann: <http://purl.org/vocab/vann/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix jsonsc: <https://www.w3.org/2019/wot/json-schema#>.
@prefix airs: <https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#>.
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/bikes> rdf:type foaf:Document;
rdfs:comment "Describes the vehicles that are available for rent (as of v2.1-RC2)."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/bikes#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:is_reserved owl:oneOf (<boolean> <number>).
gbfs:is_disabled owl:oneOf (<boolean> <number>).
<https://w3id.org/gbfs/terms/> a sh:NodeShape;
sh:targetClass <https://w3id.org/gbfs/terms/bike>;
@prefix gbfs: <https://w3id.org/gbfs/terms>.
@prefix schema: <http://schema.org/#>.
@prefix ebucore: <http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix vann: <http://purl.org/vocab/vann/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix jsonsc: <https://www.w3.org/2019/wot/json-schema#>.
@prefix airs: <https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#>.
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/calendars> rdf:type foaf:Document;
rdfs:comment "Describes the operating calendar for a system."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/calendars#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:start_month rdfs:range xsd:integer;
rdfs:label "Starting month for the system operations."@en.
gbfs:start_day rdfs:range xsd:integer;
rdfs:label "Starting day for the system operations."@en.
gbfs:start_year rdfs:range xsd:integer;
rdfs:label "Starting year for the system operations."@en.
gbfs:end_month rdfs:range xsd:integer;
rdfs:label "End month for the system operations."@en.
gbfs:end_day rdfs:range xsd:integer;
rdfs:label "End day for the system operations."@en.
gbfs:end_year rdfs:range xsd:integer;
rdfs:label "End year for the system operations."@en.
<https://w3id.org/gbfs/terms/> a sh:NodeShape;
sh:targetClass <https://w3id.org/gbfs/terms/calendar>;
sh:property [
sh:path <start_month>;
sh:maxCount 1;
sh:datatype xsd:integer;
];
sh:property [
sh:path <start_day>;
sh:maxCount 1;
sh:datatype xsd:integer;
];
sh:property [
sh:path <start_year>;
sh:maxCount 1;
sh:datatype xsd:integer;
];
sh:property [
sh:path <end_month>;
sh:maxCount 1;
sh:datatype xsd:integer;
];
sh:property [
sh:path <end_day>;
sh:maxCount 1;
sh:datatype xsd:integer;
];
sh:property [
sh:path <end_year>;
sh:maxCount 1;
sh:datatype xsd:integer;
];
@prefix gbfs: <https://w3id.org/gbfs/terms>.
@prefix schema: <http://schema.org/#>.
@prefix ebucore: <http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix vann: <http://purl.org/vocab/vann/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix jsonsc: <https://www.w3.org/2019/wot/json-schema#>.
@prefix airs: <https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#>.
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/plans> rdf:type foaf:Document;
rdfs:comment "Describes the pricing schemes of the system."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/plans#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:plan_id rdfs:range xsd:string;
rdfs:label "Identifier of a pricing plan in the system."@en.
gbfs:currency rdfs:range xsd:string;
rdfs:label "Currency used to pay the fare in ISO 4217 code."@en.
gbfs:price rdfs:range xsd:integer;
rdfs:label "Fare price."@en.
gbfs:is_taxable rdfs:range xsd:boolean;
rdfs:label "Will additional tax be added to the base price?"@en.
gbfs:per_km_pricing rdf:type rdf:Property;
rdfs:range gbfs:Per_km_pricing.
gbfs:Per_km_pricing rdf:type rdfs:Class.
gbfs:per_km_pricing rdfs:label "Array of segments when the price is a function of distance travelled, displayed in kilometers (added in v2.1-RC2)."@en.
gbfs:required rdf:type rdf:Property;
rdfs:range gbfs:Required.
gbfs:Required rdf:type rdfs:Class.
gbfs:required rdfs:label "Array of segments when the price is a function of distance travelled, displayed in kilometers (added in v2.1-RC2)."@en.
gbfs:per_min_pricing rdf:type rdf:Property;
rdfs:range gbfs:Per_min_pricing.
gbfs:Per_min_pricing rdf:type rdfs:Class.
gbfs:per_min_pricing rdfs:label "Array of segments when the price is a function of time travelled, displayed in minutes (added in v2.1-RC2)."@en.
gbfs:surge_pricing rdfs:range xsd:boolean;
rdfs:label "Is there currently an increase in price in response to increased demand in this pricing plan? (added in v2.1-RC2)"@en.
<https://w3id.org/gbfs/terms/> a sh:NodeShape;
sh:targetClass <https://w3id.org/gbfs/terms/pricingPlan>;
sh:property [
sh:path <plan_id>;
sh:maxCount 1;
sh:datatype xsd:string;
];
sh:property [
sh:path <currency>;
sh:maxCount 1;
sh:datatype xsd:string;
];
sh:property [
sh:path <price>;
sh:maxCount 1;
sh:datatype xsd:float;
];
sh:property [
sh:path <is_taxable>;
sh:maxCount 1;
sh:datatype xsd:boolean;
];
sh:property [
sh:path <per_km_pricing>;
sh:maxCount 1;
];
sh:property [
sh:path <required>;
sh:maxCount 1;
];
sh:property [
sh:path <per_min_pricing>;
sh:maxCount 1;
];
sh:property [
sh:path <surge_pricing>;
sh:maxCount 1;
sh:datatype xsd:boolean;
];
<https://w3id.org/gbfs/terms/> a sh:NodeShape;
sh:targetClass <https://w3id.org/gbfs/terms/region>;
@prefix gbfs: <https://w3id.org/gbfs/terms>.
@prefix schema: <http://schema.org/#>.
@prefix ebucore: <http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix vann: <http://purl.org/vocab/vann/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix jsonsc: <https://www.w3.org/2019/wot/json-schema#>.
@prefix airs: <https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#>.
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/rental_hours> rdf:type foaf:Document;
rdfs:comment "Describes the system hours of operation."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/rental_hours#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:user_types rdf:type rdf:Property;
rdfs:range gbfs:User_types.
gbfs:User_types rdf:type rdfs:Class.
gbfs:user_types rdfs:label "Array of member and nonmember value(s) indicating that this set of rental hours applies to either members or non-members only."@en.
gbfs:User_types owl:oneOf (<member> <nonmember>).
gbfs:undefined owl:oneOf (<member> <nonmember>), (<member> <nonmember>).
gbfs:days rdf:type rdf:Property;
rdfs:range gbfs:Days.
gbfs:Days rdf:type rdfs:Class.
gbfs:days rdfs:label "An array of abbreviations (first 3 letters) of English names of the days of the week for which this object applies."@en.
gbfs:Days owl:oneOf (<sun> <mon> <tue> <wed> <thu> <fri> <sat>).
gbfs:undefined owl:oneOf (<sun> <mon> <tue> <wed> <thu> <fri> <sat>), (<sun> <mon> <tue> <wed> <thu> <fri> <sat>).
gbfs:start_time rdfs:range xsd:string;
rdfs:label "Start time for the hours of operation of the system."@en.
gbfs:end_time rdfs:range xsd:string;
rdfs:label "End time for the hours of operation of the system."@en.
<https://w3id.org/gbfs/terms/> a sh:NodeShape;
sh:targetClass <https://w3id.org/gbfs/terms/rentalHour>;
sh:property [
sh:path <user_types>;
sh:maxCount 1;
];
sh:property [
sh:path <days>;
sh:maxCount 1;
];
sh:property [
sh:path <start_time>;
sh:maxCount 1;
sh:datatype xsd:string;
];
sh:property [
sh:path <end_time>;
sh:maxCount 1;
sh:datatype xsd:string;
];
@prefix gbfs: <https://w3id.org/gbfs/terms>.
@prefix schema: <http://schema.org/#>.
@prefix ebucore: <http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>.
@prefix vann: <http://purl.org/vocab/vann/>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix jsonsc: <https://www.w3.org/2019/wot/json-schema#>.
@prefix airs: <https://raw.githubusercontent.com/airs-linked-data/lov/latest/src/airs_vocabulary.ttl#>.
@prefix vso: <http://purl.org/vso/ns#>.
@prefix dbpedia-owl: <http://dbpedia.org/ontology/>.
<https://w3id.org/sdm/terms/stations> rdf:type foaf:Document;
rdfs:comment "Details including system operator, system location, year implemented, URL, contact info, time zone."@en;
vann:preferredNamespaceUri "https://w3id.org/sdm/terms/stations#".
<https://w3id.org/sdm/terms/> dcterms:creator <https://pietercolpaert.be/#me>, <https://www.linkedin.com/in/andrei-popescu/>.
gbfs:address rdfs:range xsd:string;
rdfs:label "Address where station is located."@en.
gbfs:rental_methods rdf:type rdf:Property;
rdfs:range gbfs:Rental_methods.
gbfs:Rental_methods rdf:type rdfs:Class.
gbfs:rental_methods rdfs:label "Payment methods accepted at this station."@en.
gbfs:Rental_methods owl:oneOf (<key> schema:CreditCard <paypass> <applepay> <androidpay> <transitcard> <accountnumber> foaf:phone).
gbfs:undefined owl:oneOf (<key> schema:CreditCard <paypass> <applepay> <androidpay> <transitcard> <accountnumber> foaf:phone).
gbfs:enum rdf:type rdf:Property;
rdfs:range gbfs:Enum.
gbfs:Enum rdf:type rdfs:Class.
gbfs:enum rdfs:label "Payment methods accepted at this station."@en.
gbfs:Enum owl:oneOf (<key> schema:CreditCard <paypass> <applepay> <androidpay> <transitcard> <accountnumber> foaf:phone).
gbfs:is_virtual_station rdfs:range xsd:boolean;
rdfs:label "Is this station a location with or without physical infrastructure? (added in v2.1-RC)"@en.
gbfs:station_area rdf:type rdf:Property;
rdfs:range gbfs:Station_area.
gbfs:Station_area rdf:type rdfs:Class.
gbfs:station_area rdfs:label "A multipolygon that describes the area of a virtual station (added in v2.1-RC)."@en.
gbfs:coordinates rdf:type rdf:Property;
rdfs:range gbfs:Coordinates.
gbfs:Coordinates rdf:type rdfs:Class.