# HG changeset patch # User ymh # Date 1377969646 -7200 # Node ID 52fa6990e0bbf67d98186d4c2cbd32a500fa7991 # Parent 6296aa12fd71817f4c7eb7b0393cf0d339991d17 adapt model to new rdf serialization diff -r 6296aa12fd71 -r 52fa6990e0bb src/p4l/config.py.tmpl --- a/src/p4l/config.py.tmpl Fri Aug 30 17:58:35 2013 +0200 +++ b/src/p4l/config.py.tmpl Sat Aug 31 19:20:46 2013 +0200 @@ -135,3 +135,7 @@ } } +NB_RECORDS_BY_PAGE = 20 +SPARQL_QUERY_ENDPOINT = "http://localhost:8080/openrdf-sesame/repositories/plan4learning" + + diff -r 6296aa12fd71 -r 52fa6990e0bb src/p4l/management/commands/import_record.py --- a/src/p4l/management/commands/import_record.py Fri Aug 30 17:58:35 2013 +0200 +++ b/src/p4l/management/commands/import_record.py Sat Aug 31 19:20:46 2013 +0200 @@ -139,21 +139,22 @@ record.notes = self.extract_single_value_form_graph(graph,"SELECT DISTINCT ?o WHERE { ?s iiep:notes ?o .}", bindings={'s':URIRef(record.uri)}) record.recordType = self.extract_single_value_form_graph(graph,"SELECT DISTINCT ?o WHERE { ?s dct:type ?o .}", bindings={'s':URIRef(record.uri)}) record.isDocumentPart = self.extract_single_value_form_graph(graph,"SELECT DISTINCT ?o WHERE { ?s iiep:isDocumentPart ?o .}", bindings={'s':URIRef(record.uri)}, convert=self.convert_bool) + record.isMultilingual = self.extract_single_value_form_graph(graph,"SELECT DISTINCT ?o WHERE { ?s iiep:isMultilingual ?o .}", bindings={'s':URIRef(record.uri)}, convert=self.convert_bool) record.editionStatement = self.extract_single_value_form_graph(graph,"SELECT DISTINCT ?o WHERE { ?s iiep:editionStatement ?o .}", bindings={'s':URIRef(record.uri)}) language = self.extract_single_value_form_graph(graph,"SELECT DISTINCT ?o WHERE { ?s dct:language ?o .}", bindings={'s':URIRef(record.uri)}) if language: - record.language, _ = Language.objects.get_or_create(language=language) + record.language, _ = Language.objects.get_or_create(uri=language) record.save() - self.add_to_related_collection(record.otherLanguages, graph, ['language'], "SELECT ?o WHERE { ?s iiep:otherLanguage ?o .}", bindings={'s':URIRef(record.uri)}) - self.add_to_related_collection(record.subjects, graph, ['subject'], "SELECT ?o WHERE { ?s dct:subject ?o .}", bindings={'s':URIRef(record.uri)}) - self.add_to_related_collection(record.themes, graph, ['theme'], "SELECT ?o WHERE { ?s iiep:theme ?o .}", bindings={'s':URIRef(record.uri)}) - self.add_to_related_collection(record.countries, graph, ['country'], "SELECT ?o WHERE { ?s iiep:country ?o .}", bindings={'s':URIRef(record.uri)}) + self.add_to_related_collection(record.otherLanguages, graph, ['uri'], "SELECT ?o WHERE { ?s iiep:otherLanguage ?o .}", bindings={'s':URIRef(record.uri)}) + self.add_to_related_collection(record.subjects, graph, ['uri'], "SELECT ?o WHERE { ?s dct:subject ?o .}", bindings={'s':URIRef(record.uri)}) + self.add_to_related_collection(record.themes, graph, ['uri'], "SELECT ?o WHERE { ?s iiep:theme ?o .}", bindings={'s':URIRef(record.uri)}) + self.add_to_related_collection(record.countries, graph, ['uri'], "SELECT ?o WHERE { ?s iiep:country ?o .}", bindings={'s':URIRef(record.uri)}) self.add_to_related_collection(record.authors, graph, ['name'], "SELECT ?o WHERE { ?s iiep:author ?o .}", bindings={'s':URIRef(record.uri)}) self.add_to_related_collection(record.subjectPersons, graph, ['name'], "SELECT ?o WHERE { ?s iiep:subjectPerson ?o .}", bindings={'s':URIRef(record.uri)}) - self.add_to_related_collection(record.projectNames, graph, ['label','acronym'], "SELECT ?l ?a WHERE { [ iiep:projectName ?bnode ]. ?bnode rdfs:label ?l. OPTIONAL { ?bnode iiep:acronym ?a } }") + self.add_to_related_collection(record.projectNames, graph, ['uri'], "SELECT ?o WHERE { ?s iiep:projectName ?o . }") self.add_to_related_collection( record.periodicals, @@ -184,8 +185,9 @@ self.add_to_related_collection( record.subjectCorporateBodies, graph, - ['label', 'acronym'], - "SELECT ?l ?a WHERE { [iiep:subjectCorporateBody ?bnode]. OPTIONAL { ?bnode rdfs:label ?l }. OPTIONAL { ?bnode iiep:acronym ?a } }", + ['uri'], + "SELECT ?o WHERE { ?s iiep:subjectCorporateBody ?o. }", + bindings={'s':URIRef(record.uri)} ) self.add_to_related_collection( @@ -199,8 +201,9 @@ self.add_to_related_collection( record.corporateAuthors, graph, - ['label', 'acronym'], - "SELECT ?l ?a WHERE { [iiep:corporateAuthor ?bnode]. OPTIONAL { ?bnode rdfs:label ?l }. OPTIONAL { ?bnode iiep:acronym ?a } }", + ['uri'], + "SELECT ?o WHERE { ?s iiep:corporateAuthor ?o.}", + bindings={'s':URIRef(record.uri)} ) self.add_to_related_collection( diff -r 6296aa12fd71 -r 52fa6990e0bb src/p4l/models/__init__.py --- a/src/p4l/models/__init__.py Fri Aug 30 17:58:35 2013 +0200 +++ b/src/p4l/models/__init__.py Sat Aug 31 19:20:46 2013 +0200 @@ -3,11 +3,11 @@ 'Subject', 'Theme', 'Country', 'Isbn','Issn', 'DocumentCode', 'Language', 'Title', 'AddedTitle', 'TitleMainDocument', 'Abstract' 'Collation', 'VolumeIssue', 'Author', 'SubjectPerson', 'Periodical', - 'Meeting', 'SubjectMeeting', 'CorporateBody', 'Record', 'User'] + 'Meeting', 'SubjectMeeting', 'Record', 'User'] from p4l.models.data import (Imprint, Serie, ProjectName, CorporateAuthor, Url, Subject, Theme, Country, Isbn, Issn, DocumentCode, Language, Title, AddedTitle, TitleMainDocument, Abstract, Collation, VolumeIssue, Author, - SubjectPerson, Periodical, Meeting, SubjectMeeting, CorporateBody, Record) + SubjectPerson, Periodical, Meeting, SubjectMeeting, Record) from p4l.models.user import User \ No newline at end of file diff -r 6296aa12fd71 -r 52fa6990e0bb src/p4l/models/data.py --- a/src/p4l/models/data.py Fri Aug 30 17:58:35 2013 +0200 +++ b/src/p4l/models/data.py Sat Aug 31 19:20:46 2013 +0200 @@ -18,6 +18,7 @@ class ProjectName(P4lModel): + uri = models.URLField(max_length=2048, unique=True, db_index=True) label = models.CharField(max_length=2048, blank=False, null=False, db_index=True) acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym class Meta(P4lModel.Meta): @@ -25,10 +26,11 @@ class CorporateAuthor(P4lModel): - record = models.ForeignKey('p4l.Record', related_name="corporateAuthors", db_index=True) - label = models.CharField(max_length=2048, blank=False, null=False, db_index=True) - acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym - + uri = models.URLField(max_length=2048, unique=True, db_index=True) + label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) + acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym + class Meta(P4lModel.Meta): + unique_together = ['label','acronym'] class Url(P4lModel): record = models.ForeignKey('p4l.Record', related_name="urls", db_index=True) @@ -38,16 +40,16 @@ class Subject(P4lModel): - subject = models.URLField(max_length=2048, unique=True, db_index=True) + uri = models.URLField(max_length=2048, unique=True, db_index=True) label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import class Theme(P4lModel): - theme = models.URLField(max_length=2048, unique=True, db_index=True) + uri = models.URLField(max_length=2048, unique=True, db_index=True) label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import class Country(P4lModel): - country = models.URLField(max_length=2048, unique=True, db_index=True) + uri = models.URLField(max_length=2048, unique=True, db_index=True) label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import @@ -65,11 +67,9 @@ documentCode = models.CharField(max_length=128) #iiep:issn class Language(P4lModel): - language = models.URLField(max_length=2048, unique=True, db_index=True) + uri = models.URLField(max_length=2048, unique=True, db_index=True) label = models.CharField(max_length=2048, blank=True, null=True, db_index=True) # filled from sparql request after import - - class BaseTitle(P4lModelLang): title = models.CharField(max_length=2048, blank=False, null=False, db_index=True) class Meta(P4lModelLang.Meta): @@ -137,12 +137,6 @@ record = models.ForeignKey('p4l.Record', related_name="subjectMeetings", db_index=True) -class CorporateBody(P4lModel): - label = models.CharField(max_length=2048, blank=False, null=False, db_index=True) #rdfs:label - acronym = models.CharField(max_length=2048, blank=True, null=True, db_index=True) #iiep:acronym - class Meta(P4lModel.Meta): - unique_together = ['label','acronym'] - class Record(P4lModel): uri = models.URLField(max_length=2048, unique=True, db_index=True) #subject subjects = models.ManyToManyField('p4l.Subject') #dct:subject # Thesaurus with no country @@ -169,12 +163,14 @@ #series = foreign key from 'p4l.Serie' #iiep:serie #authors = foreign key from 'p4l.Author' #iiep:author #subjectPersons = foreign key from 'p4l.SubjectPerson' #iiep:subjectPerson - subjectCorporateBodies = models.ManyToManyField('p4l.CorporateBody') #iiep:subjectCorporateBody # Organisation ? + subjectCorporateBodies = models.ManyToManyField('p4l.CorporateAuthor', related_name='recordsSubjectCorporateBody') #iiep:subjectCorporateBody #subjectMeetings = foreign key from 'p4l.SubjectMeeting' #iiep:subjectMeeting - #corporateAuthors = foreign key from 'p4l.CorporateAuthor' #iiep:corporateAuthor # Organisation ? + corporateAuthors = models.ManyToManyField('p4l.CorporateAuthor', related_name='recordsCorporateAuthor') #iiep:subjectCorporateBody #urls foreign Key from Url #iiep:url recordType = models.URLField(max_length=2048) #dct:type + isDocumentPart = models.BooleanField() #iiep:isDocumentPart + isMultilingual = models.BooleanField() #iiep:isMultilingual def __unicode__(self): return "Record id %s { identifier: %s, uri: %s, editionStatement: %s, recordType: %s, isDocumentPart: %s, notes: %s, language : %s}" \