adapt model to new rdf serialization
authorymh <ymh.work@gmail.com>
Sat, 31 Aug 2013 19:20:46 +0200
changeset 14 52fa6990e0bb
parent 13 6296aa12fd71
child 15 be595253ced5
adapt model to new rdf serialization
src/p4l/config.py.tmpl
src/p4l/management/commands/import_record.py
src/p4l/models/__init__.py
src/p4l/models/data.py
--- 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"
+
+
--- 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(
--- 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
--- 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}" \