#social 2015-10-07

2015-10-07 UTC
nicolagreco, tilgovi_, jasnell, bblfish, KevinMarks, tantek, wilkie_, tilgovi, the_frey, jasnell_ and elf-pavlik joined the channel
#
elf-pavlik
"@type": "Consume",
#
elf-pavlik
"published": "2015-05-15T13:06:00+02:00",
#
elf-pavlik
"actor": "http://rhiaro.co.uk/about#me",
#
elf-pavlik
"object": {
#
elf-pavlik
"title": "An apple"
#
elf-pavlik
I see blank node totally fine here, if you really want you could ofcourse alwasy do http://www.w3.org/TR/rdf11-concepts/#section-skolemization
#
elf-pavlik
"@id": "http://rhiaro.co.uk/skolems/8281ef48-32ac-47c3-b6a5-f72854568e8a" - a one liner in source code
#
elf-pavlik
but "@type"/rdf:type IMO comes more interesting here or for more 'relaxed' usage mf:category
#
elf-pavlik
so the "@id" doesn't matter in cases like that, it can if you redeem a meel voucher in places like http://cafeerde.com/
#
elf-pavlik
we should work with such use cases soon in http://valueflo.ws/ and https://www.w3.org/community/economy/
#
elf-pavlik
ATM I stay in coutryside near paris with couple of people working on http://openfoodnetwork.org/
#
elf-pavlik
also meeting more peple workin on various projects linked to in README of https://github.com/ouisharelabs/food-dashboard
#
elf-pavlik
another example of useful blank node (which one can always easily skolemize!) https://schema.org/TypeAndQuantityNode
#
ben_thatmustbeme
hey elf-pavlik, was just reading rhiaro's post and had a few questions for someone who does their site entirely activity based
#
ben_thatmustbeme
if you are around
#
ben_thatmustbeme
or anything else i suppose
#
ben_thatmustbeme
s/anything/anyone/
#
ben_thatmustbeme
still waking up
#
ben_thatmustbeme
in any case, let me just put some questions here. those that have actual implementations, how do you store your posts/activities?
#
ben_thatmustbeme
are they only stored as activities, and so to generate a front end your site (latest posts / wall / whatever you want to call it)
#
ben_thatmustbeme
I am more thinking along the lines that activities and posts are not the same, yes they overlap on "create" and "like" but they are really not the same. and maybe we should be defining ways to define both
#
ben_thatmustbeme
look at facebook, You have your "notifications" drop down, (actually they have several based on how you group people) but it shows things like "Bill added a new photo" and a thumbnail, "john updated his status" without the status text, "Stephanie commented on your post" without text.
#
ben_thatmustbeme
these are clearly activities, it has likes, comments, etc
#
ben_thatmustbeme
but rarely content, or only part of the content
#
ben_thatmustbeme
someone's wall or i guess they call it "timeline" now, is completely different it shows only posts, reposts, events, etc It shows full or sometimes nearly full content (have to click to expand) along with comments. and now to see comments on comments you have to view the post at its original URL
#
ben_thatmustbeme
These are very very different from activities, activities really don't contain comments, unless you are sending across extra data.
KevinMarks joined the channel
#
ben_thatmustbeme
also, most activity feeds on sites (facebook, G+, LinkedIn) all have a limited time length before they are discarded
#
ben_thatmustbeme
if you stop using those sites for a while you'll notice they drop to empty lists
#
ben_thatmustbeme
which makes sense really, do we care about activities that happened 2 years ago ( outside of the person themselves possibly wanting to store it)
#
ben_thatmustbeme
AS2 specs out how to write those activity feeds, but thats all
#
ben_thatmustbeme
the indiewebcamp has really done everything via posts but we were not doing notifications at all yet. When aaron and I started doing notifications it became pretty clear (to me at least) that these need to be stored differently, they are different content entirely most times
#
ben_thatmustbeme
aaronpk i'm sure could explain all the text he had to go through to get notifications on his phone working because he had to figure out copy for every one of those notifications
#
ben_thatmustbeme
I'm more of the opinion that we actually need both
#
elf-pavlik
ben_thatmustbeme, I started modeling my data in context of w3c-social here https://github.com/hackers4peace/plp-test-data/blob/master/w3c-social.jsonld
#
elf-pavlik
I don't follow current AS2.0 draft but stay very close to how it works
#
elf-pavlik
this gives me 'follow' nose to specific collections and counters to show before 'following the nose'
#
elf-pavlik
I also can start from event and find - list of attendees, speakers, organizers etc. https://github.com/hackers4peace/plp-test-data/blob/master/w3c-social.jsonld#L214-L230
#
elf-pavlik
this will come useful for defining ACL eg. only organizers can update event itself, but attendees and speakers can post to event's wall
#
elf-pavlik
no matter if it uses direct POST or webmention indirection ACL seems orthogonal IMO
#
elf-pavlik
actually webmention adds extra complexity of giving endpoint access to secret post to include it on event's wall, but i know IWC explores this topic
#
elf-pavlik
which SoLiD uses
#
elf-pavlik
ben_thatmustbeme, IMO both can complement each other, we just need to align on usage of vocabularies and clarify different semantics of used terms
#
elf-pavlik
i tend to draw diagram to show the underlying EAV model and avoid arguments about particular syntax
#
elf-pavlik
with graphs people can draw edges very freely and if one can traverse it in multiple ways ofter good reasons exist to have those different ways
#
ben_thatmustbeme
elf-pavlik: the most interesting thing to me is that when I started to work on notifications/activities I found no need for explicit typing for them. Since its just a stream of activities that link to something for more info
elf-pavlik, nicolagreco, nicolagreco_, jasnell and peacekeeper joined the channel
elf-pavlik joined the channel
#
cwebber2
hello, *
nicolagreco, ben_thatmustbeme, tantek, elf-pavlik, tilgovi, peacekeeper and aaronpk joined the channel
#
cwebber2
brainstorming what's needed for activipy
#
cwebber2
jasnell: hello!
#
cwebber2
jasnell: ping for when available
#
jasnell
hey cwebber2
#
jasnell
what's up
#
cwebber2
jasnell: well it looks like I more or less volunteered myself to make a generic AS2 implementation for python and also work on something so we can deliver some kind of test suite. I think I know how to do it. But!
#
cwebber2
jasnell: so, json-ld doesn't have inheritance, but you showed me how to do the multi-type fake inheritance, and okay I can do that, but you also said for the activitystreams vocab "prescribed inheritance" within its own vocab
#
cwebber2
you had some sort of reasoner
#
cwebber2
jasnell: could you point me to it?
#
cwebber2
or at least to docs
#
jasnell
ok... so the quick version
#
jasnell
1. the activity streams vocabulary is defined as an rdf/owl style ontology. that defines the basic terms and uses things like rdfs:subClassOf to define an inheritance model
#
jasnell
2. JSON-LD itself doesn't really need to know anything about that vocabulary model
#
jasnell
all JSON-LD cares about is the @context definition
#
jasnell
although I don't know for certain if that implementation is up to date with the current JSON-LD spec
#
cwebber2
jasnell: I still need to figure out inheritance for things like side effects when posting, etc, I think
#
jasnell
yep. In my js implementation, I've implemented a very simple "reasoner" that is initialized with the inheritance model
#
cwebber2
jasnell: okay, could you point me to that source? or, verify if my idea is right:
#
jasnell
once initialized, I can ask it questions like reasoner.node('http://example.org/foo').is('http://example.org/bar') to determine if a 'foo' can be considered a type of 'bar'
#
jasnell
npm install reasoner if you want to play with it yourself
#
cwebber2
hm that reasoner's more complicated than I was hoping :) but useful to know!
#
jasnell
I plan to simplify it quite a bit
#
cwebber2
jasnell: I'm going to try a quick and dirtier alternate reasoner that I think still fulfills the descriptions on activitystreams spec
#
cwebber2
could you review once I have it?
#
cwebber2
jasnell: I'm aiming for "correct but dead simple" :)
#
jasnell
always a good goal
#
cwebber2
I'm just going to use GDBM to store @id mapped to the object
#
cwebber2
since that's just a dead easy key value store
#
cwebber2
been around for ages
#
cwebber2
comes on most systems
#
cwebber2
and is dumb as hell
#
jasnell
just remember that some of the relationships are complex
#
cwebber2
good enough for a test suite I think
#
jasnell
as:Question, for instance, extends from as:Activity and as:Content
#
cwebber2
jasnell: right... I think I can handle it, even if slightly gnarly :)
#
cwebber2
jasnell: thanks soooooo much :)
#
jasnell
any time
#
jasnell
let me know when you've got some code I can play around with
#
cwebber2
jasnell: will do
#
aaronpk
here's an example of what I was talking about yesterday... facebook does it. <html lang="en" prefix="op: http://media.facebook.com/op#">
#
aaronpk
but http://media.facebook.com/op --> ERR_NAME_NOT_RESOLVED
Arnaud1 and the_frey joined the channel
#
elf-pavlik
aaronpk++
#
Loqi
aaronpk has 968 karma
#
elf-pavlik
cwebber2, I guess you keep in mind that pretty much all properties can have multiple values?
#
elf-pavlik
in general checks for .includes? work better than ==
#
elf-pavlik
cwebber2, illustration of rdfs:subClassOf inference which AS2.0 vocab defines in non normative way http://www.slideshare.net/EUCLIDproject/querying-linked-data/61
#
cwebber2
elf-pavlik: thanks
#
cwebber2
elf-pavlik: nonetheless I'm going to see if boiling things down is possible for this ;)
#
cwebber2
full ack that all props can have multiple values
Arnaud, tantek, the_frey, bblfish and peacekeeper joined the channel
#
elf-pavlik
cwebber2, do you think I clarified this issue in my last comment?
#
elf-pavlik
would your implementation handle it as expected? expanding CURIE used as *values* to IRI?
#
cwebber2
elf-pavlik: not sure yet, but I'll look later
tantek, the_frey, Arnaud, bblfish and almereyda joined the channel
KevinMarks joined the channel