From: [email protected]
Date: 01/13/04
Hi everyone,
Attached, please find the list of built-ins (raw) for discussion today. We tried to consolidate the previous RuleML built-ins list (1) and the list from XQuery and XPath (2,3,4)
Thanks,
-said
[1] Archived RuleML Built-Ins presentation to the JC:
http://www.daml.org/listarchive/joint-committee/1369.html
[2] XML Schema Part 2: Datatypes:
http://www.w3.org/TR/xmlschema-2/
[3] XPath:
http://www.w3.org/TR/xpath
[4] XQuery 1.0:
http://www.w3.org/TR/xquery/
======================================================================================
SWRL Built-ins
DRAFT 4
Said Tabet, Benjamin Grosof, Harold Boley, Mike Dean
01/13/2004
======================================================================================
Proposed Taxonomy
=================
The proposed hierarchy of built-ins for SWRL is motivated by a modular approach that will
allow further extensions in future releases of SWRL. At the same time, it will provide the
flexibility for various implementations to select the level of hierarchy to be support with
each version of SWRL.
SWRL's built-ins approach is also based on the reuse of existing built-ins in XQuery and XPath,
themselves derived from XML data types part 2 built-ins. Some other built-ins are specific
to SWRL and RuleML, dealing with fact and rule prioritization.
This system of built-ins should also help in the interoperation of SWRL with
other Web formalisms by providing an extensible, modular built-ins infrastructure for
Semantic Web Languages, Web Services, and Web applications.
We also suggest to have a top level distinction between the following two categories:
* Side-effect free built-ins
* Side-effectful built-ins
Built-Ins for Handling XML Data Types
-------------------------------------
Like in OWL, our approach is to integrate XML Part 2, Data Types:
URLs:
http://www.w3.org/TR/xmlschema-2/
http://www.w3.org/TR/xpath-functions/
We need some examples of the types of built-ins we would use with these data types.
Is that enough?
Example: Dates, Duration (as pointed by Sandro onn the JC telecon: 5/29/03) can be used
with comparison and other
built-ins such as calculation.
Accessor Methods and Functions:
-------------------------------
get() methods
set() methods
Error and Exception Handling Methods:
-------------------------------------
swrlx:exception()
swrlx:exception(arguments list)
Log functionality
-----------------
swrlx:log()
swrlx:log(arguments list)
Math Operators and Functions
----------------------------
Operators
---------
op:numeric-add
op:numeric-subtract
op:numeric-multiply
op:numeric-divide
op:numeric-integer-divide
op:numeric-mod
op:numeric-unary-plus
op:numeric-unary-minus
Comparison operators:
---------------------
op:numeric-equal
op:numeric-less-than
op:numeric-greater-than
Built-In Functions:
------------------
fn:abs
fn:ceiling
fn:floor
fn:round
fn:round-half-to-even
fn:round-half-to-even
Built-In Aggregate Functions
----------------------------
fn:count
fn:avg
fn:max
fn:min
fn:sum
Built-In Functions and Operators on Boolean Values
--------------------------------------------------
fn:true()
fn:false()
op:boolean-equal
op:boolean-less-than
op:boolean-greater-than
fn:not
Built-In Functions on Strings
-----------------------------
fn:compare
fn:string-equal
fn:concat
fn:string-join
fn:substring
fn:string-length()
fn:normalize-space()
fn:upper-case
fn:lower-case
fn:translate
fn:contains
fn:starts-with
fn:ends-with
fn:substring-before
fn:substring-after
fn:matches
fn:replace
fn:tokenize
Built-In Functions and Operators on Durations, Dates and Times
--------------------------------------------------------------
op:yearMonthDuration-equal
op:yearMonthDuration-less-than
op:yearMonthDuration-greater-than
op:dayTimeDuration-equal
op:dayTimeDuration-less-than
op:dayTimeDuration-greater-than
op:dateTime-equal
op:dateTime-less-than
op:dateTime-greater-than
op:date-equal
op:date-less-than
op:date-greater-than
op:time-equal
op:time-less-than
op:time-greater-than
op:gYearMonth-equal
op:gYear-equal
op:gMonthDay-equal
op:gMonth-equal
op:gDay-equal
Accessors for Date, Time and Duration:
--------------------------------------
fn:get-years-from-yearMonthDuration
fn:get-months-from-yearMonthDuration
fn:get-days-from-dayTimeDuration
fn:get-hours-from-dayTimeDuration
fn:get-minutes-from-dayTimeDuration
fn:get-seconds-from-dayTimeDuration
fn:get-year-from-dateTime
fn:get-month-from-dateTime
fn:get-day-from-dateTime
fn:get-hours-from-dateTime
fn:get-minutes-from-dateTime
fn:get-seconds-from-dateTime
fn:get-timezone-from-dateTime
fn:get-year-from-date
fn:get-month-from-date
fn:get-day-from-date
fn:get-timezone-from-date
fn:get-hours-from-time
fn:get-minutes-from-time
fn:get-seconds-from-time
fn:get-timezone-from-time
More Built-In Operators for Date, Time, and Duration
----------------------------------------------------
op:add-yearMonthDurations
op:subtract-yearMonthDurations
op:multiply-yearMonthDuration
op:divide-yearMonthDuration
op:add-dayTimeDurations
op:subtract-dayTimeDurations
op:multiply-dayTimeDuration
op:divide-dayTimeDuration
fn:subtract-dateTimes-yielding-yearMonthDuration
fn:subtract-dateTimes-yielding-dayTimeDuration
op:subtract-dates
op:subtract-times
op:add-yearMonthDuration-to-dateTime
op:add-dayTimeDuration-to-dateTime
op:subtract-yearMonthDuration-from-dateTime
op:subtract-dayTimeDuration-from-dateTime
op:add-yearMonthDuration-to-date
op:add-dayTimeDuration-to-date
op:subtract-yearMonthDuration-from-date
op:subtract-dayTimeDuration-from-date
op:add-dayTimeDuration-to-time
op:subtract-dayTimeDuration-from-time
Built-ins for sequences
-----------------------
Not supported for the moment in SWRL. Maybe left as an option in
implementations.
Built-ins for nodes
-------------------
Not supported for the moment in SWRL. Maybe left as an option in
implementations.
Built-ins to handle undefined variables
---------------------------------------
TBD
User-defined Built-ins
----------------------
User-defined built-ins can be composed of existing
pre-defined built-ins or extend other user-defined
Built-In Functions for QNames and URIs
--------------------------------------
QNames:
-------
fn:resolve-QName
op:QName-equal
fn:get-local-name-from-QName
fn:get-namespace-uri-from-QName
fn:get-namespace-uri-for-prefix
fn:get-in-scope-prefixes
URI
---
fn:resolve-uri
op:anyURI-equal
Lists Built-Ins
---------------
op:union
op:intersect
op:except
Built-ins for modules handling
------------------------------
declareModule
setModule
getModule
listModules
Other listed Built-ins:
=======================
Logic and Control Built-ins
Database Built-ins
Term Comparison Built-ins
Term Manipulation Built-ins
Module handling Built-ins
Stream I/O Built-ins
Character I/O Built-ins
Term I/O Built-ins
Event Handling Built-ins
Debugging Built-ins
Arrays and Global Variable Built-ins
Coroutining Built-ins
External Interface Built-ins (imports)
Prolog Environment Built-ins
Compiler Directives
Operating System Built-Ins
Lists Library Predicates
Sorts Library predicates Built-ins
String Library Predicates
This archive was generated by hypermail 2.1.4 : 01/13/04 EST