Exemple #1
0
def turtle_index(sink, root, datauri, querychannel):
    triples = []

    freenodeURI = root + "#freenode"

    triples += [(freenodeURI, RDFS.label, PlainLiteral("Freenode"))]

    channels = sorted(sink.channels.keys())
    channelURIs = []
    for channel in channels:
        channelID = channel.strip("#").lower()
        channelURI = root + channelID + "#channel"
        channelURIs.append(channelURI)

        oldChannelURI = "irc://freenode/%23" + channelID

        triples += [None,
                    (freenodeURI, SIOC.space_of, channelURI),
                    (channelURI, OWL.sameAs, oldChannelURI),
                    (channelURI, RDF.type, SIOC.Forum),
                    (channelURI, RDF.type, SIOCT.ChatChannel),
                    (channelURI, RDFS.label, 
                     PlainLiteral("#" + channel)),
                    ]
        
        for day in sorted(sink.channel2days[channel]):
            logURI = "%s%s/%s" % (root, channelID, day)
            triples += [(channelURI, RDFS.seeAlso, logURI)]

    if querychannel:
        nicks = sorted(sink.channel2nicks[querychannel].keys())
        for nick in nicks:
            userURI = root + "users/%s#user" % nick
            triples += [None,
                        (channelURI, SIOC.has_subscriber, userURI),
                        (userURI, RDFS.label, PlainLiteral(nick)),
                        ]

    writer = TurtleWriter(None, namespaces)
    if querychannel and channels:
        title = "Index of #%s" % channels[0]
        writer.write([("", FOAF.primaryTopic, channelURIs[0])])
    elif querychannel:
        title = "Empty index"
    else:
        title = "Index of some IRC discussion logs"
        writer.write([("", FOAF.primaryTopic, freenodeURI)])
        writer.write([("", FOAF.topic, channelURI)
                     for channelURI in channelURIs])
    writer.write([("", RDFS.label, PlainLiteral(title))])

    writer.setBase(root)
    writer.write(triples)
    writer.close()
Exemple #2
0
    def close(self):
        for nick in self.seenNicks:
            creator = self.root + "users/" + nick + "#user"
            oldCreator = "irc://freenode/" + nick + ",isuser"
                
            self.triples += [None,
                             (creator, OWL.sameAs, oldCreator),
                             (creator, RDFS.label, PlainLiteral(nick)),
                             (creator, RDF.type, SIOC.User),
                             ]

        writer = TurtleWriter(None, namespaces)
        title = "Log of #%s on %s" % (self.channel, self.timeprefix)
        writer.write([("", RDFS.label, PlainLiteral(title)),
                      ("", FOAF.primaryTopic, self.channelURI),
                      ])
        writer.setBase(self.base)
        writer.write(self.triples)
        writer.close()