Apache Stanbol and (Semantic) Media Wiki - mediawiki

Is it possible to extend Media Wiki with semantic services using Apache Stanbol?
The Stanbol Website indicates that "any content repository compliant with JCR or CMIS specifications" can be used. However, I could not find whether this is the case for (Semantic) Media Wiki?

Usually both JCR and CMIS are protocols much more popular on Java environments. As far as I know MediaWiki does not support any of them.
However, you can still use Stanbol via its RESTful interfaces.

Related

SCA (Service Component Architecture) alternative

Looks like the Apache Tuscany Project has been retired. Not sure what that really means, but there are still quite some Opensource and Vendor specific implementation using SCA. If this standard isn't supported anymore is there any other alternative out there ? Also I don't get why SCA hasn't been used as the main binding for Microservices, because they are kind of the same as SCA Components/Modules.
Regards
Unfortunately Oracle blocked passage of the specifications at OASIS (you will have to ask them why since they never explained the reason for their vote to the specification committee).
Fabric3 (fabric3.org) is an active open source project that supports SCA and is used for a number of microservice-based architectures. You may want to look at that.
Sadly SCA didn't hit the industry as the council was expecting and that's why they decided to archive it. Currently WebSphere Application Server 8.5 supports it, but since the Apache project is not supported anymore I cannot guarantee long term support.
As for services, my advise is that you go with the standard well-known specs like SOAP and REST.
SCA is now dead. The world has moved on to gRPC.

using webservice as alternative to conventional web site

I have been involved with web development applications for more than 3 years now, using c# and microsoft stuff. I am now looking into, and researching, whether it is possible to use webservice, perhaps with Java as the core, and multiple languages and tools, such as HTML5, php, javascript, etc to interact with users. Some of the things I need to be clear about, if this is possible, are:
Is such method secure? What are the considerations that need to be taken into account and how can the security part be properly implemented?
Are there constraints to what type of interactions the web site can provide, such as sending forms with a lot of details, or long texts?
Some elaborations and examples would be appreciated.
What you're describing are called web apps. They're so ubiquitous you used one (StackOverflow) to ask whether it's possible.
To answer your questions:
Yes, it's possible to make it secure, and no, it's not easy. See Wikipedia for a starting point for how to read up on this huge topic.
No. HTML5 web apps are extremely capable. If Microsoft can port Office to the web, your online form will be just fine.

What is the purpose behind building of Apache Sling, Felix, Jackrabbit projects

I am asking a very basic question here.
Question is
I am using Apache Sling , Apache Jackrabbit, Apache Felix in my project as said by my instructor. I am trying to understand why these software is developed by Apache. I tried a lot on the internet,, but I didn't find any blog or wordpress blog, or any useful youtube video that explain all these projects. Can you explain me about these projects.
Why these projects developed?
What they do ?
and more questions like this
Previously I found the same doubt with Apache Hadoop, but all the material that I found on net is sufficient for me to get a feel of this project. This time I am struggling with Sling, Felix, Jackrabbit.
I will be very thankful for you. Waiting for your kind response.
The combination of Apache Jackrabbit, Apache Sling, and Apache Felix allows you to build web application.
Apache Jackrabbit is the reference implementation of the JCR API. The JCR API is to manage content repositories; to manage, for example, web content. A content repository is a mix between file system and a database.
The JCR API is specially made to deal with web content. Why use the JCR API, and why not use a relational database API? URLs are hierarchical, as in a file system. Relational databases don't easily support hierarchical access. Why not use a file system API? Because the JCR supports transactions, versioning, and a lot of other features that file system APIs don't support.
Apache Sling is a web framework based on the JCR API, and taking advantage of the features provided by the JCR API (15 Minute introduction).
Apache Felix is an OSGi container. It allows to seamlessly start, stop, and replace components of a web application (jar files, in a sense), while the web server is running. That means it allows you to change the application without having to restart the server.
Sling in very simple terms could be described as a REST API for JCR. you can use http requests to manage content inside the repository.
Additionally, Sling provides a mechanism to render that content in different ways for web consumption. you can use scripts (JSP for example) and the java code (servlets, pojos, etc) in the Felix container to process requests and deliver a request.
When a request is made for a particular node, Sling looks up for a property called sling:resourceType, this is a lookup key for rendering scripts. Then the appropiate script is executed using the node as input.
You could write different kinds for renderers and then use it to display your content in different ways.
For example, you could write two scripts full.json.jsp and short.json.jsp and then use them to render the same node in two different ways:
/content/app/node.full.json
OR
/content/app/node.short.json.
Sling basically matches tokens in the request URL to select an appropriate script.
They have a really nice cheat sheet that explains how request resolution and rendering works
it is a bit more complex than this, since everything is organized in resources and components. you want to check their site for more info
I had the same doubts. The best response I was able to find is in the official Sling page (https://sling.apache.org/)
(What is) Apache Sling, in a hundred words:
Apache Sling is a web framework that uses a Java Content Repository, such as Apache Jackrabbit, to store and manage content.
Sling applications use either scripts or Java servlets, selected based on simple name conventions, to process HTTP requests in a RESTful way.
The embedded Apache Felix OSGi framework and console provide a dynamic runtime environment, where code and content bundles can be loaded, unloaded and reconfigured at runtime.
So, resuming it:
Sling is a web framework --> using jackrabbit --> based/supported on JCR API.
You can see Apache Felix like a container with its manager.
Note that Sling started as an internal project at Day Software. It's the reason why some bundles/libraries are named like com.day, but in the ends they are two names for the same.
Also, if you want to be clear about Jackrabbit and JCR API you can visit the Jackrabbit's official page http://jackrabbit.apache.org/jcr/jackrabbit-architecture.html

ESB servicemix Vs WSO2/synapse

I am searching for the best 100% open source ESB for the following requirements, after searching I'm confused between Servicemix and WSO2/synapse
1- The requester is mobile app that requires all services to be exposed via REST (JSON objects)
2- Many back end providers (JMS, SOAP, SMTP, LDAP, ...)
3- Provide easy way and flexibility to transform and perform complex business logic
4- Security and Caching
5- Above all easy to learn, use and extend with small learning curve and good tutorials and community support
Thanks,
I think you can achieve what you want with both of these. You might even want to look at the similar Mule ESB CE which is as well open source.
However, considering you want a flexible solution that is easy to learn, but not limited, then I would go for Service Mix and deploy various Camel routes to it. Camel is, imho, probably the easies and most well documented open source integration engines out there and I really recommend it.
In the end, it's a matter of taste. WSO2/synapse has it's base in web services, and you might feel better there if you are more comfortable with XML standards (including SOAP,BPEL..) than java programming (which is sort of needed in SMX/camel).

How, in general, can web framework support REST style?

I would like to know, what are the ways a web framework may be suitable for designing a RESTful app, in general.
One goal is for example to provide http request routing, so they are automatically sent to appropriate controllers. From architectural point of view, web framework based on MVC pattern are more suitable for REST.
What other features of web frameworks are helpful by building apps satisfying the REST constraints?
Is there any reason why you consider certain languages(python/java) or web frameworks(django/turbogears/jersey/restlets/...) as the most applicable ones?
I think the best way for a web framework to support a RESTful style is to automatically map the different HTTP verbs (GET, POST, PUT, DELETE, etc.) to corresponding methods on its controllers/request handlers. Most modern Python web frameworks do this out of the box, with the notable exception of Django (unless I missed a dramatic change).
a) You need very flexible routing.
b) You need to be able to easily generate links that correlate to resource controllers using templates and parameters.
c) The server should help you to parse all the http headers. e.g. Authorization headers, Accept headers, language headers, cookies, etags.
d) It should support serializing and deserializing all the commonly used mime types.
e) It should help parsing parameters from incoming URLs
f) It should help resolving relative urls based on the request url and any available BaseURL.
There are few ways that a web framework can NOT support REST. Its basically written with the HTTP model in mind; so just about any web framework works. The automatic routing you mention is a common expectation, but not strictly required for REST.
I would stress the ability to directly support definition of resources. In Ruby on RAils you can define a resource through scaffolding and you get a model with controller with restful verbs implemented also with views and support for different formats and readily avalaible views and routing with ids.
Aside from that having access to HTTP and supporting principles of HTTP is what you need.
I am not experienced enough to know about support in frameworks, but it would be also nice to have support for the caching and other request options.
On the “specific software recommendation” front, I've had people recommend Apache CXF as a framework for building RESTful services with Java. It appears to be even able to simultaneously support SOAP (which happens to be very useful for helping some of our customer base adopt the software). I'm still in the experimenting-with-it stage though, so you may be able to do better.