Skip to content

Instantly share code, notes, and snippets.

@labra
Last active June 21, 2022 16:22
Show Gist options
  • Save labra/bc9853f4bab277b6bf8d405ea5476288 to your computer and use it in GitHub Desktop.
Save labra/bc9853f4bab277b6bf8d405ea5476288 to your computer and use it in GitHub Desktop.
Conceptual Mapping draft schema
prefix cm: <http://vocab.linkeddata.es/def/conceptual-mapping#>
prefix cmf: <http://vocab.linkeddata.es/def/conceptual-mapping/functions_list/>
prefix cmp: <http://vocab.linkeddata.es/def/conceptual-mapping/protocols_list/>
prefix wotsec: <https://www.w3.org/2019/wot/security>
prefix def: <http://vocab.linkeddata.es/def>
prefix owl: <http://www.w3.org/2002/07/owl>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
prefix rdflicense: <http://purl.org/NET/rdflicense>
prefix terms: <http://purl.org/dc/terms>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema>
prefix vann: <http://purl.org/vocab/vann>
# prefix : <http://vocab.linkeddata.es/def/conceptual-mapping#> # Should need the # ???
prefix dc: <http://purl.org/dc/elements/1.1>
prefix dcat: <http://www.w3.org/ns/dcat#>
<StatementMap> {
cm:hasFrame @<Frame> ? ;
cm:subject @<NodeMap> ;
cm:predicate @<ReferenceNodeMap> ;
cm:object @<ResourceMap> ;
cm:hasDataType @<ListMap> OR @<ReferenceNodeMap> ? ;
cm:language @<LiteralMap> ?
}
<ReferenceNodeMap> extends @<NodeMap> {
a [ cm:ReferenceNodeMap ] ? ;
}
<BlankNodeMap> extends @<NodeMap> {}
<NodeMap> extends @<ResourceMap> {}
<LiteralMap> extends @<ResourceMap> {}
<ListMap> extends @<ResourceMap> {}
<ContainerMap> extends @<ResourceMap> {}
<BagMap> extends @<ContainerMap> {}
<AltMap> extends @<ContainerMap> {}
<SeqMap> extends @<ContainerMap> {}
<ConditionalStatement> extends @<StatementMap> {
cm:hasBooleanCondition @<FunctionExpression> + ;
}
<LinkingMap> extends @<StatementMap> {
cm:source @<StatementMap> ;
cm:target @<StatementMap> ;
cm:hasBooleanCondition @<FunctionExpression> * ;
cm:property @<ReferenceNodeMap> ;
cm:inverseProperty @<ReferenceNodeMap>
}
<ResourceMap> {
cm:hasEvaluableExpression @<EvaluableExpression>
}
<EvaluableExpression> {
}
<Constant> extends @<EvaluableExpression> {
cm:returns . ?
}
<Frame> {}
<SourceFrame> extends @<Frame> {
cm:expression xsd:string ;
cm:hasField @<DataField> * ;
cm:hasNestedFrame @<SourceFrame> ? ;
cm:hasDataSource @<DataSource> ? ;
}
<DataField> extends @<EvaluableExpression> {
cm:field xsd:string
}
<FunctionExpression> extends @<EvaluableExpression> {
cm:hasFunctionName . ; # @<SkosConcept>
cm:hasInput @<ExpressionList> ?
}
<ExpressionList> {
rdf:first @<EvaluableExpression> ;
rdf:rest @<ExpressionList> ;
}
<DataSource> extends @<Distribution> {
cm:encoding xsd:string ? ;
}
<Distribution> {
dcat:mediatype xsd:string ;
dcat:accessService @<DataService> *
}
<DataService> {
dcat:endpointURL xsd:string ; # Should be a URL ?
dcat:servesDataSet @<DataSet> *
}
<DataSet> {
dcat:distribution @<Distribution> *
}
<AsynchronousSource> extends @<DataSource> {
cm:refreshTime xsd:integer ;
}
<DataAccessService> extends @<DataService> {
cm:hasProtocol @<Protocol> ? ;
cm:hasSecurityScheme @<SecurityScheme> *
}
<SecurityScheme> {
a [ wotsec:APIKeySecurityScheme ] ;
wotsec:in xsd:string ;
wotsec:name xsd:string
}
<Protocol> [ cmp:https ]
prefix cm: <http://vocab.linkeddata.es/def/conceptual-mapping#>
prefix cmf: <http://vocab.linkeddata.es/def/conceptual-mapping/functions_list/>
prefix cmp: <http://vocab.linkeddata.es/def/conceptual-mapping/protocols_list/>
prefix wotsec: <https://www.w3.org/2019/wot/security>
prefix def: <http://vocab.linkeddata.es/def>
prefix owl: <http://www.w3.org/2002/07/owl>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
prefix rdflicense: <http://purl.org/NET/rdflicense>
prefix terms: <http://purl.org/dc/terms>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema>
prefix vann: <http://purl.org/vocab/vann>
prefix : <http://example.org/>
prefix dc: <http://purl.org/dc/elements/1.1>
prefix dcat: <http://www.w3.org/ns/dcat#>
prefix trans: <http://trans.com/>
:FrameRoute a cm:SourceFrame;
cm:expression "$.trips[*]";
cm:hasField :line_id;
cm:hasField :trip_headsign;
cm:hasNestedFrame [
cm:expression "route[*]";
cm:hasField :r_route_id;
cm:hasField :direction_id ];
cm:hasDataSource :ds .
:ds a cm:AsynchronousSource;
cm:refreshTime "300000"^^xsd:integer ;
dcat:mediatype "text/json";
dcat:accessService [
cm:hasProtocol cmp:https;
dcat:endpointURL "https://ex.com/transport/trips.json" ;
cm:hasSecurityScheme [ a wotsec:APIKeySecurityScheme;
wotsec:in "header";
wotsec:name "api_key"
];
] .
:FrameStop a cm:SourceFrame;
cm:hasField :s_route_id;
cm:hasField :stops_ids;
cm:hasField :start_time;
cm:hasDataSource [ a cm:SynchronousSource;
dcat:mediaType "text/csv";
dcat:accessService [
cm:hasProtocol cmp:file;
dcat:endpointURL "file:///user/data/route_stop.csv" ;
cm:hasSecurityScheme [ a wotsec:NoSecurityScheme; ] ;
] ;
] .
:FrameRouteStop a cm:JoinCombination;
cm:combinesFrame :FrameStop;
cm:combinesFrame :FrameRoute;
cm:joinsBy :s_route_id;
cm:joinsBy :r_route_id.
:s_route_id a cm:DataField; cm:field "route_id" .
:stops_ids a cm:DataField; cm:field "stops_ids" .
:start_time a cm:DataField; cm:field "start_time" .
:line_id a cm:DataField; cm:field "line_id" .
:trip_headsign a cm:DataField; cm:field "trip_headsign" .
:r_route_id a cm:DataField; cm:field "route_id" .
:direction_id a cm:DataField; cm:field "direction_id" .
:SubjectRoute a cm:ReferenceNodeMap ;
cm:hasEvaluableExpression [
cm:hasFunctionName cmf:concat;
cm:hasInput (
[ cm:returns "http://ex.com/route/" ]
:s_route_id )
] .
:StatementRoute1 a cm:StatementMap ;
cm:hasFrame :FrameRouteStop ;
cm:subject :SubjectRoute ;
cm:predicate [
a cm:ReferenceNodeMap;
cm:hasEvaluableExpression [cm:returns rdf:type
]
];
cm:object [
cm:hasEvaluableExpression [
cm:returns trans:Route
] ].
:StatementRoute2 a cm:StatementMap ;
cm:hasFrame :FrameRouteStop ;
cm:subject :SubjectRoute ;
cm:predicate [ a cm:ReferenceNodeMap;
cm:hasEvaluableExpression [
cm:returns trans:lineIdentifier
]
];
cm:object [ cm:hasEvaluableExpression [cm:returns :line_id] ].
:StatementRoute3 a cm:StatementMap ;
cm:hasFrame :FrameRouteStop ;
cm:subject :SubjectRoute ;
cm:predicate [ a cm:ReferenceNodeMap;
cm:hasEvaluableExpression [cm:returns trans:tripHeadsign ] ];
cm:object [ cm:hasEvaluableExpression [cm:returns :trip_headsign] ];
cm:language [ cm:hasEvaluableExpression [cm:returns "es"] ].
:StatementRoute4 a cm:StatementMap ;
cm:hasFrame :FrameRouteStop ;
cm:subject :SubjectRoute ;
cm:predicate [ a cm:ReferenceNodeMap;
cm:hasEvaluableExpression [cm:returns trans:startTime ] ];
cm:object [ cm:hasEvaluableExpression [cm:returns :start_time] ];
cm:datatype [ cm:hasEvaluableExpression [cm:returns xsd:Time] ].
:StatementRoute5 a cm:StatementMap ;
cm:hasFrame :FrameRouteStop ;
cm:subject :SubjectRoute ;
cm:predicate [ a cm:ReferenceNodeMap;
cm:hasEvaluableExpression [cm:returns trans:stopIdentifier ] ];
cm:object [ a cm:ListMap; cm:hasEvaluableExpression :city_ns ].
:city_ns a cm:FunctionExpression ;
cm:functionName cmf:split ;
cm:hasInput ( :stop_ids ";") .
:StatementRoute6 a cm:StatementMap ;
cm:hasFrame :FrameRouteStop ;
cm:subject :SubjectRoute ;
cm:predicate [ a cm:ReferenceNodeMap;
cm:hasEvaluableExpression [cm:returns trans:tripIdentifier ] ];
cm:object [ cm:hasEvaluableExpression :trip_id ].
:trip_id a cm:FunctionExpression;
cm:hasFunctionName cmf:concat;
cm:hasInput (
:s_route_id
[cm:returns "_"]
:direction_id
[ cm:returns "_" ]
:start_time ) .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment