The scenario
We assume that an intelligent artificial agents has a goal to join social networks, connect to participants in the network based on certain criteria, read messages posted by certain participants (in particular, ones that the social agent is following), post messages in response to other messages based on certain criteria, etc.
In order to arrive and operate on an arbitrary new platform, it needs to have access to a structured description of what can be done on the platform, and then to how it can do it.
The goal of this homework is not to programme the agent, but rather to formally represent the knowledge that such an agent would need.
Knowledge Model
The knowledge model in this exercise corresponds to the ontology or ontologies that define the generic classes and properties that characterise the domain of social networking platforms. It is very unlikely that you need to introduce instances at the level of the knowledge model. In your homework, instances should only exist to exemplify how to instantiate the classes and properties of your knowledge model.
Modelling possible operations
On social networking platforms, there are categories of actions that are possible on almost any such platforms. Sometimes, there are more specialised actions on certain specific platforms. The generic knowledge model should have a hierarchy of possible operations.
To describe how the operations can be executed, we just assume that it is possible using the standard Web of Thing – Thing Description from the W3C. It is sufficient to introduce a property from a possible operation to an affordance described in terms of Web of Thing Description.
Classes of operations should be organised in a hierarchy and deeper, more organised hierarchies will be valued.
Modelling the network itself
A knowledge graph can also describe the network of people and things being social connected, as well as the artifacts that result from the social interactions. Especially, participants create messages, threads, and sometimes more (documents, groups, projects).
Design the general model that can describe these things and instanciate it with a few examples (e.g., take a conversation from an existing social networking platform, describe it and its participants and so on).
Normally, all content provided by the users should have been made by using one of the operations identified in previous module. You should have a similar hierarchy of network content as you have of platform operations.
Connection to existing ontologies
This is not a requirement but you may identify existing Web ontologies that cover some parts of what you want to model. Do not overdo it though: There are many ontologies online, some of which are good (even standardised), most of which are bad. An example of a good ontology that relates to the domain of this exercise is SIOC.
Instructions
Your work will be made in groups of 3 or 4 students. The knowledge model must reflect the consensus of the group on how to model the domain of social networks and social networking platforms. You will deliver 3 files: an ontology file in OWL (concrete syntax should be Turtle); the documentation that goes with it, preferably in HTML but possibly in PDF or (worse) MS Word or OpenOffice writer; and a separate Turtle file that shows a concrete example of data instantiating and illustrating all parts of your model. You can use any editor to edit the ontology file.
The ontology file
The OWL ontology should provide a class hierarchy of possible operations on social networks, and a class hierarchy about the main entities that the platform describes, such as messages and threads, users. Optionally, you can also describe the logs of execution of actions, in order to describe situations like this tweet was consulted at time YYYY-MM-DDThh:mm:ss from IP address NNN.NNN.NNN.NNN.
Competnecy questions
Using your ontology, it should be possible to answer the following competency questions:
- Given an identified platform, what actions can be performed on it?
- What are read only operations available on the platform?
- Given the identifier of a message, thread, or post, what are the messages in response to it?
- Who is registered to the platform?
- Given a user, who is connected to them and is it uni-directional (e.g., follow) or bi-directional (e.g., friend).
- Given a post on the platform, what action was performed to publish it?
- Given a post, what is the title (if it exists), what is the date of publication, what is the main content?
- Given action or operation A that can be done on platform P, what does a user have to provide as input when doing X?
- ... write your own competency questions that your ontology can answer.
Organise your ontology well
Separate concerns as much as possible. This can be apparent by documenting different aspects of your knowledge model in different sections. Some suggestions are: discuss the posting operations (operations that generate content on the platform) separately from networking operations (follow, make friend, connect, etc.). Also, separate the operations from the content descriptions.
Add rich axioms
The extensiveness of the coverage is not essential in this work. I will value much more a small ontology with few operations, content types, etc. but rich and complex axioms. Make use of the complex concept constructs. Identify interesting knowledge that constrain how your ontology terms could be interpreted.
The documentation
The documentation must contain natural language labels for all the terms defined in the ontology, and a textual description of what the terms mean (you can use Protégé annotations with rdfs:label
and rdfs:comment
). The documentation must contain examples of usage of the terms you introduce. Additionally, any amount of details about the design choices can be given in the introduction of the documentation.
The text of the documentation can be entirely embedded in the ontology file (better) and the documentation can be generated automatically from the ontology file, using tools such as WIDOCO. You can also use the online service LODE. Otherwise, you can write your documentation from scratch in a document (HTML preferred, possibly PDF, avoid word processor formats).
The instance file
A Turtle file with instances that illustrate all the things from your model must be provided.
The following Turtle code provides a possible example of how concepts and relations could be instantiated.
PREFIX myonto: <http://example.com/myontology/>
PREFIX mysn: <http://example.org/mysocial/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
# Here is an example of a possible description of a mini social network
# It assumes that there exists an ontology with terms in the namespace myonto:
# We assume the social networking platform that hosts this social network is using namespace mysn:
mysn:mysocialnetwork a myonto:SNPlatform;
rdfs:label "SuperSocial!";
myonto:hasOperation
mysn:register,
mysn:postMessage,
mysn:readMessage .
mysn:register a myonto:RegistrationOperation .
mysn:postMessage a myonto:PostMessageOperation;
myonto:hasAffordance mysn:postMessageAffordance .
# The notion of "affordance" is defined in the standard Thing Description.
# It is referring to a potential capability of a thing.
# You do not have to define this further because it is part of an existing standard.
mysn:Antoine_Zimmermann a myonto:OnlineAccount;
myonto:postedMessage mysn:messageAZ42;
myonto:hasSocialConnection mysn:Tim_Berners-Lee .
mysn:messageAZ42 a myonto:Message;
myonto:dateOfCreation "2024-03-15T14:51:42+01:00"^^xsd:dateTime;
myonto:messageContent "Hello World!"@en .
Delivery
Deadline for delivery: April 15th, 2024
The ideal way to deliver your work is by using a Git repository. It is also advisable to use Git to collaborate on the files, if you are familiar with it. Otherwise, use a file hosting service. Send me the link by email before the deadline. Make sure that files delivered by way of a link to the Web are kept available for long enough.