modelagem de dados semiestruturados com isis-dm
Post on 18-Dec-2014
300 Views
Preview:
DESCRIPTION
TRANSCRIPT
Modelagem de dados semiestruturados com ISIS-DM
Antonio Ribeiro - alvesjunior.antonio@gmail.comGustavo Fonseca - gustavofons@gmail.com
O modelo semiestruturado
Registro semiestruturado - XML<issue> <article> <pid>S0034-89101997000100004</pid> <author> <firstname>Sonia</firstname> <lastname>Buongermino de Souza</lastname> <role>ND</role> <affiliation> <orgname>A01</orgname> </affiliation> </author> <author> <firstname>Sophia</firstname> <lastname>Cornbluth Szarfarc</lastname> <role>ND</role> <affiliation> <orgname>A01</orgname> </affiliation> </author> <author> <firstname>José Maria</firstname> <lastname>Pacheco de Souza</lastname> <role>ND</role> <affiliation> <orgname>A02</orgname> </affiliation> </author> <title language="pt">Anemia no primeiro ano de vida em relação ao aleitamento materno</title>
<title language="en">Anemia in the first year of life and its relation to the breast-feeding</title> <pages> <first>15</first><last>20</last> </pages> <shorttitle>Rev. Saúde Pública</shorttitle> <volume>31</volume> <issueno>1</issueno> <issn>0034-8910</issn> <affiliation id="A01"> <orgname>Universidade de São Paulo</orgname> <department>Departamento de Nutrição da Faculdade de Saúde Pública</department> </affiliation> <affiliation id="A02"> <orgname>Universidade de São Paulo</orgname> <department>Departamento de Epidemiologia da Faculdade</department> </affiliation> <abstract language="pt">INTRODUÇÃO: Resultados de vários estudos permitem levantar a hipótese de que ...</abstract> <abstract language="en">INTRODUCTION: Many studies in this field justify the hypothesis that ...</abstract> </article></issue>
Registro semiestruturado - JSON{ "pid":S0034-89101997000100004, "authors":[{"firstname":"Sonia", "lastname":"Buongermino de Souza", "role":"ND", "affiliation":[{"orgname":"A01"}]}, {"firstname":"Sophia", "lastname":"Cornbluth Szarfarc", "role":"ND", "affiliation":[{"orgname":"A01"}]}, {"firstname":"José Maria", "lastname":"Pacheco de Souza", "role":"ND", "affiliation":[{"orgname":"A02"}]}], "titles":[{"title":"Anemia no primeiro ano de vida em relação ao aleitamento materno", "language":"pt"}, {"title":"Anemia in the first year of life and its relation to the breast-feeding", "language":"en"}], "pages":{"first":15, "last":20}, "shorttitle":"Rev. Saúde Pública", "volume":31, "issueno":1, "issn":"0034-8910", "affiliations":[{"id":"A01", "orgname":"Universidade de São Paulo", "department": "Departamento de Nutrição da Faculdade de Saúde Pública"}, {"id":"A02", "orgname":"Universidade de São Paulo", "department": "Departamento de Epidemiologia da Faculdade"}], "abstracts":[{"abstract": "INTRODUÇÃO: Resultados de vários estudos permitem levantar a hipótese de que ...", "language":"pt"}, {"abstract": "INTRODUCTION: Many studies in this field justify the hypothesis that ...", "language":"es"}] }
Registro ISISmfn= 3 10 "^rND^1A01^nSonia^sBuongermino de Souza" 10 "^rND^1A01^nSophia^sCornbluth Szarfarc" 10 "^rND^1A02^nJosé Maria^sPacheco de Souza" 12 "Anemia no primeiro ano de vida em relação ao aleitamento materno^lpt" 12 "Anemia in the first year of life and its relation to the breast-feeding^len" 14 "^f15^l20" 30 "Rev. Saúde Pública" 31 "31" 32 "1" 35 "0034-8910" 70 "Universidade de São Paulo^iA01^dDepartamento de Nutrição da Faculdade de Saúde Pública" 70 "Universidade de São Paulo^iA02^dDepartamento de Epidemiologia da Faculdade" 83 "^lpt^aINTRODUÇÃO: Resultados de vários estudos permitem levantar a hipótese de que ..." 83 "^len^aINTRODUCTION: Many studies in this field justify the hypothesis that ..."709 "article"880 "S0034-89101997000100004"
ISIS??? Je ne comprends pas!
http://www.eventos.bvsalud.org/agendas/isis3/activity.php?lang=pt&id=13
ISIS-NBP - Network Based Platform• isis2json.py: utilitário de conversão de bases ISIS para
o formato JSON;• ISIS-JSON: proposta de padronização da representação de
registros ISIS em formato JSON;• ISIS Data Model API (ISIS-DM): prova de conceito de
interface de programação (API) para definição de esquemas de dados ISIS independente de mecanismo de persistência;
• schematize.py: utilitário gerador de esquema de dados ISIS-DM a partir da análise de uma massa de dados existente
Retirado do trabalho de conclusão de curso do Luciano Ramalho, disponível em: <http://blog.ramgarlic.com/2010/12/por-que-bibliotecarios-usam-bancos-de.html>
ISIS-DM• Definição formal de esquema de dados;• Definição de tipos de atributos; • Definição de atributos obrigatórios; • Validação dos atributos;• Geração de formulários HTML (pylons.colander, pylons.deform);
• Integração facultativa com SGBDs documentais (Apache CouchDB, MongoDB etc).
Talk is cheap. Show me the code!!! from isis import model
choices = ['article', 'book', 'booklet', 'conference', 'inbook', 'incollection', 'inproceedings', 'manual', 'mastersthesis', 'misc','phdthesis', 'proceedings', 'techreport', 'unpublished', ]
class Bibitex(model.CouchdbDocument): entry_type = model.TextProperty(choices= [(entry,entry) for entry in choices],) reference_name = model.TextProperty(required=True) title = model.TextProperty(required=True) authors = model.MultiCompositeTextProperty(required=True, subkeys=['name', 'lastname']) publisher = model.TextProperty() year = model.TextProperty() address = model.TextProperty() review = model.TextProperty()
Talk is cheap. Show me the code!!! from isis import model
choices = ['article', 'book', 'booklet', 'conference', 'inbook', 'incollection', 'inproceedings', 'manual', 'mastersthesis', 'misc','phdthesis', 'proceedings', 'techreport', 'unpublished', ]
class Bibitex(model.CouchdbDocument): entry_type = model.TextProperty(choices= [(entry,entry) for entry in choices],) reference_name = model.TextProperty(required=True) title = model.TextProperty(required=True) authors = model.MultiCompositeTextProperty(required=True, subkeys=['name', 'lastname']) publisher = model.TextProperty() year = model.TextProperty() address = model.TextProperty() review = model.TextProperty()
Tipos de atributos até o momento
• TextProperty• MultiTextProperty• CompositeTextProperty• MultiCompositeTextProperty• BooleanProperty• FileProperty• ReferenceProperty• IsisCompositeTextProperty• MultiIsisCompositeTextProperty evil!
Using Pyramid Framework
def new(request): bibitex_form = BibitexForm.get_form()
if 'submit' in request.POST: controls = request.POST.items() try: appstruct = bibitex_form.validate(controls) except deform.ValidationFailure, e: return render_to_response('bibitex:form.pt', {'content': e.render()})
bibitex = Bibitex.from_python(appstruct) bibitex.save(db)
return Response('Saved under id: %s' % bibitex._id) else:
if 'id' in request.matchdict: #edit bibitex = Bibitex.get(db, request.matchdict['id']) return render_to_response('bibitex:form.pt', {'content': bibitex_form.render(bibitex.to_python())})
return render_to_response('bibitex:form.pt', {'content': bibitex_form.render()})
Using Pyramid Framework
def new(request): bibitex_form = BibitexForm.get_form()
if 'submit' in request.POST: controls = request.POST.items() try: appstruct = bibitex_form.validate(controls) except deform.ValidationFailure, e: return render_to_response('bibitex:form.pt', {'content': e.render()})
bibitex = Bibitex.from_python(appstruct) bibitex.save(db)
return Response('Saved under id: %s' % bibitex._id) else:
if 'id' in request.matchdict: #edit bibitex = Bibitex.get(db, request.matchdict['id']) return render_to_response('bibitex:form.pt', {'content': bibitex_form.render(bibitex.to_python())})
return render_to_response('bibitex:form.pt', {'content': bibitex_form.render()})
Using Pyramid Framework
def new(request): bibitex_form = BibitexForm.get_form()
if 'submit' in request.POST: controls = request.POST.items() try: appstruct = bibitex_form.validate(controls) except deform.ValidationFailure, e: return render_to_response('bibitex:form.pt', {'content': e.render()})
bibitex = Bibitex.from_python(appstruct) bibitex.save(db)
return Response('Saved under id: %s' % bibitex._id) else:
if 'id' in request.matchdict: #edit bibitex = Bibitex.get(db, request.matchdict['id']) return render_to_response('bibitex:form.pt', {'content': bibitex_form.render(bibitex.to_python())})
return render_to_response('bibitex:form.pt', {'content': bibitex_form.render()})
DEMO AO VIVO
Misturando as coisas...
http://github.com/bireme/scielobooks
Fork us
http://github.com/bireme/isisdm http://github.com/gustavofonsecahttp://github.com/alvesjnr
Obrigado!!!
top related