Archive

Archive for the ‘Pellet 2’ Category

Pellet 2.2.1 Release

August 16th, 2010
We are happy to announce the release of Pellet 2.2.1 which is available for download at the usual location. This is a maintenance release that fixes several issues found in Pellet 2.2.0. Complete set of tickets closed for this release are listed at the Trac page. We’ve also updated the Pellet Reasoner Plug-in for [...]

English, Pellet, Pellet 2

Pellet 2.2 Release

July 6th, 2010
We’re happy to announce the release of Pellet 2.2. This release is available for download at the Pellet download page. Since the 2.1 release, we closed more than 50 tickets, including numerous bug fixes and performance improvements. Some of highlights include the following. Classification performance has been improved: the most significant speedups are for ontologies with large [...]

English, Pellet, Pellet 2

Pellet 2.1.1 Release

May 3rd, 2010
We are happy to announce the release of Pellet 2.1.1 which is available for download at the usual location. This is a maintenance release that fixes several issues found in Pellet 2.1.0. Complete set of tickets closed for this release are listed at the Trac page. We’ve also updated the Pellet Reasoner Plug-in for [...]

English, Pellet, Pellet 2

Pellet 2.1: Introducing Terp

April 1st, 2010
Pellet 2.1 introduces Terp, a new syntax for querying OWL ontologies. Terp is a combination of Turtle and Manchester syntax; it was designed for maximum legibility and conciseness. With Terp, we have a query language for domain knowledge, rather than a query language for the syntax which that domain knowledge is encoded in. SPARQL queries against [...]

English, OWL 2, Pellet 2, SPARQL

Plug-ins for Protégé 4.0 and 4.1 Alpha

April 1st, 2010
Today, we released two versions of the Protégé plug-in for Pellet that include the new Pellet 2.1; one plug-in for Protégé 4.0, and one plug-in for Protégé 4.1 Alpha. The plug-in for Protege 4.1 exposes incremental classifier of Pellet for updating classification results faster as you edit your ontology in Protégé. Both plug-ins are available [...]

English, Pellet, Pellet 2, Protege

Pellet 2.1 Release

April 1st, 2010
We’re happy to announce the release of Pellet 2.1. This release is available for download at the usual location. Since 2.0.2 release, we closed 26 tickets, including numerous enhancements and bug fixes. Some of highlights include the following. Terp: Syntactic Sugar for SPARQL and OWL We support a new syntax for SPARQL queries of OWL data, which [...]

English, Pellet, Pellet 2

Pellet 2.0.2: Maintenance Release

March 1st, 2010
We’re happy to announce the second Pellet maintenance release of the 2.0 series, Pellet 2.0.2. This release fixes several issues and includes the updates to support the latest reasoner interfaces in OWLAPI version 3.0.0. Complete set of tickets closed for this release are listed at the “Trac page”:http://clark-parsia.trac.cvsdude.com/pellet-devel/report/11 for this release. Pellet 2.0.2 is available [...]

English, Pellet, Pellet 2

Using OWL to Validate RDF via SPARQL: Pellet Integrity Constraints

February 2nd, 2010
The Open World Assumption got you down? While OWA is crucial to using OWL ontologies to draw new inferences from data, it’s also a challenge for another very basic use case that the OWL specs have never really embraced: using OWL as a schema or validation language for RDF. Plainly, that’s a use case that [...]

English, Integrity Constraints, Pellet 2

Pellet 2.0.1: Maintenance Release

January 11th, 2010
We’re happy to announce the first Pellet maintenance release of the 2.0 series, Pellet 2.0.1. This is the first release under our new release management scheme whereby we’ve committed to four quarterly point releases (2.1, 2.2, 2.3 and 2.4|3.0) during 2010 and maintenance releases for those versions as necessary. The 2.0.1 release closes 16 tickets, all [...]

English, Pellet, Pellet 2

Post-doc Position Available

January 8th, 2010

We’re happy to announce a post-doc position available immediately at Clark & Parsia, either in our Washington, DC, or Boston office. The full-time position is a dual appointment at University of Arizona and Clark & Parsia LLC to work on ontology modularity in Description Logics, with an eye toward OWL 2 DL modularity for concept reuse and reasoning performance. Funded by NSF, the practical applications of the work will be realized in the iPlant Collaborative’s cyberinfrastructure.

A successful candidate will have a PhD in computer science (or related field) and significant experience with Description Logic, ontology modularity, automated reasoning, or other relevant specializations. The post-doc will work closely with leading practitioners in the area of automated reasoning on both theory and practice (i.e., software development) and should be comfortable realizing algorithmic ideas in Java.

The position is available immediately, for a duration of 18 months with a possibility to be extended an additional 18 months (extension to be determined at a later date). Competitive salary, good benefits package, etc. included.

See the UA job listing page for details about the application process. Please feel free to email with questions. (N.B.: the UA job description says “part-time” and “Washington, DC area”; but the position will be a full-time dual appointment and is available in DC or Boston.)

CandP, English, OWL, OWL 2, Pellet 2, jobs

Pellet 2 Tutorial Available

June 29th, 2009

Two weeks ago at Semantic Technology 2009 conference Evren and Mike presented a 4 hour tutorial about building OWL-based applications with Pellet 2. About 50 people attended, which was a surprising turnout given that it was at the rump end of the conference, a notoriously difficult time slot.

After some polishing based on feedback, we’re making the tutorial materials, including sample code, slides, and a bundled download of Pellet, available for use in learning (or teaching others) how to use Pellet, both interactively and programmatically.

Enjoy!

English, Pellet 2, Talks

Pellet 2.0 RC7: The SemTech 2009 Release

June 11th, 2009

In anticipation of our Pellet tutorial at the Semantic Technology Conference next week, we’ve made a new release candidate for Pellet 2.0 available for download. Pellet 2.0 RC7 improves on previous releases by resolving several exception-causing bugs reported by users, improving the lint tool’s support for the OWL 2 specification, and enhancing the inference explanation command line tool. The release also includes an update to Jena 2.6. This change is mostly backwards compatible for users with older Jena versions, but users depending on SPARQL query will need Jena 2.6. All of these changes are described in a Pellet Trac report.

Pellet Reasoner Plug-in for Protégé 4 has also been updated. Existing users should be prompted for an automatic upgrade to plug-in version 0.9.3.

Please continue to send your bug reports to the Pellet users mailing list. As always, you can influence the future of Pellet by contacting us to start a support relationship.

English, OWL 2, Pellet 2, Protege

Pellet 2.0 RC6: The May Day Eve Release

April 30th, 2009

We’ve made a new release candidate for Pellet 2.0 available for download. Pellet 2.0 RC6 improves on RC5 by resolving some correctness and exception generating bugs and by improving support for the RDF/XML serialization of the OWL 2 specification (which is now in its last call period). All of these changes are documented more fully in a Pellet Trac report.

We have also updated the Pellet Reasoner Plug-in for Protégé 4. Existing users with the RC5 based plug-in should be prompted for an automatic upgrade. All other Protégé 4 users should follow the installation directions as if the plug-in is a new install.

Many of the changes in this release were made in response to user identified problems, and several were prepared specifically for our support customers. Please continue to send your bug reports to the Pellet users mailing list and if you have a particular problem that you’d like to motivate us to fix, you can contact us to start a support relationship.

English, OWL 2, Pellet 2, Protege

Local Ontology Repositories with Pellet

March 16th, 2009

It is relatively common for us to hear from clients that they want to use Pellet without it accessing the network. Sometimes they want to avoid network problems by caching locally; sometimes they’re conforming to local security policy constraints; often, people just like hacking on local copies before publishing their ontologies on the Web. Regardless of motivation, they need to avoid the network access used to fetch the contents of an ontology’s imports closures. In this post I outline how a user can setup a local ontology repository that will be used by Pellet’s Jena loader.

The most common use case is a user hand editing a collection of local ontologies which use HTTP URLs. Until the ontologies are ready to be published there is no content (or, even worse, outdated content) at those URLs. The problem is that it’s cumbersome to change all the URLs to file: URLs only to change them back when publishing.

Consider two simple ontologies, presented below using Turtle syntax. First,

@prefix owl: <http://www.w3.org/2002/07/owl#> .

<http://example.org/PeopleOntology> a owl:Ontology .

<http://example.org/PeopleOntology#Person> a owl:Class .
Second,
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

<http://example.org/FriendOntology> a owl:Ontology ;
  owl:imports <http://example.org/PeopleOntology> .

<http://example.org/FriendOntology#Friend> a owl:Class ;
  rdfs:subClassOf <http://example.org/PeopleOntology#Person> .

We want to use Pellet to iteratively check the inferred class hierarchy as we develop the ontologies. To do this with the command line tools, we normally issue the following command

:; pellet classify http://example.org/FriendOntology

But if we try this as-is, we’ll get an error. We need Pellet to recognize that, while these ontologies are destined to be published on the Web, for now they are in local files named people.ttl and friend.ttl. To do this, we use a Jena LocationMapper configuration file. We can setup the file, named location-mapping.ttl, with the following Turtle content:

@prefix lm: <http://jena.hpl.hp.com/2004/08/location-mapping#> .

[] lm:mapping
  [ lm:name "http://example.org/PeopleOntology" ; lm:altName "file:people.ttl" ] ,
  [ lm:name "http://example.org/FriendOntology" ; lm:altName "file:friend.ttl" ] .

The only other change we need is to explicitly tell Pellet to use the Jena loader; it uses the OWLAPI loader by default. The command line looks like

:; pellet classify --loader Jena http://example.org/FriendOntology

With the location mapping configuration file in place, we no longer get a timeout but instead see the class hierarchy we expect, based on the content of the local files.

The second common use case is a user working with an ontology they’ve found on the Web and which has an arbitrarily large imports closure. This user wants to avoid network accesses to fetch ontologies. There are three steps to addressing this; first we need to identify all of the ontology URLs in the imports closure, then we need store them in our local repository; finally, we need to create an adequate mapping file.

To illustrate this example, we’ll use the LKIF-Core ontology. This ontology is interesting because it has a moderate number of ontologies in its imports closure. We could use a tool like Protégé 4 to identify the ontologies in the imports closure; but we’re going to assume that Pellet is the only ontology tool available. To find all the network resources fetched, we can take advantage of some debug logging available in Jena. Jena uses log4j, so we need to create a log4j configuration file, called lm-log4j.properties, to echo the interesting content to standard error.

log4j.rootLogger=WARN, stderr

log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.target=System.err
log4j.appender.stderr.layout=org.apache.log4j.SimpleLayout

log4j.logger.com.hp.hpl.jena.util.FileManager=DEBUG

Once created, we set the system property log4j.configuration to reference the file. If you’re using the shell script included with Pellet-2.0 RC5 or newer, you can do this with an environment variable as follows

:; export pellet_java_args="-Dlog4j.configuration=file:lm-log4j.properties"

Then proceed as before

:; pellet consistency --loader Jena http://www.estrellaproject.org/lkif-core/lkif-core.owl

There will be a lot of DEBUG messages, but it’s easy to narrow in on the useful details with a simple grep command, such as

:; pellet consistency --loader Jena http://www.estrellaproject.org/lkif-core/lkif-core.owl 2>&#038;1 | grep 'Not mapped' What’s output should be something like the following, enumerating all of the URLs which are being retrieved:
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/lkif-core.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/norm.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/legal-role.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/legal-action.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/role.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/expression.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/action.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/process.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/relative-places.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/time.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/mereology.owl
DEBUG - Not mapped: http://www.estrellaproject.org/lkif-core/lkif-top.owl

After downloading each of these files and saving them locally, we can create a location mapping file as above, with one map entry per ontology. That said, the location mapping configuration file supports more sophisticated mapping, and this is a great time to take advantage of prefix based mapping. The following content in location-mapping.ttl should be sufficient:

@prefix lm: <http://jena.hpl.hp.com/2004/08/location-mapping#> .

[] lm:mapping
  [ lm:prefix "http://www.estrellaproject.org/lkif-core/" ; lm:altPrefix "file:./" ] .

With this in place and all the files in the working directory, if we rerun the previous command, grep doesn’t find any matches. To disable the debug output

:; unset pellet_java_args

Then proceed as before

:; pellet consistency --loader Jena http://www.estrellaproject.org/lkif-core/lkif-core.owl

We’ve used the location mapping configuration to completely avoid network access.

A few additional details are worth noting. First, Jena does some searching for the location mapping configuration file, but the easiest approach is to keep it in the working directory. Alternatively, it can be explicitly named using the LocationMap system property. This approach can be attractive if you work on multiple ontology projects and would like them to share a single local repository. E.g., you might use

:; export pellet_java_args="-DLocationMap=file:///etc/my-repository.ttl"

Second, in Pellet 2.0 RC5 this functionality is only available if Pellet’s Jena loader is used. We’ve got a ticket open to duplicate the functionality in the OWLAPI loader and hope to have it in place before the final Pellet 2.0 release.

Feel free to comment on this functionality or any other aspect of Pellet’s behavior on the pellet-users mailing list. See you there.

Edited 2009-03-16 15:15 EDT to note:
There has been some public discussion, such as this thread on public-owl-wg@w3.org about tools using XML Catalogs to provide a standardized map description format similar to the one provided by the location mapper configuration file used here. We think that any mechanism that is sane and supported by OWL tools in an interoperable way is a good thing. Translation between the Jena format and XML Catalogs looks straight forward, so you needn’t worry about backwards compatibility issues if Pellet supports XML Catalogs in the future.

English, Ontology Engineering, Pellet 2

Pellet 2.0 RC5

March 3rd, 2009

We’ve made a new release candidate for Pellet 2.0 available for download. Pellet 2.0 RC5 improves on RC4 by resolving some crash-inducing bugs, supporting the newest versions of the the OWLAPI and Jena, adding support for OWL 2 keys and improving performance for ontologies using DL-Safe SWRL rules. All of these changes are documented more fully in a Pellet Trac report.

We have also updated the Pellet Reasoner Plug-in for Protégé 4. The previous version of the plug-in did not include the configuration bits necessary for a transparent upgrade, so to use the RC5 based plug-in, all Protégé 4 users will need to follow the installation directions as if the plug-in is a new install.

Many of the changes in this release were made in response to user identified problems. Please continue to send your bug reports to the Pellet users mailing list.

English, OWL 2, Pellet 2

Distributed Query: Pellet into the voiD

February 4th, 2009

We’ve recently completed work on a prototype for distributed query answering across disconnected RDF data sources (or relational databases or web services). The system uses Pellet to reformulate a high-level SPARQL query — written against a data model expressed in OWL – into many subqueries. Reasoning happens during query reformulation, as does SWRL rule firing, and the distributed data sources simply answer the subqueries routed to them by Pellet, based on descriptions of the data sources and their relations. Pellet then combines the answers into the final query result for the user.

The query reformulation method is sound and complete for some subsets of OWL2 DL, while maintaining good data complexity for query answering (for the curious: LOGSPACE). Distributed query answering solves two main use cases: scalability and integration. In the former, we spread the data across many systems to achieve massive scale; in the latter, the data is already spread across many systems and the requirement is to query across it sensibly.

There is a touch point with the linked data effort, which meant that the new voiD vocabulary for describing datasets turns out to be very useful for describing the distributed data sources that we query over, including their interrelations. This kind of unanticipated and uncoordinated cooperation between different parts of the Semantic Web community is a bit of real evidence that standards-based approaches can pay big dividends. We neither knew nor participated in the voiD effort, and its proponents certainly didn’t participate in our distributed query answering system — but this stuff just works together very nicely.

Dealing with Data, English, Pellet 2, RDF Databases, SPARQL