Open SN Specification Document 0.04.2 (c) copyright 2006-2007 FindMeOn.com, Inc. opensource@FindMeOn.com -------- Intro A few things about OpenSN Open SN ( Open Social Network ) is a machine readable data specification for standardizing social network profiles for import / export across sites Open SN is different than the FOAF and hCard specifications, in that Open SN is geared to map the common fields on social network , forum, and online dating sites -- not adhere to existing standards. Open SN does not take into account 'privileged' information -- like email address, postal address, telephone , etc -- nor is it meant to. Open SN is not meant as a replacement for FOAF or hCard, nor should it be mistaken for one. Open SN is an interchange format that doubles as a standalone format. Instead of trying to extend existing formats or coerce common profile data into them, OpenSN fields wrap the common elements into a semantically organized namespace. Virtually any profile format can be translated into OpenSN , and vice versa. Instead of writing multiple translators, data sets can just be read into or read from OpenSN documents. Open SN is mostly an intermediary format, but can essentially be used for semantic markup of profile elements, emulating a microformat Open SN takes into account awkward fields and design implementations: ie: Most online profiles feature a different subset of birth month, birth date, birth year or age -- OpenSN treats each field independantly. As such, each field can not be a standard timestamp, but instead a word/integer Open SN also allows for a zodiac sign without a birthdate. Open SN also requires supporting potentially unsafe content -- specifically , it must support javascript and flash formats that allow for cross site scripting (xss) attacks. This sounds stupid, but its actually smart -- different systems have different policies. Some allow for more lenient js/flash settings, other's don't. As an interchange format, OpenSN can not enforce its own standards onto a data entry. Because of this security concern, Open SN has 2 important render methods: Data provided in an Open SN raw feed / transport , must contain whatever the user submitted-- without any site policy restrictions to scrub/untaint/detoxify the input. This should be a non-issue, because it raw feeds are treated as text and not rendered. Data provided in an Open SN 'view' ( microformat style html ) can be limted/scrubbed by any site policies whatsoever. Adopters are encouraged to provided a raw feed in addition to a view, and discouraged from providing the html view in open sn markup if they do not provide a raw feed. We believe this policy promotes portability, while respecting the different security and html support protocols of each website. Open SN is primarily read only. If two accounts / urls can be linked together via a shared public key on a findmeon node or API, it could be relatively safe for one url to update against the other. Open SN also comes with a sample PostgreSQL database schema for creating standardized online profiles. Please note that the open sn schema is set to foreign key on a useraccount id --- find "XXXXXXXXXXXXXXXXXXXXXXX" for the field to replace The Open SN motto: Infer if you can, dumb down if you can't. -------- In short Why? People get sick of typing / copy+pasting the same information into several sites By reading/writing OpenSN, people can easily migrate and synchronize profiles from one website to another. Origins / Maintenance: In April 2006, RoadSound.com ( a syndicated collaborative content management system for the recording industry ) began to split out its identity verification and link management system to a seperate project, FindMeOn.com Since FindMeOn was already standardizing links and identities, taking a stab at profiles was the next step FindMeOn.com maintains ownership on the specification, but has released it as an open standard under the Creative Commons Attribution-No Derivative Works 2.5 License. The sample SQL schema is released under the MIT or BSD license. We can't remember which one, but they're pretty much the same. -------- Changes 0.04.2- basic_income was deprecated. it is now replaced by 3 fields basic_income_lo basic_income_hi basic_income_currency 0.04- integrated from findmeon.com : fields added: basic_body_type basic_displayname basic_headline basic_here_for basic_last_updated basic_realname_first basic_realname_last basic_pets_like basic_pets_dislike basic_pets_own basic_eyecare basic_body_art basic_living_situation interests_sports_and_exercise basic_useraccount_photo fields renamed: media -> misc_media_box field options added: relatinship_status: open relationship / swinger looking_to_meet Casual Encounters: Men Casual Encounters: Women Casual Encounters: Couples field-type changes: basic_looking_to_meet OPTION -> SET 0.03- integrated from findmeon.com : fields: looking_to_meet media resource resource_custom us_state renamed: companies -> work_experience 0.02- Added 'Preferences' Section using OpenID Simple Registration Fields Added CountryISO to LocationHistory Array entries -------- Under review 0.05 The following changes are under review for the .05 release : fields options add: hair: Grey, Platinum Blonde , Salt and Pepper , Silver , White , Blue/Green/Pink/Other fields add: willing to relocate ? languages spoken hair_length OPTION Long, Medium, Short , Crewcut, Shaved , Receding , Bald -------- Spec base resource TEXT 128 ( internal system id ) resource__custom TEXT 128 ( custom user-defined system id ) interests general TEXT 1000 : ',' separated values music TEXT 1000 : ',' separated values movies TEXT 1000 : ',' separated values television TEXT 1000 : ',' separated values books TEXT 1000 : ',' separated values heroes TEXT 1000 : ',' separated values affiliations TEXT 1000 : ',' separated values dislikes TEXT 1000 : ',' separated values sports_and_exercise TEXT 1000 : ',' separated values misc media TEXT 2000 : raw text/html basic realname TEXT 64 realname_first TEXT 64 realname_last TEXT 64 nickname TEXT 64 displayname TEXT 64 useraccount_photo TEXT 64 - full url ( http://AAAAAAA ) of photo location gender OPTION ( M , F ) age INTEGER birthdate_year INTEGER birthdate_month INTEGER birthdate_day INTEGER looking_to_meet SET ( Dating: Men , Dating: Women , Relationship: Men , Relationship: Women , Casual Encounters: Men , Casual Encounters: Women , Causal Encounters: Couples, Friends , Activity Partners , Looking Around ) ethnicity OPTION ( African Descent , Caucasian , Asian , East Indian , Hispanic / Latino , Middle Eastern , Native American , Pacific Islander ) hair OPTION Brunette, Blonde, Grey, Red eyes OPTION Brown, Blue, Green eyecare OPTION Glasses Contacts Either None height TEXT 5 height_units OPTION ( METRIC , 'ENGLISH TRADITIONAL' ) weight TEXT 5 weight_units OPTION ( METRIC , 'ENGLISH TRADITIONAL' ) zodiac OPTION ( Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Saggitarius,Capricorn,Aquarius,Pisces ) note: can be inferred from birthdate , or overridden specifically here ( if the birtdate is not shared ) occupation TEXT 64 member_since DATETIME last_login DATETIME last_updated DATETIME about_me TEXT 1000 who_i_want_to_meet TEXT 1000 headline TEXT 255 body_type OPTION Slim/Slender/Petite, Athletic , Body Builder , Average, A little more than average , A lot more than average , Obese body_art SET Tatoo: Always Visible , Tatoo: Often Visible , Tatoo: Strategic , Tatoo: Lots , Piercing: Ear , Piercing: Nose , Piercing: Navel , Piercing: Other , Piercing: Strategic , Piercing: Lots , Branding, Mutilation, Other: Always Visible , Other: Often Visible , Other: Strategic , Other: Lots here_for SET Networking , Friends , PenPal , Short-Term Dating , Long-Term Dating , Casual Relations pets_like SET ( _general , dogs , cats , birds , fish , exotic pets , gerbil/guinea/ferret/etc , horse , reptile ) pets_dislike SET ( _general , dogs , cats , birds , fish , exotic pets , gerbil/guinea/ferret/etc , horse , reptile ) pets_own SET ( _general , dogs , cats , birds , fish , exotic pets , gerbil/guinea/ferret/etc , horse , reptile ) basic_income_lo INTEGER in units of 10k basic_income_hi INTEGER in units of 10k basic_income_currency OPTION ( 'USD' , 'GBP' , 'EUR' ) living_situation OPTION ( Alone , w/ Roommates , w/ Children , w/ Parents/Extended Family ) relationships relationship_status OPTION ('single' 'in a relationship', 'in a domestic partnership' , 'married', 'divorced' , 'complicated' , 'open relationship / swinger' ) sexual_orientation OPTION ('heterosexual','homosexual','bisexual','asexual') children OPTION ( 'Decided- None' , 'Decided- Someday' , 'Undecided' , 'Proud Parent' ) habits diet OPTION ( omnivore, carnivore, pescetarian , vegetarian, vegan, pollo-vegetarian , pesco/pollo-vegetarian , kosher ) alcohol_self OPTION ( None , Infrequent , Moderate , Frequent ) alcohol_others OPTION ( None , Infrequent , Moderate , Frequent ) tobacco_self OPTION ( None , Infrequent , Moderate , Frequent ) tobacco_other OPTION ( None , Infrequent , Moderate , Frequent ) drugs_self OPTION ( None , Infrequent , Moderate , Frequent ) drugs_other OPTION ( None , Infrequent , Moderate , Frequent ) beliefs religion OPTION ( Agnostic , Atheist , Buddhist , Catholic , Christian , Christian Scientist , Hindu , Jewish , Mormon , Muslim , None , Pagan , Protestant , Scientologist , Spiritual, Taoist , Unitarian , Quaker , Wiccan , other ) location current_city_name TEXT 32 current_state_province TEXT 32 current_postal_code TEXT 11 current_country_iso OPTION - 2 letter iso code hometown_city_name TEXT 32 hometown_state_province TEXT 32 hometown_postal_code TEXT 11 hometown_country_iso OPTION - 2 letter iso code location_history *ARRAY city_name TEXT 32 city_state_province TEXT 32 country_iso OPTION year_residency_start YYYY month_residency_start MM year_residency_finish YYYY month_residency_finish MM education education_level OPTION ( 'High School' , 'Some College' , 'In College- BA' , 'College Graduate - BA' , 'In Graduate / Professional School' , 'Graduate / Professional School- Completed', 'Post Graduate Work' ) schools_attended *ARRAY school_name TEXT 64 note: livejournal has a list.. It should conform to that if possible school_city TEXT 32 school_country OPTION - 2 letter iso code school_state_province TEXT 32 attendance_status OPTION ( 'Attending' , 'Attended', 'Attended+ Graduated' ) attendance_start_month MM attendance_start_year YYYY attendance_finish_month MM attendance_finish_year YYYY degree_type OPTION - ( Diploma, BA , BS , MFA , MA , MS , MBA , PHD , JD , MD , Certificate ) work_experience *ARRAY company_name TEXT 32 company_city TEXT 32 company_state_province TEXT 32 company_country OPTION- 2 letter iso code position TEXT 32 employment_start_month MM employment_start_year YYYY employment_finish_month MM employment_finish_year YYYY preferences time_zone OPTION - Locale Setting (see sample sql) preferred_language OPTION - Locale Setting (see sample sql) -------- Copyright & Licensing: © copyright 2006-2009 FindMeOn, Inc. All Rights Reserved This work is licensed under the Creative Commons Attribution-No Derivative Works 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nd/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.