Skip to content

severus21/RDFSerializer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RDFSerializer

Examples:

class PubOrigin(models.Model):
    url = models.URLField(unique=True, db_index=True)
    
class PubAuthor(models.Model):
    name = models.CharField(max_length=256)

class PubPublisher(models.Model):
    name = models.CharField(max_length=1024, unique=True, db_index=True)
    href = models.URLField(blank=True, null=True)

    def __str__(self):
        return str(self.name)

class Publication(models.Model):
    title = models.CharField(max_length=1024, blank=True, null=True)
    authors = models.ManyToManyField(PubAuthor)
    journal = models.ForeignKey(PubJournal, blank=True, null=True, on_delete=models.DO_NOTHING)
    publisher = models.ForeignKey(PubPublisher, blank=True, null=True, on_delete=models.DO_NOTHING)
    published = models.DateField(blank=True, null=True)
    summary = models.TextField(default="", blank=True, null=True)
    origins = models.ManyToManyField(PubOrigin)
class PublicationRDFSerializer(RDFModelSerialiser):
    _type = SCHEMA.Article
    model = Publication
    uri = reverse('publications:details')
    entries = [
        RDFSimpleField(SCHEMA.name, 'title'),
        RDFManyField(SCHEMA.authors, 'authors', lambda _obj: _obj.name),
        RDFSimpleField(SCHEMA.datePublished, 'published'),
        RDFSimpleField(SCHEMA.publisher, 'publisher'),
        RDFSimpleField(SCHEMA.description, 'summary'),
        RDFManyField(SCHEMA.sameAs, 'origins', lambda _obj: _obj.url),
        RDFLeftBinder(SCHEMA.isPartOf, 'journal', OriginRDFSerializer)
    ]  

About

A small library to serialize Django models to RDF

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages