moviesToTurtle static method
Converts a list of movies to TTL format using proper RDF triples.
Implementation
static String moviesToTurtle(List<Movie> movies, String listName) {
final triples = <URIRef, Map<URIRef, dynamic>>{};
// Create the list resource.
final listResource = localNS.withAttr(listName);
triples[listResource] = {
rdfType: movieListType,
nameProperty: Literal(_escapeString(listName)),
};
// Add movie references to the list only if there are movies.
if (movies.isNotEmpty) {
final movieList =
movies.map((m) => localNS.withAttr('movie${m.id}')).toList();
triples[listResource]![moviesProperty] = movieList;
// Add individual movie definitions.
for (final movie in movies) {
final movieResource = localNS.withAttr('movie${movie.id}');
triples[movieResource] = {
rdfType: movieType,
identifier: Literal('${movie.id}', datatype: XSD.int),
name: Literal(_escapeString(movie.title)),
description: Literal(_escapeString(movie.overview)),
image: Literal(_escapeString(movie.posterUrl)),
thumbnailUrl: Literal(_escapeString(movie.backdropUrl)),
aggregateRating: Literal(
'${movie.voteAverage}',
datatype: XSD.double,
),
datePublished: Literal(
movie.releaseDate.toIso8601String(),
datatype: XSD.dateTime,
),
genre: Literal(movie.genreIds.join(',')),
};
}
}
// Define namespace bindings - only bind our custom namespaces.
final bindNamespaces = {'': localNS, 'schema': movieNS};
return tripleMapToTurtle(triples, bindNamespaces: bindNamespaces);
}