Creating New Collections - subL Help needed

Help
2008-09-28
2013-05-28
  • Chris Dzoba
    Chris Dzoba
    2008-09-28

    I'm trying to create a collection, and so far I've only been able to make Individuals.  Through the telnet API, I've been trying things such as:

    (fi-create "NCSU-Student")
    (create-constant "NCSU-Student")
    (cyc-create "NCSU-Student")

    These all appear to do the same thing: create an individual called NCSU-Student (NCSU stands for North Carolina State University, in case you didn't know).  However, I need NCSU-Student to be a collection, not an individual.  A collection is necessary because I'd like to have sub-collections of NCSU-Student such as NCSU-Physics-Student, NCSU-Computer-Science-Student, et cetera.  Eventually I'd like to have something like:

               Student
                     |
           NCSU-Student
           /                    \   
    CS-Student      Physics-Student
           |                           |
           Me                      You

    Where you and I are stored as individuals and everything else is a collection.  I can't find a way to do this, because as I've said everything I create is automatically an individual.  I've tried forcing an individual into being a collection with a statement such as:

    (fi-assert '(#$genls #$NCSU-Student #$Student) #$BaseKB)

    However I always get : Received response:%"500 \"Formula ".

    The only leads I have left are: am I creating it incorrectly, or am I possibly specifying the wrong knowledge base when I do the fi-assert.  That is, I wonder should I be using something other than #$BaseKB.

    What do you think?  Any experience in this area?

     
    • Laserblue
      Laserblue
      2008-10-03

      I suggest that it would be wise to forget about coding until you are more familiar with OpenCyc and have worked out a good model of what you want to do.
        Familiarize yourself with the OpenCyc Knowledge Browser by going through the documentation of the Welcome Screen and the QuickStart Walkthrough, running the browser and logging in as an adminisrator and new Cyclist.
        Step One: Find Relevant Constants - Do this for the 2 kittens in the example in the Quickstart Walkthrough and then for your own project. Don't stop your search with one constant but search broadly for anything that might have some relevance and note the organization of the knowledge base and follow interesting links. You can also search the Vocabulary for ideas (See link in lower left Window).
      E.g. #$University, #$Department, #$FieldOfStudy, #$Student, #$StudentOf, #$Set, #$Group, #$MemberOf, #$EnrolledIn, etc.

      Note that some constants appear in black type rather than purple because they were not released publicly. You could also search the Cyc Foundation Browser for ideas but must understand that some of the constants that appear may not be available in OpenCyc and you might have to create them yourself.

      Step Two: Create Constants for NCSU if it doesn't exist in the knowledge base and then for the students.

      Step Three: Create a single Practice Microtheory as done for the Kittens and make Assertions for the students and University.

      Step Four: Test your microtheory as per the kitten example. E.g. Ask if North Carolina State University is a University. Ask if student X is a student of North Carolina State University. Ask if student X is a student of the Physics department etc.

       
    • Laserblue
      Laserblue
      2008-10-04

      I went through the OpenCyc knowledge base and did a topic model kind of search of words related to Universities and University students and found lots of relevant constants, predicates and functions but no StudentFn or any example similar to "Bob is a chemistry student" or "RogerSchank was once a Yale Professor" or "John is a graduate of NCSU ". StudentOf looked promising but can it be used for an Organization as the teacher? One definition says the arguments have to be persons.
        So now I'm just as curious as Chris to know the best way for a Cyclist to create a collection of University students studying within specific fields of study at a specific University.
      I'm going through the tutorials on Collections, Functions and Predicates again but there seem to be lots of ways to do it. Could I create a new faceted collection of UniversityStudentType by AcademicDepartmentType, create a StudentStatusbyFieldofStudy function or create a collectionunion that intersects the sets of students and specific fields of study?

      If I create a StudentbyFieldofStudyFn, Will something like

      (genls
             (StudentbyFieldofStudyFn Physics) Student)

      work?
      ---------------------------------------------------------
      Use this?
      * Make a new facet with selected spec(s) as instances 
               New facet name: UniversityStudentTypeBy
               New facet type:  generic  strict  covering  partition 
      * Make selected spec(s) direct specs of specified collection or new spec
               Collection or new spec name: 
      * Add selected instance(s) to selected spec(s)

      I can easily make JohnDoe-NCSUStudent a person, PersonEnrolledInFn NorthCarolinaStateUniversity, UniversityStudent and an undergraduate student but how should one add [studentofComputerScience OfSpecificUniversity]?  

      Collection : EducationalOrganization
      Collection : University
      Collection : UniversityStudent
      Collection : Student
      Collection : PersonByStudentStatus
      Collection : StudentByEducationalOrganizationLevel
      Collection : FieldOfStudy
      Collection : PersonTypeByActivity

      Collection : CollectionType
      Collection : FacetingCollectionType

      Function : PersonEnrolledInFn
      Function : AttendingSchoolFn
      Function : GraduateFn
      Function : ProfessorFn
      Function : TeacherFn
      Function : FocalFieldOfStudyFn
      Function : SubcollectionOfWithRelationFromTypeFn
      Function : CollectionIntersection2Fn
      Function : GroupFn

      Predicate : schooling

      Individual : JamesBaker-NWUStudent

      University
      NorthCarolinaStateUniversity
      subOrganizations
      AcademicDepartmentTypeBySubject
      UniversityDepartment
      ComputerScienceDepartment
      PhysicsDepartment

      Person
      MaleHuman
      FemaleHuman
      AdultMaleHuman
      HomoSapiens
      EthnicGroupOfBlacksOfTheUS

      ComputerScientist
      HistoricHuman
      TemporalThing
      FamousHuman
      FinnishPerson vs. ((CitizenFn Finland)

      (genls
             (CitizenFn Finland) FinnishPerson)

      UnitedStatesPerson VS. (CitizenFn UnitedStatesOfAmerica)

      IndividualAgent
      Physicist
      LeftHandedHuman

      (genls
             (ProfessorFn Physics) Professor)

      (CollectionUnionFn (TheSet ...
      (BachelorsDegreeInFn FieldOfStudy)
      TeacherFn FieldOfStudy -->??? (StudentFn FieldOfStudy) ???
      (arg1Isa ProfessorFn FieldOfStudy)
      (arg2Isa fieldsOfFormalEducation FieldOfStudy)
      (arg1Isa PracticeFn FieldOfStudy)
      (isa ComputerScience FieldOfStudy)
      (isa
             (FieldAppliedToFn History-FieldOfStudy Physics) FieldOfStudy)

      (FieldAppliedToFn History-FieldOfStudy Physics)

      (InstanceWithRelationToFn

      prettyString Graduate "alumnus")

      Mt : UniversalVocabularyMt
      Mt : UniversityDataMt
      Mt : AcademicOrganizationMt
      Mt : PeopleMt
      Mt : PeopleDataMt
      Mt : TheSimpsonsMt