I've sort of given up on writing a new semantic MediaWiki extension myself, and instead would like to hire someone to do this. More info below. Any takers?
This is guru.com project 333404, but since guru.com requires (free) registration, I'm reproducting the project details below:
== BEGIN PASTE ==
Subject: MediaWiki extension for semantics + to add data to other pages
I'd like an extension to MediaWiki that lets me do two things:
% Add text to another page. For example, if I'm editing a page "Lucy" and say:
Lucy has a younger brother Linus, who [[Linus!!carries a "security blanket"]].
the text 'carries a "security blanket"' will be added to a special section of the Linus page. If the Linus page doesn't exist, it will be created.
On the Lucy page, it will read:
Lucy has a younger brother Linus, who carries a "security blanket".
% Add semantic information to page similar to what http://ontoworld.org/wiki/Main_Page does. For example, if I edit the Charlie Brown page to say:
Charlie Brown has a sister, [[sister::Sally]].
the RDF/semantic triple relation "Charlie Brown","sister","Sally" will be stored in a MySQL table and displayed at the bottom of both the Charlie Brown and Sally pages.
On the Charlie Brown page, this will read:
Charlie Brown has a sister, [[Sally]].
In other words, "Sally" will just be a regular link to the Sally page.
% These features should be combinable and nestable. If I edit the Charlie Brown page to say:
Charlie Brown has a sister, [[sister::Sally]], who [[Sally!!has a crush on [[loves::Linus]], who [[Linus!!carries a "security blanket"]]]]
this would:
% Create the Sally and Linus pages, if they don't already exist
% Add the phrase 'carries a "security blanket"' to a special part of the Linus page.
% Add the phrase 'has a crush on [[Linus]], who carries a "security blanket"' to a special part of the Sally page.
% Create/store the semantic triple "Sally","loves","Linus", and display it at the bottom of both the Sally and Linus pages.
% Create/store the semantic triple "Charlie Brown","sister","Sally" and store it on both the Charlie Brown and Sally pages.
% On the Charlie Brown page, the text would read:
Charlie Brown has a sister, [[Sally]], who has a crush on [[Linus]], who carries a "security blanket"
Notes:
% This is just an overview. More details on request.
% I've written code to do some of the above. You're not obligated to use it, but it might help.
% The extension should use only open source technology, and comply to MediaWiki's extension standard to the extent possible:
http://www.mediawiki.org/wiki/MediaWiki_extensions
Please let me know how much this would cost, thank you.
== END PASTE ==
On 23/09/2007, Kelly Jones kelly.terry.jones@gmail.com wrote:
I've sort of given up on writing a new semantic MediaWiki extension myself, and instead would like to hire someone to do this. More info below. Any takers?
Have you seen http://ontoworld.org/wiki/Semantic_MediaWiki ?
On Sonntag, 23. September 2007, Thomas Dalton wrote:
On 23/09/2007, Kelly Jones kelly.terry.jones@gmail.com wrote:
I've sort of given up on writing a new semantic MediaWiki extension myself, and instead would like to hire someone to do this. More info below. Any takers?
Have you seen http://ontoworld.org/wiki/Semantic_MediaWiki ?
I am also surprised by this plan. If you actually mean the same that we do by "semantic MediaWiki", then you are welcome to join the project. If not, then I urge you to call it differently in order to not confuse anyone ;-) Also note that we also have project-specific mailing lists (see above homepage).
Cheers,
Markus
MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
On 9/24/07, Markus Krötzsch mak@aifb.uni-karlsruhe.de wrote:
On Sonntag, 23. September 2007, Thomas Dalton wrote:
On 23/09/2007, Kelly Jones kelly.terry.jones@gmail.com wrote:
I've sort of given up on writing a new semantic MediaWiki extension myself, and instead would like to hire someone to do this. More info below. Any takers?
Have you seen http://ontoworld.org/wiki/Semantic_MediaWiki ?
I am also surprised by this plan. If you actually mean the same that we do by "semantic MediaWiki", then you are welcome to join the project. If not, then I urge you to call it differently in order to not confuse anyone ;-) Also note that we also have project-specific mailing lists (see above homepage).
Markus and Thomas,
Yes, I'm aware of http://ontoworld.org/wiki/Semantic_MediaWiki (I believe I referenced it in my original post + cc'd the semediawiki list(s)?).
I call my project 'semarbtri' to distinguish it from the existing Semantic Mediawiki project.
My biggest beef w/ Semantic Mediawiki (the reason I'm writing my own extension) is that you can only add semantic information for the page you're editing.
For example, on the Lucy page, you could say:
Lucy has a younger brother [[has_brother::Linus]]
However, you couldn't add any semantic information about Linus on the Lucy page. Instead, you'd have to create a new page for Linus, and add the semantic information there.
This can be really tedious if you're listing all the characters in a comic strip (for example)-- you have to create pages for each one, instead of just including the semantic info when you list them.
In my opinion, this is why startup wikis end up w/ so many blank pages.
I think having a plugin that lets you add info to other pages would be really helpful.
Markus and Thomas,
Yes, I'm aware of http://ontoworld.org/wiki/Semantic_MediaWiki (I believe I referenced it in my original post + cc'd the semediawiki list(s)?).
I call my project 'semarbtri' to distinguish it from the existing Semantic Mediawiki project.
My biggest beef w/ Semantic Mediawiki (the reason I'm writing my own extension) is that you can only add semantic information for the page you're editing.
For example, on the Lucy page, you could say:
Lucy has a younger brother [[has_brother::Linus]]
However, you couldn't add any semantic information about Linus on the Lucy page. Instead, you'd have to create a new page for Linus, and add the semantic information there.
This can be really tedious if you're listing all the characters in a comic strip (for example)-- you have to create pages for each one, instead of just including the semantic info when you list them.
In my opinion, this is why startup wikis end up w/ so many blank pages.
I think having a plugin that lets you add info to other pages would be really helpful.
That's an interesting point. Semantically, a different person should be on a different page, but you make a good point that in practice, that isn't always the best option. I would suggest adding your feature to the existing extension, rather than reinventing the wheel, though.
On Dienstag, 25. September 2007, Thomas Dalton wrote:
Markus and Thomas,
Yes, I'm aware of http://ontoworld.org/wiki/Semantic_MediaWiki (I believe I referenced it in my original post + cc'd the semediawiki list(s)?).
I call my project 'semarbtri' to distinguish it from the existing Semantic Mediawiki project.
My biggest beef w/ Semantic Mediawiki (the reason I'm writing my own extension) is that you can only add semantic information for the page you're editing.
For example, on the Lucy page, you could say:
Lucy has a younger brother [[has_brother::Linus]]
However, you couldn't add any semantic information about Linus on the Lucy page. Instead, you'd have to create a new page for Linus, and add the semantic information there.
This can be really tedious if you're listing all the characters in a comic strip (for example)-- you have to create pages for each one, instead of just including the semantic info when you list them.
In my opinion, this is why startup wikis end up w/ so many blank pages.
I think having a plugin that lets you add info to other pages would be really helpful.
That's an interesting point. Semantically, a different person should be on a different page, but you make a good point that in practice, that isn't always the best option. I would suggest adding your feature to the existing extension, rather than reinventing the wheel, though.
It would be not to hard to add something like this to SMW, even in a fairly modular way (although the DB layout obviously would need extension). The reason that we did not do it is that we felt that it impairs maintainability (if you discover a wrong search result, what page do you edit to fix it?), and that it might lead to a "semantic shadow wiki" (people creating very complex structures on a single page, which is hard to control; e.g. locking the page on Lucy during an edit war [controversial girl, that Lucy] still would not prevent people to add the disputed information elsewhere). I know that there are all kinds of ideas to prevent this, but this certainly adds some complexity.
Anyway, rebuilding everything from scratch just to add this feature seems to be a lot of avoidable work. We can also assist you with extending SMW (by providing extension interfaces etc.). But do as you like.
Markus
MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
Markus said:
Anyway, rebuilding everything from scratch just to add this feature seems to be a lot of avoidable work. We can also assist you with extending SMW (by providing extension interfaces etc.). But do as you like.
A while back I had a project in which this feature would have been very useful. If new hooks go in to make this possible, please email the group so others may implement it.
-- Jim R. Wilson (jimbojw)
On 9/25/07, Markus Krötzsch mak@aifb.uni-karlsruhe.de wrote:
On Dienstag, 25. September 2007, Thomas Dalton wrote:
Markus and Thomas,
Yes, I'm aware of http://ontoworld.org/wiki/Semantic_MediaWiki (I believe I referenced it in my original post + cc'd the semediawiki list(s)?).
I call my project 'semarbtri' to distinguish it from the existing Semantic Mediawiki project.
My biggest beef w/ Semantic Mediawiki (the reason I'm writing my own extension) is that you can only add semantic information for the page you're editing.
For example, on the Lucy page, you could say:
Lucy has a younger brother [[has_brother::Linus]]
However, you couldn't add any semantic information about Linus on the Lucy page. Instead, you'd have to create a new page for Linus, and add the semantic information there.
This can be really tedious if you're listing all the characters in a comic strip (for example)-- you have to create pages for each one, instead of just including the semantic info when you list them.
In my opinion, this is why startup wikis end up w/ so many blank pages.
I think having a plugin that lets you add info to other pages would be really helpful.
That's an interesting point. Semantically, a different person should be on a different page, but you make a good point that in practice, that isn't always the best option. I would suggest adding your feature to the existing extension, rather than reinventing the wheel, though.
It would be not to hard to add something like this to SMW, even in a fairly modular way (although the DB layout obviously would need extension). The reason that we did not do it is that we felt that it impairs maintainability (if you discover a wrong search result, what page do you edit to fix it?), and that it might lead to a "semantic shadow wiki" (people creating very complex structures on a single page, which is hard to control; e.g. locking the page on Lucy during an edit war [controversial girl, that Lucy] still would not prevent people to add the disputed information elsewhere). I know that there are all kinds of ideas to prevent this, but this certainly adds some complexity.
Anyway, rebuilding everything from scratch just to add this feature seems to be a lot of avoidable work. We can also assist you with extending SMW (by providing extension interfaces etc.). But do as you like.
Markus
MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-- Markus Krötzsch Institut AIFB, Universät Karlsruhe (TH), 76128 Karlsruhe phone +49 (0)721 608 7362 fax +49 (0)721 608 5998 mak@aifb.uni-karlsruhe.de www http://korrekt.org
MediaWiki-l mailing list MediaWiki-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
On 9/25/07, Markus Krötzsch mak@aifb.uni-karlsruhe.de wrote:
On Dienstag, 25. September 2007, Thomas Dalton wrote:
Markus and Thomas,
Yes, I'm aware of http://ontoworld.org/wiki/Semantic_MediaWiki (I believe I referenced it in my original post + cc'd the semediawiki list(s)?).
I call my project 'semarbtri' to distinguish it from the existing Semantic Mediawiki project.
My biggest beef w/ Semantic Mediawiki (the reason I'm writing my own extension) is that you can only add semantic information for the page you're editing.
For example, on the Lucy page, you could say:
Lucy has a younger brother [[has_brother::Linus]]
However, you couldn't add any semantic information about Linus on the Lucy page. Instead, you'd have to create a new page for Linus, and add the semantic information there.
This can be really tedious if you're listing all the characters in a comic strip (for example)-- you have to create pages for each one, instead of just including the semantic info when you list them.
In my opinion, this is why startup wikis end up w/ so many blank pages.
I think having a plugin that lets you add info to other pages would be really helpful.
That's an interesting point. Semantically, a different person should be on a different page, but you make a good point that in practice, that isn't always the best option. I would suggest adding your feature to the existing extension, rather than reinventing the wheel, though.
It would be not to hard to add something like this to SMW, even in a fairly modular way (although the DB layout obviously would need extension). The reason that we did not do it is that we felt that it impairs maintainability (if you discover a wrong search result, what page do you edit to fix it?), and that it might lead to a "semantic shadow wiki" (people creating very complex structures on a single page, which is hard to control; e.g. locking the page on Lucy during an edit war [controversial girl, that Lucy] still would not prevent people to add the disputed information elsewhere). I know that there are all kinds of ideas to prevent this, but this certainly adds some complexity.
I don't necessarily disagree with you. This is really more of an experiment. I want to code this extension (or pay someone else to code it), and then create 2-3 wikis with it. I sense this extension will result in rapidly-growing wikis, but, as you point out, once the wikis reach a certain size, they may be really hard to maintain. I'm just interested in seeing what happens (it may be a lousy idea, but I think it's worth testing). Locking is one challenge (redirection, page deletion, inverse/implicit relations, etc are others)
Anyway, rebuilding everything from scratch just to add this feature seems to be a lot of avoidable work. We can also assist you with extending SMW (by providing extension interfaces etc.). But do as you like.
I originally tried to edit SMW to do this, but decided it was too hard, gave up, and tried editing MediaWiki code directly. I'm willing to try editing SMW again.
I actually don't think this is a hard problem. Using the ArticleSaveComplete and ArticleAfterFetchContent hooks, along with the powerful built-in doEdit() method, this should be quite do-able.
The theory:
% Each page has a special "Stuff That Comes From Other Pages" section.
% When you update page X, your ArticleSaveComplete hook figures out what pages you're adding data to, and uses doEdit() to add the data [there are special cases here: for example, if you were previously adding data to a page but aren't anymore]
% When viewing page X, ArticleAfterFetchContent() can cleanup all the funny [[x!!this is added to page x]] links and change them to "this is added to page x".
% Since hooks can have multiple function, this shouldn't interfere w/ SMW hooks
I've attached my latest attempt, which has 2 major problems:
% It's designed for MediaWiki, not SMW
% It doesn't actually work.
Anyone interested in making it work, either for free or for pay?
Markus
mediawiki-l@lists.wikimedia.org