Public:Bwmeta service/Tutorial

From YaddaWiki

(Difference between revisions)
Jump to: navigation, search
Line 82: Line 82:
-
         
+
Now definition of some strange element called structure. It is very important element. It defines hierarchy to which specified element belongs to.  It also defines element level and element parents.
 +
Because element could be anything this place defines its nature. Our element is article and therfor ebelongs to hierarchy journal.
 +
 
 +
 
             YStructure struct=new YStructure(YConstants.EXT_HIERARCHY_JOURNAL);
             YStructure struct=new YStructure(YConstants.EXT_HIERARCHY_JOURNAL);
              
              

Revision as of 20:55, 28 February 2013

Service details
NameBWmeta
Code location
(relative to SVN root)
projects/dir/bwmeta-core
Javadoc
Contact personJakub Jurkiewicz

This page describes how to create completly new bwmeta docuemnt using Y model. Docuemnt described in this example describes some article.

After setting all libraries, getting all imports, let's first create the new Empty YElement.

		YElement article = new YElement(); 

Elements are used for all bliographic objects - books, chapters, articles, journals etc...

When we got article let's assign id to it:

           article.setId("bwmeta1.element.element-form-pubmed-0000"/*PBMID*/+"22222");

Ids should be unique. They should be recognized by regexp: [A-Za-z0-9_./:@\-]+ Current practices applying to id are described here.


After setting id lets set title of article. For describing titles we use YName.

            YName nam=new YName();
            nam.setText("Tytuł artykułu");
            nam.setLanguage(YLanguage.English);
            nam.setType(YConstants.NM_CANONICAL);
//          nam.setType(YConstants.NM_SUBTITLE);
            article.addName(nam);
              

Name with type canonical for article is a main title. Additionally for article we could set sub and super title etc...

For defining keywords and setting unknown categorizations YTagList should be used.

           YTagList slowaKluczoweMim=new YTagList();
           slowaKluczoweMim.setType("slowa_kluczowe_mim");
           slowaKluczoweMim.setType(YConstants.TG_KEYWORD);
           slowaKluczoweMim.setLanguage(YLanguage.Polish);
           slowaKluczoweMim.addValue("ala");
           slowaKluczoweMim.setValues(null);
          

For define categories we use category-ref.

           article.addCategoryRef(new YCategoryRef(YConstants.EXT_CLASSIFICATION_MSC_2010, "67.23.+"));
           

There is a big question sometimes what to use - tag list or category ref. IN general category-refs should be used for categorization terms known in SYNAT system. While we identify them by codes, it is usually maeningless to put the code, that is not recognized in system. For all other types of categorization - and all tapes of keywords tag list should be used.

Now we describe contributor of the article:


           YContributor aut1=new YContributor(YConstants.CR_AUTHOR, false);
           aut1.addAffiliationRef("aff1");

Affiliation should be reference to some existing affiliation element inside this article.

           aut1.setRole(YConstants.CR_AUTHOR);

Other roles of contributor are: translator, editor, ilustrator etc...

           aut1.addName(new YName(YLanguage.Undetermined, "A.G. Drag",YConstants.NM_CANONICAL));

This should be the name in form that it apears on front page.

           aut1.addName(new YName(YLanguage.Undetermined, "A. G.", YConstants.NM_FORENAMES));
           aut1.addName(new YName(YLanguage.Undetermined, "Drag", YConstants.NM_SURNAME));

If author could be recognized by system - for eample if we can recognize other publications by same person, we could

           aut1.setIdentity("bwmeta1.person.person-000001"); 
           

Now lets define affiliation that contributor was referenced to.

          YAffiliation aff=new YAffiliation("aff1", "Uniwesytet Rzeszowski");
          aff.setText("Uniwesrystet Rzeszowski");
           

While we defined identity of person - here is example of this person element. It is not a part of article, but cotehy coul d be serialized together.

       /** Z boku osoba */    
           YPerson per=new YPerson();
           per.setId("bwmeta1.person.person-000001");
           per.addName(new YName(YLanguage.Undetermined, "Aleksandra Genofewa", YConstants.NM_FORENAMES));
           per.addName(new YName(YLanguage.Undetermined, "Drag-Kowalska", YConstants.NM_SURNAME));
         

Following code shows how to add abstract and summary to article.

           article.addDescription(new YDescription(YLanguage.English, "yadda yadda  ", YConstants.DS_ABSTRACT));
           article.addDescription(new YDescription(YLanguage.English, "yadda yadda  ", YConstants.DS_SUMMARY));
           

Below is shown method for adding citations.

           YRelation rel=new YRelation();
           rel.setType(YConstants.RL_REFERENCE_TO);
           rel.setTarget(new YId(YConstants.EXT_SCHEME_YADDA, "bwmeta1.element.element-docelowy-rel1"));
           rel.addAttribute(YConstants.AT_REFERENCE_TEXT, "text referencji 1");
           article.addRelation(rel);

YID set in target hasn;t to be YADDA id , it could be also doi , coden , etc...


Now definition of some strange element called structure. It is very important element. It defines hierarchy to which specified element belongs to. It also defines element level and element parents. Because element could be anything this place defines its nature. Our element is article and therfor ebelongs to hierarchy journal.


           YStructure struct=new YStructure(YConstants.EXT_HIERARCHY_JOURNAL);
           
           YAncestor anc=new YAncestor(YConstants.EXT_LEVEL_JOURNAL_JOURNAL);
       //    anc.setIdentity("bwmeta1.element.journal-issn-00000032324");
  
           anc.addName(new YName(YLanguage.English,"Journal of bibliography learning",YConstants.NM_CANONICAL));
           struct.addAncestor(anc);
           
           YAncestor anc2=new YAncestor(YConstants.EXT_LEVEL_JOURNAL_YEAR);
           //    anc2.setIdentity("bwmeta1.element.year-00000032324-2000");
  
           anc2.addName(new YName("2000"));
           struct.addAncestor(anc2);
           
           
           YCurrent current=new YCurrent(YConstants.EXT_LEVEL_JOURNAL_ARTICLE);
           current.setPosition("p.1-20");
           struct.setCurrent(current);
           
           article.addStructure(struct);
           
          
           // jak zapisać  alternatywnie dla potrzbe przyszłego przetwarzania
           YAttribute st=new YAttribute("SOURCE", "JOU. B. LEARN.");            
           article.addAttribute(st);
           
           YDate dat=new YDate(YConstants.DT_PUBLISHED, 2000, 1, 12, "druga połowa XX wieku");
           article.addDate(dat);
Personal tools