Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[lyo-dev] Problems with provider's RDF output.

Hi!

I developed a provider with OSLC4J for OSLC-RM and have some problems with the RDF output of my services.
I can't get the prefix "oslc_rm" working I want to have for http://open-services.net/ns/rm#.
Instead I always get "j.0". I already developed several provider and never had a problem there.
Any idea what I might have forgotten or did anyone run into a similar problem?
See the output below.

I could also provide full source code, but only to selected persons. Some important parts can be found below.
My provider is based on the http://wiki.eclipse.org/Lyo/BuildingOSLC4J#Run_the_Quality_Management_sample_provider
and the more generic approach there to implement resources and services.
Are there any pitfalls? I have e.g. Requirement extends ViFOslcResource extends AbstractResource for other providers I developed only AbstractResource was extended directly.


<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
    xmlns:oslc="http://open-services.net/ns/core#";
    xmlns:j.0="http://open-services.net/ns/rm#";
    xmlns:dcterms="http://purl.org/dc/terms/";
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"; > 
  <rdf:Description rdf:about="http://INNB00889.v2c2.at:8080/VevatProvider/requirements/0b2788bb-601a-4c8a-bf83-a582144bc5b1";>
    <dcterms:identifier>0b2788bb-601a-4c8a-bf83-a582144bc5b1</dcterms:identifier>
    <dcterms:title rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral";>REQU_1</dcterms:title>
    <oslc:serviceProvider rdf:resource="http://INNB00889.v2c2.at:8080/OSLC4JRegistry/serviceProviders/2"/>
    <dcterms:modified>2013-03-06T15:51:11.869+01:00</dcterms:modified>
    <dcterms:created>2013-03-06T15:51:11.869+01:00</dcterms:created>
    <j.0:affectedBy rdf:resource="http://www.orf.at"/>
    <rdf:type rdf:resource="http://open-services.net/ns/rm#Requirement"/>
  </rdf:Description>


Any help would be highly appreciated.
Thanks a lot in advance!


Regards,
  Stefan Paschke



DI (FH) Stefan Paschke
Researcher/Area Information & Process Management

Kompetenzzentrum - Das Virtuelle Fahrzeug Forschungsgesellschaft mbH (ViF) Inffeldgasse 21/A/EG 8010 Graz AUSTRIA

Telefon:	+43 316 873 9049
Fax:	+43 316 873 9002
stefan.paschke@xxxxxxx
www.v2c2.at


Firmenname: Kompetenzzentrum - Das virtuelle Fahrzeug, Forschungsgesellschaft mbH
Rechtsform: Gesellschaft mit beschränkter Haftung
Firmensitz: A-8010 Graz, Inffeldgasse 21/A
Firmenbuchnummer: 224755y
Firmenbuchgericht: Landesgericht für ZRS Graz


/*************************************/
public interface OslcRmConstants {
//CHECKSTYLE:ON

    /**
     * URL of OSLC requirements management domain.
     */
    String OSLC_RM_DOMAIN = "http://open-services.net/ns/rm#";;
    
    /**
     * URL of OSLC requirements management namespace.
     */
    String OSLC_RM_NAMESPACE = "http://open-services.net/ns/rm#";;
    
    /**
     * Prefix for OSLC requirements management namespace.
     */
    String OSLC_RM_PREFIX = "oslc_rm";
    
    /**
     * OSLC resource-type URI for OSLC requirements management Requirement.
     */
    String TYPE_REQUIREMENT = OSLC_RM_NAMESPACE + "Requirement";
    
    /**
     * OSLC resource-type URI for OSLC requirements management Requirement Collection.
     */
    String TYPE_REQUIREMENT_COLLECTION = OSLC_RM_NAMESPACE + "RequirementCollection";
    
    String PATH_REQUIREMENT = "requirement";
    
    String REQUIREMENT = "Requirement";
    
    String USAGE_LIST = OSLC_RM_NAMESPACE + "list";
}


/*************************************/
public class ServiceProviderFactory {
    private static Class<?>[] RESOURCE_CLASSES = {
        RequirementService.class
    };

    public ServiceProviderFactory() {
        super();
    }

    public static ServiceProvider createServiceProvider(final String serviceProviderWebAppUri)
            throws OslcCoreApplicationException, URISyntaxException {
        final ServiceProvider serviceProvider = org.eclipse.lyo.oslc4j.core.model.ServiceProviderFactory
                .createServiceProvider(
                        serviceProviderWebAppUri, 
                        ServiceProviderRegistryURIs.getUIURI(),
                        "OSLC ViF Vevat Service Provider",
                        "OSLC ViF Vevat Service Provider for MBAT Use Case 7 - Hybrid Power Train Control Unit",
                        new Publisher("ViF", "urn:oslc:ServiceProvider"), RESOURCE_CLASSES);

        URI detailsURIs[] = { new URI(serviceProviderWebAppUri) };

        serviceProvider.setDetails(detailsURIs);

        final PrefixDefinition[] prefixDefinitions = {
                new PrefixDefinition(OslcConstants.DCTERMS_NAMESPACE_PREFIX, new URI(
                        OslcConstants.DCTERMS_NAMESPACE)),
                new PrefixDefinition(OslcConstants.OSLC_CORE_NAMESPACE_PREFIX, new URI(
                        OslcConstants.OSLC_CORE_NAMESPACE)),
                new PrefixDefinition(OslcConstants.OSLC_DATA_NAMESPACE_PREFIX, new URI(
                        OslcConstants.OSLC_DATA_NAMESPACE)),
                new PrefixDefinition(OslcConstants.RDF_NAMESPACE_PREFIX, new URI(OslcConstants.RDF_NAMESPACE)),
                new PrefixDefinition(OslcConstants.RDFS_NAMESPACE_PREFIX, new URI(OslcConstants.RDFS_NAMESPACE)),
                new PrefixDefinition(OslcRmConstants.OSLC_RM_PREFIX, new URI(OslcRmConstants.OSLC_RM_NAMESPACE)),
                new PrefixDefinition(FoafConstants.FOAF_NAMESPACE_PREFIX, new URI(FoafConstants.FOAF_NAMESPACE)) };


        serviceProvider.setPrefixDefinitions(prefixDefinitions);

        return serviceProvider;
    }

}

/*************************************/
@OslcService(OslcRmConstants.OSLC_RM_DOMAIN)
@Path("requirements")
public class RequirementService extends BaseService<Requirement> {

    public RequirementService() {
        super(Requirement.class);
    }

    protected RequirementService(Class<Requirement> resourceType) {
        super(resourceType);        
    }
    
    @OslcDialogs ({
        @OslcDialog (
            title = "Requirement Selection Dialog",
            label = "Requirement Selection Dialog",
            uri = "",
            hintWidth = "1000px",
            hintHeight = "600px",
            resourceTypes = {OslcRmConstants.TYPE_REQUIREMENT},
            usages = {OslcConstants.OSLC_USAGE_DEFAULT}
        ),
        @OslcDialog (
            title = "Requirement List Dialog",
            label = "Requirement List Dialog",
            uri = "UI/requirements/list.jsp",
            hintWidth = "1000px",
            hintHeight = "600px",
            resourceTypes = {OslcRmConstants.TYPE_REQUIREMENT},
            usages = {OslcRmConstants.USAGE_LIST}
        )
    })
    @OslcQueryCapability (
        title = "Requirement Query Capability",
        label = "Requirement Catalog Query",
        resourceShape = OslcConstants.PATH_RESOURCE_SHAPES + "/" + OslcRmConstants.PATH_REQUIREMENT,
        resourceTypes = {OslcRmConstants.TYPE_REQUIREMENT},
        usages = {OslcConstants.OSLC_USAGE_DEFAULT}
    )
    @GET
    @Produces({ OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_XML, OslcMediaType.APPLICATION_JSON })
    public Requirement[] getResources(@QueryParam("oslc.where") final String where) {
        return super.getResources(where, PersistenceSingelton.getPersistence(),
                ServiceProviderSingelton.getServiceProviderURI());
    }
}

/*************************************/
public class BaseService<T extends ViFOslcResource> {
    private final Class<T> resourceType;

    protected BaseService(Class<T> resourceType) {
        super();

        this.resourceType = resourceType;
    }

    public T[] getResources(final String where, Persistence<T> pers, URI serviceProviderUri) {
        final List<T> resources = pers.getResources(resourceType);

        for (T resource : resources) {
            resource.setServiceProvider(serviceProviderUri);
        }

        return resources.toArray((T[]) Array.newInstance(resourceType, resources.size()));
    }
....
}




Back to the top